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
@@ -57,19 +57,49 @@ var init_ids = __esm({
57
57
  }
58
58
  });
59
59
 
60
+ // src/db/tenant-context.ts
61
+ import { AsyncLocalStorage } from "async_hooks";
62
+ function getCurrentTenantId() {
63
+ const store = tenantDatabaseScope.getStore();
64
+ return store?.kind === "tenant" ? store.tenantId : void 0;
65
+ }
66
+ var tenantDatabaseScope;
67
+ var init_tenant_context = __esm({
68
+ "src/db/tenant-context.ts"() {
69
+ "use strict";
70
+ init_esm_shims();
71
+ tenantDatabaseScope = new AsyncLocalStorage();
72
+ }
73
+ });
74
+
60
75
  // src/db/database-wrapper.ts
61
76
  import { sql } from "drizzle-orm";
62
77
  function isSQLiteDatabase(db) {
63
78
  return "run" in db && typeof db.run === "function";
64
79
  }
65
- function wrapQuery(query, db) {
80
+ function tableHasTenantColumn(table) {
81
+ return Boolean(table && "tenant_id" in table);
82
+ }
83
+ function withTenantInsertValues(values, table) {
84
+ const tenantId = getCurrentTenantId();
85
+ if (!tenantId || !tableHasTenantColumn(table)) return values;
86
+ const stamp = (row) => {
87
+ if (!row || typeof row !== "object" || Array.isArray(row)) return row;
88
+ if ("tenant_id" in row) return row;
89
+ return { tenant_id: tenantId, ...row };
90
+ };
91
+ return Array.isArray(values) ? values.map(stamp) : stamp(values);
92
+ }
93
+ function wrapQuery(query, db, table) {
66
94
  return {
67
95
  ...query,
68
96
  one: async () => {
69
97
  if (isSQLiteDatabase(db)) {
70
98
  return await query.get();
71
99
  } else {
72
- const results = await query.limit(1);
100
+ const results = await query.limit(
101
+ 1
102
+ );
73
103
  return results[0] || null;
74
104
  }
75
105
  },
@@ -91,30 +121,55 @@ function wrapQuery(query, db) {
91
121
  return { rowsAffected: result.length || 0 };
92
122
  }
93
123
  },
94
- // biome-ignore lint/suspicious/noExplicitAny: Drizzle query builder types vary by dialect
95
124
  returning: () => wrapReturning(query.returning(), db),
96
125
  // Preserve chainable methods
97
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
98
- where: (...args) => wrapQuery(query.where(...args), db),
99
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
100
- limit: (...args) => wrapQuery(query.limit(...args), db),
101
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
102
- offset: (...args) => wrapQuery(query.offset(...args), db),
103
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
104
- orderBy: (...args) => wrapQuery(query.orderBy(...args), db),
105
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
106
- groupBy: (...args) => wrapQuery(query.groupBy(...args), db),
107
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
108
- set: (...args) => wrapQuery(query.set(...args), db),
109
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
110
- values: (...args) => wrapQuery(query.values(...args), db),
111
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
112
- innerJoin: (...args) => wrapQuery(query.innerJoin(...args), db),
113
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
114
- leftJoin: (...args) => wrapQuery(query.leftJoin(...args), db),
115
- onConflictDoNothing: (...args) => (
116
- // biome-ignore lint/suspicious/noExplicitAny: Drizzle exposes onConflictDoNothing on both dialects after .values()
117
- wrapQuery(query.onConflictDoNothing(...args), db)
126
+ where: (...args) => wrapQuery(
127
+ query.where(...args),
128
+ db,
129
+ table
130
+ ),
131
+ limit: (...args) => wrapQuery(
132
+ query.limit(...args),
133
+ db,
134
+ table
135
+ ),
136
+ offset: (...args) => wrapQuery(
137
+ query.offset(...args),
138
+ db,
139
+ table
140
+ ),
141
+ orderBy: (...args) => wrapQuery(
142
+ query.orderBy(...args),
143
+ db,
144
+ table
145
+ ),
146
+ groupBy: (...args) => wrapQuery(
147
+ query.groupBy(...args),
148
+ db,
149
+ table
150
+ ),
151
+ set: (...args) => wrapQuery(query.set(...args), db, table),
152
+ values: (...args) => wrapQuery(
153
+ query.values(
154
+ ...args.map((arg) => withTenantInsertValues(arg, table))
155
+ ),
156
+ db,
157
+ table
158
+ ),
159
+ innerJoin: (...args) => wrapQuery(
160
+ query.innerJoin(...args),
161
+ db,
162
+ table
163
+ ),
164
+ leftJoin: (...args) => wrapQuery(
165
+ query.leftJoin(...args),
166
+ db,
167
+ table
168
+ ),
169
+ onConflictDoNothing: (...args) => wrapQuery(
170
+ query.onConflictDoNothing(...args),
171
+ db,
172
+ table
118
173
  )
119
174
  };
120
175
  }
@@ -147,7 +202,7 @@ function select(db, columns) {
147
202
  }
148
203
  function insert(db, table) {
149
204
  const query = db.insert(table);
150
- return wrapQuery(query, db);
205
+ return wrapQuery(query, db, table);
151
206
  }
152
207
  function update(db, table) {
153
208
  const query = db.update(table);
@@ -161,6 +216,7 @@ var init_database_wrapper = __esm({
161
216
  "src/db/database-wrapper.ts"() {
162
217
  "use strict";
163
218
  init_esm_shims();
219
+ init_tenant_context();
164
220
  }
165
221
  });
166
222
 
@@ -408,6 +464,14 @@ var init_template = __esm({
408
464
  }
409
465
  });
410
466
 
467
+ // src/types/tenant.ts
468
+ var init_tenant = __esm({
469
+ "src/types/tenant.ts"() {
470
+ "use strict";
471
+ init_esm_shims();
472
+ }
473
+ });
474
+
411
475
  // src/types/ui.ts
412
476
  var init_ui = __esm({
413
477
  "src/types/ui.ts"() {
@@ -498,6 +562,7 @@ var init_types = __esm({
498
562
  init_session();
499
563
  init_task();
500
564
  init_template();
565
+ init_tenant();
501
566
  init_ui();
502
567
  init_user();
503
568
  init_utils();
@@ -523,6 +588,7 @@ __export(schema_postgres_exports, {
523
588
  cardTypes: () => cardTypes,
524
589
  cards: () => cards,
525
590
  gatewayChannels: () => gatewayChannels,
591
+ gatewayOutboundMessages: () => gatewayOutboundMessages,
526
592
  groupMemberships: () => groupMemberships,
527
593
  groups: () => groups,
528
594
  kbDocumentUnits: () => kbDocumentUnits,
@@ -566,7 +632,7 @@ import {
566
632
  uniqueIndex,
567
633
  varchar
568
634
  } from "drizzle-orm/pg-core";
569
- 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;
635
+ 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;
570
636
  var init_schema_postgres = __esm({
571
637
  "src/db/schema.postgres.ts"() {
572
638
  "use strict";
@@ -585,6 +651,7 @@ var init_schema_postgres = __esm({
585
651
  sessions = pgTable(
586
652
  "sessions",
587
653
  {
654
+ tenant_id: text("tenant_id").notNull().default("default"),
588
655
  // Primary identity
589
656
  session_id: varchar("session_id", { length: 36 }).primaryKey(),
590
657
  created_at: t.timestamp("created_at").notNull(),
@@ -644,7 +711,9 @@ var init_schema_postgres = __esm({
644
711
  data: t.json("data").$type().notNull()
645
712
  },
646
713
  (table) => ({
714
+ tenantIdx: index("sessions_tenant_id_idx").on(table.tenant_id),
647
715
  statusIdx: index("sessions_status_idx").on(table.status),
716
+ statusReadyIdx: index("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
648
717
  agenticToolIdx: index("sessions_agentic_tool_idx").on(table.agentic_tool),
649
718
  boardIdx: index("sessions_board_idx").on(table.board_id),
650
719
  branchIdx: index("sessions_branch_idx").on(table.branch_id),
@@ -656,12 +725,13 @@ var init_schema_postgres = __esm({
656
725
  // Partial unique index — covering for the scheduler's dedup lookup
657
726
  // AND serves as the DB-level guard against check-then-create races
658
727
  // in spawnScheduledSession.
659
- scheduleRunUnique: uniqueIndex("sessions_schedule_run_unique").on(table.schedule_id, table.scheduled_run_at).where(sql2`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
728
+ scheduleRunUnique: uniqueIndex("sessions_schedule_run_unique").on(table.tenant_id, table.schedule_id, table.scheduled_run_at).where(sql2`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
660
729
  })
661
730
  );
662
731
  sessionRelationships = pgTable(
663
732
  "session_relationships",
664
733
  {
734
+ tenant_id: text("tenant_id").notNull().default("default"),
665
735
  relationship_id: varchar("relationship_id", { length: 36 }).primaryKey(),
666
736
  source_session_id: varchar("source_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
667
737
  target_session_id: varchar("target_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
@@ -679,10 +749,23 @@ var init_schema_postgres = __esm({
679
749
  data: t.json("data")
680
750
  },
681
751
  (table) => ({
752
+ tenantIdx: index("session_relationships_tenant_id_idx").on(table.tenant_id),
682
753
  sourceIdx: index("session_relationships_source_idx").on(table.source_session_id),
683
754
  targetIdx: index("session_relationships_target_idx").on(table.target_session_id),
684
755
  callbackIdx: index("session_relationships_callback_idx").on(table.callback_session_id),
756
+ // Composite indexes so the OR predicate in dispatchCompletionCallbacks
757
+ // (WHERE source_session_id = $1 OR target_session_id = $2) uses BitmapOr
758
+ // over these instead of a full tenant table scan via tenant_id_idx.
759
+ tenantSourceIdx: index("session_relationships_tenant_source_idx").on(
760
+ table.tenant_id,
761
+ table.source_session_id
762
+ ),
763
+ tenantTargetIdx: index("session_relationships_tenant_target_idx").on(
764
+ table.tenant_id,
765
+ table.target_session_id
766
+ ),
685
767
  sourceTargetTypeUnique: uniqueIndex("session_relationships_source_target_type_unique").on(
768
+ table.tenant_id,
686
769
  table.source_session_id,
687
770
  table.target_session_id,
688
771
  table.relationship_type
@@ -692,6 +775,7 @@ var init_schema_postgres = __esm({
692
775
  tasks = pgTable(
693
776
  "tasks",
694
777
  {
778
+ tenant_id: text("tenant_id").notNull().default("default"),
695
779
  task_id: varchar("task_id", { length: 36 }).primaryKey(),
696
780
  session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
697
781
  created_at: t.timestamp("created_at").notNull(),
@@ -721,19 +805,23 @@ var init_schema_postgres = __esm({
721
805
  data: t.json("data").$type().notNull()
722
806
  },
723
807
  (table) => ({
808
+ tenantIdx: index("tasks_tenant_id_idx").on(table.tenant_id),
724
809
  sessionIdx: index("tasks_session_idx").on(table.session_id),
725
810
  statusIdx: index("tasks_status_idx").on(table.status),
726
811
  createdIdx: index("tasks_created_idx").on(table.created_at),
812
+ // Composite for "latest task for session" queries (ORDER BY created_at DESC LIMIT 1).
813
+ sessionCreatedIdx: index("tasks_session_created_idx").on(table.session_id, table.created_at),
727
814
  queueIdx: index("tasks_queue_idx").on(table.session_id, table.status, table.queue_position),
728
815
  // Partial unique index — defense-in-depth for `tasks.createPending` race
729
816
  // serialization. Only QUEUED rows are constrained; CREATED/RUNNING/done
730
817
  // rows have NULL queue_position and are unaffected.
731
- queuedPositionUnique: uniqueIndex("tasks_queued_position_unique").on(table.session_id, table.queue_position).where(sql2`${table.status} = 'queued'`)
818
+ queuedPositionUnique: uniqueIndex("tasks_queued_position_unique").on(table.tenant_id, table.session_id, table.queue_position).where(sql2`${table.status} = 'queued'`)
732
819
  })
733
820
  );
734
821
  serializedSessions = pgTable(
735
822
  "serialized_sessions",
736
823
  {
824
+ tenant_id: text("tenant_id").notNull().default("default"),
737
825
  id: varchar("id", { length: 36 }).primaryKey(),
738
826
  session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
739
827
  branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
@@ -749,6 +837,7 @@ var init_schema_postgres = __esm({
749
837
  // gzipped; NULL while status='processing'
750
838
  },
751
839
  (table) => ({
840
+ tenantIdx: index("serialized_sessions_tenant_id_idx").on(table.tenant_id),
752
841
  sessionTurnIdx: index("serialized_sessions_session_turn_idx").on(
753
842
  table.session_id,
754
843
  table.turn_index
@@ -759,6 +848,7 @@ var init_schema_postgres = __esm({
759
848
  messages = pgTable(
760
849
  "messages",
761
850
  {
851
+ tenant_id: text("tenant_id").notNull().default("default"),
762
852
  // Primary identity
763
853
  message_id: varchar("message_id", { length: 36 }).primaryKey(),
764
854
  created_at: t.timestamp("created_at").notNull(),
@@ -798,15 +888,23 @@ var init_schema_postgres = __esm({
798
888
  data: t.json("data").$type().notNull()
799
889
  },
800
890
  (table) => ({
891
+ tenantIdx: index("messages_tenant_id_idx").on(table.tenant_id),
892
+ tenantTimestampIdx: index("messages_tenant_timestamp_idx").on(table.tenant_id, table.timestamp),
801
893
  // Indexes for efficient lookups
802
894
  sessionIdx: index("messages_session_id_idx").on(table.session_id),
803
895
  taskIdx: index("messages_task_id_idx").on(table.task_id),
804
- sessionIndexIdx: index("messages_session_index_idx").on(table.session_id, table.index)
896
+ sessionIndexIdx: index("messages_session_index_idx").on(table.session_id, table.index),
897
+ timestampIdx: index("messages_timestamp_idx").on(table.timestamp),
898
+ sessionTimestampIdx: index("messages_session_timestamp_idx").on(
899
+ table.session_id,
900
+ table.timestamp
901
+ )
805
902
  })
806
903
  );
807
904
  boards = pgTable(
808
905
  "boards",
809
906
  {
907
+ tenant_id: text("tenant_id").notNull().default("default"),
810
908
  board_id: varchar("board_id", { length: 36 }).primaryKey(),
811
909
  created_at: t.timestamp("created_at").notNull(),
812
910
  updated_at: t.timestamp("updated_at"),
@@ -814,7 +912,7 @@ var init_schema_postgres = __esm({
814
912
  created_by: varchar("created_by", { length: 36 }).notNull(),
815
913
  // Materialized for lookups
816
914
  name: text("name").notNull(),
817
- slug: text("slug").unique(),
915
+ slug: text("slug"),
818
916
  primary_assistant_id: varchar("primary_assistant_id", { length: 36 }).references(
819
917
  () => branches.branch_id,
820
918
  {
@@ -829,18 +927,21 @@ var init_schema_postgres = __esm({
829
927
  archived_by: varchar("archived_by", { length: 36 })
830
928
  },
831
929
  (table) => ({
930
+ tenantIdx: index("boards_tenant_id_idx").on(table.tenant_id),
832
931
  nameIdx: index("boards_name_idx").on(table.name),
833
- slugIdx: index("boards_slug_idx").on(table.slug)
932
+ slugIdx: index("boards_slug_idx").on(table.slug),
933
+ slugTenantUnique: uniqueIndex("boards_tenant_slug_unique").on(table.tenant_id, table.slug)
834
934
  })
835
935
  );
836
936
  repos = pgTable(
837
937
  "repos",
838
938
  {
939
+ tenant_id: text("tenant_id").notNull().default("default"),
839
940
  repo_id: varchar("repo_id", { length: 36 }).primaryKey(),
840
941
  created_at: t.timestamp("created_at").notNull(),
841
942
  updated_at: t.timestamp("updated_at"),
842
943
  // Materialized for querying
843
- slug: text("slug").notNull().unique(),
944
+ slug: text("slug").notNull(),
844
945
  repo_type: text("repo_type", { enum: ["remote", "local"] }).notNull().default("remote"),
845
946
  // Unix group for repo-level git access (agor_rp_<short-id>)
846
947
  // Users who have access to ANY branch in this repo get added to this group.
@@ -851,12 +952,15 @@ var init_schema_postgres = __esm({
851
952
  data: t.json("data").$type().notNull()
852
953
  },
853
954
  (table) => ({
854
- slugIdx: index("repos_slug_idx").on(table.slug)
955
+ tenantIdx: index("repos_tenant_id_idx").on(table.tenant_id),
956
+ slugIdx: index("repos_slug_idx").on(table.slug),
957
+ slugTenantUnique: uniqueIndex("repos_tenant_slug_unique").on(table.tenant_id, table.slug)
855
958
  })
856
959
  );
857
960
  branches = pgTable(
858
961
  "branches",
859
962
  {
963
+ tenant_id: text("tenant_id").notNull().default("default"),
860
964
  // Primary identity
861
965
  branch_id: varchar("branch_id", { length: 36 }).primaryKey(),
862
966
  repo_id: varchar("repo_id", { length: 36 }).notNull().references(() => repos.repo_id, { onDelete: "cascade" }),
@@ -931,6 +1035,7 @@ var init_schema_postgres = __esm({
931
1035
  data: t.json("data").$type().notNull()
932
1036
  },
933
1037
  (table) => ({
1038
+ tenantIdx: index("branches_tenant_id_idx").on(table.tenant_id),
934
1039
  repoIdx: index("branches_repo_idx").on(table.repo_id),
935
1040
  nameIdx: index("branches_name_idx").on(table.name),
936
1041
  refIdx: index("branches_ref_idx").on(table.ref),
@@ -944,22 +1049,26 @@ var init_schema_postgres = __esm({
944
1049
  branchOwners = pgTable(
945
1050
  "branch_owners",
946
1051
  {
1052
+ tenant_id: text("tenant_id").notNull().default("default"),
947
1053
  branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
948
1054
  user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
949
1055
  created_at: t.timestamp("created_at").defaultNow()
950
1056
  },
951
1057
  (table) => ({
1058
+ tenantIdx: index("branch_owners_tenant_id_idx").on(table.tenant_id),
952
1059
  pk: primaryKey({ columns: [table.branch_id, table.user_id] })
953
1060
  })
954
1061
  );
955
1062
  boardOwners = pgTable(
956
1063
  "board_owners",
957
1064
  {
1065
+ tenant_id: text("tenant_id").notNull().default("default"),
958
1066
  board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
959
1067
  user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
960
1068
  created_at: t.timestamp("created_at")
961
1069
  },
962
1070
  (table) => ({
1071
+ tenantIdx: index("board_owners_tenant_id_idx").on(table.tenant_id),
963
1072
  pk: primaryKey({ columns: [table.board_id, table.user_id] }),
964
1073
  userIdx: index("board_owners_user_idx").on(table.user_id)
965
1074
  })
@@ -967,6 +1076,7 @@ var init_schema_postgres = __esm({
967
1076
  schedules = pgTable(
968
1077
  "schedules",
969
1078
  {
1079
+ tenant_id: text("tenant_id").notNull().default("default"),
970
1080
  schedule_id: varchar("schedule_id", { length: 36 }).primaryKey(),
971
1081
  branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
972
1082
  name: text("name").notNull(),
@@ -990,6 +1100,7 @@ var init_schema_postgres = __esm({
990
1100
  created_by: varchar("created_by", { length: 36 }).notNull().references(() => users.user_id)
991
1101
  },
992
1102
  (table) => ({
1103
+ tenantIdx: index("schedules_tenant_id_idx").on(table.tenant_id),
993
1104
  enabledNextRunIdx: index("schedules_enabled_next_run_idx").on(table.enabled, table.next_run_at),
994
1105
  branchIdx: index("schedules_branch_idx").on(table.branch_id),
995
1106
  createdByIdx: index("schedules_created_by_idx").on(table.created_by)
@@ -998,12 +1109,13 @@ var init_schema_postgres = __esm({
998
1109
  users = pgTable(
999
1110
  "users",
1000
1111
  {
1112
+ tenant_id: text("tenant_id").notNull().default("default"),
1001
1113
  // Primary identity
1002
1114
  user_id: varchar("user_id", { length: 36 }).primaryKey(),
1003
1115
  created_at: t.timestamp("created_at").notNull(),
1004
1116
  updated_at: t.timestamp("updated_at"),
1005
1117
  // Materialized for auth lookups
1006
- email: text("email").unique().notNull(),
1118
+ email: text("email").notNull(),
1007
1119
  password: text("password").notNull(),
1008
1120
  // bcrypt hashed
1009
1121
  // Basic profile (materialized for display)
@@ -1019,16 +1131,22 @@ var init_schema_postgres = __esm({
1019
1131
  onboarding_completed: t.bool("onboarding_completed").notNull().default(false),
1020
1132
  // Force password change flag (admin-settable, auto-cleared on password change)
1021
1133
  must_change_password: t.bool("must_change_password").notNull().default(false),
1134
+ // Auth invalidation marker. Password changes set this timestamp so any
1135
+ // previously issued browser access or refresh token is rejected.
1136
+ tokens_valid_after: t.timestamp("tokens_valid_after"),
1022
1137
  // JSON blob for profile/preferences
1023
1138
  data: t.json("data").$type().notNull()
1024
1139
  },
1025
1140
  (table) => ({
1026
- emailIdx: index("users_email_idx").on(table.email)
1141
+ tenantIdx: index("users_tenant_id_idx").on(table.tenant_id),
1142
+ emailIdx: index("users_email_idx").on(table.email),
1143
+ emailTenantUnique: uniqueIndex("users_tenant_email_unique").on(table.tenant_id, table.email)
1027
1144
  })
1028
1145
  );
1029
1146
  groups = pgTable(
1030
1147
  "groups",
1031
1148
  {
1149
+ tenant_id: text("tenant_id").notNull().default("default"),
1032
1150
  group_id: varchar("group_id", { length: 36 }).primaryKey(),
1033
1151
  name: text("name").notNull(),
1034
1152
  slug: text("slug").notNull(),
@@ -1041,13 +1159,15 @@ var init_schema_postgres = __esm({
1041
1159
  updated_at: t.timestamp("updated_at")
1042
1160
  },
1043
1161
  (table) => ({
1044
- slugIdx: uniqueIndex("groups_slug_idx").on(table.slug),
1162
+ tenantIdx: index("groups_tenant_id_idx").on(table.tenant_id),
1163
+ slugIdx: uniqueIndex("groups_tenant_slug_unique").on(table.tenant_id, table.slug),
1045
1164
  archivedIdx: index("groups_archived_idx").on(table.archived)
1046
1165
  })
1047
1166
  );
1048
1167
  groupMemberships = pgTable(
1049
1168
  "group_memberships",
1050
1169
  {
1170
+ tenant_id: text("tenant_id").notNull().default("default"),
1051
1171
  group_id: varchar("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1052
1172
  user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1053
1173
  added_by: varchar("added_by", { length: 36 }).references(() => users.user_id, {
@@ -1056,6 +1176,7 @@ var init_schema_postgres = __esm({
1056
1176
  created_at: t.timestamp("created_at").notNull()
1057
1177
  },
1058
1178
  (table) => ({
1179
+ tenantIdx: index("group_memberships_tenant_id_idx").on(table.tenant_id),
1059
1180
  pk: primaryKey({ columns: [table.group_id, table.user_id] }),
1060
1181
  userIdx: index("group_memberships_user_idx").on(table.user_id)
1061
1182
  })
@@ -1063,6 +1184,7 @@ var init_schema_postgres = __esm({
1063
1184
  branchGroupGrants = pgTable(
1064
1185
  "branch_group_grants",
1065
1186
  {
1187
+ tenant_id: text("tenant_id").notNull().default("default"),
1066
1188
  branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1067
1189
  group_id: varchar("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1068
1190
  can: text("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
@@ -1074,6 +1196,7 @@ var init_schema_postgres = __esm({
1074
1196
  updated_at: t.timestamp("updated_at")
1075
1197
  },
1076
1198
  (table) => ({
1199
+ tenantIdx: index("branch_group_grants_tenant_id_idx").on(table.tenant_id),
1077
1200
  pk: primaryKey({ columns: [table.branch_id, table.group_id] }),
1078
1201
  groupIdx: index("branch_group_grants_group_idx").on(table.group_id)
1079
1202
  })
@@ -1081,6 +1204,7 @@ var init_schema_postgres = __esm({
1081
1204
  boardGroupGrants = pgTable(
1082
1205
  "board_group_grants",
1083
1206
  {
1207
+ tenant_id: text("tenant_id").notNull().default("default"),
1084
1208
  board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1085
1209
  group_id: varchar("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1086
1210
  can: text("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
@@ -1092,6 +1216,7 @@ var init_schema_postgres = __esm({
1092
1216
  updated_at: t.timestamp("updated_at")
1093
1217
  },
1094
1218
  (table) => ({
1219
+ tenantIdx: index("board_group_grants_tenant_id_idx").on(table.tenant_id),
1095
1220
  pk: primaryKey({ columns: [table.board_id, table.group_id] }),
1096
1221
  groupIdx: index("board_group_grants_group_idx").on(table.group_id)
1097
1222
  })
@@ -1099,6 +1224,7 @@ var init_schema_postgres = __esm({
1099
1224
  appVariables = pgTable(
1100
1225
  "app_variables",
1101
1226
  {
1227
+ tenant_id: text("tenant_id").notNull().default("default"),
1102
1228
  variable_id: varchar("variable_id", { length: 36 }).primaryKey(),
1103
1229
  namespace: text("namespace").notNull(),
1104
1230
  key: text("key").notNull(),
@@ -1114,13 +1240,19 @@ var init_schema_postgres = __esm({
1114
1240
  updated_at: t.timestamp("updated_at").notNull()
1115
1241
  },
1116
1242
  (table) => ({
1117
- namespaceKeyIdx: uniqueIndex("app_variables_namespace_key_idx").on(table.namespace, table.key),
1243
+ tenantIdx: index("app_variables_tenant_id_idx").on(table.tenant_id),
1244
+ namespaceKeyIdx: uniqueIndex("app_variables_tenant_namespace_key_unique").on(
1245
+ table.tenant_id,
1246
+ table.namespace,
1247
+ table.key
1248
+ ),
1118
1249
  namespaceIdx: index("app_variables_namespace_idx").on(table.namespace)
1119
1250
  })
1120
1251
  );
1121
1252
  userApiKeys = pgTable(
1122
1253
  "user_api_keys",
1123
1254
  {
1255
+ tenant_id: text("tenant_id").notNull().default("default"),
1124
1256
  id: varchar("id", { length: 36 }).primaryKey(),
1125
1257
  user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1126
1258
  name: text("name").notNull(),
@@ -1132,6 +1264,7 @@ var init_schema_postgres = __esm({
1132
1264
  last_used_at: t.timestamp("last_used_at")
1133
1265
  },
1134
1266
  (table) => ({
1267
+ tenantIdx: index("user_api_keys_tenant_id_idx").on(table.tenant_id),
1135
1268
  userIdx: index("user_api_keys_user_idx").on(table.user_id),
1136
1269
  prefixIdx: index("user_api_keys_prefix_idx").on(table.prefix)
1137
1270
  })
@@ -1139,6 +1272,7 @@ var init_schema_postgres = __esm({
1139
1272
  mcpServers = pgTable(
1140
1273
  "mcp_servers",
1141
1274
  {
1275
+ tenant_id: text("tenant_id").notNull().default("default"),
1142
1276
  // Primary identity
1143
1277
  mcp_server_id: varchar("mcp_server_id", { length: 36 }).primaryKey(),
1144
1278
  created_at: t.timestamp("created_at").notNull(),
@@ -1165,6 +1299,7 @@ var init_schema_postgres = __esm({
1165
1299
  data: t.json("data").$type().notNull()
1166
1300
  },
1167
1301
  (table) => ({
1302
+ tenantIdx: index("mcp_servers_tenant_id_idx").on(table.tenant_id),
1168
1303
  nameIdx: index("mcp_servers_name_idx").on(table.name),
1169
1304
  scopeIdx: index("mcp_servers_scope_idx").on(table.scope),
1170
1305
  ownerIdx: index("mcp_servers_owner_idx").on(table.owner_user_id),
@@ -1174,6 +1309,7 @@ var init_schema_postgres = __esm({
1174
1309
  cardTypes = pgTable(
1175
1310
  "card_types",
1176
1311
  {
1312
+ tenant_id: text("tenant_id").notNull().default("default"),
1177
1313
  card_type_id: varchar("card_type_id", { length: 36 }).primaryKey(),
1178
1314
  name: text("name").notNull(),
1179
1315
  emoji: text("emoji"),
@@ -1185,12 +1321,14 @@ var init_schema_postgres = __esm({
1185
1321
  updated_at: t.timestamp("updated_at").notNull()
1186
1322
  },
1187
1323
  (table) => ({
1324
+ tenantIdx: index("card_types_tenant_id_idx").on(table.tenant_id),
1188
1325
  nameIdx: index("card_types_name_idx").on(table.name)
1189
1326
  })
1190
1327
  );
1191
1328
  cards = pgTable(
1192
1329
  "cards",
1193
1330
  {
1331
+ tenant_id: text("tenant_id").notNull().default("default"),
1194
1332
  card_id: varchar("card_id", { length: 36 }).primaryKey(),
1195
1333
  board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1196
1334
  card_type_id: varchar("card_type_id", { length: 36 }).references(() => cardTypes.card_type_id, {
@@ -1211,6 +1349,7 @@ var init_schema_postgres = __esm({
1211
1349
  archived_at: t.timestamp("archived_at")
1212
1350
  },
1213
1351
  (table) => ({
1352
+ tenantIdx: index("cards_tenant_id_idx").on(table.tenant_id),
1214
1353
  boardIdx: index("cards_board_idx").on(table.board_id),
1215
1354
  cardTypeIdx: index("cards_card_type_idx").on(table.card_type_id),
1216
1355
  titleIdx: index("cards_title_idx").on(table.title),
@@ -1221,6 +1360,7 @@ var init_schema_postgres = __esm({
1221
1360
  artifacts = pgTable(
1222
1361
  "artifacts",
1223
1362
  {
1363
+ tenant_id: text("tenant_id").notNull().default("default"),
1224
1364
  artifact_id: varchar("artifact_id", { length: 36 }).primaryKey(),
1225
1365
  branch_id: varchar("branch_id", { length: 36 }).references(() => branches.branch_id, {
1226
1366
  onDelete: "set null"
@@ -1256,6 +1396,7 @@ var init_schema_postgres = __esm({
1256
1396
  archived_at: t.timestamp("archived_at")
1257
1397
  },
1258
1398
  (table) => ({
1399
+ tenantIdx: index("artifacts_tenant_id_idx").on(table.tenant_id),
1259
1400
  branchIdx: index("artifacts_branch_idx").on(table.branch_id),
1260
1401
  sourceSessionIdx: index("artifacts_source_session_idx").on(table.source_session_id),
1261
1402
  boardIdx: index("artifacts_board_idx").on(table.board_id),
@@ -1266,6 +1407,7 @@ var init_schema_postgres = __esm({
1266
1407
  artifactTrustGrants = pgTable(
1267
1408
  "artifact_trust_grants",
1268
1409
  {
1410
+ tenant_id: text("tenant_id").notNull().default("default"),
1269
1411
  grant_id: varchar("grant_id", { length: 36 }).primaryKey(),
1270
1412
  user_id: varchar("user_id", { length: 36 }).notNull(),
1271
1413
  scope_type: text("scope_type").notNull(),
@@ -1276,6 +1418,7 @@ var init_schema_postgres = __esm({
1276
1418
  revoked_at: t.timestamp("revoked_at")
1277
1419
  },
1278
1420
  (table) => ({
1421
+ tenantIdx: index("artifact_trust_grants_tenant_id_idx").on(table.tenant_id),
1279
1422
  userIdx: index("artifact_trust_grants_user_idx").on(table.user_id),
1280
1423
  scopeIdx: index("artifact_trust_grants_scope_idx").on(table.scope_type, table.scope_value)
1281
1424
  })
@@ -1283,6 +1426,7 @@ var init_schema_postgres = __esm({
1283
1426
  boardObjects = pgTable(
1284
1427
  "board_objects",
1285
1428
  {
1429
+ tenant_id: text("tenant_id").notNull().default("default"),
1286
1430
  // Primary identity
1287
1431
  object_id: varchar("object_id", { length: 36 }).primaryKey(),
1288
1432
  board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
@@ -1298,6 +1442,7 @@ var init_schema_postgres = __esm({
1298
1442
  data: t.json("data").$type().notNull()
1299
1443
  },
1300
1444
  (table) => ({
1445
+ tenantIdx: index("board_objects_tenant_id_idx").on(table.tenant_id),
1301
1446
  boardIdx: index("board_objects_board_idx").on(table.board_id),
1302
1447
  branchIdx: index("board_objects_branch_idx").on(table.branch_id),
1303
1448
  cardIdx: index("board_objects_card_idx").on(table.card_id)
@@ -1306,12 +1451,14 @@ var init_schema_postgres = __esm({
1306
1451
  sessionMcpServers = pgTable(
1307
1452
  "session_mcp_servers",
1308
1453
  {
1454
+ tenant_id: text("tenant_id").notNull().default("default"),
1309
1455
  session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
1310
1456
  mcp_server_id: varchar("mcp_server_id", { length: 36 }).notNull().references(() => mcpServers.mcp_server_id, { onDelete: "cascade" }),
1311
1457
  enabled: t.bool("enabled").notNull().default(true),
1312
1458
  added_at: t.timestamp("added_at").notNull()
1313
1459
  },
1314
1460
  (table) => ({
1461
+ tenantIdx: index("session_mcp_servers_tenant_id_idx").on(table.tenant_id),
1315
1462
  // Composite primary key
1316
1463
  pk: index("session_mcp_servers_pk").on(table.session_id, table.mcp_server_id),
1317
1464
  // Indexes for queries
@@ -1323,6 +1470,7 @@ var init_schema_postgres = __esm({
1323
1470
  userMcpOauthTokens = pgTable(
1324
1471
  "user_mcp_oauth_tokens",
1325
1472
  {
1473
+ tenant_id: text("tenant_id").notNull().default("default"),
1326
1474
  // NULL = shared-mode token (one per mcp_server_id)
1327
1475
  user_id: varchar("user_id", { length: 36 }).references(() => users.user_id, {
1328
1476
  onDelete: "cascade"
@@ -1340,6 +1488,7 @@ var init_schema_postgres = __esm({
1340
1488
  updated_at: t.timestamp("updated_at")
1341
1489
  },
1342
1490
  (table) => ({
1491
+ tenantIdx: index("user_mcp_oauth_tokens_tenant_id_idx").on(table.tenant_id),
1343
1492
  // Composite lookup indexes. Uniqueness enforced via partial unique indexes
1344
1493
  // created in the migration (one for per-user rows, one for the shared row).
1345
1494
  pk: index("user_mcp_oauth_tokens_pk").on(table.user_id, table.mcp_server_id),
@@ -1350,6 +1499,7 @@ var init_schema_postgres = __esm({
1350
1499
  boardComments = pgTable(
1351
1500
  "board_comments",
1352
1501
  {
1502
+ tenant_id: text("tenant_id").notNull().default("default"),
1353
1503
  // Primary identity
1354
1504
  comment_id: varchar("comment_id", { length: 36 }).primaryKey(),
1355
1505
  created_at: t.timestamp("created_at").notNull(),
@@ -1391,6 +1541,7 @@ var init_schema_postgres = __esm({
1391
1541
  data: t.json("data").$type().notNull()
1392
1542
  },
1393
1543
  (table) => ({
1544
+ tenantIdx: index("board_comments_tenant_id_idx").on(table.tenant_id),
1394
1545
  boardIdx: index("board_comments_board_idx").on(table.board_id),
1395
1546
  sessionIdx: index("board_comments_session_idx").on(table.session_id),
1396
1547
  taskIdx: index("board_comments_task_idx").on(table.task_id),
@@ -1405,6 +1556,7 @@ var init_schema_postgres = __esm({
1405
1556
  gatewayChannels = pgTable(
1406
1557
  "gateway_channels",
1407
1558
  {
1559
+ tenant_id: text("tenant_id").notNull().default("default"),
1408
1560
  // Primary identity
1409
1561
  id: varchar("id", { length: 36 }).primaryKey(),
1410
1562
  created_at: t.timestamp("created_at").notNull(),
@@ -1418,7 +1570,7 @@ var init_schema_postgres = __esm({
1418
1570
  }).notNull(),
1419
1571
  target_branch_id: varchar("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1420
1572
  agor_user_id: varchar("agor_user_id", { length: 36 }).notNull(),
1421
- channel_key: text("channel_key").notNull().unique(),
1573
+ channel_key: text("channel_key").notNull(),
1422
1574
  enabled: t.bool("enabled").notNull().default(true),
1423
1575
  last_message_at: t.timestamp("last_message_at"),
1424
1576
  // JSON blob for platform credentials (encrypted at rest)
@@ -1427,13 +1579,19 @@ var init_schema_postgres = __esm({
1427
1579
  agentic_config: t.json("agentic_config")
1428
1580
  },
1429
1581
  (table) => ({
1582
+ tenantIdx: index("gateway_channels_tenant_id_idx").on(table.tenant_id),
1430
1583
  channelKeyIdx: index("idx_gateway_channel_key").on(table.channel_key),
1584
+ channelKeyTenantUnique: uniqueIndex("gateway_channels_tenant_channel_key_unique").on(
1585
+ table.tenant_id,
1586
+ table.channel_key
1587
+ ),
1431
1588
  enabledTypeIdx: index("idx_gateway_enabled_type").on(table.enabled, table.channel_type)
1432
1589
  })
1433
1590
  );
1434
1591
  threadSessionMap = pgTable(
1435
1592
  "thread_session_map",
1436
1593
  {
1594
+ tenant_id: text("tenant_id").notNull().default("default"),
1437
1595
  // Primary identity
1438
1596
  id: varchar("id", { length: 36 }).primaryKey(),
1439
1597
  created_at: t.timestamp("created_at").notNull(),
@@ -1451,7 +1609,9 @@ var init_schema_postgres = __esm({
1451
1609
  metadata: t.json("metadata")
1452
1610
  },
1453
1611
  (table) => ({
1454
- uniqueChannelThread: uniqueIndex("uniq_thread_map_channel_thread").on(
1612
+ tenantIdx: index("thread_session_map_tenant_id_idx").on(table.tenant_id),
1613
+ uniqueChannelThread: uniqueIndex("uniq_thread_map_tenant_channel_thread").on(
1614
+ table.tenant_id,
1455
1615
  table.channel_id,
1456
1616
  table.thread_id
1457
1617
  ),
@@ -1460,14 +1620,82 @@ var init_schema_postgres = __esm({
1460
1620
  channelStatusIdx: index("idx_thread_map_channel_status").on(table.channel_id, table.status)
1461
1621
  })
1462
1622
  );
1623
+ gatewayOutboundMessages = pgTable(
1624
+ "gateway_outbound_messages",
1625
+ {
1626
+ tenant_id: text("tenant_id").notNull().default("default"),
1627
+ id: varchar("id", { length: 36 }).primaryKey(),
1628
+ created_at: t.timestamp("created_at").notNull(),
1629
+ updated_at: t.timestamp("updated_at").notNull(),
1630
+ gateway_channel_id: varchar("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
1631
+ channel_type: text("channel_type", {
1632
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
1633
+ }).notNull(),
1634
+ platform_channel_id: text("platform_channel_id").notNull(),
1635
+ platform_message_id: text("platform_message_id").notNull(),
1636
+ platform_thread_id: text("platform_thread_id").notNull(),
1637
+ platform_permalink: text("platform_permalink"),
1638
+ target_branch_id: varchar("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id),
1639
+ emitted_by_user_id: varchar("emitted_by_user_id", { length: 36 }).notNull().references(() => users.user_id),
1640
+ emitted_by_session_id: varchar("emitted_by_session_id", { length: 36 }).references(
1641
+ () => sessions.session_id,
1642
+ {
1643
+ onDelete: "set null"
1644
+ }
1645
+ ),
1646
+ emitted_by_task_id: varchar("emitted_by_task_id", { length: 36 }).references(
1647
+ () => tasks.task_id,
1648
+ {
1649
+ onDelete: "set null"
1650
+ }
1651
+ ),
1652
+ emitted_by_schedule_id: varchar("emitted_by_schedule_id", { length: 36 }).references(
1653
+ () => schedules.schedule_id,
1654
+ {
1655
+ onDelete: "set null"
1656
+ }
1657
+ ),
1658
+ message_text: text("message_text").notNull(),
1659
+ message_preview: text("message_preview").notNull(),
1660
+ metadata: t.json("metadata"),
1661
+ consumed_by_session_id: varchar("consumed_by_session_id", { length: 36 }).references(
1662
+ () => sessions.session_id,
1663
+ {
1664
+ onDelete: "set null"
1665
+ }
1666
+ ),
1667
+ consumed_at: t.timestamp("consumed_at")
1668
+ },
1669
+ (table) => ({
1670
+ tenantIdx: index("gateway_outbound_messages_tenant_id_idx").on(table.tenant_id),
1671
+ uniqueChannelThread: uniqueIndex("uniq_gateway_outbound_tenant_channel_thread").on(
1672
+ table.tenant_id,
1673
+ table.gateway_channel_id,
1674
+ table.platform_thread_id
1675
+ ),
1676
+ emittedSessionIdx: index("idx_gateway_outbound_emitted_session").on(
1677
+ table.emitted_by_session_id
1678
+ ),
1679
+ emittedScheduleIdx: index("idx_gateway_outbound_emitted_schedule").on(
1680
+ table.emitted_by_schedule_id
1681
+ ),
1682
+ targetBranchCreatedIdx: index("idx_gateway_outbound_branch_created").on(
1683
+ table.target_branch_id,
1684
+ table.created_at
1685
+ ),
1686
+ consumedIdx: index("idx_gateway_outbound_consumed").on(table.consumed_at)
1687
+ })
1688
+ );
1463
1689
  sessionEnvSelections = pgTable(
1464
1690
  "session_env_selections",
1465
1691
  {
1692
+ tenant_id: text("tenant_id").notNull().default("default"),
1466
1693
  session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
1467
1694
  env_var_name: text("env_var_name").notNull(),
1468
1695
  created_at: t.timestamp("created_at").notNull()
1469
1696
  },
1470
1697
  (table) => ({
1698
+ tenantIdx: index("session_env_selections_tenant_id_idx").on(table.tenant_id),
1471
1699
  pk: primaryKey({ columns: [table.session_id, table.env_var_name] }),
1472
1700
  sessionIdx: index("session_env_selections_session_idx").on(table.session_id)
1473
1701
  })
@@ -1475,6 +1703,7 @@ var init_schema_postgres = __esm({
1475
1703
  kbNamespaces = pgTable(
1476
1704
  "kb_namespaces",
1477
1705
  {
1706
+ tenant_id: text("tenant_id").notNull().default("default"),
1478
1707
  namespace_id: varchar("namespace_id", { length: 36 }).primaryKey(),
1479
1708
  slug: text("slug").notNull(),
1480
1709
  display_name: text("display_name").notNull(),
@@ -1501,7 +1730,8 @@ var init_schema_postgres = __esm({
1501
1730
  archived_at: t.timestamp("archived_at")
1502
1731
  },
1503
1732
  (table) => ({
1504
- slugIdx: uniqueIndex("kb_namespaces_slug_idx").on(table.slug).where(sql2`${table.archived} = false`),
1733
+ tenantIdx: index("kb_namespaces_tenant_id_idx").on(table.tenant_id),
1734
+ slugIdx: uniqueIndex("kb_namespaces_tenant_slug_unique").on(table.tenant_id, table.slug).where(sql2`${table.archived} = false`),
1505
1735
  kindIdx: index("kb_namespaces_kind_idx").on(table.kind),
1506
1736
  ownerIdx: index("kb_namespaces_owner_idx").on(table.owner_user_id),
1507
1737
  repoIdx: index("kb_namespaces_repo_idx").on(table.repo_id),
@@ -1512,6 +1742,7 @@ var init_schema_postgres = __esm({
1512
1742
  kbNamespaceAcl = pgTable(
1513
1743
  "kb_namespace_acl",
1514
1744
  {
1745
+ tenant_id: text("tenant_id").notNull().default("default"),
1515
1746
  namespace_acl_id: varchar("namespace_acl_id", { length: 36 }).primaryKey(),
1516
1747
  namespace_id: varchar("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
1517
1748
  subject_type: text("subject_type", { enum: ["user", "group"] }).notNull(),
@@ -1524,9 +1755,11 @@ var init_schema_postgres = __esm({
1524
1755
  updated_at: t.timestamp("updated_at")
1525
1756
  },
1526
1757
  (table) => ({
1758
+ tenantIdx: index("kb_namespace_acl_tenant_id_idx").on(table.tenant_id),
1527
1759
  namespaceIdx: index("kb_namespace_acl_namespace_idx").on(table.namespace_id),
1528
1760
  subjectIdx: index("kb_namespace_acl_subject_idx").on(table.subject_type, table.subject_id),
1529
- namespaceSubjectIdx: uniqueIndex("kb_namespace_acl_namespace_subject_idx").on(
1761
+ namespaceSubjectIdx: uniqueIndex("kb_namespace_acl_tenant_namespace_subject_unique").on(
1762
+ table.tenant_id,
1530
1763
  table.namespace_id,
1531
1764
  table.subject_type,
1532
1765
  table.subject_id
@@ -1536,6 +1769,7 @@ var init_schema_postgres = __esm({
1536
1769
  kbDocuments = pgTable(
1537
1770
  "kb_documents",
1538
1771
  {
1772
+ tenant_id: text("tenant_id").notNull().default("default"),
1539
1773
  document_id: varchar("document_id", { length: 36 }).primaryKey(),
1540
1774
  namespace_id: varchar("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
1541
1775
  path: text("path").notNull(),
@@ -1563,8 +1797,9 @@ var init_schema_postgres = __esm({
1563
1797
  archived_at: t.timestamp("archived_at")
1564
1798
  },
1565
1799
  (table) => ({
1566
- namespacePathIdx: uniqueIndex("kb_documents_namespace_path_idx").on(table.namespace_id, table.path).where(sql2`${table.archived} = false`),
1567
- uriIdx: uniqueIndex("kb_documents_uri_idx").on(table.uri).where(sql2`${table.archived} = false`),
1800
+ tenantIdx: index("kb_documents_tenant_id_idx").on(table.tenant_id),
1801
+ namespacePathIdx: uniqueIndex("kb_documents_tenant_namespace_path_unique").on(table.tenant_id, table.namespace_id, table.path).where(sql2`${table.archived} = false`),
1802
+ uriIdx: uniqueIndex("kb_documents_tenant_uri_unique").on(table.tenant_id, table.uri).where(sql2`${table.archived} = false`),
1568
1803
  namespaceIdx: index("kb_documents_namespace_idx").on(table.namespace_id),
1569
1804
  kindIdx: index("kb_documents_kind_idx").on(table.kind),
1570
1805
  visibilityIdx: index("kb_documents_visibility_idx").on(table.visibility),
@@ -1577,6 +1812,7 @@ var init_schema_postgres = __esm({
1577
1812
  kbDocumentVersions = pgTable(
1578
1813
  "kb_document_versions",
1579
1814
  {
1815
+ tenant_id: text("tenant_id").notNull().default("default"),
1580
1816
  version_id: varchar("version_id", { length: 36 }).primaryKey(),
1581
1817
  document_id: varchar("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
1582
1818
  version_number: integer("version_number").notNull(),
@@ -1596,7 +1832,9 @@ var init_schema_postgres = __esm({
1596
1832
  created_at: t.timestamp("created_at").notNull()
1597
1833
  },
1598
1834
  (table) => ({
1599
- documentVersionIdx: uniqueIndex("kb_document_versions_document_version_idx").on(
1835
+ tenantIdx: index("kb_document_versions_tenant_id_idx").on(table.tenant_id),
1836
+ documentVersionIdx: uniqueIndex("kb_document_versions_tenant_document_version_unique").on(
1837
+ table.tenant_id,
1600
1838
  table.document_id,
1601
1839
  table.version_number
1602
1840
  ),
@@ -1608,6 +1846,7 @@ var init_schema_postgres = __esm({
1608
1846
  kbDocumentUnits = pgTable(
1609
1847
  "kb_document_units",
1610
1848
  {
1849
+ tenant_id: text("tenant_id").notNull().default("default"),
1611
1850
  unit_id: varchar("unit_id", { length: 36 }).primaryKey(),
1612
1851
  document_id: varchar("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
1613
1852
  version_id: varchar("version_id", { length: 36 }).notNull().references(() => kbDocumentVersions.version_id, { onDelete: "cascade" }),
@@ -1632,6 +1871,7 @@ var init_schema_postgres = __esm({
1632
1871
  updated_at: t.timestamp("updated_at")
1633
1872
  },
1634
1873
  (table) => ({
1874
+ tenantIdx: index("kb_document_units_tenant_id_idx").on(table.tenant_id),
1635
1875
  documentIdx: index("kb_document_units_document_idx").on(table.document_id),
1636
1876
  versionIdx: index("kb_document_units_version_idx").on(table.version_id),
1637
1877
  versionOrdinalIdx: index("kb_document_units_version_ordinal_idx").on(
@@ -1645,6 +1885,7 @@ var init_schema_postgres = __esm({
1645
1885
  kbEmbeddingSpaces = pgTable(
1646
1886
  "kb_embedding_spaces",
1647
1887
  {
1888
+ tenant_id: text("tenant_id").notNull().default("default"),
1648
1889
  embedding_space_id: varchar("embedding_space_id", { length: 36 }).primaryKey(),
1649
1890
  provider: text("provider").notNull(),
1650
1891
  model: text("model").notNull(),
@@ -1657,7 +1898,9 @@ var init_schema_postgres = __esm({
1657
1898
  updated_at: t.timestamp("updated_at")
1658
1899
  },
1659
1900
  (table) => ({
1660
- providerModelIdx: uniqueIndex("kb_embedding_spaces_provider_model_idx").on(
1901
+ tenantIdx: index("kb_embedding_spaces_tenant_id_idx").on(table.tenant_id),
1902
+ providerModelIdx: uniqueIndex("kb_embedding_spaces_tenant_provider_model_unique").on(
1903
+ table.tenant_id,
1661
1904
  table.provider,
1662
1905
  table.model,
1663
1906
  table.dimensions,
@@ -1670,6 +1913,7 @@ var init_schema_postgres = __esm({
1670
1913
  kbGraphNodes = pgTable(
1671
1914
  "kb_graph_nodes",
1672
1915
  {
1916
+ tenant_id: text("tenant_id").notNull().default("default"),
1673
1917
  node_id: varchar("node_id", { length: 36 }).primaryKey(),
1674
1918
  node_type: text("node_type", {
1675
1919
  enum: [
@@ -1735,7 +1979,8 @@ var init_schema_postgres = __esm({
1735
1979
  archived_at: t.timestamp("archived_at")
1736
1980
  },
1737
1981
  (table) => ({
1738
- uriIdx: uniqueIndex("kb_graph_nodes_uri_idx").on(table.uri).where(sql2`${table.archived} = false`),
1982
+ tenantIdx: index("kb_graph_nodes_tenant_id_idx").on(table.tenant_id),
1983
+ uriIdx: uniqueIndex("kb_graph_nodes_tenant_uri_unique").on(table.tenant_id, table.uri).where(sql2`${table.archived} = false`),
1739
1984
  typeIdx: index("kb_graph_nodes_type_idx").on(table.node_type),
1740
1985
  namespaceIdx: index("kb_graph_nodes_namespace_idx").on(table.namespace_id),
1741
1986
  documentIdx: index("kb_graph_nodes_document_idx").on(table.document_id),
@@ -1755,6 +2000,7 @@ var init_schema_postgres = __esm({
1755
2000
  kbGraphEdges = pgTable(
1756
2001
  "kb_graph_edges",
1757
2002
  {
2003
+ tenant_id: text("tenant_id").notNull().default("default"),
1758
2004
  edge_id: varchar("edge_id", { length: 36 }).primaryKey(),
1759
2005
  source_node_id: varchar("source_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
1760
2006
  target_node_id: varchar("target_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
@@ -1783,6 +2029,7 @@ var init_schema_postgres = __esm({
1783
2029
  archived_at: t.timestamp("archived_at")
1784
2030
  },
1785
2031
  (table) => ({
2032
+ tenantIdx: index("kb_graph_edges_tenant_id_idx").on(table.tenant_id),
1786
2033
  sourceIdx: index("kb_graph_edges_source_idx").on(table.source_node_id),
1787
2034
  targetIdx: index("kb_graph_edges_target_idx").on(table.target_node_id),
1788
2035
  typeIdx: index("kb_graph_edges_type_idx").on(table.edge_type),
@@ -1794,7 +2041,7 @@ var init_schema_postgres = __esm({
1794
2041
  table.target_node_id,
1795
2042
  table.edge_type
1796
2043
  ),
1797
- sourceTargetTypeIdx: uniqueIndex("kb_graph_edges_source_target_type_idx").on(table.source_node_id, table.target_node_id, table.edge_type).where(sql2`${table.archived} = false`),
2044
+ 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(sql2`${table.archived} = false`),
1798
2045
  archivedIdx: index("kb_graph_edges_archived_idx").on(table.archived)
1799
2046
  })
1800
2047
  );
@@ -1858,6 +2105,7 @@ __export(schema_sqlite_exports, {
1858
2105
  cardTypes: () => cardTypes2,
1859
2106
  cards: () => cards2,
1860
2107
  gatewayChannels: () => gatewayChannels2,
2108
+ gatewayOutboundMessages: () => gatewayOutboundMessages2,
1861
2109
  groupMemberships: () => groupMemberships2,
1862
2110
  groups: () => groups2,
1863
2111
  kbDocumentUnits: () => kbDocumentUnits2,
@@ -1896,7 +2144,7 @@ import {
1896
2144
  text as text2,
1897
2145
  uniqueIndex as uniqueIndex2
1898
2146
  } from "drizzle-orm/sqlite-core";
1899
- 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;
2147
+ 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;
1900
2148
  var init_schema_sqlite = __esm({
1901
2149
  "src/db/schema.sqlite.ts"() {
1902
2150
  "use strict";
@@ -1970,6 +2218,7 @@ var init_schema_sqlite = __esm({
1970
2218
  },
1971
2219
  (table) => ({
1972
2220
  statusIdx: index2("sessions_status_idx").on(table.status),
2221
+ statusReadyIdx: index2("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
1973
2222
  agenticToolIdx: index2("sessions_agentic_tool_idx").on(table.agentic_tool),
1974
2223
  boardIdx: index2("sessions_board_idx").on(table.board_id),
1975
2224
  branchIdx: index2("sessions_branch_idx").on(table.branch_id),
@@ -2009,6 +2258,9 @@ var init_schema_sqlite = __esm({
2009
2258
  sourceIdx: index2("session_relationships_source_idx").on(table.source_session_id),
2010
2259
  targetIdx: index2("session_relationships_target_idx").on(table.target_session_id),
2011
2260
  callbackIdx: index2("session_relationships_callback_idx").on(table.callback_session_id),
2261
+ // Note: no tenant_source/tenant_target composite indexes here — SQLite schema
2262
+ // has no tenant column on this table (RLS is Postgres-only). The standalone
2263
+ // source/target indexes above are sufficient for SQLite.
2012
2264
  sourceTargetTypeUnique: uniqueIndex2("session_relationships_source_target_type_unique").on(
2013
2265
  table.source_session_id,
2014
2266
  table.target_session_id,
@@ -2128,7 +2380,12 @@ var init_schema_sqlite = __esm({
2128
2380
  // Indexes for efficient lookups
2129
2381
  sessionIdx: index2("messages_session_id_idx").on(table.session_id),
2130
2382
  taskIdx: index2("messages_task_id_idx").on(table.task_id),
2131
- sessionIndexIdx: index2("messages_session_index_idx").on(table.session_id, table.index)
2383
+ sessionIndexIdx: index2("messages_session_index_idx").on(table.session_id, table.index),
2384
+ timestampIdx: index2("messages_timestamp_idx").on(table.timestamp),
2385
+ sessionTimestampIdx: index2("messages_session_timestamp_idx").on(
2386
+ table.session_id,
2387
+ table.timestamp
2388
+ )
2132
2389
  })
2133
2390
  );
2134
2391
  boards2 = sqliteTable(
@@ -2354,6 +2611,9 @@ var init_schema_sqlite = __esm({
2354
2611
  onboarding_completed: t2.bool("onboarding_completed").notNull().default(false),
2355
2612
  // Force password change flag (admin-settable, auto-cleared on password change)
2356
2613
  must_change_password: t2.bool("must_change_password").notNull().default(false),
2614
+ // Auth invalidation marker. Password changes set this timestamp so any
2615
+ // previously issued browser access or refresh token is rejected.
2616
+ tokens_valid_after: t2.timestamp("tokens_valid_after"),
2357
2617
  // JSON blob for profile/preferences
2358
2618
  data: t2.json("data").$type().notNull()
2359
2619
  },
@@ -2797,6 +3057,66 @@ var init_schema_sqlite = __esm({
2797
3057
  channelStatusIdx: index2("idx_thread_map_channel_status").on(table.channel_id, table.status)
2798
3058
  })
2799
3059
  );
3060
+ gatewayOutboundMessages2 = sqliteTable(
3061
+ "gateway_outbound_messages",
3062
+ {
3063
+ id: text2("id", { length: 36 }).primaryKey(),
3064
+ created_at: t2.timestamp("created_at").notNull(),
3065
+ updated_at: t2.timestamp("updated_at").notNull(),
3066
+ gateway_channel_id: text2("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
3067
+ channel_type: text2("channel_type", {
3068
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
3069
+ }).notNull(),
3070
+ platform_channel_id: text2("platform_channel_id").notNull(),
3071
+ platform_message_id: text2("platform_message_id").notNull(),
3072
+ platform_thread_id: text2("platform_thread_id").notNull(),
3073
+ platform_permalink: text2("platform_permalink"),
3074
+ target_branch_id: text2("target_branch_id", { length: 36 }).notNull().references(() => branches2.branch_id),
3075
+ emitted_by_user_id: text2("emitted_by_user_id", { length: 36 }).notNull().references(() => users2.user_id),
3076
+ emitted_by_session_id: text2("emitted_by_session_id", { length: 36 }).references(
3077
+ () => sessions2.session_id,
3078
+ {
3079
+ onDelete: "set null"
3080
+ }
3081
+ ),
3082
+ emitted_by_task_id: text2("emitted_by_task_id", { length: 36 }).references(() => tasks2.task_id, {
3083
+ onDelete: "set null"
3084
+ }),
3085
+ emitted_by_schedule_id: text2("emitted_by_schedule_id", { length: 36 }).references(
3086
+ () => schedules2.schedule_id,
3087
+ {
3088
+ onDelete: "set null"
3089
+ }
3090
+ ),
3091
+ message_text: text2("message_text").notNull(),
3092
+ message_preview: text2("message_preview").notNull(),
3093
+ metadata: t2.json("metadata"),
3094
+ consumed_by_session_id: text2("consumed_by_session_id", { length: 36 }).references(
3095
+ () => sessions2.session_id,
3096
+ {
3097
+ onDelete: "set null"
3098
+ }
3099
+ ),
3100
+ consumed_at: t2.timestamp("consumed_at")
3101
+ },
3102
+ (table) => ({
3103
+ uniqueChannelThread: uniqueIndex2("uniq_gateway_outbound_channel_thread").on(
3104
+ table.gateway_channel_id,
3105
+ table.platform_thread_id
3106
+ ),
3107
+ emittedSessionIdx: index2("idx_gateway_outbound_emitted_session").on(
3108
+ table.emitted_by_session_id
3109
+ ),
3110
+ emittedScheduleIdx: index2("idx_gateway_outbound_emitted_schedule").on(
3111
+ table.emitted_by_schedule_id
3112
+ ),
3113
+ targetBranchCreatedIdx: index2("idx_gateway_outbound_branch_created").on(
3114
+ table.target_branch_id,
3115
+ table.created_at
3116
+ ),
3117
+ consumedIdx: index2("idx_gateway_outbound_consumed").on(table.consumed_at)
3118
+ })
3119
+ );
2800
3120
  sessionEnvSelections2 = sqliteTable(
2801
3121
  "session_env_selections",
2802
3122
  {
@@ -3295,6 +3615,71 @@ var init_executor_heartbeat = __esm({
3295
3615
  }
3296
3616
  });
3297
3617
 
3618
+ // src/config/multitenancy.ts
3619
+ function detectPostgresUrl(url) {
3620
+ if (!url) return false;
3621
+ const lower = url.toLowerCase();
3622
+ return lower.startsWith("postgresql://") || lower.startsWith("postgres://") || lower.startsWith("pg://");
3623
+ }
3624
+ function resolveMultiTenancyDatabaseDialect(config = {}) {
3625
+ if (process.env.AGOR_DB_DIALECT === "postgresql" || process.env.AGOR_DB_DIALECT === "sqlite") {
3626
+ return process.env.AGOR_DB_DIALECT;
3627
+ }
3628
+ if (detectPostgresUrl(process.env.DATABASE_URL)) return "postgresql";
3629
+ if (config.database?.dialect === "postgresql" || config.database?.dialect === "sqlite") {
3630
+ return config.database.dialect;
3631
+ }
3632
+ if (detectPostgresUrl(config.database?.postgresql?.url) || config.database?.postgresql?.host) {
3633
+ return "postgresql";
3634
+ }
3635
+ return "sqlite";
3636
+ }
3637
+ function resolveMultiTenancyConfig(config) {
3638
+ const raw = config.multi_tenancy ?? {};
3639
+ const mode = raw.mode ?? "static";
3640
+ return {
3641
+ mode,
3642
+ static_tenant_id: raw.static_tenant_id?.trim() || DEFAULT_STATIC_TENANT_ID,
3643
+ ...raw.auth_claim ? { auth_claim: raw.auth_claim } : {},
3644
+ ...raw.trusted_header ? { trusted_header: raw.trusted_header } : {}
3645
+ };
3646
+ }
3647
+ function assertValidMultiTenancyConfig(config) {
3648
+ const resolved = resolveMultiTenancyConfig(config);
3649
+ if (resolved.mode !== "static" && resolved.mode !== "required_from_auth") {
3650
+ throw new Error("Config error: multi_tenancy.mode must be one of: static, required_from_auth");
3651
+ }
3652
+ if (!resolved.static_tenant_id) {
3653
+ throw new Error("Config error: multi_tenancy.static_tenant_id must not be empty");
3654
+ }
3655
+ if (resolved.auth_claim && RESERVED_AUTH_CLAIMS.has(resolved.auth_claim)) {
3656
+ throw new Error(
3657
+ `Config error: multi_tenancy.auth_claim cannot be reserved JWT claim '${resolved.auth_claim}'`
3658
+ );
3659
+ }
3660
+ if (resolved.mode === "required_from_auth") {
3661
+ if (resolveMultiTenancyDatabaseDialect(config) !== "postgresql") {
3662
+ throw new Error(
3663
+ "Config error: multi_tenancy.required_from_auth requires database.dialect: postgresql"
3664
+ );
3665
+ }
3666
+ if (!resolved.auth_claim && !resolved.trusted_header) {
3667
+ throw new Error(
3668
+ "Config error: multi_tenancy.required_from_auth requires multi_tenancy.auth_claim or multi_tenancy.trusted_header"
3669
+ );
3670
+ }
3671
+ }
3672
+ }
3673
+ var DEFAULT_STATIC_TENANT_ID, RESERVED_AUTH_CLAIMS;
3674
+ var init_multitenancy = __esm({
3675
+ "src/config/multitenancy.ts"() {
3676
+ "use strict";
3677
+ init_esm_shims();
3678
+ DEFAULT_STATIC_TENANT_ID = "default";
3679
+ RESERVED_AUTH_CLAIMS = /* @__PURE__ */ new Set(["aud", "exp", "iat", "iss", "jti", "nbf", "sub", "type"]);
3680
+ }
3681
+ });
3682
+
3298
3683
  // src/config/types.ts
3299
3684
  var init_types2 = __esm({
3300
3685
  "src/config/types.ts"() {
@@ -3308,7 +3693,7 @@ import { readFileSync, statSync } from "fs";
3308
3693
  import fs from "fs/promises";
3309
3694
  import os from "os";
3310
3695
  import path2 from "path";
3311
- import yaml from "js-yaml";
3696
+ import * as yaml from "js-yaml";
3312
3697
  function cacheKeyMatches(a, b) {
3313
3698
  return a.mtimeMs === b.mtimeMs && a.size === b.size;
3314
3699
  }
@@ -3337,6 +3722,9 @@ function writeCachedConfig(configPath, config, key) {
3337
3722
  cachedEntry = { path: configPath, config: structuredClone(config), key };
3338
3723
  }
3339
3724
  function parseAndValidateConfig(content) {
3725
+ if (content.trim() === "") {
3726
+ return {};
3727
+ }
3340
3728
  const parsed = yaml.load(content);
3341
3729
  const finalConfig = parsed || {};
3342
3730
  validateConfig(finalConfig);
@@ -3366,6 +3754,7 @@ To update: agor config set execution.unix_user_mode insulated`
3366
3754
  `Config error: execution.managed_envs_execution_mode must be one of: hybrid, webhook-only`
3367
3755
  );
3368
3756
  }
3757
+ assertValidMultiTenancyConfig(config);
3369
3758
  validateOptionalHttpUrl(
3370
3759
  config.external_launch,
3371
3760
  "login_redirect_url",
@@ -3426,7 +3815,12 @@ function getDefaultConfig() {
3426
3815
  // Default: sync passwords to Unix
3427
3816
  executor_heartbeat: resolveExecutorHeartbeatConfig()
3428
3817
  },
3429
- analytics: getDefaultAnalyticsConfig()
3818
+ analytics: getDefaultAnalyticsConfig(),
3819
+ telemetry: {},
3820
+ multi_tenancy: {
3821
+ mode: "static",
3822
+ static_tenant_id: "default"
3823
+ }
3430
3824
  };
3431
3825
  }
3432
3826
  function loadConfigSync() {
@@ -3478,6 +3872,7 @@ var init_config_manager = __esm({
3478
3872
  init_analytics_defaults();
3479
3873
  init_constants();
3480
3874
  init_executor_heartbeat();
3875
+ init_multitenancy();
3481
3876
  init_types2();
3482
3877
  NO_FILE = -1;
3483
3878
  NO_FILE_KEY = { mtimeMs: NO_FILE, size: 0 };
@@ -3531,7 +3926,7 @@ var init_schema_factory = __esm({
3531
3926
  });
3532
3927
 
3533
3928
  // src/db/schema.ts
3534
- 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;
3929
+ 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;
3535
3930
  var init_schema = __esm({
3536
3931
  "src/db/schema.ts"() {
3537
3932
  "use strict";
@@ -3569,6 +3964,7 @@ var init_schema = __esm({
3569
3964
  boardComments3 = schema.boardComments;
3570
3965
  gatewayChannels3 = schema.gatewayChannels;
3571
3966
  threadSessionMap3 = schema.threadSessionMap;
3967
+ gatewayOutboundMessages3 = schema.gatewayOutboundMessages;
3572
3968
  userApiKeys3 = schema.userApiKeys;
3573
3969
  serializedSessions3 = schema.serializedSessions;
3574
3970
  kbNamespaces3 = schema.kbNamespaces;
@@ -3605,6 +4001,7 @@ init_schema();
3605
4001
  init_esm_shims();
3606
4002
  init_ids();
3607
4003
  init_id();
4004
+ init_tenant_context();
3608
4005
  var RepositoryError = class extends Error {
3609
4006
  constructor(message, cause) {
3610
4007
  super(message);
@@ -3658,7 +4055,7 @@ import { and as and2, eq as eq2, isNull } from "drizzle-orm";
3658
4055
  init_esm_shims();
3659
4056
  init_config_manager();
3660
4057
  init_ids();
3661
- import { and as and3, eq as eq3, like, or } from "drizzle-orm";
4058
+ import { and as and4, eq as eq4, inArray as inArray2, like, or as or2 } from "drizzle-orm";
3662
4059
 
3663
4060
  // src/utils/url.ts
3664
4061
  init_esm_shims();
@@ -3668,17 +4065,27 @@ init_id();
3668
4065
  init_database_wrapper();
3669
4066
  init_schema();
3670
4067
 
4068
+ // src/db/repositories/branch-access.ts
4069
+ init_esm_shims();
4070
+ init_types();
4071
+ init_database_wrapper();
4072
+ init_schema();
4073
+ import { and as and3, eq as eq3, exists, inArray, isNotNull, or, sql as sql4 } from "drizzle-orm";
4074
+ var VISIBLE_BRANCH_PERMISSION_LEVELS = BRANCH_PERMISSION_LEVELS.filter(
4075
+ (level) => level !== "none"
4076
+ );
4077
+
3671
4078
  // src/db/repositories/board-comments.ts
3672
4079
  init_esm_shims();
3673
4080
  init_ids();
3674
4081
  init_database_wrapper();
3675
4082
  init_schema();
3676
- import { and as and4, eq as eq4, isNull as isNull2, like as like2 } from "drizzle-orm";
4083
+ import { and as and5, eq as eq5, isNotNull as isNotNull2, isNull as isNull2, like as like2, or as or3, sql as sql5 } from "drizzle-orm";
3677
4084
 
3678
4085
  // src/db/repositories/board-objects.ts
3679
4086
  init_esm_shims();
3680
4087
  init_ids();
3681
- import { and as and6, asc, eq as eq6, getTableColumns, isNotNull as isNotNull2, isNull as isNull3, or as or3, sql as sql5 } from "drizzle-orm";
4088
+ import { and as and6, asc, eq as eq6, getTableColumns, isNotNull as isNotNull3, isNull as isNull3, or as or4, sql as sql6 } from "drizzle-orm";
3682
4089
 
3683
4090
  // src/utils/board-placement.ts
3684
4091
  init_esm_shims();
@@ -3687,27 +4094,41 @@ init_esm_shims();
3687
4094
  init_database_wrapper();
3688
4095
  init_schema();
3689
4096
 
3690
- // src/db/repositories/branch-access.ts
3691
- init_esm_shims();
3692
- init_types();
3693
- init_database_wrapper();
3694
- init_schema();
3695
- import { and as and5, eq as eq5, exists, inArray, isNotNull, or as or2, sql as sql4 } from "drizzle-orm";
3696
- var VISIBLE_BRANCH_PERMISSION_LEVELS = BRANCH_PERMISSION_LEVELS.filter(
3697
- (level) => level !== "none"
3698
- );
3699
-
3700
4097
  // src/db/repositories/boards.ts
3701
4098
  init_esm_shims();
3702
4099
  init_types();
3703
4100
  init_config_manager();
3704
4101
  init_ids();
3705
- import { and as and9, eq as eq9, exists as exists2, isNull as isNull4, like as like4, ne, or as or4, sql as sql7 } from "drizzle-orm";
4102
+ import { and as and9, eq as eq9, inArray as inArray4, isNull as isNull4, like as like4, ne } from "drizzle-orm";
3706
4103
  import * as yaml2 from "js-yaml";
3707
4104
 
3708
4105
  // src/lib/slugs.ts
3709
4106
  init_esm_shims();
3710
4107
 
4108
+ // src/utils/emoji-shortcodes.ts
4109
+ init_esm_shims();
4110
+ import { createRequire } from "module";
4111
+ var requireJson = createRequire(import.meta.url);
4112
+ var emojiData = requireJson("emojibase-data/en/compact.json");
4113
+ var shortcodes = requireJson(
4114
+ "emojibase-data/en/shortcodes/emojibase.json"
4115
+ );
4116
+ var emojiByHexcode = /* @__PURE__ */ new Map();
4117
+ for (const emoji of emojiData) {
4118
+ if (emoji.unicode) {
4119
+ emojiByHexcode.set(emoji.hexcode, emoji.unicode);
4120
+ }
4121
+ }
4122
+ var emojiByShortcode = /* @__PURE__ */ new Map();
4123
+ for (const [hexcode, codes] of Object.entries(shortcodes)) {
4124
+ const emoji = emojiByHexcode.get(hexcode);
4125
+ if (!emoji) continue;
4126
+ const codeList = Array.isArray(codes) ? codes : [codes];
4127
+ for (const code of codeList) {
4128
+ emojiByShortcode.set(code.toLowerCase(), emoji);
4129
+ }
4130
+ }
4131
+
3711
4132
  // src/db/repositories/boards.ts
3712
4133
  init_database_wrapper();
3713
4134
  init_schema();
@@ -3717,7 +4138,7 @@ init_esm_shims();
3717
4138
  init_types();
3718
4139
  init_config_manager();
3719
4140
  init_ids();
3720
- import { and as and8, desc, eq as eq8, getTableColumns as getTableColumns2, inArray as inArray2, like as like3, sql as sql6 } from "drizzle-orm";
4141
+ import { and as and8, desc, eq as eq8, exists as exists2, getTableColumns as getTableColumns2, inArray as inArray3, like as like3, or as or5, sql as sql7 } from "drizzle-orm";
3721
4142
  init_database_wrapper();
3722
4143
  init_schema();
3723
4144
 
@@ -3758,24 +4179,69 @@ init_database_wrapper();
3758
4179
  import { eq as eq12, like as like7 } from "drizzle-orm";
3759
4180
  init_schema();
3760
4181
 
4182
+ // src/db/repositories/gateway-outbound-messages.ts
4183
+ init_esm_shims();
4184
+ init_types();
4185
+ init_ids();
4186
+ init_database_wrapper();
4187
+ init_schema();
4188
+ import { and as and11, eq as eq13, isNull as isNull5, like as like8 } from "drizzle-orm";
4189
+
3761
4190
  // src/db/repositories/knowledge.ts
3762
4191
  init_esm_shims();
3763
4192
  init_types();
3764
4193
  init_config_manager();
3765
4194
  init_ids();
3766
4195
  import { createHash } from "crypto";
3767
- import { and as and11, desc as desc2, eq as eq13, inArray as inArray3, like as like8, or as or5, sql as sql8 } from "drizzle-orm";
4196
+ import { and as and12, desc as desc2, eq as eq14, inArray as inArray5, like as like9, or as or6, sql as sql8 } from "drizzle-orm";
3768
4197
  init_database_wrapper();
3769
4198
  init_schema();
3770
4199
 
3771
4200
  // src/db/repositories/mcp-servers.ts
3772
4201
  init_esm_shims();
3773
4202
  init_ids();
3774
- import { and as and12, eq as eq14, like as like9 } from "drizzle-orm";
4203
+ import { and as and14, eq as eq17, like as like10 } from "drizzle-orm";
3775
4204
 
3776
4205
  // src/tools/mcp/auth-secrets.ts
3777
4206
  init_esm_shims();
3778
4207
 
4208
+ // src/mcp/template-resolver.ts
4209
+ init_esm_shims();
4210
+
4211
+ // src/config/env-resolver.ts
4212
+ init_esm_shims();
4213
+ init_database_wrapper();
4214
+ import { eq as eq16 } from "drizzle-orm";
4215
+
4216
+ // src/db/repositories/session-env-selections.ts
4217
+ init_esm_shims();
4218
+ init_database_wrapper();
4219
+ init_schema();
4220
+ import { and as and13, eq as eq15 } from "drizzle-orm";
4221
+
4222
+ // src/config/env-resolver.ts
4223
+ init_schema();
4224
+
4225
+ // src/config/env-blocklist.ts
4226
+ init_esm_shims();
4227
+ var BLOCKED_ENV_PATTERNS = Object.freeze([
4228
+ /^LD_/i,
4229
+ /^DYLD_/i,
4230
+ /^PYTHON(?!_AGOR_)/i
4231
+ ]);
4232
+
4233
+ // src/config/env-vars.ts
4234
+ init_esm_shims();
4235
+ var V05_SCOPES = ["global", "session"];
4236
+ var V05_SCOPE_SET = new Set(V05_SCOPES);
4237
+
4238
+ // src/templates/handlebars-helpers.ts
4239
+ init_esm_shims();
4240
+ import Handlebars from "handlebars";
4241
+
4242
+ // src/mcp/template-patterns.ts
4243
+ init_esm_shims();
4244
+
3779
4245
  // src/tools/mcp/http-headers.ts
3780
4246
  init_esm_shims();
3781
4247
  var MCP_HEADER_REDACTED_SENTINEL = "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022";
@@ -3926,7 +4392,7 @@ var MCPServerRepository = class {
3926
4392
  */
3927
4393
  async resolveId(id) {
3928
4394
  return resolveByShortIdPrefix(id, "MCPServer", async (pattern) => {
3929
- const rows = await select(this.db).from(mcpServers3).where(like9(mcpServers3.mcp_server_id, pattern)).limit(RESOLVE_SHORT_ID_FETCH_LIMIT).all();
4395
+ const rows = await select(this.db).from(mcpServers3).where(like10(mcpServers3.mcp_server_id, pattern)).limit(RESOLVE_SHORT_ID_FETCH_LIMIT).all();
3930
4396
  return rows.map((r) => r.mcp_server_id);
3931
4397
  });
3932
4398
  }
@@ -3937,7 +4403,7 @@ var MCPServerRepository = class {
3937
4403
  try {
3938
4404
  const insertData = this.mcpServerToInsert(data);
3939
4405
  await insert(this.db, mcpServers3).values(insertData).run();
3940
- const row = await select(this.db).from(mcpServers3).where(eq14(mcpServers3.mcp_server_id, insertData.mcp_server_id)).one();
4406
+ const row = await select(this.db).from(mcpServers3).where(eq17(mcpServers3.mcp_server_id, insertData.mcp_server_id)).one();
3941
4407
  if (!row) {
3942
4408
  throw new RepositoryError("Failed to retrieve created MCP server");
3943
4409
  }
@@ -3956,7 +4422,7 @@ var MCPServerRepository = class {
3956
4422
  async findById(id) {
3957
4423
  try {
3958
4424
  const fullId = await this.resolveId(id);
3959
- const row = await select(this.db).from(mcpServers3).where(eq14(mcpServers3.mcp_server_id, fullId)).one();
4425
+ const row = await select(this.db).from(mcpServers3).where(eq17(mcpServers3.mcp_server_id, fullId)).one();
3960
4426
  return row ? this.rowToMCPServer(row) : null;
3961
4427
  } catch (error) {
3962
4428
  if (error instanceof EntityNotFoundError) return null;
@@ -3975,24 +4441,24 @@ var MCPServerRepository = class {
3975
4441
  let query = select(this.db).from(mcpServers3);
3976
4442
  const conditions = [];
3977
4443
  if (filters?.scope) {
3978
- conditions.push(eq14(mcpServers3.scope, filters.scope));
4444
+ conditions.push(eq17(mcpServers3.scope, filters.scope));
3979
4445
  }
3980
4446
  if (filters?.scopeId) {
3981
4447
  if (filters.scope === "global") {
3982
- conditions.push(eq14(mcpServers3.owner_user_id, filters.scopeId));
4448
+ conditions.push(eq17(mcpServers3.owner_user_id, filters.scopeId));
3983
4449
  }
3984
4450
  }
3985
4451
  if (filters?.transport) {
3986
- conditions.push(eq14(mcpServers3.transport, filters.transport));
4452
+ conditions.push(eq17(mcpServers3.transport, filters.transport));
3987
4453
  }
3988
4454
  if (filters?.enabled !== void 0) {
3989
- conditions.push(eq14(mcpServers3.enabled, filters.enabled));
4455
+ conditions.push(eq17(mcpServers3.enabled, filters.enabled));
3990
4456
  }
3991
4457
  if (filters?.source) {
3992
- conditions.push(eq14(mcpServers3.source, filters.source));
4458
+ conditions.push(eq17(mcpServers3.source, filters.source));
3993
4459
  }
3994
4460
  if (conditions.length > 0) {
3995
- query = query.where(and12(...conditions));
4461
+ query = query.where(and14(...conditions));
3996
4462
  }
3997
4463
  const rows = await query.all();
3998
4464
  return rows.map((row) => this.rowToMCPServer(row));
@@ -4039,7 +4505,7 @@ var MCPServerRepository = class {
4039
4505
  transport: insertData.transport,
4040
4506
  updated_at: /* @__PURE__ */ new Date(),
4041
4507
  data: insertData.data
4042
- }).where(eq14(mcpServers3.mcp_server_id, fullId)).run();
4508
+ }).where(eq17(mcpServers3.mcp_server_id, fullId)).run();
4043
4509
  const updated = await this.findById(fullId);
4044
4510
  if (!updated) {
4045
4511
  throw new RepositoryError("Failed to retrieve updated MCP server");
@@ -4060,7 +4526,7 @@ var MCPServerRepository = class {
4060
4526
  async delete(id) {
4061
4527
  try {
4062
4528
  const fullId = await this.resolveId(id);
4063
- const result = await deleteFrom(this.db, mcpServers3).where(eq14(mcpServers3.mcp_server_id, fullId)).run();
4529
+ const result = await deleteFrom(this.db, mcpServers3).where(eq17(mcpServers3.mcp_server_id, fullId)).run();
4064
4530
  if (result.rowsAffected === 0) {
4065
4531
  throw new EntityNotFoundError("MCPServer", id);
4066
4532
  }
@@ -4092,21 +4558,18 @@ var MCPServerRepository = class {
4092
4558
  init_esm_shims();
4093
4559
  init_database_wrapper();
4094
4560
  init_schema();
4095
- import { and as and13, eq as eq15 } from "drizzle-orm";
4561
+ import { and as and15, eq as eq18, inArray as inArray6 } from "drizzle-orm";
4096
4562
 
4097
4563
  // src/db/repositories/repos.ts
4098
4564
  init_esm_shims();
4099
- import { eq as eq16, like as like10, sql as sql9 } from "drizzle-orm";
4565
+ import { eq as eq19, like as like11, sql as sql9 } from "drizzle-orm";
4100
4566
 
4101
4567
  // src/config/variant-resolver.ts
4102
4568
  init_esm_shims();
4103
4569
 
4104
4570
  // src/yaml/index.ts
4105
4571
  init_esm_shims();
4106
- import yaml3 from "js-yaml";
4107
- var load2 = yaml3.load;
4108
- var dump2 = yaml3.dump;
4109
- var YAMLException = yaml3.YAMLException;
4572
+ import * as yaml3 from "js-yaml";
4110
4573
 
4111
4574
  // src/db/repositories/repos.ts
4112
4575
  init_ids();
@@ -4118,33 +4581,27 @@ init_esm_shims();
4118
4581
  init_ids();
4119
4582
  init_database_wrapper();
4120
4583
  init_schema();
4121
- import { and as and14, asc as asc2, desc as desc3, eq as eq17, isNull as isNull5, like as like11, lte, or as or6, sql as sql10 } from "drizzle-orm";
4584
+ import { and as and16, asc as asc2, desc as desc3, eq as eq20, isNull as isNull6, like as like12, lte, or as or7, sql as sql10 } from "drizzle-orm";
4122
4585
 
4123
4586
  // src/db/repositories/serialized-sessions.ts
4124
4587
  init_esm_shims();
4125
4588
  init_ids();
4126
4589
  init_database_wrapper();
4127
4590
  init_schema();
4128
- import { and as and15, desc as desc4, eq as eq18, lt } from "drizzle-orm";
4129
-
4130
- // src/db/repositories/session-env-selections.ts
4131
- init_esm_shims();
4132
- init_database_wrapper();
4133
- init_schema();
4134
- import { and as and16, eq as eq19 } from "drizzle-orm";
4591
+ import { and as and17, desc as desc4, eq as eq21, lt } from "drizzle-orm";
4135
4592
 
4136
4593
  // src/db/repositories/session-mcp-servers.ts
4137
4594
  init_esm_shims();
4138
4595
  init_database_wrapper();
4139
4596
  init_schema();
4140
- import { and as and18, eq as eq21 } from "drizzle-orm";
4597
+ import { and as and19, eq as eq23 } from "drizzle-orm";
4141
4598
 
4142
4599
  // src/db/repositories/sessions.ts
4143
4600
  init_esm_shims();
4144
4601
  init_types();
4145
4602
  init_config_manager();
4146
4603
  init_ids();
4147
- import { and as and17, desc as desc5, eq as eq20, inArray as inArray4, like as like12, or as or7, sql as sql11 } from "drizzle-orm";
4604
+ import { and as and18, desc as desc5, eq as eq22, inArray as inArray7, like as like13, or as or8, sql as sql11 } from "drizzle-orm";
4148
4605
  init_database_wrapper();
4149
4606
  init_schema();
4150
4607
 
@@ -4153,7 +4610,7 @@ init_esm_shims();
4153
4610
  init_ids();
4154
4611
  init_database_wrapper();
4155
4612
  init_schema();
4156
- import { and as and19, eq as eq22, inArray as inArray5, or as or8 } from "drizzle-orm";
4613
+ import { and as and20, eq as eq24, inArray as inArray8, or as or9 } from "drizzle-orm";
4157
4614
 
4158
4615
  // src/db/repositories/tasks.ts
4159
4616
  init_esm_shims();
@@ -4161,7 +4618,7 @@ init_types();
4161
4618
  init_ids();
4162
4619
  init_database_wrapper();
4163
4620
  init_schema();
4164
- import { eq as eq23, inArray as inArray6, like as like13, sql as sql12 } from "drizzle-orm";
4621
+ import { and as and21, eq as eq25, inArray as inArray9, like as like14, sql as sql12 } from "drizzle-orm";
4165
4622
 
4166
4623
  // src/db/repositories/thread-session-map.ts
4167
4624
  init_esm_shims();
@@ -4169,22 +4626,23 @@ init_types();
4169
4626
  init_ids();
4170
4627
  init_database_wrapper();
4171
4628
  init_schema();
4172
- import { and as and20, eq as eq24, like as like14, lt as lt2 } from "drizzle-orm";
4629
+ import { and as and22, eq as eq26, like as like15, lt as lt2 } from "drizzle-orm";
4173
4630
 
4174
4631
  // src/db/repositories/user-api-keys.ts
4175
4632
  init_esm_shims();
4176
4633
  init_ids();
4177
4634
  init_database_wrapper();
4178
4635
  init_schema();
4636
+ init_tenant_context();
4179
4637
  import { randomBytes as randomBytes3 } from "crypto";
4180
4638
  import bcrypt from "bcryptjs";
4181
- import { and as and21, eq as eq25 } from "drizzle-orm";
4639
+ import { and as and23, eq as eq27 } from "drizzle-orm";
4182
4640
 
4183
4641
  // src/db/repositories/user-mcp-oauth-tokens.ts
4184
4642
  init_esm_shims();
4185
4643
  init_database_wrapper();
4186
4644
  init_schema();
4187
- import { and as and22, eq as eq26, isNull as isNull6 } from "drizzle-orm";
4645
+ import { and as and24, eq as eq28, isNull as isNull7 } from "drizzle-orm";
4188
4646
  function rowToToken(row) {
4189
4647
  return {
4190
4648
  user_id: row.user_id ?? null,
@@ -4199,9 +4657,9 @@ function rowToToken(row) {
4199
4657
  };
4200
4658
  }
4201
4659
  function matchKey(userId, serverId) {
4202
- return and22(
4203
- userId === null ? isNull6(userMcpOauthTokens3.user_id) : eq26(userMcpOauthTokens3.user_id, userId),
4204
- eq26(userMcpOauthTokens3.mcp_server_id, serverId)
4660
+ return and24(
4661
+ userId === null ? isNull7(userMcpOauthTokens3.user_id) : eq28(userMcpOauthTokens3.user_id, userId),
4662
+ eq28(userMcpOauthTokens3.mcp_server_id, serverId)
4205
4663
  );
4206
4664
  }
4207
4665
  var UserMCPOAuthTokenRepository = class {
@@ -4318,7 +4776,7 @@ var UserMCPOAuthTokenRepository = class {
4318
4776
  }
4319
4777
  async deleteAllForUser(userId) {
4320
4778
  try {
4321
- const result = await deleteFrom(this.db, userMcpOauthTokens3).where(eq26(userMcpOauthTokens3.user_id, userId)).run();
4779
+ const result = await deleteFrom(this.db, userMcpOauthTokens3).where(eq28(userMcpOauthTokens3.user_id, userId)).run();
4322
4780
  return result.rowsAffected;
4323
4781
  } catch (error) {
4324
4782
  throw new RepositoryError(
@@ -4329,7 +4787,7 @@ var UserMCPOAuthTokenRepository = class {
4329
4787
  }
4330
4788
  async deleteAllForServer(serverId) {
4331
4789
  try {
4332
- const result = await deleteFrom(this.db, userMcpOauthTokens3).where(eq26(userMcpOauthTokens3.mcp_server_id, serverId)).run();
4790
+ const result = await deleteFrom(this.db, userMcpOauthTokens3).where(eq28(userMcpOauthTokens3.mcp_server_id, serverId)).run();
4333
4791
  return result.rowsAffected;
4334
4792
  } catch (error) {
4335
4793
  throw new RepositoryError(
@@ -4340,7 +4798,7 @@ var UserMCPOAuthTokenRepository = class {
4340
4798
  }
4341
4799
  async listForUser(userId) {
4342
4800
  try {
4343
- const rows = await select(this.db).from(userMcpOauthTokens3).where(eq26(userMcpOauthTokens3.user_id, userId)).all();
4801
+ const rows = await select(this.db).from(userMcpOauthTokens3).where(eq28(userMcpOauthTokens3.user_id, userId)).all();
4344
4802
  return rows.map(rowToToken);
4345
4803
  } catch (error) {
4346
4804
  throw new RepositoryError(
@@ -4358,14 +4816,7 @@ var UserMCPOAuthTokenRepository = class {
4358
4816
  // src/db/repositories/users.ts
4359
4817
  init_esm_shims();
4360
4818
  init_types();
4361
- import { eq as eq27, like as like15, sql as sql13 } from "drizzle-orm";
4362
-
4363
- // src/config/env-vars.ts
4364
- init_esm_shims();
4365
- var V05_SCOPES = ["global", "session"];
4366
- var V05_SCOPE_SET = new Set(V05_SCOPES);
4367
-
4368
- // src/db/repositories/users.ts
4819
+ import { eq as eq29, like as like16, sql as sql13 } from "drizzle-orm";
4369
4820
  init_ids();
4370
4821
  init_database_wrapper();
4371
4822
  init_schema();