agor-live 0.22.0 → 0.23.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1006) 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 +518 -89
  107. package/dist/core/claude/index.js +515 -88
  108. package/dist/core/claude-cli/index.cjs +24 -0
  109. package/dist/core/claude-cli/index.js +24 -0
  110. package/dist/core/claude-cli/pricing.d.ts.map +1 -1
  111. package/dist/core/client/index.cjs +52 -7
  112. package/dist/core/client/index.js +48 -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 +2767 -1232
  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 +2601 -1094
  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 +54 -3
  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 +52 -2
  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 +9 -0
  153. package/dist/core/db/repositories/gateway-channels.d.ts.map +1 -1
  154. package/dist/core/db/repositories/gateway-outbound-messages.d.ts +19 -0
  155. package/dist/core/db/repositories/gateway-outbound-messages.d.ts.map +1 -0
  156. package/dist/core/db/repositories/index.d.ts +2 -0
  157. package/dist/core/db/repositories/index.d.ts.map +1 -1
  158. package/dist/core/db/repositories/messages.d.ts +9 -2
  159. package/dist/core/db/repositories/messages.d.ts.map +1 -1
  160. package/dist/core/db/repositories/repos.d.ts.map +1 -1
  161. package/dist/core/db/repositories/schedules.d.ts +12 -1
  162. package/dist/core/db/repositories/schedules.d.ts.map +1 -1
  163. package/dist/core/db/repositories/sessions.d.ts +56 -5
  164. package/dist/core/db/repositories/sessions.d.ts.map +1 -1
  165. package/dist/core/db/repositories/tasks.d.ts +7 -2
  166. package/dist/core/db/repositories/tasks.d.ts.map +1 -1
  167. package/dist/core/db/repositories/user-api-keys.d.ts +10 -1
  168. package/dist/core/db/repositories/user-api-keys.d.ts.map +1 -1
  169. package/dist/core/db/repositories/users.d.ts +8 -8
  170. package/dist/core/db/repositories/users.d.ts.map +1 -1
  171. package/dist/core/db/schema.d.ts +1460 -38
  172. package/dist/core/db/schema.d.ts.map +1 -1
  173. package/dist/core/db/schema.postgres.d.ts +1082 -37
  174. package/dist/core/db/schema.postgres.d.ts.map +1 -1
  175. package/dist/core/db/schema.sqlite.d.ts +397 -1
  176. package/dist/core/db/schema.sqlite.d.ts.map +1 -1
  177. package/dist/core/db/tenant-context.d.ts +26 -0
  178. package/dist/core/db/tenant-context.d.ts.map +1 -0
  179. package/dist/core/db/tenant-scope.d.ts +31 -0
  180. package/dist/core/db/tenant-scope.d.ts.map +1 -0
  181. package/dist/core/db/user-utils.d.ts +2 -2
  182. package/dist/core/db/user-utils.d.ts.map +1 -1
  183. package/dist/core/drizzle/postgres/0052_gateway_outbound_messages.sql +45 -0
  184. package/dist/core/drizzle/postgres/0053_user_token_invalidation.sql +1 -0
  185. package/dist/core/drizzle/postgres/0054_app_level_multitenancy.sql +219 -0
  186. package/dist/core/drizzle/postgres/0055_app_level_multitenancy_rls.sql +411 -0
  187. package/dist/core/drizzle/postgres/0056_composite_indexes.sql +15 -0
  188. package/dist/core/drizzle/postgres/0057_message_timestamp_indexes.sql +3 -0
  189. package/dist/core/drizzle/postgres/meta/_journal.json +42 -0
  190. package/dist/core/drizzle/sqlite/0061_gateway_outbound_messages.sql +38 -0
  191. package/dist/core/drizzle/sqlite/0062_user_token_invalidation.sql +1 -0
  192. package/dist/core/drizzle/sqlite/0063_composite_indexes.sql +10 -0
  193. package/dist/core/drizzle/sqlite/0064_message_timestamp_indexes.sql +2 -0
  194. package/dist/core/drizzle/sqlite/meta/_journal.json +28 -0
  195. package/dist/core/environment/render-snapshot.cjs +7 -6
  196. package/dist/core/environment/render-snapshot.d.ts +2 -0
  197. package/dist/core/environment/render-snapshot.d.ts.map +1 -1
  198. package/dist/core/environment/render-snapshot.js +7 -6
  199. package/dist/core/environment/variable-resolver.cjs +3 -1
  200. package/dist/core/environment/variable-resolver.js +3 -1
  201. package/dist/core/environment/webhook.cjs +1 -4
  202. package/dist/core/environment/webhook.js +1 -4
  203. package/dist/core/gateway/connector.d.ts +10 -1
  204. package/dist/core/gateway/connector.d.ts.map +1 -1
  205. package/dist/core/gateway/connectors/slack-manifest.cjs +108 -0
  206. package/dist/core/gateway/connectors/slack-manifest.d.ts +85 -0
  207. package/dist/core/gateway/connectors/slack-manifest.d.ts.map +1 -0
  208. package/dist/core/gateway/connectors/slack-manifest.js +81 -0
  209. package/dist/core/gateway/connectors/slack.d.ts +101 -4
  210. package/dist/core/gateway/connectors/slack.d.ts.map +1 -1
  211. package/dist/core/gateway/index.cjs +495 -29
  212. package/dist/core/gateway/index.d.ts +4 -1
  213. package/dist/core/gateway/index.d.ts.map +1 -1
  214. package/dist/core/gateway/index.js +490 -28
  215. package/dist/core/gateway/system-message.d.ts.map +1 -1
  216. package/dist/core/git/exec.cjs +24 -0
  217. package/dist/core/git/exec.d.ts +6 -4
  218. package/dist/core/git/exec.d.ts.map +1 -1
  219. package/dist/core/git/exec.js +2 -0
  220. package/dist/core/git/index.cjs +3 -1363
  221. package/dist/core/git/index.d.ts +4 -614
  222. package/dist/core/git/index.d.ts.map +1 -1
  223. package/dist/core/git/index.js +1 -1304
  224. package/dist/core/git/pure.cjs +24 -0
  225. package/dist/core/git/pure.d.ts +2 -27
  226. package/dist/core/git/pure.d.ts.map +1 -1
  227. package/dist/core/git/pure.js +2 -0
  228. package/dist/core/index.cjs +11563 -10832
  229. package/dist/core/index.d.ts +2 -0
  230. package/dist/core/index.d.ts.map +1 -1
  231. package/dist/core/index.js +12203 -10962
  232. package/dist/core/lib/feathers-validation.cjs +9 -1
  233. package/dist/core/lib/feathers-validation.d.ts +2 -0
  234. package/dist/core/lib/feathers-validation.d.ts.map +1 -1
  235. package/dist/core/lib/feathers-validation.js +9 -1
  236. package/dist/core/local-actions/git-remotes.d.ts +7 -0
  237. package/dist/core/local-actions/git-remotes.d.ts.map +1 -0
  238. package/dist/core/local-actions/index.cjs +8008 -0
  239. package/dist/core/local-actions/index.d.ts +6 -0
  240. package/dist/core/local-actions/index.d.ts.map +1 -0
  241. package/dist/core/local-actions/index.js +8010 -0
  242. package/dist/core/local-actions/symlinks.d.ts +20 -0
  243. package/dist/core/local-actions/symlinks.d.ts.map +1 -0
  244. package/dist/core/local-actions/types.d.ts +14 -0
  245. package/dist/core/local-actions/types.d.ts.map +1 -0
  246. package/dist/core/local-actions/unix-groups.d.ts +16 -0
  247. package/dist/core/local-actions/unix-groups.d.ts.map +1 -0
  248. package/dist/core/local-actions/unix-users.d.ts +12 -0
  249. package/dist/core/local-actions/unix-users.d.ts.map +1 -0
  250. package/dist/core/mcp/index.cjs +373 -28
  251. package/dist/core/mcp/index.d.ts +1 -1
  252. package/dist/core/mcp/index.d.ts.map +1 -1
  253. package/dist/core/mcp/index.js +369 -27
  254. package/dist/core/mcp/template-patterns.d.ts +15 -0
  255. package/dist/core/mcp/template-patterns.d.ts.map +1 -0
  256. package/dist/core/mcp/template-resolver.d.ts +13 -0
  257. package/dist/core/mcp/template-resolver.d.ts.map +1 -1
  258. package/dist/core/models/browser.cjs +154 -25
  259. package/dist/core/models/browser.js +150 -25
  260. package/dist/core/models/claude.d.ts +2 -2
  261. package/dist/core/models/claude.d.ts.map +1 -1
  262. package/dist/core/models/codex.d.ts +205 -21
  263. package/dist/core/models/codex.d.ts.map +1 -1
  264. package/dist/core/models/index.cjs +154 -25
  265. package/dist/core/models/index.js +150 -25
  266. package/dist/core/package.json +24 -0
  267. package/dist/core/seed/demo-fixtures.d.ts +87 -0
  268. package/dist/core/seed/demo-fixtures.d.ts.map +1 -0
  269. package/dist/core/seed/dev-fixtures.d.ts.map +1 -1
  270. package/dist/core/seed/index.cjs +8569 -5519
  271. package/dist/core/seed/index.d.ts +1 -0
  272. package/dist/core/seed/index.d.ts.map +1 -1
  273. package/dist/core/seed/index.js +8580 -5535
  274. package/dist/core/sessions/index.cjs +110 -24
  275. package/dist/core/sessions/index.js +110 -24
  276. package/dist/core/telemetry/index.cjs +361 -0
  277. package/dist/core/telemetry/index.d.ts +5 -0
  278. package/dist/core/telemetry/index.d.ts.map +1 -0
  279. package/dist/core/telemetry/index.js +315 -0
  280. package/dist/core/telemetry/logger.d.ts +44 -0
  281. package/dist/core/telemetry/logger.d.ts.map +1 -0
  282. package/dist/core/telemetry/model-normalization.d.ts +3 -0
  283. package/dist/core/telemetry/model-normalization.d.ts.map +1 -0
  284. package/dist/core/telemetry/types.d.ts +47 -0
  285. package/dist/core/telemetry/types.d.ts.map +1 -0
  286. package/dist/core/telemetry/version.d.ts +9 -0
  287. package/dist/core/telemetry/version.d.ts.map +1 -0
  288. package/dist/core/templates/agor-system-prompt.md +1 -0
  289. package/dist/core/templates/handlebars-helpers.cjs +3 -1
  290. package/dist/core/templates/handlebars-helpers.d.ts +5 -0
  291. package/dist/core/templates/handlebars-helpers.d.ts.map +1 -1
  292. package/dist/core/templates/handlebars-helpers.js +3 -1
  293. package/dist/core/tools/mcp/auth-secrets.cjs +3460 -3
  294. package/dist/core/tools/mcp/auth-secrets.d.ts.map +1 -1
  295. package/dist/core/tools/mcp/auth-secrets.js +3477 -3
  296. package/dist/core/tools/mcp/http-headers.cjs +17 -1
  297. package/dist/core/tools/mcp/http-headers.d.ts.map +1 -1
  298. package/dist/core/tools/mcp/http-headers.js +15 -1
  299. package/dist/core/tools/mcp/oauth-refresh.cjs +568 -114
  300. package/dist/core/tools/mcp/oauth-refresh.js +566 -115
  301. package/dist/core/types/board.d.ts +14 -0
  302. package/dist/core/types/board.d.ts.map +1 -1
  303. package/dist/core/types/branch.d.ts +13 -0
  304. package/dist/core/types/branch.d.ts.map +1 -1
  305. package/dist/core/types/config-services.d.ts.map +1 -1
  306. package/dist/core/types/feathers.d.ts +6 -0
  307. package/dist/core/types/feathers.d.ts.map +1 -1
  308. package/dist/core/types/gateway.d.ts +90 -1
  309. package/dist/core/types/gateway.d.ts.map +1 -1
  310. package/dist/core/types/index.cjs +42 -0
  311. package/dist/core/types/index.d.ts +1 -0
  312. package/dist/core/types/index.d.ts.map +1 -1
  313. package/dist/core/types/index.js +38 -0
  314. package/dist/core/types/schedule.d.ts +4 -3
  315. package/dist/core/types/schedule.d.ts.map +1 -1
  316. package/dist/core/types/session.d.ts +7 -1
  317. package/dist/core/types/session.d.ts.map +1 -1
  318. package/dist/core/types/tenant.d.ts +15 -0
  319. package/dist/core/types/tenant.d.ts.map +1 -0
  320. package/dist/core/types/user.d.ts +61 -0
  321. package/dist/core/types/user.d.ts.map +1 -1
  322. package/dist/core/unix/index.cjs +1123 -674
  323. package/dist/core/unix/index.js +1071 -624
  324. package/dist/core/utils/emoji-shortcodes.d.ts +13 -0
  325. package/dist/core/utils/emoji-shortcodes.d.ts.map +1 -0
  326. package/dist/core/yaml/index.cjs +8 -8
  327. package/dist/core/yaml/index.d.ts +1 -1
  328. package/dist/core/yaml/index.d.ts.map +1 -1
  329. package/dist/core/yaml/index.js +7 -7
  330. package/dist/daemon/adapters/drizzle.d.ts +26 -4
  331. package/dist/daemon/adapters/drizzle.d.ts.map +1 -1
  332. package/dist/daemon/adapters/drizzle.js +68 -7
  333. package/dist/daemon/auth/api-key-strategy.js +1 -1
  334. package/dist/daemon/auth/executor-runtime-scope.d.ts.map +1 -1
  335. package/dist/daemon/auth/executor-runtime-scope.js +34 -6
  336. package/dist/daemon/auth/executor-session-token.d.ts +15 -0
  337. package/dist/daemon/auth/executor-session-token.d.ts.map +1 -0
  338. package/dist/daemon/auth/executor-session-token.js +17 -0
  339. package/dist/daemon/auth/issue-browser-tokens-hook.d.ts +24 -0
  340. package/dist/daemon/auth/issue-browser-tokens-hook.d.ts.map +1 -0
  341. package/dist/daemon/auth/issue-browser-tokens-hook.js +95 -0
  342. package/dist/daemon/auth/launch-auth.d.ts +5 -4
  343. package/dist/daemon/auth/launch-auth.d.ts.map +1 -1
  344. package/dist/daemon/auth/launch-auth.js +123 -39
  345. package/dist/daemon/auth/refresh-token-service.d.ts +22 -0
  346. package/dist/daemon/auth/refresh-token-service.d.ts.map +1 -0
  347. package/dist/daemon/auth/refresh-token-service.js +133 -0
  348. package/dist/daemon/auth/runtime-tokens.d.ts +3 -1
  349. package/dist/daemon/auth/runtime-tokens.d.ts.map +1 -1
  350. package/dist/daemon/auth/runtime-tokens.js +17 -4
  351. package/dist/daemon/auth/service-jwt-strategy.d.ts +2 -1
  352. package/dist/daemon/auth/service-jwt-strategy.d.ts.map +1 -1
  353. package/dist/daemon/auth/service-jwt-strategy.js +141 -3
  354. package/dist/daemon/auth/token-invalidation.d.ts +11 -0
  355. package/dist/daemon/auth/token-invalidation.d.ts.map +1 -0
  356. package/dist/daemon/auth/token-invalidation.js +38 -0
  357. package/dist/daemon/auth/user-redaction.d.ts +12 -0
  358. package/dist/daemon/auth/user-redaction.d.ts.map +1 -0
  359. package/dist/daemon/auth/user-redaction.js +13 -0
  360. package/dist/daemon/declarations.d.ts +5 -4
  361. package/dist/daemon/declarations.d.ts.map +1 -1
  362. package/dist/daemon/hooks/gateway-route.d.ts.map +1 -1
  363. package/dist/daemon/hooks/gateway-route.js +23 -13
  364. package/dist/daemon/index.d.ts.map +1 -1
  365. package/dist/daemon/index.js +8271 -2956
  366. package/dist/daemon/knowledge/pgvector.d.ts +3 -3
  367. package/dist/daemon/knowledge/pgvector.d.ts.map +1 -1
  368. package/dist/daemon/knowledge/pgvector.js +24 -0
  369. package/dist/daemon/knowledge/units.d.ts +2 -2
  370. package/dist/daemon/knowledge/units.d.ts.map +1 -1
  371. package/dist/daemon/main.js +8271 -2956
  372. package/dist/daemon/mcp/server.d.ts +3 -3
  373. package/dist/daemon/mcp/server.d.ts.map +1 -1
  374. package/dist/daemon/mcp/server.js +1740 -81
  375. package/dist/daemon/mcp/tokens.d.ts +2 -2
  376. package/dist/daemon/mcp/tokens.d.ts.map +1 -1
  377. package/dist/daemon/mcp/tokens.js +5 -1
  378. package/dist/daemon/mcp/tool-registry.d.ts.map +1 -1
  379. package/dist/daemon/mcp/tool-registry.js +1 -0
  380. package/dist/daemon/mcp/tools/analytics.d.ts.map +1 -1
  381. package/dist/daemon/mcp/tools/analytics.js +598 -24
  382. package/dist/daemon/mcp/tools/artifacts.js +560 -20
  383. package/dist/daemon/mcp/tools/boards.d.ts.map +1 -1
  384. package/dist/daemon/mcp/tools/boards.js +567 -21
  385. package/dist/daemon/mcp/tools/branches.d.ts.map +1 -1
  386. package/dist/daemon/mcp/tools/branches.js +624 -50
  387. package/dist/daemon/mcp/tools/card-types.js +558 -18
  388. package/dist/daemon/mcp/tools/cards.js +558 -18
  389. package/dist/daemon/mcp/tools/environment.js +566 -18
  390. package/dist/daemon/mcp/tools/gateway-channels.d.ts +4 -0
  391. package/dist/daemon/mcp/tools/gateway-channels.d.ts.map +1 -0
  392. package/dist/daemon/mcp/tools/gateway-channels.js +16187 -0
  393. package/dist/daemon/mcp/tools/knowledge.js +558 -18
  394. package/dist/daemon/mcp/tools/mcp-servers.d.ts.map +1 -1
  395. package/dist/daemon/mcp/tools/mcp-servers.js +893 -18
  396. package/dist/daemon/mcp/tools/messages.d.ts.map +1 -1
  397. package/dist/daemon/mcp/tools/messages.js +618 -32
  398. package/dist/daemon/mcp/tools/proxies.js +568 -20
  399. package/dist/daemon/mcp/tools/repos.js +558 -18
  400. package/dist/daemon/mcp/tools/schedules.d.ts.map +1 -1
  401. package/dist/daemon/mcp/tools/schedules.js +561 -19
  402. package/dist/daemon/mcp/tools/search.js +558 -18
  403. package/dist/daemon/mcp/tools/sessions.d.ts.map +1 -1
  404. package/dist/daemon/mcp/tools/sessions.js +571 -24
  405. package/dist/daemon/mcp/tools/tasks.js +558 -18
  406. package/dist/daemon/mcp/tools/users.d.ts.map +1 -1
  407. package/dist/daemon/mcp/tools/users.js +577 -23
  408. package/dist/daemon/mcp/tools/widgets.d.ts.map +1 -1
  409. package/dist/daemon/mcp/tools/widgets.js +759 -83
  410. package/dist/daemon/oauth-auth-helpers.d.ts +35 -0
  411. package/dist/daemon/oauth-auth-helpers.d.ts.map +1 -0
  412. package/dist/daemon/oauth-auth-helpers.js +14 -0
  413. package/dist/daemon/register-hooks.d.ts +4 -2
  414. package/dist/daemon/register-hooks.d.ts.map +1 -1
  415. package/dist/daemon/register-hooks.js +1158 -595
  416. package/dist/daemon/register-routes.d.ts +3 -2
  417. package/dist/daemon/register-routes.d.ts.map +1 -1
  418. package/dist/daemon/register-routes.js +3161 -812
  419. package/dist/daemon/register-services.d.ts +2 -2
  420. package/dist/daemon/register-services.d.ts.map +1 -1
  421. package/dist/daemon/register-services.js +2782 -739
  422. package/dist/daemon/services/artifacts.d.ts +34 -6
  423. package/dist/daemon/services/artifacts.d.ts.map +1 -1
  424. package/dist/daemon/services/artifacts.js +109 -8
  425. package/dist/daemon/services/assistant-knowledge.d.ts +2 -2
  426. package/dist/daemon/services/assistant-knowledge.d.ts.map +1 -1
  427. package/dist/daemon/services/board-comments.d.ts +8 -5
  428. package/dist/daemon/services/board-comments.d.ts.map +1 -1
  429. package/dist/daemon/services/board-comments.js +78 -13
  430. package/dist/daemon/services/board-objects.d.ts +8 -5
  431. package/dist/daemon/services/board-objects.d.ts.map +1 -1
  432. package/dist/daemon/services/board-objects.js +14 -4
  433. package/dist/daemon/services/boards.d.ts +39 -5
  434. package/dist/daemon/services/boards.d.ts.map +1 -1
  435. package/dist/daemon/services/boards.js +123 -8
  436. package/dist/daemon/services/branch-owners.d.ts +3 -1
  437. package/dist/daemon/services/branch-owners.d.ts.map +1 -1
  438. package/dist/daemon/services/branch-owners.js +31 -4
  439. package/dist/daemon/services/branches.d.ts +31 -8
  440. package/dist/daemon/services/branches.d.ts.map +1 -1
  441. package/dist/daemon/services/branches.js +272 -36
  442. package/dist/daemon/services/card-types.d.ts +3 -3
  443. package/dist/daemon/services/card-types.d.ts.map +1 -1
  444. package/dist/daemon/services/card-types.js +68 -7
  445. package/dist/daemon/services/cards.d.ts +19 -4
  446. package/dist/daemon/services/cards.d.ts.map +1 -1
  447. package/dist/daemon/services/cards.js +92 -8
  448. package/dist/daemon/services/check-auth.d.ts +2 -2
  449. package/dist/daemon/services/check-auth.d.ts.map +1 -1
  450. package/dist/daemon/services/claude-cli-integration.d.ts +4 -1
  451. package/dist/daemon/services/claude-cli-integration.d.ts.map +1 -1
  452. package/dist/daemon/services/claude-cli-integration.js +117 -65
  453. package/dist/daemon/services/claude-models.d.ts +3 -3
  454. package/dist/daemon/services/claude-models.d.ts.map +1 -1
  455. package/dist/daemon/services/claude-models.js +387 -273
  456. package/dist/daemon/services/config.d.ts +12 -4
  457. package/dist/daemon/services/config.d.ts.map +1 -1
  458. package/dist/daemon/services/config.js +39 -3
  459. package/dist/daemon/services/copilot-models.d.ts +3 -3
  460. package/dist/daemon/services/copilot-models.d.ts.map +1 -1
  461. package/dist/daemon/services/cursor-models.d.ts +3 -3
  462. package/dist/daemon/services/cursor-models.d.ts.map +1 -1
  463. package/dist/daemon/services/files.d.ts +3 -3
  464. package/dist/daemon/services/files.d.ts.map +1 -1
  465. package/dist/daemon/services/files.js +24 -5
  466. package/dist/daemon/services/gateway-channels-test.d.ts +24 -0
  467. package/dist/daemon/services/gateway-channels-test.d.ts.map +1 -0
  468. package/dist/daemon/services/gateway-channels-test.js +66 -0
  469. package/dist/daemon/services/gateway-channels.d.ts +3 -3
  470. package/dist/daemon/services/gateway-channels.d.ts.map +1 -1
  471. package/dist/daemon/services/gateway-channels.js +68 -7
  472. package/dist/daemon/services/gateway.d.ts +63 -3
  473. package/dist/daemon/services/gateway.d.ts.map +1 -1
  474. package/dist/daemon/services/gateway.js +640 -60
  475. package/dist/daemon/services/github-app-setup.d.ts +3 -3
  476. package/dist/daemon/services/github-app-setup.d.ts.map +1 -1
  477. package/dist/daemon/services/groups.d.ts +5 -5
  478. package/dist/daemon/services/groups.d.ts.map +1 -1
  479. package/dist/daemon/services/health-monitor.d.ts +34 -2
  480. package/dist/daemon/services/health-monitor.d.ts.map +1 -1
  481. package/dist/daemon/services/health-monitor.js +155 -30
  482. package/dist/daemon/services/knowledge-document-edits.d.ts +3 -3
  483. package/dist/daemon/services/knowledge-document-edits.d.ts.map +1 -1
  484. package/dist/daemon/services/knowledge-documents.d.ts +3 -3
  485. package/dist/daemon/services/knowledge-documents.d.ts.map +1 -1
  486. package/dist/daemon/services/knowledge-documents.js +92 -7
  487. package/dist/daemon/services/knowledge-embedding-indexer.d.ts +7 -2
  488. package/dist/daemon/services/knowledge-embedding-indexer.d.ts.map +1 -1
  489. package/dist/daemon/services/knowledge-embedding-indexer.js +37 -3
  490. package/dist/daemon/services/knowledge-graph.d.ts +3 -3
  491. package/dist/daemon/services/knowledge-graph.d.ts.map +1 -1
  492. package/dist/daemon/services/knowledge-indexing.d.ts +3 -3
  493. package/dist/daemon/services/knowledge-indexing.d.ts.map +1 -1
  494. package/dist/daemon/services/knowledge-namespaces.d.ts +3 -3
  495. package/dist/daemon/services/knowledge-namespaces.d.ts.map +1 -1
  496. package/dist/daemon/services/knowledge-namespaces.js +72 -8
  497. package/dist/daemon/services/knowledge-reindex.d.ts +3 -3
  498. package/dist/daemon/services/knowledge-reindex.d.ts.map +1 -1
  499. package/dist/daemon/services/knowledge-reindex.js +28 -1
  500. package/dist/daemon/services/knowledge-search.d.ts +3 -3
  501. package/dist/daemon/services/knowledge-search.d.ts.map +1 -1
  502. package/dist/daemon/services/knowledge-settings.d.ts +3 -3
  503. package/dist/daemon/services/knowledge-settings.d.ts.map +1 -1
  504. package/dist/daemon/services/knowledge-settings.js +24 -0
  505. package/dist/daemon/services/knowledge-versions.d.ts +3 -3
  506. package/dist/daemon/services/knowledge-versions.d.ts.map +1 -1
  507. package/dist/daemon/services/knowledge-versions.js +68 -7
  508. package/dist/daemon/services/leaderboard.d.ts +14 -6
  509. package/dist/daemon/services/leaderboard.d.ts.map +1 -1
  510. package/dist/daemon/services/leaderboard.js +74 -15
  511. package/dist/daemon/services/local-actions.d.ts +13 -0
  512. package/dist/daemon/services/local-actions.d.ts.map +1 -0
  513. package/dist/daemon/services/local-actions.js +120 -0
  514. package/dist/daemon/services/mcp-servers.d.ts +3 -3
  515. package/dist/daemon/services/mcp-servers.d.ts.map +1 -1
  516. package/dist/daemon/services/mcp-servers.js +68 -7
  517. package/dist/daemon/services/messages.d.ts +10 -6
  518. package/dist/daemon/services/messages.d.ts.map +1 -1
  519. package/dist/daemon/services/messages.js +87 -7
  520. package/dist/daemon/services/repos.d.ts +6 -6
  521. package/dist/daemon/services/repos.d.ts.map +1 -1
  522. package/dist/daemon/services/repos.js +131 -32
  523. package/dist/daemon/services/scheduler.d.ts +23 -27
  524. package/dist/daemon/services/scheduler.d.ts.map +1 -1
  525. package/dist/daemon/services/scheduler.js +55 -28
  526. package/dist/daemon/services/schedules.d.ts +3 -3
  527. package/dist/daemon/services/schedules.d.ts.map +1 -1
  528. package/dist/daemon/services/schedules.js +68 -7
  529. package/dist/daemon/services/session-env-selections.d.ts +3 -3
  530. package/dist/daemon/services/session-env-selections.d.ts.map +1 -1
  531. package/dist/daemon/services/session-mcp-servers.d.ts +3 -3
  532. package/dist/daemon/services/session-mcp-servers.d.ts.map +1 -1
  533. package/dist/daemon/services/session-streams.d.ts +29 -0
  534. package/dist/daemon/services/session-streams.d.ts.map +1 -0
  535. package/dist/daemon/services/session-streams.js +84 -0
  536. package/dist/daemon/services/session-token-service.d.ts.map +1 -1
  537. package/dist/daemon/services/session-token-service.js +11 -4
  538. package/dist/daemon/services/sessions.d.ts +9 -5
  539. package/dist/daemon/services/sessions.d.ts.map +1 -1
  540. package/dist/daemon/services/sessions.js +143 -10
  541. package/dist/daemon/services/tasks.d.ts +11 -5
  542. package/dist/daemon/services/tasks.d.ts.map +1 -1
  543. package/dist/daemon/services/tasks.js +199 -39
  544. package/dist/daemon/services/terminals.d.ts +21 -3
  545. package/dist/daemon/services/terminals.d.ts.map +1 -1
  546. package/dist/daemon/services/terminals.js +81 -25
  547. package/dist/daemon/services/thread-session-map.d.ts +3 -3
  548. package/dist/daemon/services/thread-session-map.d.ts.map +1 -1
  549. package/dist/daemon/services/thread-session-map.js +68 -7
  550. package/dist/daemon/services/user-avatar-sync.d.ts +21 -0
  551. package/dist/daemon/services/user-avatar-sync.d.ts.map +1 -0
  552. package/dist/daemon/services/user-avatar-sync.js +267 -0
  553. package/dist/daemon/services/users.d.ts +29 -9
  554. package/dist/daemon/services/users.d.ts.map +1 -1
  555. package/dist/daemon/services/users.js +383 -30
  556. package/dist/daemon/services/zone-trigger.d.ts.map +1 -1
  557. package/dist/daemon/services/zone-trigger.js +17 -4
  558. package/dist/daemon/setup/build-info.d.ts +1 -1
  559. package/dist/daemon/setup/build-info.d.ts.map +1 -1
  560. package/dist/daemon/setup/build-info.js +5 -1
  561. package/dist/daemon/setup/database.d.ts +8 -3
  562. package/dist/daemon/setup/database.d.ts.map +1 -1
  563. package/dist/daemon/setup/database.js +26 -6
  564. package/dist/daemon/setup/first-run-admin.d.ts +2 -2
  565. package/dist/daemon/setup/first-run-admin.d.ts.map +1 -1
  566. package/dist/daemon/setup/index.js +137 -25
  567. package/dist/daemon/setup/socketio.d.ts +10 -1
  568. package/dist/daemon/setup/socketio.d.ts.map +1 -1
  569. package/dist/daemon/setup/socketio.js +108 -18
  570. package/dist/daemon/startup.d.ts +13 -2
  571. package/dist/daemon/startup.d.ts.map +1 -1
  572. package/dist/daemon/startup.js +377 -94
  573. package/dist/daemon/utils/append-system-message.d.ts +2 -2
  574. package/dist/daemon/utils/append-system-message.d.ts.map +1 -1
  575. package/dist/daemon/utils/apply-session-config-defaults.d.ts.map +1 -1
  576. package/dist/daemon/utils/apply-session-config-defaults.js +12 -1
  577. package/dist/daemon/utils/authorization.d.ts +3 -1
  578. package/dist/daemon/utils/authorization.d.ts.map +1 -1
  579. package/dist/daemon/utils/authorization.js +36 -7
  580. package/dist/daemon/utils/branch-authorization.d.ts +30 -0
  581. package/dist/daemon/utils/branch-authorization.d.ts.map +1 -1
  582. package/dist/daemon/utils/branch-authorization.js +63 -5
  583. package/dist/daemon/utils/branch-inspect.d.ts +1 -0
  584. package/dist/daemon/utils/branch-inspect.d.ts.map +1 -1
  585. package/dist/daemon/utils/branch-inspect.js +11 -3
  586. package/dist/daemon/utils/emit-service-event.d.ts +56 -0
  587. package/dist/daemon/utils/emit-service-event.d.ts.map +1 -0
  588. package/dist/daemon/utils/emit-service-event.js +23 -0
  589. package/dist/daemon/utils/executor-read-impersonation.d.ts +2 -2
  590. package/dist/daemon/utils/executor-read-impersonation.d.ts.map +1 -1
  591. package/dist/daemon/utils/git-impersonation.d.ts +10 -10
  592. package/dist/daemon/utils/git-impersonation.d.ts.map +1 -1
  593. package/dist/daemon/utils/git-remote-credential-scan.d.ts +3 -3
  594. package/dist/daemon/utils/git-remote-credential-scan.d.ts.map +1 -1
  595. package/dist/daemon/utils/git-remote-credential-scan.js +6 -2
  596. package/dist/daemon/utils/mcp-header-secrets.d.ts +3 -5
  597. package/dist/daemon/utils/mcp-header-secrets.d.ts.map +1 -1
  598. package/dist/daemon/utils/mcp-header-secrets.js +31 -2
  599. package/dist/daemon/utils/mcp-token-authorization.d.ts +18 -13
  600. package/dist/daemon/utils/mcp-token-authorization.d.ts.map +1 -1
  601. package/dist/daemon/utils/mcp-token-authorization.js +11 -5
  602. package/dist/daemon/utils/open-source-telemetry-config.d.ts +6 -0
  603. package/dist/daemon/utils/open-source-telemetry-config.d.ts.map +1 -0
  604. package/dist/daemon/utils/open-source-telemetry-config.js +21 -0
  605. package/dist/daemon/utils/open-source-telemetry-heartbeat.d.ts +7 -0
  606. package/dist/daemon/utils/open-source-telemetry-heartbeat.d.ts.map +1 -0
  607. package/dist/daemon/utils/open-source-telemetry-heartbeat.js +15 -0
  608. package/dist/daemon/utils/open-source-telemetry-usage.d.ts +9 -0
  609. package/dist/daemon/utils/open-source-telemetry-usage.d.ts.map +1 -0
  610. package/dist/daemon/utils/open-source-telemetry-usage.js +121 -0
  611. package/dist/daemon/utils/realign-repo-origin.d.ts +3 -3
  612. package/dist/daemon/utils/realign-repo-origin.d.ts.map +1 -1
  613. package/dist/daemon/utils/realign-repo-origin.js +47 -16
  614. package/dist/daemon/utils/realtime-access-cache.d.ts +9 -0
  615. package/dist/daemon/utils/realtime-access-cache.d.ts.map +1 -1
  616. package/dist/daemon/utils/realtime-access-cache.js +24 -0
  617. package/dist/daemon/utils/realtime-publish.d.ts +26 -0
  618. package/dist/daemon/utils/realtime-publish.d.ts.map +1 -1
  619. package/dist/daemon/utils/realtime-publish.js +171 -12
  620. package/dist/daemon/utils/session-queue-tenant-scope.d.ts +24 -0
  621. package/dist/daemon/utils/session-queue-tenant-scope.d.ts.map +1 -0
  622. package/dist/daemon/utils/session-queue-tenant-scope.js +133 -0
  623. package/dist/daemon/utils/session-state-hooks.d.ts +3 -3
  624. package/dist/daemon/utils/session-state-hooks.d.ts.map +1 -1
  625. package/dist/daemon/utils/session-turn-lock.d.ts +8 -1
  626. package/dist/daemon/utils/session-turn-lock.d.ts.map +1 -1
  627. package/dist/daemon/utils/session-turn-lock.js +25 -2
  628. package/dist/daemon/utils/spawn-executor.d.ts +23 -1
  629. package/dist/daemon/utils/spawn-executor.d.ts.map +1 -1
  630. package/dist/daemon/utils/spawn-executor.js +34 -4
  631. package/dist/daemon/utils/tenant-db-scope.d.ts +20 -0
  632. package/dist/daemon/utils/tenant-db-scope.d.ts.map +1 -0
  633. package/dist/daemon/utils/tenant-db-scope.js +114 -0
  634. package/dist/daemon/utils/unix-group-init.d.ts +3 -3
  635. package/dist/daemon/utils/unix-group-init.d.ts.map +1 -1
  636. package/dist/daemon/utils/upload.d.ts +6 -9
  637. package/dist/daemon/utils/upload.d.ts.map +1 -1
  638. package/dist/daemon/utils/upload.js +30 -37
  639. package/dist/daemon/widgets/env-vars/index.d.ts +26 -1
  640. package/dist/daemon/widgets/env-vars/index.d.ts.map +1 -1
  641. package/dist/daemon/widgets/env-vars/index.js +145 -21
  642. package/dist/daemon/widgets/gateway-token/index.d.ts +114 -0
  643. package/dist/daemon/widgets/gateway-token/index.d.ts.map +1 -0
  644. package/dist/daemon/widgets/gateway-token/index.js +14711 -0
  645. package/dist/daemon/widgets/index.d.ts.map +1 -1
  646. package/dist/daemon/widgets/index.js +327 -37
  647. package/dist/daemon/widgets/registry.d.ts +7 -0
  648. package/dist/daemon/widgets/registry.d.ts.map +1 -1
  649. package/dist/daemon/widgets/submissions.js +12 -9
  650. package/dist/executor/commands/environment.d.ts.map +1 -1
  651. package/dist/executor/commands/environment.js +9 -5
  652. package/dist/executor/commands/git.d.ts.map +1 -1
  653. package/dist/executor/commands/git.js +3 -1
  654. package/dist/executor/db/feathers-repositories.d.ts +19 -1
  655. package/dist/executor/db/feathers-repositories.d.ts.map +1 -1
  656. package/dist/executor/db/feathers-repositories.js +31 -1
  657. package/dist/executor/git/index.d.ts +8 -0
  658. package/dist/executor/git/index.d.ts.map +1 -0
  659. package/dist/executor/git/index.js +7 -0
  660. package/dist/executor/handlers/sdk/base-executor.d.ts.map +1 -1
  661. package/dist/executor/handlers/sdk/base-executor.js +4 -1
  662. package/dist/executor/handlers/sdk/claude.d.ts.map +1 -1
  663. package/dist/executor/handlers/sdk/claude.js +1 -1
  664. package/dist/executor/handlers/sdk/codex.d.ts.map +1 -1
  665. package/dist/executor/handlers/sdk/codex.js +1 -1
  666. package/dist/executor/handlers/sdk/copilot.d.ts.map +1 -1
  667. package/dist/executor/handlers/sdk/copilot.js +1 -1
  668. package/dist/executor/handlers/sdk/cursor.d.ts.map +1 -1
  669. package/dist/executor/handlers/sdk/cursor.js +1 -0
  670. package/dist/executor/handlers/sdk/gemini.d.ts.map +1 -1
  671. package/dist/executor/handlers/sdk/gemini.js +1 -1
  672. package/dist/executor/handlers/sdk/git-safe-directory.d.ts.map +1 -1
  673. package/dist/executor/handlers/sdk/git-safe-directory.js +1 -1
  674. package/dist/executor/handlers/sdk/opencode.d.ts.map +1 -1
  675. package/dist/executor/handlers/sdk/opencode.js +1 -1
  676. package/dist/executor/payload-types.d.ts +5 -5
  677. package/dist/executor/sdk-handlers/base/diff-enrichment.js +1 -1
  678. package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts +8 -1
  679. package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts.map +1 -1
  680. package/dist/executor/sdk-handlers/base/mcp-scoping.js +58 -6
  681. package/dist/executor/sdk-handlers/claude/claude-tool.d.ts +2 -2
  682. package/dist/executor/sdk-handlers/claude/claude-tool.d.ts.map +1 -1
  683. package/dist/executor/sdk-handlers/claude/claude-tool.js +2 -2
  684. package/dist/executor/sdk-handlers/claude/prompt-service.d.ts +13 -3
  685. package/dist/executor/sdk-handlers/claude/prompt-service.d.ts.map +1 -1
  686. package/dist/executor/sdk-handlers/claude/prompt-service.js +16 -3
  687. package/dist/executor/sdk-handlers/claude/query-builder.d.ts +2 -1
  688. package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +1 -1
  689. package/dist/executor/sdk-handlers/claude/query-builder.js +2 -1
  690. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +8 -12
  691. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
  692. package/dist/executor/sdk-handlers/codex/codex-tool.js +14 -17
  693. package/dist/executor/sdk-handlers/codex/normalizer.d.ts.map +1 -1
  694. package/dist/executor/sdk-handlers/codex/normalizer.js +11 -1
  695. package/dist/executor/sdk-handlers/codex/pricing/litellm-openai-model-prices.json +3663 -0
  696. package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.d.ts +31 -0
  697. package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.d.ts.map +1 -0
  698. package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.js +46 -0
  699. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts +3 -2
  700. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
  701. package/dist/executor/sdk-handlers/codex/prompt-service.js +131 -12
  702. package/dist/executor/sdk-handlers/codex/usage.d.ts +14 -23
  703. package/dist/executor/sdk-handlers/codex/usage.d.ts.map +1 -1
  704. package/dist/executor/sdk-handlers/codex/usage.js +18 -33
  705. package/dist/executor/sdk-handlers/copilot/copilot-tool.d.ts +2 -2
  706. package/dist/executor/sdk-handlers/copilot/copilot-tool.d.ts.map +1 -1
  707. package/dist/executor/sdk-handlers/copilot/copilot-tool.js +2 -2
  708. package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts +3 -2
  709. package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts.map +1 -1
  710. package/dist/executor/sdk-handlers/copilot/prompt-service.js +4 -1
  711. package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts +2 -2
  712. package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts.map +1 -1
  713. package/dist/executor/sdk-handlers/gemini/gemini-tool.js +2 -2
  714. package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts +3 -2
  715. package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts.map +1 -1
  716. package/dist/executor/sdk-handlers/gemini/prompt-service.js +4 -1
  717. package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts +3 -2
  718. package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts.map +1 -1
  719. package/dist/executor/sdk-handlers/opencode/opencode-tool.js +4 -1
  720. package/dist/executor/services/feathers-client.d.ts.map +1 -1
  721. package/dist/executor/services/feathers-client.js +124 -25
  722. package/dist/git/index.cjs +1101 -0
  723. package/dist/git/index.d.ts +533 -0
  724. package/dist/git/index.d.ts.map +1 -0
  725. package/dist/git/index.js +1022 -0
  726. package/dist/git/package.json +21 -0
  727. package/dist/git/pure.cjs +185 -0
  728. package/dist/git/pure.d.ts +39 -0
  729. package/dist/git/pure.d.ts.map +1 -0
  730. package/dist/git/pure.js +139 -0
  731. package/dist/ui/assets/AgorEmojiPickerInner-leeNywMc.js +1 -0
  732. package/dist/ui/assets/App-Dpl4Cc0U.js +4 -0
  733. package/dist/ui/assets/App-Dpl4Cc0U.js.gz +0 -0
  734. package/dist/ui/assets/AppNode-wN3UZlFK.js +1 -0
  735. package/dist/ui/assets/AppNode-wN3UZlFK.js.gz +0 -0
  736. package/dist/ui/assets/ArtifactConsentModal-DjzXcP_L.js +1 -0
  737. package/dist/ui/assets/ArtifactConsentModal-DjzXcP_L.js.gz +0 -0
  738. package/dist/ui/assets/ArtifactFullscreenPage-B3b_EZ0F.js +9 -0
  739. package/dist/ui/assets/ArtifactFullscreenPage-B3b_EZ0F.js.gz +0 -0
  740. package/dist/ui/assets/ArtifactNode-DISy2T-6.js +9 -0
  741. package/dist/ui/assets/ArtifactNode-DISy2T-6.js.gz +0 -0
  742. package/dist/ui/assets/AutocompleteTextarea-DUpsoEGr.js +19 -0
  743. package/dist/ui/assets/AutocompleteTextarea-DUpsoEGr.js.gz +0 -0
  744. package/dist/ui/assets/BoardObjectNodes-BakeGpIX.js +34 -0
  745. package/dist/ui/assets/BoardObjectNodes-BakeGpIX.js.gz +0 -0
  746. package/dist/ui/assets/CodeEditor.inner-HmSdTLW5.js +7 -0
  747. package/dist/ui/assets/CodeEditor.inner-HmSdTLW5.js.gz +0 -0
  748. package/dist/ui/assets/ConversationView-mWaA-B1f.js +1 -0
  749. package/dist/ui/assets/ConversationView-mWaA-B1f.js.gz +0 -0
  750. package/dist/ui/assets/EmbeddedTerminal-NNoyPA81.js +2 -0
  751. package/dist/ui/assets/EmbeddedTerminal-NNoyPA81.js.gz +0 -0
  752. package/dist/ui/assets/KnowledgePage-CkxVnRvz.js +24 -0
  753. package/dist/ui/assets/KnowledgePage-CkxVnRvz.js.gz +0 -0
  754. package/dist/ui/assets/{MarketingScreenshotPage-zv5RUCuV.js → MarketingScreenshotPage-B86Gs8jx.js} +2 -2
  755. package/dist/ui/assets/MarketingScreenshotPage-B86Gs8jx.js.gz +0 -0
  756. package/dist/ui/assets/MobileApp-BPs-SXvz.js +1 -0
  757. package/dist/ui/assets/MobileApp-BPs-SXvz.js.gz +0 -0
  758. package/dist/ui/assets/{SessionCanvas-mEmYGZhC.css → SessionCanvas-Bh7Yg5dZ.css} +1 -1
  759. package/dist/ui/assets/SessionCanvas-Bh7Yg5dZ.css.gz +0 -0
  760. package/dist/ui/assets/SessionCanvas-xVfDoEtz.js +13 -0
  761. package/dist/ui/assets/SessionCanvas-xVfDoEtz.js.gz +0 -0
  762. package/dist/ui/assets/{StreamdownDemoPage-wzWaqWwr.js → StreamdownDemoPage-CvWLzVsv.js} +2 -2
  763. package/dist/ui/assets/StreamdownDemoPage-CvWLzVsv.js.gz +0 -0
  764. package/dist/ui/assets/TerminalModal-ExOgsuOP.js +2 -0
  765. package/dist/ui/assets/TerminalModal-ExOgsuOP.js.gz +0 -0
  766. package/dist/ui/assets/ThemeSwitcher-Cgyp5ruu.js +1 -0
  767. package/dist/ui/assets/ThemeSwitcher-Cgyp5ruu.js.gz +0 -0
  768. package/dist/ui/assets/ThemedSyntaxHighlighter.inner-rpCN9S6K.js +1 -0
  769. package/dist/ui/assets/{antd-CfbbHJOz.js → antd-BCqimh1J.js} +5 -5
  770. package/dist/ui/assets/{antd-CfbbHJOz.js.gz → antd-BCqimh1J.js.gz} +0 -0
  771. package/dist/ui/assets/architecture-U656AL7Q-BxSQIjrE.js +1 -0
  772. package/dist/ui/assets/architectureDiagram-VXUJARFQ-pDpGHSqT.js +36 -0
  773. package/dist/ui/assets/architectureDiagram-VXUJARFQ-pDpGHSqT.js.gz +0 -0
  774. package/dist/ui/assets/{blockDiagram-VD42YOAC-BhZaEN19.js → blockDiagram-VD42YOAC-uP8JTJpK.js} +4 -4
  775. package/dist/ui/assets/blockDiagram-VD42YOAC-uP8JTJpK.js.gz +0 -0
  776. package/dist/ui/assets/{c4Diagram-YG6GDRKO-Dk_UH-sY.js → c4Diagram-YG6GDRKO-qQe72Mm7.js} +2 -2
  777. package/dist/ui/assets/c4Diagram-YG6GDRKO-qQe72Mm7.js.gz +0 -0
  778. package/dist/ui/assets/channel-CoUBs6Zn.js +1 -0
  779. package/dist/ui/assets/{chunk-4BX2VUAB-XprbG2TG.js → chunk-4BX2VUAB-sz-YE8Nt.js} +1 -1
  780. package/dist/ui/assets/chunk-4ZMWKKQ3-3oKtfWXp.js +3 -0
  781. package/dist/ui/assets/chunk-4ZMWKKQ3-3oKtfWXp.js.gz +0 -0
  782. package/dist/ui/assets/chunk-55IACEB6-BS04dgKF.js +1 -0
  783. package/dist/ui/assets/{chunk-ABZYJK2D-BJcrryHK.js → chunk-ABZYJK2D-t3Gkphds.js} +3 -3
  784. package/dist/ui/assets/chunk-ABZYJK2D-t3Gkphds.js.gz +0 -0
  785. package/dist/ui/assets/{chunk-AGHRB4JF-DvxmfbM0.js → chunk-AGHRB4JF-D_QmWxbY.js} +1 -1
  786. package/dist/ui/assets/chunk-AGHRB4JF-D_QmWxbY.js.gz +0 -0
  787. package/dist/ui/assets/{chunk-ATLVNIR6-DbeJ0OrR.js → chunk-ATLVNIR6-Bmg7-Ufz.js} +1 -1
  788. package/dist/ui/assets/chunk-ATLVNIR6-Bmg7-Ufz.js.gz +0 -0
  789. package/dist/ui/assets/{chunk-B4BG7PRW-C53q2ggf.js → chunk-B4BG7PRW-dnSEE1u-.js} +3 -3
  790. package/dist/ui/assets/chunk-B4BG7PRW-dnSEE1u-.js.gz +0 -0
  791. package/dist/ui/assets/{chunk-CVBHYZKI-B3EBSlb3.js → chunk-CVBHYZKI-BStaYnF0.js} +1 -1
  792. package/dist/ui/assets/{chunk-DI55MBZ5-vIyNEQN-.js → chunk-DI55MBZ5-28dvx6o3.js} +1 -1
  793. package/dist/ui/assets/chunk-DI55MBZ5-28dvx6o3.js.gz +0 -0
  794. package/dist/ui/assets/chunk-EXTU4WIE-X-FURkEh.js +1 -0
  795. package/dist/ui/assets/{chunk-FMBD7UC4-rddmfK-Z.js → chunk-FMBD7UC4-C_63gC9S.js} +1 -1
  796. package/dist/ui/assets/{chunk-HN2XXSSU-Dttqcg3b.js → chunk-HN2XXSSU-UFD374KI.js} +1 -1
  797. package/dist/ui/assets/chunk-HN2XXSSU-UFD374KI.js.gz +0 -0
  798. package/dist/ui/assets/chunk-JA3XYJ7Z-B60hLNeR.js +11 -0
  799. package/dist/ui/assets/chunk-JA3XYJ7Z-B60hLNeR.js.gz +0 -0
  800. package/dist/ui/assets/{chunk-JZLCHNYA-EUmx2y4H.js → chunk-JZLCHNYA-ButC6pwN.js} +5 -5
  801. package/dist/ui/assets/chunk-JZLCHNYA-ButC6pwN.js.gz +0 -0
  802. package/dist/ui/assets/{chunk-MI3HLSF2-65n9Mkyc.js → chunk-MI3HLSF2-BivYzoSV.js} +1 -1
  803. package/dist/ui/assets/chunk-MI3HLSF2-BivYzoSV.js.gz +0 -0
  804. package/dist/ui/assets/chunk-N4CR4FBY-mVWzo5wJ.js +2 -0
  805. package/dist/ui/assets/chunk-N4CR4FBY-mVWzo5wJ.js.gz +0 -0
  806. package/dist/ui/assets/{chunk-QN33PNHL-DsRKK6NR.js → chunk-QN33PNHL-tXtHZpaG.js} +1 -1
  807. package/dist/ui/assets/{chunk-QXUST7PY-BCYnMiS3.js → chunk-QXUST7PY-DATib_Vv.js} +2 -2
  808. package/dist/ui/assets/chunk-QXUST7PY-DATib_Vv.js.gz +0 -0
  809. package/dist/ui/assets/chunk-QZHKN3VN-y6l249e5.js +1 -0
  810. package/dist/ui/assets/chunk-S3R3BYOJ-BEtfmflI.js +2 -0
  811. package/dist/ui/assets/chunk-S3R3BYOJ-BEtfmflI.js.gz +0 -0
  812. package/dist/ui/assets/{chunk-TZMSLE5B-BuQUQcTr.js → chunk-TZMSLE5B-BY1ZtogK.js} +1 -1
  813. package/dist/ui/assets/chunk-TZMSLE5B-BY1ZtogK.js.gz +0 -0
  814. package/dist/ui/assets/classDiagram-2ON5EDUG-BYvq-uPY.js +1 -0
  815. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-BYvq-uPY.js +1 -0
  816. package/dist/ui/assets/constants-CYzQKfD1.js +1 -0
  817. package/dist/ui/assets/{cose-bilkent-S5V4N54A-CnPB3ARO.js → cose-bilkent-S5V4N54A-DPvYrqGG.js} +1 -1
  818. package/dist/ui/assets/cose-bilkent-S5V4N54A-DPvYrqGG.js.gz +0 -0
  819. package/dist/ui/assets/{dagre-6UL2VRFP-DhS-k_Se.js → dagre-6UL2VRFP-D800J6qb.js} +1 -1
  820. package/dist/ui/assets/dagre-6UL2VRFP-D800J6qb.js.gz +0 -0
  821. package/dist/ui/assets/{dagre-KgLoHEuy.js → dagre-TNc4wezg.js} +1 -1
  822. package/dist/ui/assets/dagre-TNc4wezg.js.gz +0 -0
  823. package/dist/ui/assets/diagram-PSM6KHXK-CGdP9F-X.js +24 -0
  824. package/dist/ui/assets/diagram-PSM6KHXK-CGdP9F-X.js.gz +0 -0
  825. package/dist/ui/assets/{diagram-QEK2KX5R-BPCitvbo.js → diagram-QEK2KX5R-BD5lOCe5.js} +1 -1
  826. package/dist/ui/assets/diagram-QEK2KX5R-BD5lOCe5.js.gz +0 -0
  827. package/dist/ui/assets/{diagram-S2PKOQOG-NW4uK6sx.js → diagram-S2PKOQOG-cp3l22vN.js} +1 -1
  828. package/dist/ui/assets/diagram-S2PKOQOG-cp3l22vN.js.gz +0 -0
  829. package/dist/ui/assets/editor-Cr0W5BQI.js +39 -0
  830. package/dist/ui/assets/editor-Cr0W5BQI.js.gz +0 -0
  831. package/dist/ui/assets/emoji-Bv3m24sO.js +3 -0
  832. package/dist/ui/assets/emoji-Bv3m24sO.js.gz +0 -0
  833. package/dist/ui/assets/{erDiagram-Q2GNP2WA-me1fboaf.js → erDiagram-Q2GNP2WA-CQSXRgqr.js} +2 -2
  834. package/dist/ui/assets/erDiagram-Q2GNP2WA-CQSXRgqr.js.gz +0 -0
  835. package/dist/ui/assets/flowDiagram-NV44I4VS-CKcKpkph.js +162 -0
  836. package/dist/ui/assets/flowDiagram-NV44I4VS-CKcKpkph.js.gz +0 -0
  837. package/dist/ui/assets/ganttDiagram-LVOFAZNH-DlAHzXO5.js +267 -0
  838. package/dist/ui/assets/ganttDiagram-LVOFAZNH-DlAHzXO5.js.gz +0 -0
  839. package/dist/ui/assets/{gitGraph-F6HP7TQM-CfFE_uAC.js → gitGraph-F6HP7TQM-DeuXy4B1.js} +1 -1
  840. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-aB-AI4Vq.js +65 -0
  841. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-aB-AI4Vq.js.gz +0 -0
  842. package/dist/ui/assets/index-B-qHc0o5.js +63 -0
  843. package/dist/ui/assets/index-B-qHc0o5.js.gz +0 -0
  844. package/dist/ui/assets/{index-DxuPq13l.css → index-qkT7Qqm2.css} +1 -1
  845. package/dist/ui/assets/index-qkT7Qqm2.css.gz +0 -0
  846. package/dist/ui/assets/{info-NVLQJR56-i_xHYg3f.js → info-NVLQJR56-B9PG7xsc.js} +1 -1
  847. package/dist/ui/assets/{infoDiagram-ER5ION4S-2NL93b78.js → infoDiagram-ER5ION4S-C5Wpoqim.js} +1 -1
  848. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-CZF-2DHU.js → journeyDiagram-XKPGCS4Q-CHLziqfS.js} +3 -3
  849. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CHLziqfS.js.gz +0 -0
  850. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-CfvJIOny.js → kanban-definition-3W4ZIXB7-Dq7GzQE_.js} +1 -1
  851. package/dist/ui/assets/kanban-definition-3W4ZIXB7-Dq7GzQE_.js.gz +0 -0
  852. package/dist/ui/assets/{line-DDv8kOJk.js → line-DHKNg83I.js} +1 -1
  853. package/dist/ui/assets/{linear-Daef-l29.js → linear-BvUfn0I8.js} +1 -1
  854. package/dist/ui/assets/linear-BvUfn0I8.js.gz +0 -0
  855. package/dist/ui/assets/{mermaid-parser.core-CdK9QgYV.js → mermaid-parser.core-C6d9tKoo.js} +2 -2
  856. package/dist/ui/assets/mermaid-parser.core-C6d9tKoo.js.gz +0 -0
  857. package/dist/ui/assets/mermaid.core-CxE5KezR.js +11 -0
  858. package/dist/ui/assets/mermaid.core-CxE5KezR.js.gz +0 -0
  859. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-Cb3QMflX.js → mindmap-definition-VGOIOE7T-DmPoQ48w.js} +1 -1
  860. package/dist/ui/assets/mindmap-definition-VGOIOE7T-DmPoQ48w.js.gz +0 -0
  861. package/dist/ui/assets/{packet-BFZMPI3H-Bm2uwz4i.js → packet-BFZMPI3H-JZEkVZxU.js} +1 -1
  862. package/dist/ui/assets/{particles-DsJFOarW.js → particles-CxMmUw86.js} +1 -1
  863. package/dist/ui/assets/particles-CxMmUw86.js.gz +0 -0
  864. package/dist/ui/assets/{pie-7BOR55EZ-5i17tVnF.js → pie-7BOR55EZ-_1II5pYQ.js} +1 -1
  865. package/dist/ui/assets/{pieDiagram-ADFJNKIX-BxIwQWvw.js → pieDiagram-ADFJNKIX-DrNkH33i.js} +1 -1
  866. package/dist/ui/assets/pieDiagram-ADFJNKIX-DrNkH33i.js.gz +0 -0
  867. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-B5HPe4ga.js → quadrantDiagram-AYHSOK5B-DOpC-HEF.js} +3 -3
  868. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DOpC-HEF.js.gz +0 -0
  869. package/dist/ui/assets/{radar-NHE76QYJ-BTn-tq0k.js → radar-NHE76QYJ-DDmqhzEZ.js} +1 -1
  870. package/dist/ui/assets/reactflow-D98uPOMq.js +2 -0
  871. package/dist/ui/assets/reactflow-D98uPOMq.js.gz +0 -0
  872. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-YfI6llkX.js → requirementDiagram-UZGBJVZJ-Bzx0iEPP.js} +1 -1
  873. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-Bzx0iEPP.js.gz +0 -0
  874. package/dist/ui/assets/{sandpack-D7koO5op.js → sandpack-059Z4UWP.js} +38 -38
  875. package/dist/ui/assets/sandpack-059Z4UWP.js.gz +0 -0
  876. package/dist/ui/assets/sandpackDefaults-CPMNDsw7.js +1 -0
  877. package/dist/ui/assets/sandpackDefaults-CPMNDsw7.js.gz +0 -0
  878. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-Do9pvfDv.js +10 -0
  879. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-Do9pvfDv.js.gz +0 -0
  880. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-DAe4Um17.js → sequenceDiagram-WL72ISMW-CN8neUTA.js} +6 -6
  881. package/dist/ui/assets/sequenceDiagram-WL72ISMW-CN8neUTA.js.gz +0 -0
  882. package/dist/ui/assets/src-DEbsv3pp.js +34 -0
  883. package/dist/ui/assets/src-DEbsv3pp.js.gz +0 -0
  884. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BluWJi8n.js +1 -0
  885. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BluWJi8n.js.gz +0 -0
  886. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-DeyqBMDR.js +1 -0
  887. package/dist/ui/assets/streamdown-BT1twtFc.js +521 -0
  888. package/dist/ui/assets/streamdown-BT1twtFc.js.gz +0 -0
  889. package/dist/ui/assets/syntax-CBu6nLfm.js +9 -0
  890. package/dist/ui/assets/syntax-CBu6nLfm.js.gz +0 -0
  891. package/dist/ui/assets/{timeline-definition-IT6M3QCI-D6P5txjT.js → timeline-definition-IT6M3QCI-WdUNkiRj.js} +16 -16
  892. package/dist/ui/assets/timeline-definition-IT6M3QCI-WdUNkiRj.js.gz +0 -0
  893. package/dist/ui/assets/{treemap-KMMF4GRG-Bitm3gy4.js → treemap-KMMF4GRG-CoriU4Jl.js} +1 -1
  894. package/dist/ui/assets/{useUserLocalStorage-Ckb8HsIw.js → useUserLocalStorage-GidNiOPC.js} +1 -1
  895. package/dist/ui/assets/useUserLocalStorage-GidNiOPC.js.gz +0 -0
  896. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-CsybjUbd.js → xychartDiagram-PRI3JC2R-CgBAKNt2.js} +1 -1
  897. package/dist/ui/assets/xychartDiagram-PRI3JC2R-CgBAKNt2.js.gz +0 -0
  898. package/dist/ui/index.html +11 -11
  899. package/dist/ui/index.html.gz +0 -0
  900. package/package.json +6 -5
  901. package/scripts/postinstall.js +27 -19
  902. package/dist/cli/commands/daemon/sync.d.ts.map +0 -1
  903. package/dist/ui/assets/App-DcEY8Ota.js +0 -3
  904. package/dist/ui/assets/App-DcEY8Ota.js.gz +0 -0
  905. package/dist/ui/assets/ArtifactConsentModal-CiCbK9iv.js +0 -1
  906. package/dist/ui/assets/ArtifactConsentModal-CiCbK9iv.js.gz +0 -0
  907. package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js +0 -9
  908. package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js.gz +0 -0
  909. package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js +0 -18
  910. package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js.gz +0 -0
  911. package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js +0 -34
  912. package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js.gz +0 -0
  913. package/dist/ui/assets/CodeEditor.inner-DBgsP4tn.js +0 -8
  914. package/dist/ui/assets/CodeEditor.inner-DBgsP4tn.js.gz +0 -0
  915. package/dist/ui/assets/ConversationView-CUWR0gR6.js +0 -1
  916. package/dist/ui/assets/ConversationView-CUWR0gR6.js.gz +0 -0
  917. package/dist/ui/assets/KnowledgePage-B2bzlXfn.js +0 -24
  918. package/dist/ui/assets/KnowledgePage-B2bzlXfn.js.gz +0 -0
  919. package/dist/ui/assets/MarketingScreenshotPage-zv5RUCuV.js.gz +0 -0
  920. package/dist/ui/assets/MobileApp-VgVnsnsN.js +0 -1
  921. package/dist/ui/assets/MobileApp-VgVnsnsN.js.gz +0 -0
  922. package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js +0 -20
  923. package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js.gz +0 -0
  924. package/dist/ui/assets/SessionCanvas-mEmYGZhC.css.gz +0 -0
  925. package/dist/ui/assets/StreamdownDemoPage-wzWaqWwr.js.gz +0 -0
  926. package/dist/ui/assets/ThemeSwitcher-Dly2y9pi.js +0 -1
  927. package/dist/ui/assets/ThemeSwitcher-Dly2y9pi.js.gz +0 -0
  928. package/dist/ui/assets/architecture-U656AL7Q-CykGFbQU.js +0 -1
  929. package/dist/ui/assets/architectureDiagram-VXUJARFQ-C8HXAenz.js +0 -36
  930. package/dist/ui/assets/architectureDiagram-VXUJARFQ-C8HXAenz.js.gz +0 -0
  931. package/dist/ui/assets/blockDiagram-VD42YOAC-BhZaEN19.js.gz +0 -0
  932. package/dist/ui/assets/c4Diagram-YG6GDRKO-Dk_UH-sY.js.gz +0 -0
  933. package/dist/ui/assets/channel-D6_nUWlW.js +0 -1
  934. package/dist/ui/assets/chunk-55IACEB6-ByzqIgSb.js +0 -1
  935. package/dist/ui/assets/chunk-ABZYJK2D-BJcrryHK.js.gz +0 -0
  936. package/dist/ui/assets/chunk-AGHRB4JF-DvxmfbM0.js.gz +0 -0
  937. package/dist/ui/assets/chunk-ATLVNIR6-DbeJ0OrR.js.gz +0 -0
  938. package/dist/ui/assets/chunk-B4BG7PRW-C53q2ggf.js.gz +0 -0
  939. package/dist/ui/assets/chunk-DI55MBZ5-vIyNEQN-.js.gz +0 -0
  940. package/dist/ui/assets/chunk-EXTU4WIE-B3ObkuOm.js +0 -1
  941. package/dist/ui/assets/chunk-HN2XXSSU-Dttqcg3b.js.gz +0 -0
  942. package/dist/ui/assets/chunk-JA3XYJ7Z-DbNDev3D.js +0 -11
  943. package/dist/ui/assets/chunk-JA3XYJ7Z-DbNDev3D.js.gz +0 -0
  944. package/dist/ui/assets/chunk-JZLCHNYA-EUmx2y4H.js.gz +0 -0
  945. package/dist/ui/assets/chunk-MI3HLSF2-65n9Mkyc.js.gz +0 -0
  946. package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js +0 -2
  947. package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js.gz +0 -0
  948. package/dist/ui/assets/chunk-QXUST7PY-BCYnMiS3.js.gz +0 -0
  949. package/dist/ui/assets/chunk-QZHKN3VN-HucAw4xW.js +0 -1
  950. package/dist/ui/assets/chunk-S3R3BYOJ-CWMEa9Dc.js +0 -2
  951. package/dist/ui/assets/chunk-S3R3BYOJ-CWMEa9Dc.js.gz +0 -0
  952. package/dist/ui/assets/chunk-TZMSLE5B-BuQUQcTr.js.gz +0 -0
  953. package/dist/ui/assets/classDiagram-2ON5EDUG-CUT3rPTB.js +0 -1
  954. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-CUT3rPTB.js +0 -1
  955. package/dist/ui/assets/cose-bilkent-S5V4N54A-CnPB3ARO.js.gz +0 -0
  956. package/dist/ui/assets/dagre-6UL2VRFP-DhS-k_Se.js.gz +0 -0
  957. package/dist/ui/assets/dagre-KgLoHEuy.js.gz +0 -0
  958. package/dist/ui/assets/diagram-PSM6KHXK-BZg3MJmb.js +0 -24
  959. package/dist/ui/assets/diagram-PSM6KHXK-BZg3MJmb.js.gz +0 -0
  960. package/dist/ui/assets/diagram-QEK2KX5R-BPCitvbo.js.gz +0 -0
  961. package/dist/ui/assets/diagram-S2PKOQOG-NW4uK6sx.js.gz +0 -0
  962. package/dist/ui/assets/editor-CzFWIUw2.js +0 -39
  963. package/dist/ui/assets/editor-CzFWIUw2.js.gz +0 -0
  964. package/dist/ui/assets/emoji-Dkz4Zzv_.js +0 -3
  965. package/dist/ui/assets/emoji-Dkz4Zzv_.js.gz +0 -0
  966. package/dist/ui/assets/erDiagram-Q2GNP2WA-me1fboaf.js.gz +0 -0
  967. package/dist/ui/assets/flowDiagram-NV44I4VS-DzE8dGsh.js +0 -162
  968. package/dist/ui/assets/flowDiagram-NV44I4VS-DzE8dGsh.js.gz +0 -0
  969. package/dist/ui/assets/ganttDiagram-LVOFAZNH-CFQD09Mi.js +0 -267
  970. package/dist/ui/assets/ganttDiagram-LVOFAZNH-CFQD09Mi.js.gz +0 -0
  971. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CaVoxU4C.js +0 -65
  972. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CaVoxU4C.js.gz +0 -0
  973. package/dist/ui/assets/index-BN5_Qq7R.js +0 -324
  974. package/dist/ui/assets/index-BN5_Qq7R.js.gz +0 -0
  975. package/dist/ui/assets/index-DxuPq13l.css.gz +0 -0
  976. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CZF-2DHU.js.gz +0 -0
  977. package/dist/ui/assets/kanban-definition-3W4ZIXB7-CfvJIOny.js.gz +0 -0
  978. package/dist/ui/assets/katex-CamJ39w1.js +0 -257
  979. package/dist/ui/assets/katex-CamJ39w1.js.gz +0 -0
  980. package/dist/ui/assets/linear-Daef-l29.js.gz +0 -0
  981. package/dist/ui/assets/mermaid-parser.core-CdK9QgYV.js.gz +0 -0
  982. package/dist/ui/assets/mermaid.core-D6GS9mU-.js +0 -11
  983. package/dist/ui/assets/mermaid.core-D6GS9mU-.js.gz +0 -0
  984. package/dist/ui/assets/message-SqLqNYcv.js +0 -36
  985. package/dist/ui/assets/message-SqLqNYcv.js.gz +0 -0
  986. package/dist/ui/assets/mindmap-definition-VGOIOE7T-Cb3QMflX.js.gz +0 -0
  987. package/dist/ui/assets/particles-DsJFOarW.js.gz +0 -0
  988. package/dist/ui/assets/pieDiagram-ADFJNKIX-BxIwQWvw.js.gz +0 -0
  989. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-B5HPe4ga.js.gz +0 -0
  990. package/dist/ui/assets/reactflow-Bf74ngoo.js +0 -2
  991. package/dist/ui/assets/reactflow-Bf74ngoo.js.gz +0 -0
  992. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-YfI6llkX.js.gz +0 -0
  993. package/dist/ui/assets/sandpack-D7koO5op.js.gz +0 -0
  994. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DOk_B10B.js +0 -10
  995. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DOk_B10B.js.gz +0 -0
  996. package/dist/ui/assets/sequenceDiagram-WL72ISMW-DAe4Um17.js.gz +0 -0
  997. package/dist/ui/assets/stateDiagram-FKZM4ZOC-CCesDu_C.js +0 -1
  998. package/dist/ui/assets/stateDiagram-FKZM4ZOC-CCesDu_C.js.gz +0 -0
  999. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-CMlIrsoO.js +0 -1
  1000. package/dist/ui/assets/syntax-C-M-8jOU.js +0 -10
  1001. package/dist/ui/assets/syntax-C-M-8jOU.js.gz +0 -0
  1002. package/dist/ui/assets/theme-BQZdiqwv.js +0 -1
  1003. package/dist/ui/assets/timeline-definition-IT6M3QCI-D6P5txjT.js.gz +0 -0
  1004. package/dist/ui/assets/useUserLocalStorage-Ckb8HsIw.js.gz +0 -0
  1005. package/dist/ui/assets/xychartDiagram-PRI3JC2R-CsybjUbd.js.gz +0 -0
  1006. /package/dist/cli/commands/{admin → local}/sync-unix.d.ts +0 -0
@@ -158,6 +158,71 @@ var init_executor_heartbeat = __esm({
158
158
  }
159
159
  });
160
160
 
161
+ // src/config/multitenancy.ts
162
+ function detectPostgresUrl(url) {
163
+ if (!url) return false;
164
+ const lower = url.toLowerCase();
165
+ return lower.startsWith("postgresql://") || lower.startsWith("postgres://") || lower.startsWith("pg://");
166
+ }
167
+ function resolveMultiTenancyDatabaseDialect(config = {}) {
168
+ if (process.env.AGOR_DB_DIALECT === "postgresql" || process.env.AGOR_DB_DIALECT === "sqlite") {
169
+ return process.env.AGOR_DB_DIALECT;
170
+ }
171
+ if (detectPostgresUrl(process.env.DATABASE_URL)) return "postgresql";
172
+ if (config.database?.dialect === "postgresql" || config.database?.dialect === "sqlite") {
173
+ return config.database.dialect;
174
+ }
175
+ if (detectPostgresUrl(config.database?.postgresql?.url) || config.database?.postgresql?.host) {
176
+ return "postgresql";
177
+ }
178
+ return "sqlite";
179
+ }
180
+ function resolveMultiTenancyConfig(config) {
181
+ const raw = config.multi_tenancy ?? {};
182
+ const mode = raw.mode ?? "static";
183
+ return {
184
+ mode,
185
+ static_tenant_id: raw.static_tenant_id?.trim() || DEFAULT_STATIC_TENANT_ID,
186
+ ...raw.auth_claim ? { auth_claim: raw.auth_claim } : {},
187
+ ...raw.trusted_header ? { trusted_header: raw.trusted_header } : {}
188
+ };
189
+ }
190
+ function assertValidMultiTenancyConfig(config) {
191
+ const resolved = resolveMultiTenancyConfig(config);
192
+ if (resolved.mode !== "static" && resolved.mode !== "required_from_auth") {
193
+ throw new Error("Config error: multi_tenancy.mode must be one of: static, required_from_auth");
194
+ }
195
+ if (!resolved.static_tenant_id) {
196
+ throw new Error("Config error: multi_tenancy.static_tenant_id must not be empty");
197
+ }
198
+ if (resolved.auth_claim && RESERVED_AUTH_CLAIMS.has(resolved.auth_claim)) {
199
+ throw new Error(
200
+ `Config error: multi_tenancy.auth_claim cannot be reserved JWT claim '${resolved.auth_claim}'`
201
+ );
202
+ }
203
+ if (resolved.mode === "required_from_auth") {
204
+ if (resolveMultiTenancyDatabaseDialect(config) !== "postgresql") {
205
+ throw new Error(
206
+ "Config error: multi_tenancy.required_from_auth requires database.dialect: postgresql"
207
+ );
208
+ }
209
+ if (!resolved.auth_claim && !resolved.trusted_header) {
210
+ throw new Error(
211
+ "Config error: multi_tenancy.required_from_auth requires multi_tenancy.auth_claim or multi_tenancy.trusted_header"
212
+ );
213
+ }
214
+ }
215
+ }
216
+ var DEFAULT_STATIC_TENANT_ID, RESERVED_AUTH_CLAIMS;
217
+ var init_multitenancy = __esm({
218
+ "src/config/multitenancy.ts"() {
219
+ "use strict";
220
+ init_esm_shims();
221
+ DEFAULT_STATIC_TENANT_ID = "default";
222
+ RESERVED_AUTH_CLAIMS = /* @__PURE__ */ new Set(["aud", "exp", "iat", "iss", "jti", "nbf", "sub", "type"]);
223
+ }
224
+ });
225
+
161
226
  // src/config/types.ts
162
227
  var init_types = __esm({
163
228
  "src/config/types.ts"() {
@@ -171,7 +236,7 @@ import { readFileSync, statSync } from "fs";
171
236
  import fs2 from "fs/promises";
172
237
  import os from "os";
173
238
  import path3 from "path";
174
- import yaml from "js-yaml";
239
+ import * as yaml from "js-yaml";
175
240
  function cacheKeyMatches(a, b) {
176
241
  return a.mtimeMs === b.mtimeMs && a.size === b.size;
177
242
  }
@@ -200,6 +265,9 @@ function writeCachedConfig(configPath, config, key) {
200
265
  cachedEntry = { path: configPath, config: structuredClone(config), key };
201
266
  }
202
267
  function parseAndValidateConfig(content) {
268
+ if (content.trim() === "") {
269
+ return {};
270
+ }
203
271
  const parsed = yaml.load(content);
204
272
  const finalConfig = parsed || {};
205
273
  validateConfig(finalConfig);
@@ -229,6 +297,7 @@ To update: agor config set execution.unix_user_mode insulated`
229
297
  `Config error: execution.managed_envs_execution_mode must be one of: hybrid, webhook-only`
230
298
  );
231
299
  }
300
+ assertValidMultiTenancyConfig(config);
232
301
  validateOptionalHttpUrl(
233
302
  config.external_launch,
234
303
  "login_redirect_url",
@@ -289,7 +358,12 @@ function getDefaultConfig() {
289
358
  // Default: sync passwords to Unix
290
359
  executor_heartbeat: resolveExecutorHeartbeatConfig()
291
360
  },
292
- analytics: getDefaultAnalyticsConfig()
361
+ analytics: getDefaultAnalyticsConfig(),
362
+ telemetry: {},
363
+ multi_tenancy: {
364
+ mode: "static",
365
+ static_tenant_id: "default"
366
+ }
293
367
  };
294
368
  }
295
369
  function loadConfigSync() {
@@ -341,6 +415,7 @@ var init_config_manager = __esm({
341
415
  init_analytics_defaults();
342
416
  init_constants();
343
417
  init_executor_heartbeat();
418
+ init_multitenancy();
344
419
  init_types();
345
420
  NO_FILE = -1;
346
421
  NO_FILE_KEY = { mtimeMs: NO_FILE, size: 0 };
@@ -592,6 +667,14 @@ var init_template = __esm({
592
667
  }
593
668
  });
594
669
 
670
+ // src/types/tenant.ts
671
+ var init_tenant = __esm({
672
+ "src/types/tenant.ts"() {
673
+ "use strict";
674
+ init_esm_shims();
675
+ }
676
+ });
677
+
595
678
  // src/types/ui.ts
596
679
  var init_ui = __esm({
597
680
  "src/types/ui.ts"() {
@@ -682,6 +765,7 @@ var init_types2 = __esm({
682
765
  init_session();
683
766
  init_task();
684
767
  init_template();
768
+ init_tenant();
685
769
  init_ui();
686
770
  init_user();
687
771
  init_utils();
@@ -707,6 +791,7 @@ __export(schema_postgres_exports, {
707
791
  cardTypes: () => cardTypes,
708
792
  cards: () => cards,
709
793
  gatewayChannels: () => gatewayChannels,
794
+ gatewayOutboundMessages: () => gatewayOutboundMessages,
710
795
  groupMemberships: () => groupMemberships,
711
796
  groups: () => groups,
712
797
  kbDocumentUnits: () => kbDocumentUnits,
@@ -750,7 +835,7 @@ import {
750
835
  uniqueIndex,
751
836
  varchar
752
837
  } from "drizzle-orm/pg-core";
753
- var 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;
838
+ var 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;
754
839
  var init_schema_postgres = __esm({
755
840
  "src/db/schema.postgres.ts"() {
756
841
  "use strict";
@@ -769,6 +854,7 @@ var init_schema_postgres = __esm({
769
854
  sessions = pgTable(
770
855
  "sessions",
771
856
  {
857
+ tenant_id: text("tenant_id").notNull().default("default"),
772
858
  // Primary identity
773
859
  session_id: varchar("session_id", { length: 36 }).primaryKey(),
774
860
  created_at: t.timestamp("created_at").notNull(),
@@ -828,7 +914,9 @@ var init_schema_postgres = __esm({
828
914
  data: t.json("data").$type().notNull()
829
915
  },
830
916
  (table) => ({
917
+ tenantIdx: index("sessions_tenant_id_idx").on(table.tenant_id),
831
918
  statusIdx: index("sessions_status_idx").on(table.status),
919
+ statusReadyIdx: index("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
832
920
  agenticToolIdx: index("sessions_agentic_tool_idx").on(table.agentic_tool),
833
921
  boardIdx: index("sessions_board_idx").on(table.board_id),
834
922
  branchIdx: index("sessions_branch_idx").on(table.branch_id),
@@ -840,12 +928,13 @@ var init_schema_postgres = __esm({
840
928
  // Partial unique index — covering for the scheduler's dedup lookup
841
929
  // AND serves as the DB-level guard against check-then-create races
842
930
  // in spawnScheduledSession.
843
- scheduleRunUnique: uniqueIndex("sessions_schedule_run_unique").on(table.schedule_id, table.scheduled_run_at).where(sql`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
931
+ scheduleRunUnique: uniqueIndex("sessions_schedule_run_unique").on(table.tenant_id, table.schedule_id, table.scheduled_run_at).where(sql`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
844
932
  })
845
933
  );
846
934
  sessionRelationships = pgTable(
847
935
  "session_relationships",
848
936
  {
937
+ tenant_id: text("tenant_id").notNull().default("default"),
849
938
  relationship_id: varchar("relationship_id", { length: 36 }).primaryKey(),
850
939
  source_session_id: varchar("source_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
851
940
  target_session_id: varchar("target_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
@@ -863,10 +952,23 @@ var init_schema_postgres = __esm({
863
952
  data: t.json("data")
864
953
  },
865
954
  (table) => ({
955
+ tenantIdx: index("session_relationships_tenant_id_idx").on(table.tenant_id),
866
956
  sourceIdx: index("session_relationships_source_idx").on(table.source_session_id),
867
957
  targetIdx: index("session_relationships_target_idx").on(table.target_session_id),
868
958
  callbackIdx: index("session_relationships_callback_idx").on(table.callback_session_id),
959
+ // Composite indexes so the OR predicate in dispatchCompletionCallbacks
960
+ // (WHERE source_session_id = $1 OR target_session_id = $2) uses BitmapOr
961
+ // over these instead of a full tenant table scan via tenant_id_idx.
962
+ tenantSourceIdx: index("session_relationships_tenant_source_idx").on(
963
+ table.tenant_id,
964
+ table.source_session_id
965
+ ),
966
+ tenantTargetIdx: index("session_relationships_tenant_target_idx").on(
967
+ table.tenant_id,
968
+ table.target_session_id
969
+ ),
869
970
  sourceTargetTypeUnique: uniqueIndex("session_relationships_source_target_type_unique").on(
971
+ table.tenant_id,
870
972
  table.source_session_id,
871
973
  table.target_session_id,
872
974
  table.relationship_type
@@ -876,6 +978,7 @@ var init_schema_postgres = __esm({
876
978
  tasks = pgTable(
877
979
  "tasks",
878
980
  {
981
+ tenant_id: text("tenant_id").notNull().default("default"),
879
982
  task_id: varchar("task_id", { length: 36 }).primaryKey(),
880
983
  session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
881
984
  created_at: t.timestamp("created_at").notNull(),
@@ -905,19 +1008,23 @@ var init_schema_postgres = __esm({
905
1008
  data: t.json("data").$type().notNull()
906
1009
  },
907
1010
  (table) => ({
1011
+ tenantIdx: index("tasks_tenant_id_idx").on(table.tenant_id),
908
1012
  sessionIdx: index("tasks_session_idx").on(table.session_id),
909
1013
  statusIdx: index("tasks_status_idx").on(table.status),
910
1014
  createdIdx: index("tasks_created_idx").on(table.created_at),
1015
+ // Composite for "latest task for session" queries (ORDER BY created_at DESC LIMIT 1).
1016
+ sessionCreatedIdx: index("tasks_session_created_idx").on(table.session_id, table.created_at),
911
1017
  queueIdx: index("tasks_queue_idx").on(table.session_id, table.status, table.queue_position),
912
1018
  // Partial unique index — defense-in-depth for `tasks.createPending` race
913
1019
  // serialization. Only QUEUED rows are constrained; CREATED/RUNNING/done
914
1020
  // rows have NULL queue_position and are unaffected.
915
- queuedPositionUnique: uniqueIndex("tasks_queued_position_unique").on(table.session_id, table.queue_position).where(sql`${table.status} = 'queued'`)
1021
+ queuedPositionUnique: uniqueIndex("tasks_queued_position_unique").on(table.tenant_id, table.session_id, table.queue_position).where(sql`${table.status} = 'queued'`)
916
1022
  })
917
1023
  );
918
1024
  serializedSessions = pgTable(
919
1025
  "serialized_sessions",
920
1026
  {
1027
+ tenant_id: text("tenant_id").notNull().default("default"),
921
1028
  id: varchar("id", { length: 36 }).primaryKey(),
922
1029
  session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
923
1030
  branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
@@ -933,6 +1040,7 @@ var init_schema_postgres = __esm({
933
1040
  // gzipped; NULL while status='processing'
934
1041
  },
935
1042
  (table) => ({
1043
+ tenantIdx: index("serialized_sessions_tenant_id_idx").on(table.tenant_id),
936
1044
  sessionTurnIdx: index("serialized_sessions_session_turn_idx").on(
937
1045
  table.session_id,
938
1046
  table.turn_index
@@ -943,6 +1051,7 @@ var init_schema_postgres = __esm({
943
1051
  messages = pgTable(
944
1052
  "messages",
945
1053
  {
1054
+ tenant_id: text("tenant_id").notNull().default("default"),
946
1055
  // Primary identity
947
1056
  message_id: varchar("message_id", { length: 36 }).primaryKey(),
948
1057
  created_at: t.timestamp("created_at").notNull(),
@@ -982,15 +1091,23 @@ var init_schema_postgres = __esm({
982
1091
  data: t.json("data").$type().notNull()
983
1092
  },
984
1093
  (table) => ({
1094
+ tenantIdx: index("messages_tenant_id_idx").on(table.tenant_id),
1095
+ tenantTimestampIdx: index("messages_tenant_timestamp_idx").on(table.tenant_id, table.timestamp),
985
1096
  // Indexes for efficient lookups
986
1097
  sessionIdx: index("messages_session_id_idx").on(table.session_id),
987
1098
  taskIdx: index("messages_task_id_idx").on(table.task_id),
988
- sessionIndexIdx: index("messages_session_index_idx").on(table.session_id, table.index)
1099
+ sessionIndexIdx: index("messages_session_index_idx").on(table.session_id, table.index),
1100
+ timestampIdx: index("messages_timestamp_idx").on(table.timestamp),
1101
+ sessionTimestampIdx: index("messages_session_timestamp_idx").on(
1102
+ table.session_id,
1103
+ table.timestamp
1104
+ )
989
1105
  })
990
1106
  );
991
1107
  boards = pgTable(
992
1108
  "boards",
993
1109
  {
1110
+ tenant_id: text("tenant_id").notNull().default("default"),
994
1111
  board_id: varchar("board_id", { length: 36 }).primaryKey(),
995
1112
  created_at: t.timestamp("created_at").notNull(),
996
1113
  updated_at: t.timestamp("updated_at"),
@@ -998,7 +1115,7 @@ var init_schema_postgres = __esm({
998
1115
  created_by: varchar("created_by", { length: 36 }).notNull(),
999
1116
  // Materialized for lookups
1000
1117
  name: text("name").notNull(),
1001
- slug: text("slug").unique(),
1118
+ slug: text("slug"),
1002
1119
  primary_assistant_id: varchar("primary_assistant_id", { length: 36 }).references(
1003
1120
  () => branches.branch_id,
1004
1121
  {
@@ -1013,18 +1130,21 @@ var init_schema_postgres = __esm({
1013
1130
  archived_by: varchar("archived_by", { length: 36 })
1014
1131
  },
1015
1132
  (table) => ({
1133
+ tenantIdx: index("boards_tenant_id_idx").on(table.tenant_id),
1016
1134
  nameIdx: index("boards_name_idx").on(table.name),
1017
- slugIdx: index("boards_slug_idx").on(table.slug)
1135
+ slugIdx: index("boards_slug_idx").on(table.slug),
1136
+ slugTenantUnique: uniqueIndex("boards_tenant_slug_unique").on(table.tenant_id, table.slug)
1018
1137
  })
1019
1138
  );
1020
1139
  repos = pgTable(
1021
1140
  "repos",
1022
1141
  {
1142
+ tenant_id: text("tenant_id").notNull().default("default"),
1023
1143
  repo_id: varchar("repo_id", { length: 36 }).primaryKey(),
1024
1144
  created_at: t.timestamp("created_at").notNull(),
1025
1145
  updated_at: t.timestamp("updated_at"),
1026
1146
  // Materialized for querying
1027
- slug: text("slug").notNull().unique(),
1147
+ slug: text("slug").notNull(),
1028
1148
  repo_type: text("repo_type", { enum: ["remote", "local"] }).notNull().default("remote"),
1029
1149
  // Unix group for repo-level git access (agor_rp_<short-id>)
1030
1150
  // Users who have access to ANY branch in this repo get added to this group.
@@ -1035,12 +1155,15 @@ var init_schema_postgres = __esm({
1035
1155
  data: t.json("data").$type().notNull()
1036
1156
  },
1037
1157
  (table) => ({
1038
- slugIdx: index("repos_slug_idx").on(table.slug)
1158
+ tenantIdx: index("repos_tenant_id_idx").on(table.tenant_id),
1159
+ slugIdx: index("repos_slug_idx").on(table.slug),
1160
+ slugTenantUnique: uniqueIndex("repos_tenant_slug_unique").on(table.tenant_id, table.slug)
1039
1161
  })
1040
1162
  );
1041
1163
  branches = pgTable(
1042
1164
  "branches",
1043
1165
  {
1166
+ tenant_id: text("tenant_id").notNull().default("default"),
1044
1167
  // Primary identity
1045
1168
  branch_id: varchar("branch_id", { length: 36 }).primaryKey(),
1046
1169
  repo_id: varchar("repo_id", { length: 36 }).notNull().references(() => repos.repo_id, { onDelete: "cascade" }),
@@ -1115,6 +1238,7 @@ var init_schema_postgres = __esm({
1115
1238
  data: t.json("data").$type().notNull()
1116
1239
  },
1117
1240
  (table) => ({
1241
+ tenantIdx: index("branches_tenant_id_idx").on(table.tenant_id),
1118
1242
  repoIdx: index("branches_repo_idx").on(table.repo_id),
1119
1243
  nameIdx: index("branches_name_idx").on(table.name),
1120
1244
  refIdx: index("branches_ref_idx").on(table.ref),
@@ -1128,22 +1252,26 @@ var init_schema_postgres = __esm({
1128
1252
  branchOwners = pgTable(
1129
1253
  "branch_owners",
1130
1254
  {
1255
+ tenant_id: text("tenant_id").notNull().default("default"),
1131
1256
  branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1132
1257
  user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1133
1258
  created_at: t.timestamp("created_at").defaultNow()
1134
1259
  },
1135
1260
  (table) => ({
1261
+ tenantIdx: index("branch_owners_tenant_id_idx").on(table.tenant_id),
1136
1262
  pk: primaryKey({ columns: [table.branch_id, table.user_id] })
1137
1263
  })
1138
1264
  );
1139
1265
  boardOwners = pgTable(
1140
1266
  "board_owners",
1141
1267
  {
1268
+ tenant_id: text("tenant_id").notNull().default("default"),
1142
1269
  board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1143
1270
  user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1144
1271
  created_at: t.timestamp("created_at")
1145
1272
  },
1146
1273
  (table) => ({
1274
+ tenantIdx: index("board_owners_tenant_id_idx").on(table.tenant_id),
1147
1275
  pk: primaryKey({ columns: [table.board_id, table.user_id] }),
1148
1276
  userIdx: index("board_owners_user_idx").on(table.user_id)
1149
1277
  })
@@ -1151,6 +1279,7 @@ var init_schema_postgres = __esm({
1151
1279
  schedules = pgTable(
1152
1280
  "schedules",
1153
1281
  {
1282
+ tenant_id: text("tenant_id").notNull().default("default"),
1154
1283
  schedule_id: varchar("schedule_id", { length: 36 }).primaryKey(),
1155
1284
  branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1156
1285
  name: text("name").notNull(),
@@ -1174,6 +1303,7 @@ var init_schema_postgres = __esm({
1174
1303
  created_by: varchar("created_by", { length: 36 }).notNull().references(() => users.user_id)
1175
1304
  },
1176
1305
  (table) => ({
1306
+ tenantIdx: index("schedules_tenant_id_idx").on(table.tenant_id),
1177
1307
  enabledNextRunIdx: index("schedules_enabled_next_run_idx").on(table.enabled, table.next_run_at),
1178
1308
  branchIdx: index("schedules_branch_idx").on(table.branch_id),
1179
1309
  createdByIdx: index("schedules_created_by_idx").on(table.created_by)
@@ -1182,12 +1312,13 @@ var init_schema_postgres = __esm({
1182
1312
  users = pgTable(
1183
1313
  "users",
1184
1314
  {
1315
+ tenant_id: text("tenant_id").notNull().default("default"),
1185
1316
  // Primary identity
1186
1317
  user_id: varchar("user_id", { length: 36 }).primaryKey(),
1187
1318
  created_at: t.timestamp("created_at").notNull(),
1188
1319
  updated_at: t.timestamp("updated_at"),
1189
1320
  // Materialized for auth lookups
1190
- email: text("email").unique().notNull(),
1321
+ email: text("email").notNull(),
1191
1322
  password: text("password").notNull(),
1192
1323
  // bcrypt hashed
1193
1324
  // Basic profile (materialized for display)
@@ -1203,16 +1334,22 @@ var init_schema_postgres = __esm({
1203
1334
  onboarding_completed: t.bool("onboarding_completed").notNull().default(false),
1204
1335
  // Force password change flag (admin-settable, auto-cleared on password change)
1205
1336
  must_change_password: t.bool("must_change_password").notNull().default(false),
1337
+ // Auth invalidation marker. Password changes set this timestamp so any
1338
+ // previously issued browser access or refresh token is rejected.
1339
+ tokens_valid_after: t.timestamp("tokens_valid_after"),
1206
1340
  // JSON blob for profile/preferences
1207
1341
  data: t.json("data").$type().notNull()
1208
1342
  },
1209
1343
  (table) => ({
1210
- emailIdx: index("users_email_idx").on(table.email)
1344
+ tenantIdx: index("users_tenant_id_idx").on(table.tenant_id),
1345
+ emailIdx: index("users_email_idx").on(table.email),
1346
+ emailTenantUnique: uniqueIndex("users_tenant_email_unique").on(table.tenant_id, table.email)
1211
1347
  })
1212
1348
  );
1213
1349
  groups = pgTable(
1214
1350
  "groups",
1215
1351
  {
1352
+ tenant_id: text("tenant_id").notNull().default("default"),
1216
1353
  group_id: varchar("group_id", { length: 36 }).primaryKey(),
1217
1354
  name: text("name").notNull(),
1218
1355
  slug: text("slug").notNull(),
@@ -1225,13 +1362,15 @@ var init_schema_postgres = __esm({
1225
1362
  updated_at: t.timestamp("updated_at")
1226
1363
  },
1227
1364
  (table) => ({
1228
- slugIdx: uniqueIndex("groups_slug_idx").on(table.slug),
1365
+ tenantIdx: index("groups_tenant_id_idx").on(table.tenant_id),
1366
+ slugIdx: uniqueIndex("groups_tenant_slug_unique").on(table.tenant_id, table.slug),
1229
1367
  archivedIdx: index("groups_archived_idx").on(table.archived)
1230
1368
  })
1231
1369
  );
1232
1370
  groupMemberships = pgTable(
1233
1371
  "group_memberships",
1234
1372
  {
1373
+ tenant_id: text("tenant_id").notNull().default("default"),
1235
1374
  group_id: varchar("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1236
1375
  user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1237
1376
  added_by: varchar("added_by", { length: 36 }).references(() => users.user_id, {
@@ -1240,6 +1379,7 @@ var init_schema_postgres = __esm({
1240
1379
  created_at: t.timestamp("created_at").notNull()
1241
1380
  },
1242
1381
  (table) => ({
1382
+ tenantIdx: index("group_memberships_tenant_id_idx").on(table.tenant_id),
1243
1383
  pk: primaryKey({ columns: [table.group_id, table.user_id] }),
1244
1384
  userIdx: index("group_memberships_user_idx").on(table.user_id)
1245
1385
  })
@@ -1247,6 +1387,7 @@ var init_schema_postgres = __esm({
1247
1387
  branchGroupGrants = pgTable(
1248
1388
  "branch_group_grants",
1249
1389
  {
1390
+ tenant_id: text("tenant_id").notNull().default("default"),
1250
1391
  branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1251
1392
  group_id: varchar("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1252
1393
  can: text("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
@@ -1258,6 +1399,7 @@ var init_schema_postgres = __esm({
1258
1399
  updated_at: t.timestamp("updated_at")
1259
1400
  },
1260
1401
  (table) => ({
1402
+ tenantIdx: index("branch_group_grants_tenant_id_idx").on(table.tenant_id),
1261
1403
  pk: primaryKey({ columns: [table.branch_id, table.group_id] }),
1262
1404
  groupIdx: index("branch_group_grants_group_idx").on(table.group_id)
1263
1405
  })
@@ -1265,6 +1407,7 @@ var init_schema_postgres = __esm({
1265
1407
  boardGroupGrants = pgTable(
1266
1408
  "board_group_grants",
1267
1409
  {
1410
+ tenant_id: text("tenant_id").notNull().default("default"),
1268
1411
  board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1269
1412
  group_id: varchar("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1270
1413
  can: text("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
@@ -1276,6 +1419,7 @@ var init_schema_postgres = __esm({
1276
1419
  updated_at: t.timestamp("updated_at")
1277
1420
  },
1278
1421
  (table) => ({
1422
+ tenantIdx: index("board_group_grants_tenant_id_idx").on(table.tenant_id),
1279
1423
  pk: primaryKey({ columns: [table.board_id, table.group_id] }),
1280
1424
  groupIdx: index("board_group_grants_group_idx").on(table.group_id)
1281
1425
  })
@@ -1283,6 +1427,7 @@ var init_schema_postgres = __esm({
1283
1427
  appVariables = pgTable(
1284
1428
  "app_variables",
1285
1429
  {
1430
+ tenant_id: text("tenant_id").notNull().default("default"),
1286
1431
  variable_id: varchar("variable_id", { length: 36 }).primaryKey(),
1287
1432
  namespace: text("namespace").notNull(),
1288
1433
  key: text("key").notNull(),
@@ -1298,13 +1443,19 @@ var init_schema_postgres = __esm({
1298
1443
  updated_at: t.timestamp("updated_at").notNull()
1299
1444
  },
1300
1445
  (table) => ({
1301
- namespaceKeyIdx: uniqueIndex("app_variables_namespace_key_idx").on(table.namespace, table.key),
1446
+ tenantIdx: index("app_variables_tenant_id_idx").on(table.tenant_id),
1447
+ namespaceKeyIdx: uniqueIndex("app_variables_tenant_namespace_key_unique").on(
1448
+ table.tenant_id,
1449
+ table.namespace,
1450
+ table.key
1451
+ ),
1302
1452
  namespaceIdx: index("app_variables_namespace_idx").on(table.namespace)
1303
1453
  })
1304
1454
  );
1305
1455
  userApiKeys = pgTable(
1306
1456
  "user_api_keys",
1307
1457
  {
1458
+ tenant_id: text("tenant_id").notNull().default("default"),
1308
1459
  id: varchar("id", { length: 36 }).primaryKey(),
1309
1460
  user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1310
1461
  name: text("name").notNull(),
@@ -1316,6 +1467,7 @@ var init_schema_postgres = __esm({
1316
1467
  last_used_at: t.timestamp("last_used_at")
1317
1468
  },
1318
1469
  (table) => ({
1470
+ tenantIdx: index("user_api_keys_tenant_id_idx").on(table.tenant_id),
1319
1471
  userIdx: index("user_api_keys_user_idx").on(table.user_id),
1320
1472
  prefixIdx: index("user_api_keys_prefix_idx").on(table.prefix)
1321
1473
  })
@@ -1323,6 +1475,7 @@ var init_schema_postgres = __esm({
1323
1475
  mcpServers = pgTable(
1324
1476
  "mcp_servers",
1325
1477
  {
1478
+ tenant_id: text("tenant_id").notNull().default("default"),
1326
1479
  // Primary identity
1327
1480
  mcp_server_id: varchar("mcp_server_id", { length: 36 }).primaryKey(),
1328
1481
  created_at: t.timestamp("created_at").notNull(),
@@ -1349,6 +1502,7 @@ var init_schema_postgres = __esm({
1349
1502
  data: t.json("data").$type().notNull()
1350
1503
  },
1351
1504
  (table) => ({
1505
+ tenantIdx: index("mcp_servers_tenant_id_idx").on(table.tenant_id),
1352
1506
  nameIdx: index("mcp_servers_name_idx").on(table.name),
1353
1507
  scopeIdx: index("mcp_servers_scope_idx").on(table.scope),
1354
1508
  ownerIdx: index("mcp_servers_owner_idx").on(table.owner_user_id),
@@ -1358,6 +1512,7 @@ var init_schema_postgres = __esm({
1358
1512
  cardTypes = pgTable(
1359
1513
  "card_types",
1360
1514
  {
1515
+ tenant_id: text("tenant_id").notNull().default("default"),
1361
1516
  card_type_id: varchar("card_type_id", { length: 36 }).primaryKey(),
1362
1517
  name: text("name").notNull(),
1363
1518
  emoji: text("emoji"),
@@ -1369,12 +1524,14 @@ var init_schema_postgres = __esm({
1369
1524
  updated_at: t.timestamp("updated_at").notNull()
1370
1525
  },
1371
1526
  (table) => ({
1527
+ tenantIdx: index("card_types_tenant_id_idx").on(table.tenant_id),
1372
1528
  nameIdx: index("card_types_name_idx").on(table.name)
1373
1529
  })
1374
1530
  );
1375
1531
  cards = pgTable(
1376
1532
  "cards",
1377
1533
  {
1534
+ tenant_id: text("tenant_id").notNull().default("default"),
1378
1535
  card_id: varchar("card_id", { length: 36 }).primaryKey(),
1379
1536
  board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1380
1537
  card_type_id: varchar("card_type_id", { length: 36 }).references(() => cardTypes.card_type_id, {
@@ -1395,6 +1552,7 @@ var init_schema_postgres = __esm({
1395
1552
  archived_at: t.timestamp("archived_at")
1396
1553
  },
1397
1554
  (table) => ({
1555
+ tenantIdx: index("cards_tenant_id_idx").on(table.tenant_id),
1398
1556
  boardIdx: index("cards_board_idx").on(table.board_id),
1399
1557
  cardTypeIdx: index("cards_card_type_idx").on(table.card_type_id),
1400
1558
  titleIdx: index("cards_title_idx").on(table.title),
@@ -1405,6 +1563,7 @@ var init_schema_postgres = __esm({
1405
1563
  artifacts = pgTable(
1406
1564
  "artifacts",
1407
1565
  {
1566
+ tenant_id: text("tenant_id").notNull().default("default"),
1408
1567
  artifact_id: varchar("artifact_id", { length: 36 }).primaryKey(),
1409
1568
  branch_id: varchar("branch_id", { length: 36 }).references(() => branches.branch_id, {
1410
1569
  onDelete: "set null"
@@ -1440,6 +1599,7 @@ var init_schema_postgres = __esm({
1440
1599
  archived_at: t.timestamp("archived_at")
1441
1600
  },
1442
1601
  (table) => ({
1602
+ tenantIdx: index("artifacts_tenant_id_idx").on(table.tenant_id),
1443
1603
  branchIdx: index("artifacts_branch_idx").on(table.branch_id),
1444
1604
  sourceSessionIdx: index("artifacts_source_session_idx").on(table.source_session_id),
1445
1605
  boardIdx: index("artifacts_board_idx").on(table.board_id),
@@ -1450,6 +1610,7 @@ var init_schema_postgres = __esm({
1450
1610
  artifactTrustGrants = pgTable(
1451
1611
  "artifact_trust_grants",
1452
1612
  {
1613
+ tenant_id: text("tenant_id").notNull().default("default"),
1453
1614
  grant_id: varchar("grant_id", { length: 36 }).primaryKey(),
1454
1615
  user_id: varchar("user_id", { length: 36 }).notNull(),
1455
1616
  scope_type: text("scope_type").notNull(),
@@ -1460,6 +1621,7 @@ var init_schema_postgres = __esm({
1460
1621
  revoked_at: t.timestamp("revoked_at")
1461
1622
  },
1462
1623
  (table) => ({
1624
+ tenantIdx: index("artifact_trust_grants_tenant_id_idx").on(table.tenant_id),
1463
1625
  userIdx: index("artifact_trust_grants_user_idx").on(table.user_id),
1464
1626
  scopeIdx: index("artifact_trust_grants_scope_idx").on(table.scope_type, table.scope_value)
1465
1627
  })
@@ -1467,6 +1629,7 @@ var init_schema_postgres = __esm({
1467
1629
  boardObjects = pgTable(
1468
1630
  "board_objects",
1469
1631
  {
1632
+ tenant_id: text("tenant_id").notNull().default("default"),
1470
1633
  // Primary identity
1471
1634
  object_id: varchar("object_id", { length: 36 }).primaryKey(),
1472
1635
  board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
@@ -1482,6 +1645,7 @@ var init_schema_postgres = __esm({
1482
1645
  data: t.json("data").$type().notNull()
1483
1646
  },
1484
1647
  (table) => ({
1648
+ tenantIdx: index("board_objects_tenant_id_idx").on(table.tenant_id),
1485
1649
  boardIdx: index("board_objects_board_idx").on(table.board_id),
1486
1650
  branchIdx: index("board_objects_branch_idx").on(table.branch_id),
1487
1651
  cardIdx: index("board_objects_card_idx").on(table.card_id)
@@ -1490,12 +1654,14 @@ var init_schema_postgres = __esm({
1490
1654
  sessionMcpServers = pgTable(
1491
1655
  "session_mcp_servers",
1492
1656
  {
1657
+ tenant_id: text("tenant_id").notNull().default("default"),
1493
1658
  session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
1494
1659
  mcp_server_id: varchar("mcp_server_id", { length: 36 }).notNull().references(() => mcpServers.mcp_server_id, { onDelete: "cascade" }),
1495
1660
  enabled: t.bool("enabled").notNull().default(true),
1496
1661
  added_at: t.timestamp("added_at").notNull()
1497
1662
  },
1498
1663
  (table) => ({
1664
+ tenantIdx: index("session_mcp_servers_tenant_id_idx").on(table.tenant_id),
1499
1665
  // Composite primary key
1500
1666
  pk: index("session_mcp_servers_pk").on(table.session_id, table.mcp_server_id),
1501
1667
  // Indexes for queries
@@ -1507,6 +1673,7 @@ var init_schema_postgres = __esm({
1507
1673
  userMcpOauthTokens = pgTable(
1508
1674
  "user_mcp_oauth_tokens",
1509
1675
  {
1676
+ tenant_id: text("tenant_id").notNull().default("default"),
1510
1677
  // NULL = shared-mode token (one per mcp_server_id)
1511
1678
  user_id: varchar("user_id", { length: 36 }).references(() => users.user_id, {
1512
1679
  onDelete: "cascade"
@@ -1524,6 +1691,7 @@ var init_schema_postgres = __esm({
1524
1691
  updated_at: t.timestamp("updated_at")
1525
1692
  },
1526
1693
  (table) => ({
1694
+ tenantIdx: index("user_mcp_oauth_tokens_tenant_id_idx").on(table.tenant_id),
1527
1695
  // Composite lookup indexes. Uniqueness enforced via partial unique indexes
1528
1696
  // created in the migration (one for per-user rows, one for the shared row).
1529
1697
  pk: index("user_mcp_oauth_tokens_pk").on(table.user_id, table.mcp_server_id),
@@ -1534,6 +1702,7 @@ var init_schema_postgres = __esm({
1534
1702
  boardComments = pgTable(
1535
1703
  "board_comments",
1536
1704
  {
1705
+ tenant_id: text("tenant_id").notNull().default("default"),
1537
1706
  // Primary identity
1538
1707
  comment_id: varchar("comment_id", { length: 36 }).primaryKey(),
1539
1708
  created_at: t.timestamp("created_at").notNull(),
@@ -1575,6 +1744,7 @@ var init_schema_postgres = __esm({
1575
1744
  data: t.json("data").$type().notNull()
1576
1745
  },
1577
1746
  (table) => ({
1747
+ tenantIdx: index("board_comments_tenant_id_idx").on(table.tenant_id),
1578
1748
  boardIdx: index("board_comments_board_idx").on(table.board_id),
1579
1749
  sessionIdx: index("board_comments_session_idx").on(table.session_id),
1580
1750
  taskIdx: index("board_comments_task_idx").on(table.task_id),
@@ -1589,6 +1759,7 @@ var init_schema_postgres = __esm({
1589
1759
  gatewayChannels = pgTable(
1590
1760
  "gateway_channels",
1591
1761
  {
1762
+ tenant_id: text("tenant_id").notNull().default("default"),
1592
1763
  // Primary identity
1593
1764
  id: varchar("id", { length: 36 }).primaryKey(),
1594
1765
  created_at: t.timestamp("created_at").notNull(),
@@ -1602,7 +1773,7 @@ var init_schema_postgres = __esm({
1602
1773
  }).notNull(),
1603
1774
  target_branch_id: varchar("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1604
1775
  agor_user_id: varchar("agor_user_id", { length: 36 }).notNull(),
1605
- channel_key: text("channel_key").notNull().unique(),
1776
+ channel_key: text("channel_key").notNull(),
1606
1777
  enabled: t.bool("enabled").notNull().default(true),
1607
1778
  last_message_at: t.timestamp("last_message_at"),
1608
1779
  // JSON blob for platform credentials (encrypted at rest)
@@ -1611,13 +1782,19 @@ var init_schema_postgres = __esm({
1611
1782
  agentic_config: t.json("agentic_config")
1612
1783
  },
1613
1784
  (table) => ({
1785
+ tenantIdx: index("gateway_channels_tenant_id_idx").on(table.tenant_id),
1614
1786
  channelKeyIdx: index("idx_gateway_channel_key").on(table.channel_key),
1787
+ channelKeyTenantUnique: uniqueIndex("gateway_channels_tenant_channel_key_unique").on(
1788
+ table.tenant_id,
1789
+ table.channel_key
1790
+ ),
1615
1791
  enabledTypeIdx: index("idx_gateway_enabled_type").on(table.enabled, table.channel_type)
1616
1792
  })
1617
1793
  );
1618
1794
  threadSessionMap = pgTable(
1619
1795
  "thread_session_map",
1620
1796
  {
1797
+ tenant_id: text("tenant_id").notNull().default("default"),
1621
1798
  // Primary identity
1622
1799
  id: varchar("id", { length: 36 }).primaryKey(),
1623
1800
  created_at: t.timestamp("created_at").notNull(),
@@ -1635,7 +1812,9 @@ var init_schema_postgres = __esm({
1635
1812
  metadata: t.json("metadata")
1636
1813
  },
1637
1814
  (table) => ({
1638
- uniqueChannelThread: uniqueIndex("uniq_thread_map_channel_thread").on(
1815
+ tenantIdx: index("thread_session_map_tenant_id_idx").on(table.tenant_id),
1816
+ uniqueChannelThread: uniqueIndex("uniq_thread_map_tenant_channel_thread").on(
1817
+ table.tenant_id,
1639
1818
  table.channel_id,
1640
1819
  table.thread_id
1641
1820
  ),
@@ -1644,14 +1823,82 @@ var init_schema_postgres = __esm({
1644
1823
  channelStatusIdx: index("idx_thread_map_channel_status").on(table.channel_id, table.status)
1645
1824
  })
1646
1825
  );
1826
+ gatewayOutboundMessages = pgTable(
1827
+ "gateway_outbound_messages",
1828
+ {
1829
+ tenant_id: text("tenant_id").notNull().default("default"),
1830
+ id: varchar("id", { length: 36 }).primaryKey(),
1831
+ created_at: t.timestamp("created_at").notNull(),
1832
+ updated_at: t.timestamp("updated_at").notNull(),
1833
+ gateway_channel_id: varchar("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
1834
+ channel_type: text("channel_type", {
1835
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
1836
+ }).notNull(),
1837
+ platform_channel_id: text("platform_channel_id").notNull(),
1838
+ platform_message_id: text("platform_message_id").notNull(),
1839
+ platform_thread_id: text("platform_thread_id").notNull(),
1840
+ platform_permalink: text("platform_permalink"),
1841
+ target_branch_id: varchar("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id),
1842
+ emitted_by_user_id: varchar("emitted_by_user_id", { length: 36 }).notNull().references(() => users.user_id),
1843
+ emitted_by_session_id: varchar("emitted_by_session_id", { length: 36 }).references(
1844
+ () => sessions.session_id,
1845
+ {
1846
+ onDelete: "set null"
1847
+ }
1848
+ ),
1849
+ emitted_by_task_id: varchar("emitted_by_task_id", { length: 36 }).references(
1850
+ () => tasks.task_id,
1851
+ {
1852
+ onDelete: "set null"
1853
+ }
1854
+ ),
1855
+ emitted_by_schedule_id: varchar("emitted_by_schedule_id", { length: 36 }).references(
1856
+ () => schedules.schedule_id,
1857
+ {
1858
+ onDelete: "set null"
1859
+ }
1860
+ ),
1861
+ message_text: text("message_text").notNull(),
1862
+ message_preview: text("message_preview").notNull(),
1863
+ metadata: t.json("metadata"),
1864
+ consumed_by_session_id: varchar("consumed_by_session_id", { length: 36 }).references(
1865
+ () => sessions.session_id,
1866
+ {
1867
+ onDelete: "set null"
1868
+ }
1869
+ ),
1870
+ consumed_at: t.timestamp("consumed_at")
1871
+ },
1872
+ (table) => ({
1873
+ tenantIdx: index("gateway_outbound_messages_tenant_id_idx").on(table.tenant_id),
1874
+ uniqueChannelThread: uniqueIndex("uniq_gateway_outbound_tenant_channel_thread").on(
1875
+ table.tenant_id,
1876
+ table.gateway_channel_id,
1877
+ table.platform_thread_id
1878
+ ),
1879
+ emittedSessionIdx: index("idx_gateway_outbound_emitted_session").on(
1880
+ table.emitted_by_session_id
1881
+ ),
1882
+ emittedScheduleIdx: index("idx_gateway_outbound_emitted_schedule").on(
1883
+ table.emitted_by_schedule_id
1884
+ ),
1885
+ targetBranchCreatedIdx: index("idx_gateway_outbound_branch_created").on(
1886
+ table.target_branch_id,
1887
+ table.created_at
1888
+ ),
1889
+ consumedIdx: index("idx_gateway_outbound_consumed").on(table.consumed_at)
1890
+ })
1891
+ );
1647
1892
  sessionEnvSelections = pgTable(
1648
1893
  "session_env_selections",
1649
1894
  {
1895
+ tenant_id: text("tenant_id").notNull().default("default"),
1650
1896
  session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
1651
1897
  env_var_name: text("env_var_name").notNull(),
1652
1898
  created_at: t.timestamp("created_at").notNull()
1653
1899
  },
1654
1900
  (table) => ({
1901
+ tenantIdx: index("session_env_selections_tenant_id_idx").on(table.tenant_id),
1655
1902
  pk: primaryKey({ columns: [table.session_id, table.env_var_name] }),
1656
1903
  sessionIdx: index("session_env_selections_session_idx").on(table.session_id)
1657
1904
  })
@@ -1659,6 +1906,7 @@ var init_schema_postgres = __esm({
1659
1906
  kbNamespaces = pgTable(
1660
1907
  "kb_namespaces",
1661
1908
  {
1909
+ tenant_id: text("tenant_id").notNull().default("default"),
1662
1910
  namespace_id: varchar("namespace_id", { length: 36 }).primaryKey(),
1663
1911
  slug: text("slug").notNull(),
1664
1912
  display_name: text("display_name").notNull(),
@@ -1685,7 +1933,8 @@ var init_schema_postgres = __esm({
1685
1933
  archived_at: t.timestamp("archived_at")
1686
1934
  },
1687
1935
  (table) => ({
1688
- slugIdx: uniqueIndex("kb_namespaces_slug_idx").on(table.slug).where(sql`${table.archived} = false`),
1936
+ tenantIdx: index("kb_namespaces_tenant_id_idx").on(table.tenant_id),
1937
+ slugIdx: uniqueIndex("kb_namespaces_tenant_slug_unique").on(table.tenant_id, table.slug).where(sql`${table.archived} = false`),
1689
1938
  kindIdx: index("kb_namespaces_kind_idx").on(table.kind),
1690
1939
  ownerIdx: index("kb_namespaces_owner_idx").on(table.owner_user_id),
1691
1940
  repoIdx: index("kb_namespaces_repo_idx").on(table.repo_id),
@@ -1696,6 +1945,7 @@ var init_schema_postgres = __esm({
1696
1945
  kbNamespaceAcl = pgTable(
1697
1946
  "kb_namespace_acl",
1698
1947
  {
1948
+ tenant_id: text("tenant_id").notNull().default("default"),
1699
1949
  namespace_acl_id: varchar("namespace_acl_id", { length: 36 }).primaryKey(),
1700
1950
  namespace_id: varchar("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
1701
1951
  subject_type: text("subject_type", { enum: ["user", "group"] }).notNull(),
@@ -1708,9 +1958,11 @@ var init_schema_postgres = __esm({
1708
1958
  updated_at: t.timestamp("updated_at")
1709
1959
  },
1710
1960
  (table) => ({
1961
+ tenantIdx: index("kb_namespace_acl_tenant_id_idx").on(table.tenant_id),
1711
1962
  namespaceIdx: index("kb_namespace_acl_namespace_idx").on(table.namespace_id),
1712
1963
  subjectIdx: index("kb_namespace_acl_subject_idx").on(table.subject_type, table.subject_id),
1713
- namespaceSubjectIdx: uniqueIndex("kb_namespace_acl_namespace_subject_idx").on(
1964
+ namespaceSubjectIdx: uniqueIndex("kb_namespace_acl_tenant_namespace_subject_unique").on(
1965
+ table.tenant_id,
1714
1966
  table.namespace_id,
1715
1967
  table.subject_type,
1716
1968
  table.subject_id
@@ -1720,6 +1972,7 @@ var init_schema_postgres = __esm({
1720
1972
  kbDocuments = pgTable(
1721
1973
  "kb_documents",
1722
1974
  {
1975
+ tenant_id: text("tenant_id").notNull().default("default"),
1723
1976
  document_id: varchar("document_id", { length: 36 }).primaryKey(),
1724
1977
  namespace_id: varchar("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
1725
1978
  path: text("path").notNull(),
@@ -1747,8 +2000,9 @@ var init_schema_postgres = __esm({
1747
2000
  archived_at: t.timestamp("archived_at")
1748
2001
  },
1749
2002
  (table) => ({
1750
- namespacePathIdx: uniqueIndex("kb_documents_namespace_path_idx").on(table.namespace_id, table.path).where(sql`${table.archived} = false`),
1751
- uriIdx: uniqueIndex("kb_documents_uri_idx").on(table.uri).where(sql`${table.archived} = false`),
2003
+ tenantIdx: index("kb_documents_tenant_id_idx").on(table.tenant_id),
2004
+ namespacePathIdx: uniqueIndex("kb_documents_tenant_namespace_path_unique").on(table.tenant_id, table.namespace_id, table.path).where(sql`${table.archived} = false`),
2005
+ uriIdx: uniqueIndex("kb_documents_tenant_uri_unique").on(table.tenant_id, table.uri).where(sql`${table.archived} = false`),
1752
2006
  namespaceIdx: index("kb_documents_namespace_idx").on(table.namespace_id),
1753
2007
  kindIdx: index("kb_documents_kind_idx").on(table.kind),
1754
2008
  visibilityIdx: index("kb_documents_visibility_idx").on(table.visibility),
@@ -1761,6 +2015,7 @@ var init_schema_postgres = __esm({
1761
2015
  kbDocumentVersions = pgTable(
1762
2016
  "kb_document_versions",
1763
2017
  {
2018
+ tenant_id: text("tenant_id").notNull().default("default"),
1764
2019
  version_id: varchar("version_id", { length: 36 }).primaryKey(),
1765
2020
  document_id: varchar("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
1766
2021
  version_number: integer("version_number").notNull(),
@@ -1780,7 +2035,9 @@ var init_schema_postgres = __esm({
1780
2035
  created_at: t.timestamp("created_at").notNull()
1781
2036
  },
1782
2037
  (table) => ({
1783
- documentVersionIdx: uniqueIndex("kb_document_versions_document_version_idx").on(
2038
+ tenantIdx: index("kb_document_versions_tenant_id_idx").on(table.tenant_id),
2039
+ documentVersionIdx: uniqueIndex("kb_document_versions_tenant_document_version_unique").on(
2040
+ table.tenant_id,
1784
2041
  table.document_id,
1785
2042
  table.version_number
1786
2043
  ),
@@ -1792,6 +2049,7 @@ var init_schema_postgres = __esm({
1792
2049
  kbDocumentUnits = pgTable(
1793
2050
  "kb_document_units",
1794
2051
  {
2052
+ tenant_id: text("tenant_id").notNull().default("default"),
1795
2053
  unit_id: varchar("unit_id", { length: 36 }).primaryKey(),
1796
2054
  document_id: varchar("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
1797
2055
  version_id: varchar("version_id", { length: 36 }).notNull().references(() => kbDocumentVersions.version_id, { onDelete: "cascade" }),
@@ -1816,6 +2074,7 @@ var init_schema_postgres = __esm({
1816
2074
  updated_at: t.timestamp("updated_at")
1817
2075
  },
1818
2076
  (table) => ({
2077
+ tenantIdx: index("kb_document_units_tenant_id_idx").on(table.tenant_id),
1819
2078
  documentIdx: index("kb_document_units_document_idx").on(table.document_id),
1820
2079
  versionIdx: index("kb_document_units_version_idx").on(table.version_id),
1821
2080
  versionOrdinalIdx: index("kb_document_units_version_ordinal_idx").on(
@@ -1829,6 +2088,7 @@ var init_schema_postgres = __esm({
1829
2088
  kbEmbeddingSpaces = pgTable(
1830
2089
  "kb_embedding_spaces",
1831
2090
  {
2091
+ tenant_id: text("tenant_id").notNull().default("default"),
1832
2092
  embedding_space_id: varchar("embedding_space_id", { length: 36 }).primaryKey(),
1833
2093
  provider: text("provider").notNull(),
1834
2094
  model: text("model").notNull(),
@@ -1841,7 +2101,9 @@ var init_schema_postgres = __esm({
1841
2101
  updated_at: t.timestamp("updated_at")
1842
2102
  },
1843
2103
  (table) => ({
1844
- providerModelIdx: uniqueIndex("kb_embedding_spaces_provider_model_idx").on(
2104
+ tenantIdx: index("kb_embedding_spaces_tenant_id_idx").on(table.tenant_id),
2105
+ providerModelIdx: uniqueIndex("kb_embedding_spaces_tenant_provider_model_unique").on(
2106
+ table.tenant_id,
1845
2107
  table.provider,
1846
2108
  table.model,
1847
2109
  table.dimensions,
@@ -1854,6 +2116,7 @@ var init_schema_postgres = __esm({
1854
2116
  kbGraphNodes = pgTable(
1855
2117
  "kb_graph_nodes",
1856
2118
  {
2119
+ tenant_id: text("tenant_id").notNull().default("default"),
1857
2120
  node_id: varchar("node_id", { length: 36 }).primaryKey(),
1858
2121
  node_type: text("node_type", {
1859
2122
  enum: [
@@ -1919,7 +2182,8 @@ var init_schema_postgres = __esm({
1919
2182
  archived_at: t.timestamp("archived_at")
1920
2183
  },
1921
2184
  (table) => ({
1922
- uriIdx: uniqueIndex("kb_graph_nodes_uri_idx").on(table.uri).where(sql`${table.archived} = false`),
2185
+ tenantIdx: index("kb_graph_nodes_tenant_id_idx").on(table.tenant_id),
2186
+ uriIdx: uniqueIndex("kb_graph_nodes_tenant_uri_unique").on(table.tenant_id, table.uri).where(sql`${table.archived} = false`),
1923
2187
  typeIdx: index("kb_graph_nodes_type_idx").on(table.node_type),
1924
2188
  namespaceIdx: index("kb_graph_nodes_namespace_idx").on(table.namespace_id),
1925
2189
  documentIdx: index("kb_graph_nodes_document_idx").on(table.document_id),
@@ -1939,6 +2203,7 @@ var init_schema_postgres = __esm({
1939
2203
  kbGraphEdges = pgTable(
1940
2204
  "kb_graph_edges",
1941
2205
  {
2206
+ tenant_id: text("tenant_id").notNull().default("default"),
1942
2207
  edge_id: varchar("edge_id", { length: 36 }).primaryKey(),
1943
2208
  source_node_id: varchar("source_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
1944
2209
  target_node_id: varchar("target_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
@@ -1967,6 +2232,7 @@ var init_schema_postgres = __esm({
1967
2232
  archived_at: t.timestamp("archived_at")
1968
2233
  },
1969
2234
  (table) => ({
2235
+ tenantIdx: index("kb_graph_edges_tenant_id_idx").on(table.tenant_id),
1970
2236
  sourceIdx: index("kb_graph_edges_source_idx").on(table.source_node_id),
1971
2237
  targetIdx: index("kb_graph_edges_target_idx").on(table.target_node_id),
1972
2238
  typeIdx: index("kb_graph_edges_type_idx").on(table.edge_type),
@@ -1978,7 +2244,7 @@ var init_schema_postgres = __esm({
1978
2244
  table.target_node_id,
1979
2245
  table.edge_type
1980
2246
  ),
1981
- sourceTargetTypeIdx: uniqueIndex("kb_graph_edges_source_target_type_idx").on(table.source_node_id, table.target_node_id, table.edge_type).where(sql`${table.archived} = false`),
2247
+ sourceTargetTypeIdx: 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(sql`${table.archived} = false`),
1982
2248
  archivedIdx: index("kb_graph_edges_archived_idx").on(table.archived)
1983
2249
  })
1984
2250
  );
@@ -2042,6 +2308,7 @@ __export(schema_sqlite_exports, {
2042
2308
  cardTypes: () => cardTypes2,
2043
2309
  cards: () => cards2,
2044
2310
  gatewayChannels: () => gatewayChannels2,
2311
+ gatewayOutboundMessages: () => gatewayOutboundMessages2,
2045
2312
  groupMemberships: () => groupMemberships2,
2046
2313
  groups: () => groups2,
2047
2314
  kbDocumentUnits: () => kbDocumentUnits2,
@@ -2080,7 +2347,7 @@ import {
2080
2347
  text as text2,
2081
2348
  uniqueIndex as uniqueIndex2
2082
2349
  } from "drizzle-orm/sqlite-core";
2083
- var 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;
2350
+ var 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;
2084
2351
  var init_schema_sqlite = __esm({
2085
2352
  "src/db/schema.sqlite.ts"() {
2086
2353
  "use strict";
@@ -2154,6 +2421,7 @@ var init_schema_sqlite = __esm({
2154
2421
  },
2155
2422
  (table) => ({
2156
2423
  statusIdx: index2("sessions_status_idx").on(table.status),
2424
+ statusReadyIdx: index2("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
2157
2425
  agenticToolIdx: index2("sessions_agentic_tool_idx").on(table.agentic_tool),
2158
2426
  boardIdx: index2("sessions_board_idx").on(table.board_id),
2159
2427
  branchIdx: index2("sessions_branch_idx").on(table.branch_id),
@@ -2193,6 +2461,9 @@ var init_schema_sqlite = __esm({
2193
2461
  sourceIdx: index2("session_relationships_source_idx").on(table.source_session_id),
2194
2462
  targetIdx: index2("session_relationships_target_idx").on(table.target_session_id),
2195
2463
  callbackIdx: index2("session_relationships_callback_idx").on(table.callback_session_id),
2464
+ // Note: no tenant_source/tenant_target composite indexes here — SQLite schema
2465
+ // has no tenant column on this table (RLS is Postgres-only). The standalone
2466
+ // source/target indexes above are sufficient for SQLite.
2196
2467
  sourceTargetTypeUnique: uniqueIndex2("session_relationships_source_target_type_unique").on(
2197
2468
  table.source_session_id,
2198
2469
  table.target_session_id,
@@ -2312,7 +2583,12 @@ var init_schema_sqlite = __esm({
2312
2583
  // Indexes for efficient lookups
2313
2584
  sessionIdx: index2("messages_session_id_idx").on(table.session_id),
2314
2585
  taskIdx: index2("messages_task_id_idx").on(table.task_id),
2315
- sessionIndexIdx: index2("messages_session_index_idx").on(table.session_id, table.index)
2586
+ sessionIndexIdx: index2("messages_session_index_idx").on(table.session_id, table.index),
2587
+ timestampIdx: index2("messages_timestamp_idx").on(table.timestamp),
2588
+ sessionTimestampIdx: index2("messages_session_timestamp_idx").on(
2589
+ table.session_id,
2590
+ table.timestamp
2591
+ )
2316
2592
  })
2317
2593
  );
2318
2594
  boards2 = sqliteTable(
@@ -2538,6 +2814,9 @@ var init_schema_sqlite = __esm({
2538
2814
  onboarding_completed: t2.bool("onboarding_completed").notNull().default(false),
2539
2815
  // Force password change flag (admin-settable, auto-cleared on password change)
2540
2816
  must_change_password: t2.bool("must_change_password").notNull().default(false),
2817
+ // Auth invalidation marker. Password changes set this timestamp so any
2818
+ // previously issued browser access or refresh token is rejected.
2819
+ tokens_valid_after: t2.timestamp("tokens_valid_after"),
2541
2820
  // JSON blob for profile/preferences
2542
2821
  data: t2.json("data").$type().notNull()
2543
2822
  },
@@ -2981,6 +3260,66 @@ var init_schema_sqlite = __esm({
2981
3260
  channelStatusIdx: index2("idx_thread_map_channel_status").on(table.channel_id, table.status)
2982
3261
  })
2983
3262
  );
3263
+ gatewayOutboundMessages2 = sqliteTable(
3264
+ "gateway_outbound_messages",
3265
+ {
3266
+ id: text2("id", { length: 36 }).primaryKey(),
3267
+ created_at: t2.timestamp("created_at").notNull(),
3268
+ updated_at: t2.timestamp("updated_at").notNull(),
3269
+ gateway_channel_id: text2("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
3270
+ channel_type: text2("channel_type", {
3271
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
3272
+ }).notNull(),
3273
+ platform_channel_id: text2("platform_channel_id").notNull(),
3274
+ platform_message_id: text2("platform_message_id").notNull(),
3275
+ platform_thread_id: text2("platform_thread_id").notNull(),
3276
+ platform_permalink: text2("platform_permalink"),
3277
+ target_branch_id: text2("target_branch_id", { length: 36 }).notNull().references(() => branches2.branch_id),
3278
+ emitted_by_user_id: text2("emitted_by_user_id", { length: 36 }).notNull().references(() => users2.user_id),
3279
+ emitted_by_session_id: text2("emitted_by_session_id", { length: 36 }).references(
3280
+ () => sessions2.session_id,
3281
+ {
3282
+ onDelete: "set null"
3283
+ }
3284
+ ),
3285
+ emitted_by_task_id: text2("emitted_by_task_id", { length: 36 }).references(() => tasks2.task_id, {
3286
+ onDelete: "set null"
3287
+ }),
3288
+ emitted_by_schedule_id: text2("emitted_by_schedule_id", { length: 36 }).references(
3289
+ () => schedules2.schedule_id,
3290
+ {
3291
+ onDelete: "set null"
3292
+ }
3293
+ ),
3294
+ message_text: text2("message_text").notNull(),
3295
+ message_preview: text2("message_preview").notNull(),
3296
+ metadata: t2.json("metadata"),
3297
+ consumed_by_session_id: text2("consumed_by_session_id", { length: 36 }).references(
3298
+ () => sessions2.session_id,
3299
+ {
3300
+ onDelete: "set null"
3301
+ }
3302
+ ),
3303
+ consumed_at: t2.timestamp("consumed_at")
3304
+ },
3305
+ (table) => ({
3306
+ uniqueChannelThread: uniqueIndex2("uniq_gateway_outbound_channel_thread").on(
3307
+ table.gateway_channel_id,
3308
+ table.platform_thread_id
3309
+ ),
3310
+ emittedSessionIdx: index2("idx_gateway_outbound_emitted_session").on(
3311
+ table.emitted_by_session_id
3312
+ ),
3313
+ emittedScheduleIdx: index2("idx_gateway_outbound_emitted_schedule").on(
3314
+ table.emitted_by_schedule_id
3315
+ ),
3316
+ targetBranchCreatedIdx: index2("idx_gateway_outbound_branch_created").on(
3317
+ table.target_branch_id,
3318
+ table.created_at
3319
+ ),
3320
+ consumedIdx: index2("idx_gateway_outbound_consumed").on(table.consumed_at)
3321
+ })
3322
+ );
2984
3323
  sessionEnvSelections2 = sqliteTable(
2985
3324
  "session_env_selections",
2986
3325
  {
@@ -3405,17 +3744,29 @@ var init_schema_factory = __esm({
3405
3744
  }
3406
3745
  });
3407
3746
 
3747
+ // src/db/tenant-context.ts
3748
+ import { AsyncLocalStorage } from "async_hooks";
3749
+ var tenantDatabaseScope;
3750
+ var init_tenant_context = __esm({
3751
+ "src/db/tenant-context.ts"() {
3752
+ "use strict";
3753
+ init_esm_shims();
3754
+ tenantDatabaseScope = new AsyncLocalStorage();
3755
+ }
3756
+ });
3757
+
3408
3758
  // src/db/database-wrapper.ts
3409
3759
  import { sql as sql3 } from "drizzle-orm";
3410
3760
  var init_database_wrapper = __esm({
3411
3761
  "src/db/database-wrapper.ts"() {
3412
3762
  "use strict";
3413
3763
  init_esm_shims();
3764
+ init_tenant_context();
3414
3765
  }
3415
3766
  });
3416
3767
 
3417
3768
  // src/db/schema.ts
3418
- 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;
3769
+ 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;
3419
3770
  var init_schema = __esm({
3420
3771
  "src/db/schema.ts"() {
3421
3772
  "use strict";
@@ -3453,6 +3804,7 @@ var init_schema = __esm({
3453
3804
  boardComments3 = schema.boardComments;
3454
3805
  gatewayChannels3 = schema.gatewayChannels;
3455
3806
  threadSessionMap3 = schema.threadSessionMap;
3807
+ gatewayOutboundMessages3 = schema.gatewayOutboundMessages;
3456
3808
  userApiKeys3 = schema.userApiKeys;
3457
3809
  serializedSessions3 = schema.serializedSessions;
3458
3810
  kbNamespaces3 = schema.kbNamespaces;
@@ -3466,9 +3818,21 @@ var init_schema = __esm({
3466
3818
  }
3467
3819
  });
3468
3820
 
3821
+ // src/db/tenant-scope.ts
3822
+ import { sql as sql4 } from "drizzle-orm";
3823
+ var init_tenant_scope = __esm({
3824
+ "src/db/tenant-scope.ts"() {
3825
+ "use strict";
3826
+ init_esm_shims();
3827
+ init_tenant_context();
3828
+ init_tenant_context();
3829
+ init_database_wrapper();
3830
+ }
3831
+ });
3832
+
3469
3833
  // src/db/user-utils.ts
3470
3834
  import bcrypt from "bcryptjs";
3471
- import { eq } from "drizzle-orm";
3835
+ import { and, eq } from "drizzle-orm";
3472
3836
  var init_user_utils = __esm({
3473
3837
  "src/db/user-utils.ts"() {
3474
3838
  "use strict";
@@ -3477,18 +3841,20 @@ var init_user_utils = __esm({
3477
3841
  init_user();
3478
3842
  init_database_wrapper();
3479
3843
  init_schema();
3844
+ init_tenant_scope();
3480
3845
  }
3481
3846
  });
3482
3847
 
3483
3848
  // src/db/first-run-bootstrap.ts
3484
3849
  import { randomInt } from "crypto";
3485
- import { eq as eq2, inArray } from "drizzle-orm";
3850
+ import { and as and2, eq as eq2, inArray } from "drizzle-orm";
3486
3851
  var init_first_run_bootstrap = __esm({
3487
3852
  "src/db/first-run-bootstrap.ts"() {
3488
3853
  "use strict";
3489
3854
  init_esm_shims();
3490
3855
  init_database_wrapper();
3491
3856
  init_schema();
3857
+ init_tenant_scope();
3492
3858
  init_user_utils();
3493
3859
  }
3494
3860
  });
@@ -3612,17 +3978,19 @@ init_esm_shims();
3612
3978
  init_esm_shims();
3613
3979
  init_ids();
3614
3980
  import {
3615
- and as and23,
3981
+ and as and28,
3616
3982
  asc as asc3,
3983
+ count,
3617
3984
  desc as desc6,
3618
- eq as eq31,
3985
+ eq as eq33,
3619
3986
  gt,
3620
3987
  gte,
3621
- inArray as inArray8,
3622
- like as like16,
3988
+ inArray as inArray11,
3989
+ like as like17,
3990
+ lt as lt3,
3623
3991
  lte as lte2,
3624
- or as or9,
3625
- sql as sql15
3992
+ or as or10,
3993
+ sql as sql16
3626
3994
  } from "drizzle-orm";
3627
3995
  import bcryptjs from "bcryptjs";
3628
3996
 
@@ -3659,9 +4027,10 @@ init_first_run_bootstrap();
3659
4027
  init_esm_shims();
3660
4028
  init_database_wrapper();
3661
4029
  init_schema();
4030
+ init_tenant_scope();
3662
4031
  import { dirname, join as join2 } from "path";
3663
4032
  import { fileURLToPath as fileURLToPath2 } from "url";
3664
- import { eq as eq3, sql as sql4 } from "drizzle-orm";
4033
+ import { and as and3, eq as eq3, sql as sql5 } from "drizzle-orm";
3665
4034
  import { migrate as migrateSQLite } from "drizzle-orm/libsql/migrator";
3666
4035
  import { migrate as migratePostgres } from "drizzle-orm/postgres-js/migrator";
3667
4036
 
@@ -3675,26 +4044,27 @@ init_esm_shims();
3675
4044
  init_esm_shims();
3676
4045
  init_ids();
3677
4046
  init_database_wrapper();
3678
- import { and, eq as eq4 } from "drizzle-orm";
4047
+ import { and as and4, eq as eq4 } from "drizzle-orm";
3679
4048
  init_schema();
3680
4049
 
3681
4050
  // src/db/repositories/base.ts
3682
4051
  init_esm_shims();
3683
4052
  init_ids();
3684
4053
  init_id();
4054
+ init_tenant_context();
3685
4055
 
3686
4056
  // src/db/repositories/artifact-trust.ts
3687
4057
  init_esm_shims();
3688
4058
  init_ids();
3689
4059
  init_database_wrapper();
3690
4060
  init_schema();
3691
- import { and as and2, eq as eq5, isNull } from "drizzle-orm";
4061
+ import { and as and5, eq as eq5, isNull } from "drizzle-orm";
3692
4062
 
3693
4063
  // src/db/repositories/artifacts.ts
3694
4064
  init_esm_shims();
3695
4065
  init_config_manager();
3696
4066
  init_ids();
3697
- import { and as and3, eq as eq6, like, or } from "drizzle-orm";
4067
+ import { and as and7, eq as eq7, inArray as inArray3, like, or as or2 } from "drizzle-orm";
3698
4068
 
3699
4069
  // src/utils/url.ts
3700
4070
  init_esm_shims();
@@ -3704,17 +4074,27 @@ init_id();
3704
4074
  init_database_wrapper();
3705
4075
  init_schema();
3706
4076
 
4077
+ // src/db/repositories/branch-access.ts
4078
+ init_esm_shims();
4079
+ init_types2();
4080
+ init_database_wrapper();
4081
+ init_schema();
4082
+ import { and as and6, eq as eq6, exists, inArray as inArray2, isNotNull, or, sql as sql6 } from "drizzle-orm";
4083
+ var VISIBLE_BRANCH_PERMISSION_LEVELS = BRANCH_PERMISSION_LEVELS.filter(
4084
+ (level) => level !== "none"
4085
+ );
4086
+
3707
4087
  // src/db/repositories/board-comments.ts
3708
4088
  init_esm_shims();
3709
4089
  init_ids();
3710
4090
  init_database_wrapper();
3711
4091
  init_schema();
3712
- import { and as and4, eq as eq7, isNull as isNull2, like as like2 } from "drizzle-orm";
4092
+ import { and as and8, eq as eq8, isNotNull as isNotNull2, isNull as isNull2, like as like2, or as or3, sql as sql7 } from "drizzle-orm";
3713
4093
 
3714
4094
  // src/db/repositories/board-objects.ts
3715
4095
  init_esm_shims();
3716
4096
  init_ids();
3717
- import { and as and6, asc, eq as eq9, getTableColumns, isNotNull as isNotNull2, isNull as isNull3, or as or3, sql as sql6 } from "drizzle-orm";
4097
+ import { and as and9, asc, eq as eq9, getTableColumns, isNotNull as isNotNull3, isNull as isNull3, or as or4, sql as sql8 } from "drizzle-orm";
3718
4098
 
3719
4099
  // src/utils/board-placement.ts
3720
4100
  init_esm_shims();
@@ -3723,23 +4103,39 @@ init_esm_shims();
3723
4103
  init_database_wrapper();
3724
4104
  init_schema();
3725
4105
 
3726
- // src/db/repositories/branch-access.ts
3727
- init_esm_shims();
3728
- init_types2();
3729
- init_database_wrapper();
3730
- init_schema();
3731
- import { and as and5, eq as eq8, exists, inArray as inArray2, isNotNull, or as or2, sql as sql5 } from "drizzle-orm";
3732
- var VISIBLE_BRANCH_PERMISSION_LEVELS = BRANCH_PERMISSION_LEVELS.filter(
3733
- (level) => level !== "none"
3734
- );
3735
-
3736
4106
  // src/db/repositories/boards.ts
3737
4107
  init_esm_shims();
3738
4108
  init_types2();
3739
4109
  init_config_manager();
3740
4110
  init_ids();
3741
- import { and as and9, eq as eq12, exists as exists2, isNull as isNull4, like as like4, ne, or as or4, sql as sql8 } from "drizzle-orm";
4111
+ import { and as and12, eq as eq12, inArray as inArray5, isNull as isNull4, like as like4, ne } from "drizzle-orm";
3742
4112
  import * as yaml2 from "js-yaml";
4113
+
4114
+ // src/utils/emoji-shortcodes.ts
4115
+ init_esm_shims();
4116
+ import { createRequire } from "module";
4117
+ var requireJson = createRequire(import.meta.url);
4118
+ var emojiData = requireJson("emojibase-data/en/compact.json");
4119
+ var shortcodes = requireJson(
4120
+ "emojibase-data/en/shortcodes/emojibase.json"
4121
+ );
4122
+ var emojiByHexcode = /* @__PURE__ */ new Map();
4123
+ for (const emoji of emojiData) {
4124
+ if (emoji.unicode) {
4125
+ emojiByHexcode.set(emoji.hexcode, emoji.unicode);
4126
+ }
4127
+ }
4128
+ var emojiByShortcode = /* @__PURE__ */ new Map();
4129
+ for (const [hexcode, codes] of Object.entries(shortcodes)) {
4130
+ const emoji = emojiByHexcode.get(hexcode);
4131
+ if (!emoji) continue;
4132
+ const codeList = Array.isArray(codes) ? codes : [codes];
4133
+ for (const code of codeList) {
4134
+ emojiByShortcode.set(code.toLowerCase(), emoji);
4135
+ }
4136
+ }
4137
+
4138
+ // src/db/repositories/boards.ts
3743
4139
  init_database_wrapper();
3744
4140
  init_schema();
3745
4141
 
@@ -3748,7 +4144,7 @@ init_esm_shims();
3748
4144
  init_types2();
3749
4145
  init_config_manager();
3750
4146
  init_ids();
3751
- import { and as and8, desc, eq as eq11, getTableColumns as getTableColumns2, inArray as inArray3, like as like3, sql as sql7 } from "drizzle-orm";
4147
+ import { and as and11, desc, eq as eq11, exists as exists2, getTableColumns as getTableColumns2, inArray as inArray4, like as like3, or as or5, sql as sql9 } from "drizzle-orm";
3752
4148
  init_database_wrapper();
3753
4149
  init_schema();
3754
4150
 
@@ -3757,7 +4153,7 @@ init_esm_shims();
3757
4153
  init_ids();
3758
4154
  init_database_wrapper();
3759
4155
  init_schema();
3760
- import { and as and7, eq as eq10 } from "drizzle-orm";
4156
+ import { and as and10, eq as eq10 } from "drizzle-orm";
3761
4157
 
3762
4158
  // src/db/repositories/merge-utils.ts
3763
4159
  init_esm_shims();
@@ -3779,7 +4175,7 @@ init_esm_shims();
3779
4175
  init_ids();
3780
4176
  init_database_wrapper();
3781
4177
  init_schema();
3782
- import { and as and10, eq as eq14, like as like6 } from "drizzle-orm";
4178
+ import { and as and13, eq as eq14, like as like6 } from "drizzle-orm";
3783
4179
 
3784
4180
  // src/db/repositories/gateway-channels.ts
3785
4181
  init_esm_shims();
@@ -3789,24 +4185,69 @@ init_database_wrapper();
3789
4185
  import { eq as eq15, like as like7 } from "drizzle-orm";
3790
4186
  init_schema();
3791
4187
 
4188
+ // src/db/repositories/gateway-outbound-messages.ts
4189
+ init_esm_shims();
4190
+ init_types2();
4191
+ init_ids();
4192
+ init_database_wrapper();
4193
+ init_schema();
4194
+ import { and as and14, eq as eq16, isNull as isNull5, like as like8 } from "drizzle-orm";
4195
+
3792
4196
  // src/db/repositories/knowledge.ts
3793
4197
  init_esm_shims();
3794
4198
  init_types2();
3795
4199
  init_config_manager();
3796
4200
  init_ids();
3797
4201
  import { createHash } from "crypto";
3798
- import { and as and11, desc as desc2, eq as eq16, inArray as inArray4, like as like8, or as or5, sql as sql9 } from "drizzle-orm";
4202
+ import { and as and15, desc as desc2, eq as eq17, inArray as inArray6, like as like9, or as or6, sql as sql10 } from "drizzle-orm";
3799
4203
  init_database_wrapper();
3800
4204
  init_schema();
3801
4205
 
3802
4206
  // src/db/repositories/mcp-servers.ts
3803
4207
  init_esm_shims();
3804
4208
  init_ids();
3805
- import { and as and12, eq as eq17, like as like9 } from "drizzle-orm";
4209
+ import { and as and17, eq as eq20, like as like10 } from "drizzle-orm";
3806
4210
 
3807
4211
  // src/tools/mcp/auth-secrets.ts
3808
4212
  init_esm_shims();
3809
4213
 
4214
+ // src/mcp/template-resolver.ts
4215
+ init_esm_shims();
4216
+
4217
+ // src/config/env-resolver.ts
4218
+ init_esm_shims();
4219
+ init_database_wrapper();
4220
+ import { eq as eq19 } from "drizzle-orm";
4221
+
4222
+ // src/db/repositories/session-env-selections.ts
4223
+ init_esm_shims();
4224
+ init_database_wrapper();
4225
+ init_schema();
4226
+ import { and as and16, eq as eq18 } from "drizzle-orm";
4227
+
4228
+ // src/config/env-resolver.ts
4229
+ init_schema();
4230
+
4231
+ // src/config/env-blocklist.ts
4232
+ init_esm_shims();
4233
+ var BLOCKED_ENV_PATTERNS = Object.freeze([
4234
+ /^LD_/i,
4235
+ /^DYLD_/i,
4236
+ /^PYTHON(?!_AGOR_)/i
4237
+ ]);
4238
+
4239
+ // src/config/env-vars.ts
4240
+ init_esm_shims();
4241
+ var V05_SCOPES = ["global", "session"];
4242
+ var V05_SCOPE_SET = new Set(V05_SCOPES);
4243
+
4244
+ // src/templates/handlebars-helpers.ts
4245
+ init_esm_shims();
4246
+ import Handlebars from "handlebars";
4247
+
4248
+ // src/mcp/template-patterns.ts
4249
+ init_esm_shims();
4250
+
3810
4251
  // src/tools/mcp/http-headers.ts
3811
4252
  init_esm_shims();
3812
4253
 
@@ -3818,21 +4259,18 @@ init_schema();
3818
4259
  init_esm_shims();
3819
4260
  init_database_wrapper();
3820
4261
  init_schema();
3821
- import { and as and13, eq as eq18 } from "drizzle-orm";
4262
+ import { and as and18, eq as eq21, inArray as inArray7 } from "drizzle-orm";
3822
4263
 
3823
4264
  // src/db/repositories/repos.ts
3824
4265
  init_esm_shims();
3825
- import { eq as eq19, like as like10, sql as sql10 } from "drizzle-orm";
4266
+ import { eq as eq22, like as like11, sql as sql11 } from "drizzle-orm";
3826
4267
 
3827
4268
  // src/config/variant-resolver.ts
3828
4269
  init_esm_shims();
3829
4270
 
3830
4271
  // src/yaml/index.ts
3831
4272
  init_esm_shims();
3832
- import yaml3 from "js-yaml";
3833
- var load2 = yaml3.load;
3834
- var dump2 = yaml3.dump;
3835
- var YAMLException = yaml3.YAMLException;
4273
+ import * as yaml3 from "js-yaml";
3836
4274
 
3837
4275
  // src/db/repositories/repos.ts
3838
4276
  init_ids();
@@ -3844,33 +4282,27 @@ init_esm_shims();
3844
4282
  init_ids();
3845
4283
  init_database_wrapper();
3846
4284
  init_schema();
3847
- import { and as and14, asc as asc2, desc as desc3, eq as eq20, isNull as isNull5, like as like11, lte, or as or6, sql as sql11 } from "drizzle-orm";
4285
+ import { and as and19, asc as asc2, desc as desc3, eq as eq23, isNull as isNull6, like as like12, lte, or as or7, sql as sql12 } from "drizzle-orm";
3848
4286
 
3849
4287
  // src/db/repositories/serialized-sessions.ts
3850
4288
  init_esm_shims();
3851
4289
  init_ids();
3852
4290
  init_database_wrapper();
3853
4291
  init_schema();
3854
- import { and as and15, desc as desc4, eq as eq21, lt } from "drizzle-orm";
3855
-
3856
- // src/db/repositories/session-env-selections.ts
3857
- init_esm_shims();
3858
- init_database_wrapper();
3859
- init_schema();
3860
- import { and as and16, eq as eq22 } from "drizzle-orm";
4292
+ import { and as and20, desc as desc4, eq as eq24, lt } from "drizzle-orm";
3861
4293
 
3862
4294
  // src/db/repositories/session-mcp-servers.ts
3863
4295
  init_esm_shims();
3864
4296
  init_database_wrapper();
3865
4297
  init_schema();
3866
- import { and as and18, eq as eq24 } from "drizzle-orm";
4298
+ import { and as and22, eq as eq26 } from "drizzle-orm";
3867
4299
 
3868
4300
  // src/db/repositories/sessions.ts
3869
4301
  init_esm_shims();
3870
4302
  init_types2();
3871
4303
  init_config_manager();
3872
4304
  init_ids();
3873
- import { and as and17, desc as desc5, eq as eq23, inArray as inArray5, like as like12, or as or7, sql as sql12 } from "drizzle-orm";
4305
+ import { and as and21, desc as desc5, eq as eq25, inArray as inArray8, like as like13, or as or8, sql as sql13 } from "drizzle-orm";
3874
4306
  init_database_wrapper();
3875
4307
  init_schema();
3876
4308
 
@@ -3879,7 +4311,7 @@ init_esm_shims();
3879
4311
  init_ids();
3880
4312
  init_database_wrapper();
3881
4313
  init_schema();
3882
- import { and as and19, eq as eq25, inArray as inArray6, or as or8 } from "drizzle-orm";
4314
+ import { and as and23, eq as eq27, inArray as inArray9, or as or9 } from "drizzle-orm";
3883
4315
 
3884
4316
  // src/db/repositories/tasks.ts
3885
4317
  init_esm_shims();
@@ -3887,7 +4319,7 @@ init_types2();
3887
4319
  init_ids();
3888
4320
  init_database_wrapper();
3889
4321
  init_schema();
3890
- import { eq as eq26, inArray as inArray7, like as like13, sql as sql13 } from "drizzle-orm";
4322
+ import { and as and24, eq as eq28, inArray as inArray10, like as like14, sql as sql14 } from "drizzle-orm";
3891
4323
 
3892
4324
  // src/db/repositories/thread-session-map.ts
3893
4325
  init_esm_shims();
@@ -3895,34 +4327,28 @@ init_types2();
3895
4327
  init_ids();
3896
4328
  init_database_wrapper();
3897
4329
  init_schema();
3898
- import { and as and20, eq as eq27, like as like14, lt as lt2 } from "drizzle-orm";
4330
+ import { and as and25, eq as eq29, like as like15, lt as lt2 } from "drizzle-orm";
3899
4331
 
3900
4332
  // src/db/repositories/user-api-keys.ts
3901
4333
  init_esm_shims();
3902
4334
  init_ids();
3903
4335
  init_database_wrapper();
3904
4336
  init_schema();
4337
+ init_tenant_context();
3905
4338
  import { randomBytes as randomBytes3 } from "crypto";
3906
4339
  import bcrypt2 from "bcryptjs";
3907
- import { and as and21, eq as eq28 } from "drizzle-orm";
4340
+ import { and as and26, eq as eq30 } from "drizzle-orm";
3908
4341
 
3909
4342
  // src/db/repositories/user-mcp-oauth-tokens.ts
3910
4343
  init_esm_shims();
3911
4344
  init_database_wrapper();
3912
4345
  init_schema();
3913
- import { and as and22, eq as eq29, isNull as isNull6 } from "drizzle-orm";
4346
+ import { and as and27, eq as eq31, isNull as isNull7 } from "drizzle-orm";
3914
4347
 
3915
4348
  // src/db/repositories/users.ts
3916
4349
  init_esm_shims();
3917
4350
  init_types2();
3918
- import { eq as eq30, like as like15, sql as sql14 } from "drizzle-orm";
3919
-
3920
- // src/config/env-vars.ts
3921
- init_esm_shims();
3922
- var V05_SCOPES = ["global", "session"];
3923
- var V05_SCOPE_SET = new Set(V05_SCOPES);
3924
-
3925
- // src/db/repositories/users.ts
4351
+ import { eq as eq32, like as like16, sql as sql15 } from "drizzle-orm";
3926
4352
  init_ids();
3927
4353
  init_database_wrapper();
3928
4354
  init_schema();
@@ -3935,6 +4361,7 @@ init_esm_shims();
3935
4361
  init_ids();
3936
4362
 
3937
4363
  // src/db/index.ts
4364
+ init_tenant_scope();
3938
4365
  init_user_utils();
3939
4366
  var compare = bcryptjs.compare;
3940
4367
  var hash = bcryptjs.hash;
@@ -3988,8 +4415,8 @@ function extractTasksFromMessages(messages4, sessionId) {
3988
4415
  const userMessage = messages4[startIndex];
3989
4416
  const endIndex = i < userMessageIndices.length - 1 ? userMessageIndices[i + 1] - 1 : messages4.length - 1;
3990
4417
  const messagesInRange = messages4.slice(startIndex, endIndex + 1);
3991
- const toolUseCount = messagesInRange.reduce((count, msg) => {
3992
- return count + (msg.tool_uses?.length ?? 0);
4418
+ const toolUseCount = messagesInRange.reduce((count2, msg) => {
4419
+ return count2 + (msg.tool_uses?.length ?? 0);
3993
4420
  }, 0);
3994
4421
  let fullPrompt = "";
3995
4422
  if (typeof userMessage.content === "string") {