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
@@ -31,9 +31,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
31
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
32
 
33
33
  // ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.15_tsx@4.22.4_typescript@6.0.3_yaml@2.9.0/node_modules/tsup/assets/cjs_shims.js
34
+ var getImportMetaUrl, importMetaUrl;
34
35
  var init_cjs_shims = __esm({
35
36
  "../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.15_tsx@4.22.4_typescript@6.0.3_yaml@2.9.0/node_modules/tsup/assets/cjs_shims.js"() {
36
37
  "use strict";
38
+ getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
39
+ importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
37
40
  }
38
41
  });
39
42
 
@@ -78,18 +81,48 @@ var init_ids = __esm({
78
81
  }
79
82
  });
80
83
 
84
+ // src/db/tenant-context.ts
85
+ function getCurrentTenantId() {
86
+ const store = tenantDatabaseScope.getStore();
87
+ return store?.kind === "tenant" ? store.tenantId : void 0;
88
+ }
89
+ var import_node_async_hooks, tenantDatabaseScope;
90
+ var init_tenant_context = __esm({
91
+ "src/db/tenant-context.ts"() {
92
+ "use strict";
93
+ init_cjs_shims();
94
+ import_node_async_hooks = require("async_hooks");
95
+ tenantDatabaseScope = new import_node_async_hooks.AsyncLocalStorage();
96
+ }
97
+ });
98
+
81
99
  // src/db/database-wrapper.ts
82
100
  function isSQLiteDatabase(db) {
83
101
  return "run" in db && typeof db.run === "function";
84
102
  }
85
- function wrapQuery(query, db) {
103
+ function tableHasTenantColumn(table) {
104
+ return Boolean(table && "tenant_id" in table);
105
+ }
106
+ function withTenantInsertValues(values, table) {
107
+ const tenantId = getCurrentTenantId();
108
+ if (!tenantId || !tableHasTenantColumn(table)) return values;
109
+ const stamp = (row) => {
110
+ if (!row || typeof row !== "object" || Array.isArray(row)) return row;
111
+ if ("tenant_id" in row) return row;
112
+ return { tenant_id: tenantId, ...row };
113
+ };
114
+ return Array.isArray(values) ? values.map(stamp) : stamp(values);
115
+ }
116
+ function wrapQuery(query, db, table) {
86
117
  return {
87
118
  ...query,
88
119
  one: async () => {
89
120
  if (isSQLiteDatabase(db)) {
90
121
  return await query.get();
91
122
  } else {
92
- const results = await query.limit(1);
123
+ const results = await query.limit(
124
+ 1
125
+ );
93
126
  return results[0] || null;
94
127
  }
95
128
  },
@@ -111,30 +144,55 @@ function wrapQuery(query, db) {
111
144
  return { rowsAffected: result.length || 0 };
112
145
  }
113
146
  },
114
- // biome-ignore lint/suspicious/noExplicitAny: Drizzle query builder types vary by dialect
115
147
  returning: () => wrapReturning(query.returning(), db),
116
148
  // Preserve chainable methods
117
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
118
- where: (...args) => wrapQuery(query.where(...args), db),
119
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
120
- limit: (...args) => wrapQuery(query.limit(...args), db),
121
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
122
- offset: (...args) => wrapQuery(query.offset(...args), db),
123
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
124
- orderBy: (...args) => wrapQuery(query.orderBy(...args), db),
125
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
126
- groupBy: (...args) => wrapQuery(query.groupBy(...args), db),
127
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
128
- set: (...args) => wrapQuery(query.set(...args), db),
129
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
130
- values: (...args) => wrapQuery(query.values(...args), db),
131
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
132
- innerJoin: (...args) => wrapQuery(query.innerJoin(...args), db),
133
- // biome-ignore lint/suspicious/noExplicitAny: These methods accept varying argument types from Drizzle
134
- leftJoin: (...args) => wrapQuery(query.leftJoin(...args), db),
135
- onConflictDoNothing: (...args) => (
136
- // biome-ignore lint/suspicious/noExplicitAny: Drizzle exposes onConflictDoNothing on both dialects after .values()
137
- wrapQuery(query.onConflictDoNothing(...args), db)
149
+ where: (...args) => wrapQuery(
150
+ query.where(...args),
151
+ db,
152
+ table
153
+ ),
154
+ limit: (...args) => wrapQuery(
155
+ query.limit(...args),
156
+ db,
157
+ table
158
+ ),
159
+ offset: (...args) => wrapQuery(
160
+ query.offset(...args),
161
+ db,
162
+ table
163
+ ),
164
+ orderBy: (...args) => wrapQuery(
165
+ query.orderBy(...args),
166
+ db,
167
+ table
168
+ ),
169
+ groupBy: (...args) => wrapQuery(
170
+ query.groupBy(...args),
171
+ db,
172
+ table
173
+ ),
174
+ set: (...args) => wrapQuery(query.set(...args), db, table),
175
+ values: (...args) => wrapQuery(
176
+ query.values(
177
+ ...args.map((arg) => withTenantInsertValues(arg, table))
178
+ ),
179
+ db,
180
+ table
181
+ ),
182
+ innerJoin: (...args) => wrapQuery(
183
+ query.innerJoin(...args),
184
+ db,
185
+ table
186
+ ),
187
+ leftJoin: (...args) => wrapQuery(
188
+ query.leftJoin(...args),
189
+ db,
190
+ table
191
+ ),
192
+ onConflictDoNothing: (...args) => wrapQuery(
193
+ query.onConflictDoNothing(...args),
194
+ db,
195
+ table
138
196
  )
139
197
  };
140
198
  }
@@ -167,7 +225,7 @@ function select(db, columns) {
167
225
  }
168
226
  function insert(db, table) {
169
227
  const query = db.insert(table);
170
- return wrapQuery(query, db);
228
+ return wrapQuery(query, db, table);
171
229
  }
172
230
  function update(db, table) {
173
231
  const query = db.update(table);
@@ -183,6 +241,7 @@ var init_database_wrapper = __esm({
183
241
  "use strict";
184
242
  init_cjs_shims();
185
243
  import_drizzle_orm = require("drizzle-orm");
244
+ init_tenant_context();
186
245
  }
187
246
  });
188
247
 
@@ -430,6 +489,14 @@ var init_template = __esm({
430
489
  }
431
490
  });
432
491
 
492
+ // src/types/tenant.ts
493
+ var init_tenant = __esm({
494
+ "src/types/tenant.ts"() {
495
+ "use strict";
496
+ init_cjs_shims();
497
+ }
498
+ });
499
+
433
500
  // src/types/ui.ts
434
501
  var init_ui = __esm({
435
502
  "src/types/ui.ts"() {
@@ -520,6 +587,7 @@ var init_types = __esm({
520
587
  init_session();
521
588
  init_task();
522
589
  init_template();
590
+ init_tenant();
523
591
  init_ui();
524
592
  init_user();
525
593
  init_utils();
@@ -545,6 +613,7 @@ __export(schema_postgres_exports, {
545
613
  cardTypes: () => cardTypes,
546
614
  cards: () => cards,
547
615
  gatewayChannels: () => gatewayChannels,
616
+ gatewayOutboundMessages: () => gatewayOutboundMessages,
548
617
  groupMemberships: () => groupMemberships,
549
618
  groups: () => groups,
550
619
  kbDocumentUnits: () => kbDocumentUnits,
@@ -573,7 +642,7 @@ __export(schema_postgres_exports, {
573
642
  userMcpOauthTokens: () => userMcpOauthTokens,
574
643
  users: () => users
575
644
  });
576
- var import_drizzle_orm2, import_pg_core, bytea, t, sessions, sessionRelationships, tasks, serializedSessions, messages, boards, repos, branches, branchOwners, boardOwners, schedules, users, groups, groupMemberships, branchGroupGrants, boardGroupGrants, appVariables, userApiKeys, mcpServers, cardTypes, cards, artifacts, artifactTrustGrants, boardObjects, sessionMcpServers, userMcpOauthTokens, boardComments, gatewayChannels, threadSessionMap, sessionEnvSelections, kbNamespaces, kbNamespaceAcl, kbDocuments, kbDocumentVersions, kbDocumentUnits, kbEmbeddingSpaces, kbGraphNodes, kbGraphEdges, sessionsRelations, sessionRelationshipsRelations, branchesRelations, schedulesRelations;
645
+ var import_drizzle_orm2, import_pg_core, bytea, t, sessions, sessionRelationships, tasks, serializedSessions, messages, boards, repos, branches, branchOwners, boardOwners, schedules, users, groups, groupMemberships, branchGroupGrants, boardGroupGrants, appVariables, userApiKeys, mcpServers, cardTypes, cards, artifacts, artifactTrustGrants, boardObjects, sessionMcpServers, userMcpOauthTokens, boardComments, gatewayChannels, threadSessionMap, gatewayOutboundMessages, sessionEnvSelections, kbNamespaces, kbNamespaceAcl, kbDocuments, kbDocumentVersions, kbDocumentUnits, kbEmbeddingSpaces, kbGraphNodes, kbGraphEdges, sessionsRelations, sessionRelationshipsRelations, branchesRelations, schedulesRelations;
577
646
  var init_schema_postgres = __esm({
578
647
  "src/db/schema.postgres.ts"() {
579
648
  "use strict";
@@ -594,6 +663,7 @@ var init_schema_postgres = __esm({
594
663
  sessions = (0, import_pg_core.pgTable)(
595
664
  "sessions",
596
665
  {
666
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
597
667
  // Primary identity
598
668
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).primaryKey(),
599
669
  created_at: t.timestamp("created_at").notNull(),
@@ -653,7 +723,9 @@ var init_schema_postgres = __esm({
653
723
  data: t.json("data").$type().notNull()
654
724
  },
655
725
  (table) => ({
726
+ tenantIdx: (0, import_pg_core.index)("sessions_tenant_id_idx").on(table.tenant_id),
656
727
  statusIdx: (0, import_pg_core.index)("sessions_status_idx").on(table.status),
728
+ statusReadyIdx: (0, import_pg_core.index)("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
657
729
  agenticToolIdx: (0, import_pg_core.index)("sessions_agentic_tool_idx").on(table.agentic_tool),
658
730
  boardIdx: (0, import_pg_core.index)("sessions_board_idx").on(table.board_id),
659
731
  branchIdx: (0, import_pg_core.index)("sessions_branch_idx").on(table.branch_id),
@@ -665,12 +737,13 @@ var init_schema_postgres = __esm({
665
737
  // Partial unique index — covering for the scheduler's dedup lookup
666
738
  // AND serves as the DB-level guard against check-then-create races
667
739
  // in spawnScheduledSession.
668
- scheduleRunUnique: (0, import_pg_core.uniqueIndex)("sessions_schedule_run_unique").on(table.schedule_id, table.scheduled_run_at).where(import_drizzle_orm2.sql`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
740
+ scheduleRunUnique: (0, import_pg_core.uniqueIndex)("sessions_schedule_run_unique").on(table.tenant_id, table.schedule_id, table.scheduled_run_at).where(import_drizzle_orm2.sql`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
669
741
  })
670
742
  );
671
743
  sessionRelationships = (0, import_pg_core.pgTable)(
672
744
  "session_relationships",
673
745
  {
746
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
674
747
  relationship_id: (0, import_pg_core.varchar)("relationship_id", { length: 36 }).primaryKey(),
675
748
  source_session_id: (0, import_pg_core.varchar)("source_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
676
749
  target_session_id: (0, import_pg_core.varchar)("target_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
@@ -688,10 +761,23 @@ var init_schema_postgres = __esm({
688
761
  data: t.json("data")
689
762
  },
690
763
  (table) => ({
764
+ tenantIdx: (0, import_pg_core.index)("session_relationships_tenant_id_idx").on(table.tenant_id),
691
765
  sourceIdx: (0, import_pg_core.index)("session_relationships_source_idx").on(table.source_session_id),
692
766
  targetIdx: (0, import_pg_core.index)("session_relationships_target_idx").on(table.target_session_id),
693
767
  callbackIdx: (0, import_pg_core.index)("session_relationships_callback_idx").on(table.callback_session_id),
768
+ // Composite indexes so the OR predicate in dispatchCompletionCallbacks
769
+ // (WHERE source_session_id = $1 OR target_session_id = $2) uses BitmapOr
770
+ // over these instead of a full tenant table scan via tenant_id_idx.
771
+ tenantSourceIdx: (0, import_pg_core.index)("session_relationships_tenant_source_idx").on(
772
+ table.tenant_id,
773
+ table.source_session_id
774
+ ),
775
+ tenantTargetIdx: (0, import_pg_core.index)("session_relationships_tenant_target_idx").on(
776
+ table.tenant_id,
777
+ table.target_session_id
778
+ ),
694
779
  sourceTargetTypeUnique: (0, import_pg_core.uniqueIndex)("session_relationships_source_target_type_unique").on(
780
+ table.tenant_id,
695
781
  table.source_session_id,
696
782
  table.target_session_id,
697
783
  table.relationship_type
@@ -701,6 +787,7 @@ var init_schema_postgres = __esm({
701
787
  tasks = (0, import_pg_core.pgTable)(
702
788
  "tasks",
703
789
  {
790
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
704
791
  task_id: (0, import_pg_core.varchar)("task_id", { length: 36 }).primaryKey(),
705
792
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
706
793
  created_at: t.timestamp("created_at").notNull(),
@@ -730,19 +817,23 @@ var init_schema_postgres = __esm({
730
817
  data: t.json("data").$type().notNull()
731
818
  },
732
819
  (table) => ({
820
+ tenantIdx: (0, import_pg_core.index)("tasks_tenant_id_idx").on(table.tenant_id),
733
821
  sessionIdx: (0, import_pg_core.index)("tasks_session_idx").on(table.session_id),
734
822
  statusIdx: (0, import_pg_core.index)("tasks_status_idx").on(table.status),
735
823
  createdIdx: (0, import_pg_core.index)("tasks_created_idx").on(table.created_at),
824
+ // Composite for "latest task for session" queries (ORDER BY created_at DESC LIMIT 1).
825
+ sessionCreatedIdx: (0, import_pg_core.index)("tasks_session_created_idx").on(table.session_id, table.created_at),
736
826
  queueIdx: (0, import_pg_core.index)("tasks_queue_idx").on(table.session_id, table.status, table.queue_position),
737
827
  // Partial unique index — defense-in-depth for `tasks.createPending` race
738
828
  // serialization. Only QUEUED rows are constrained; CREATED/RUNNING/done
739
829
  // rows have NULL queue_position and are unaffected.
740
- queuedPositionUnique: (0, import_pg_core.uniqueIndex)("tasks_queued_position_unique").on(table.session_id, table.queue_position).where(import_drizzle_orm2.sql`${table.status} = 'queued'`)
830
+ queuedPositionUnique: (0, import_pg_core.uniqueIndex)("tasks_queued_position_unique").on(table.tenant_id, table.session_id, table.queue_position).where(import_drizzle_orm2.sql`${table.status} = 'queued'`)
741
831
  })
742
832
  );
743
833
  serializedSessions = (0, import_pg_core.pgTable)(
744
834
  "serialized_sessions",
745
835
  {
836
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
746
837
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
747
838
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
748
839
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
@@ -758,6 +849,7 @@ var init_schema_postgres = __esm({
758
849
  // gzipped; NULL while status='processing'
759
850
  },
760
851
  (table) => ({
852
+ tenantIdx: (0, import_pg_core.index)("serialized_sessions_tenant_id_idx").on(table.tenant_id),
761
853
  sessionTurnIdx: (0, import_pg_core.index)("serialized_sessions_session_turn_idx").on(
762
854
  table.session_id,
763
855
  table.turn_index
@@ -768,6 +860,7 @@ var init_schema_postgres = __esm({
768
860
  messages = (0, import_pg_core.pgTable)(
769
861
  "messages",
770
862
  {
863
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
771
864
  // Primary identity
772
865
  message_id: (0, import_pg_core.varchar)("message_id", { length: 36 }).primaryKey(),
773
866
  created_at: t.timestamp("created_at").notNull(),
@@ -807,15 +900,23 @@ var init_schema_postgres = __esm({
807
900
  data: t.json("data").$type().notNull()
808
901
  },
809
902
  (table) => ({
903
+ tenantIdx: (0, import_pg_core.index)("messages_tenant_id_idx").on(table.tenant_id),
904
+ tenantTimestampIdx: (0, import_pg_core.index)("messages_tenant_timestamp_idx").on(table.tenant_id, table.timestamp),
810
905
  // Indexes for efficient lookups
811
906
  sessionIdx: (0, import_pg_core.index)("messages_session_id_idx").on(table.session_id),
812
907
  taskIdx: (0, import_pg_core.index)("messages_task_id_idx").on(table.task_id),
813
- sessionIndexIdx: (0, import_pg_core.index)("messages_session_index_idx").on(table.session_id, table.index)
908
+ sessionIndexIdx: (0, import_pg_core.index)("messages_session_index_idx").on(table.session_id, table.index),
909
+ timestampIdx: (0, import_pg_core.index)("messages_timestamp_idx").on(table.timestamp),
910
+ sessionTimestampIdx: (0, import_pg_core.index)("messages_session_timestamp_idx").on(
911
+ table.session_id,
912
+ table.timestamp
913
+ )
814
914
  })
815
915
  );
816
916
  boards = (0, import_pg_core.pgTable)(
817
917
  "boards",
818
918
  {
919
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
819
920
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).primaryKey(),
820
921
  created_at: t.timestamp("created_at").notNull(),
821
922
  updated_at: t.timestamp("updated_at"),
@@ -823,7 +924,7 @@ var init_schema_postgres = __esm({
823
924
  created_by: (0, import_pg_core.varchar)("created_by", { length: 36 }).notNull(),
824
925
  // Materialized for lookups
825
926
  name: (0, import_pg_core.text)("name").notNull(),
826
- slug: (0, import_pg_core.text)("slug").unique(),
927
+ slug: (0, import_pg_core.text)("slug"),
827
928
  primary_assistant_id: (0, import_pg_core.varchar)("primary_assistant_id", { length: 36 }).references(
828
929
  () => branches.branch_id,
829
930
  {
@@ -838,18 +939,21 @@ var init_schema_postgres = __esm({
838
939
  archived_by: (0, import_pg_core.varchar)("archived_by", { length: 36 })
839
940
  },
840
941
  (table) => ({
942
+ tenantIdx: (0, import_pg_core.index)("boards_tenant_id_idx").on(table.tenant_id),
841
943
  nameIdx: (0, import_pg_core.index)("boards_name_idx").on(table.name),
842
- slugIdx: (0, import_pg_core.index)("boards_slug_idx").on(table.slug)
944
+ slugIdx: (0, import_pg_core.index)("boards_slug_idx").on(table.slug),
945
+ slugTenantUnique: (0, import_pg_core.uniqueIndex)("boards_tenant_slug_unique").on(table.tenant_id, table.slug)
843
946
  })
844
947
  );
845
948
  repos = (0, import_pg_core.pgTable)(
846
949
  "repos",
847
950
  {
951
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
848
952
  repo_id: (0, import_pg_core.varchar)("repo_id", { length: 36 }).primaryKey(),
849
953
  created_at: t.timestamp("created_at").notNull(),
850
954
  updated_at: t.timestamp("updated_at"),
851
955
  // Materialized for querying
852
- slug: (0, import_pg_core.text)("slug").notNull().unique(),
956
+ slug: (0, import_pg_core.text)("slug").notNull(),
853
957
  repo_type: (0, import_pg_core.text)("repo_type", { enum: ["remote", "local"] }).notNull().default("remote"),
854
958
  // Unix group for repo-level git access (agor_rp_<short-id>)
855
959
  // Users who have access to ANY branch in this repo get added to this group.
@@ -860,12 +964,15 @@ var init_schema_postgres = __esm({
860
964
  data: t.json("data").$type().notNull()
861
965
  },
862
966
  (table) => ({
863
- slugIdx: (0, import_pg_core.index)("repos_slug_idx").on(table.slug)
967
+ tenantIdx: (0, import_pg_core.index)("repos_tenant_id_idx").on(table.tenant_id),
968
+ slugIdx: (0, import_pg_core.index)("repos_slug_idx").on(table.slug),
969
+ slugTenantUnique: (0, import_pg_core.uniqueIndex)("repos_tenant_slug_unique").on(table.tenant_id, table.slug)
864
970
  })
865
971
  );
866
972
  branches = (0, import_pg_core.pgTable)(
867
973
  "branches",
868
974
  {
975
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
869
976
  // Primary identity
870
977
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).primaryKey(),
871
978
  repo_id: (0, import_pg_core.varchar)("repo_id", { length: 36 }).notNull().references(() => repos.repo_id, { onDelete: "cascade" }),
@@ -940,6 +1047,7 @@ var init_schema_postgres = __esm({
940
1047
  data: t.json("data").$type().notNull()
941
1048
  },
942
1049
  (table) => ({
1050
+ tenantIdx: (0, import_pg_core.index)("branches_tenant_id_idx").on(table.tenant_id),
943
1051
  repoIdx: (0, import_pg_core.index)("branches_repo_idx").on(table.repo_id),
944
1052
  nameIdx: (0, import_pg_core.index)("branches_name_idx").on(table.name),
945
1053
  refIdx: (0, import_pg_core.index)("branches_ref_idx").on(table.ref),
@@ -953,22 +1061,26 @@ var init_schema_postgres = __esm({
953
1061
  branchOwners = (0, import_pg_core.pgTable)(
954
1062
  "branch_owners",
955
1063
  {
1064
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
956
1065
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
957
1066
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
958
1067
  created_at: t.timestamp("created_at").defaultNow()
959
1068
  },
960
1069
  (table) => ({
1070
+ tenantIdx: (0, import_pg_core.index)("branch_owners_tenant_id_idx").on(table.tenant_id),
961
1071
  pk: (0, import_pg_core.primaryKey)({ columns: [table.branch_id, table.user_id] })
962
1072
  })
963
1073
  );
964
1074
  boardOwners = (0, import_pg_core.pgTable)(
965
1075
  "board_owners",
966
1076
  {
1077
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
967
1078
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
968
1079
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
969
1080
  created_at: t.timestamp("created_at")
970
1081
  },
971
1082
  (table) => ({
1083
+ tenantIdx: (0, import_pg_core.index)("board_owners_tenant_id_idx").on(table.tenant_id),
972
1084
  pk: (0, import_pg_core.primaryKey)({ columns: [table.board_id, table.user_id] }),
973
1085
  userIdx: (0, import_pg_core.index)("board_owners_user_idx").on(table.user_id)
974
1086
  })
@@ -976,6 +1088,7 @@ var init_schema_postgres = __esm({
976
1088
  schedules = (0, import_pg_core.pgTable)(
977
1089
  "schedules",
978
1090
  {
1091
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
979
1092
  schedule_id: (0, import_pg_core.varchar)("schedule_id", { length: 36 }).primaryKey(),
980
1093
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
981
1094
  name: (0, import_pg_core.text)("name").notNull(),
@@ -999,6 +1112,7 @@ var init_schema_postgres = __esm({
999
1112
  created_by: (0, import_pg_core.varchar)("created_by", { length: 36 }).notNull().references(() => users.user_id)
1000
1113
  },
1001
1114
  (table) => ({
1115
+ tenantIdx: (0, import_pg_core.index)("schedules_tenant_id_idx").on(table.tenant_id),
1002
1116
  enabledNextRunIdx: (0, import_pg_core.index)("schedules_enabled_next_run_idx").on(table.enabled, table.next_run_at),
1003
1117
  branchIdx: (0, import_pg_core.index)("schedules_branch_idx").on(table.branch_id),
1004
1118
  createdByIdx: (0, import_pg_core.index)("schedules_created_by_idx").on(table.created_by)
@@ -1007,12 +1121,13 @@ var init_schema_postgres = __esm({
1007
1121
  users = (0, import_pg_core.pgTable)(
1008
1122
  "users",
1009
1123
  {
1124
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1010
1125
  // Primary identity
1011
1126
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).primaryKey(),
1012
1127
  created_at: t.timestamp("created_at").notNull(),
1013
1128
  updated_at: t.timestamp("updated_at"),
1014
1129
  // Materialized for auth lookups
1015
- email: (0, import_pg_core.text)("email").unique().notNull(),
1130
+ email: (0, import_pg_core.text)("email").notNull(),
1016
1131
  password: (0, import_pg_core.text)("password").notNull(),
1017
1132
  // bcrypt hashed
1018
1133
  // Basic profile (materialized for display)
@@ -1028,16 +1143,22 @@ var init_schema_postgres = __esm({
1028
1143
  onboarding_completed: t.bool("onboarding_completed").notNull().default(false),
1029
1144
  // Force password change flag (admin-settable, auto-cleared on password change)
1030
1145
  must_change_password: t.bool("must_change_password").notNull().default(false),
1146
+ // Auth invalidation marker. Password changes set this timestamp so any
1147
+ // previously issued browser access or refresh token is rejected.
1148
+ tokens_valid_after: t.timestamp("tokens_valid_after"),
1031
1149
  // JSON blob for profile/preferences
1032
1150
  data: t.json("data").$type().notNull()
1033
1151
  },
1034
1152
  (table) => ({
1035
- emailIdx: (0, import_pg_core.index)("users_email_idx").on(table.email)
1153
+ tenantIdx: (0, import_pg_core.index)("users_tenant_id_idx").on(table.tenant_id),
1154
+ emailIdx: (0, import_pg_core.index)("users_email_idx").on(table.email),
1155
+ emailTenantUnique: (0, import_pg_core.uniqueIndex)("users_tenant_email_unique").on(table.tenant_id, table.email)
1036
1156
  })
1037
1157
  );
1038
1158
  groups = (0, import_pg_core.pgTable)(
1039
1159
  "groups",
1040
1160
  {
1161
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1041
1162
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).primaryKey(),
1042
1163
  name: (0, import_pg_core.text)("name").notNull(),
1043
1164
  slug: (0, import_pg_core.text)("slug").notNull(),
@@ -1050,13 +1171,15 @@ var init_schema_postgres = __esm({
1050
1171
  updated_at: t.timestamp("updated_at")
1051
1172
  },
1052
1173
  (table) => ({
1053
- slugIdx: (0, import_pg_core.uniqueIndex)("groups_slug_idx").on(table.slug),
1174
+ tenantIdx: (0, import_pg_core.index)("groups_tenant_id_idx").on(table.tenant_id),
1175
+ slugIdx: (0, import_pg_core.uniqueIndex)("groups_tenant_slug_unique").on(table.tenant_id, table.slug),
1054
1176
  archivedIdx: (0, import_pg_core.index)("groups_archived_idx").on(table.archived)
1055
1177
  })
1056
1178
  );
1057
1179
  groupMemberships = (0, import_pg_core.pgTable)(
1058
1180
  "group_memberships",
1059
1181
  {
1182
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1060
1183
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1061
1184
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1062
1185
  added_by: (0, import_pg_core.varchar)("added_by", { length: 36 }).references(() => users.user_id, {
@@ -1065,6 +1188,7 @@ var init_schema_postgres = __esm({
1065
1188
  created_at: t.timestamp("created_at").notNull()
1066
1189
  },
1067
1190
  (table) => ({
1191
+ tenantIdx: (0, import_pg_core.index)("group_memberships_tenant_id_idx").on(table.tenant_id),
1068
1192
  pk: (0, import_pg_core.primaryKey)({ columns: [table.group_id, table.user_id] }),
1069
1193
  userIdx: (0, import_pg_core.index)("group_memberships_user_idx").on(table.user_id)
1070
1194
  })
@@ -1072,6 +1196,7 @@ var init_schema_postgres = __esm({
1072
1196
  branchGroupGrants = (0, import_pg_core.pgTable)(
1073
1197
  "branch_group_grants",
1074
1198
  {
1199
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1075
1200
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1076
1201
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1077
1202
  can: (0, import_pg_core.text)("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
@@ -1083,6 +1208,7 @@ var init_schema_postgres = __esm({
1083
1208
  updated_at: t.timestamp("updated_at")
1084
1209
  },
1085
1210
  (table) => ({
1211
+ tenantIdx: (0, import_pg_core.index)("branch_group_grants_tenant_id_idx").on(table.tenant_id),
1086
1212
  pk: (0, import_pg_core.primaryKey)({ columns: [table.branch_id, table.group_id] }),
1087
1213
  groupIdx: (0, import_pg_core.index)("branch_group_grants_group_idx").on(table.group_id)
1088
1214
  })
@@ -1090,6 +1216,7 @@ var init_schema_postgres = __esm({
1090
1216
  boardGroupGrants = (0, import_pg_core.pgTable)(
1091
1217
  "board_group_grants",
1092
1218
  {
1219
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1093
1220
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1094
1221
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1095
1222
  can: (0, import_pg_core.text)("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
@@ -1101,6 +1228,7 @@ var init_schema_postgres = __esm({
1101
1228
  updated_at: t.timestamp("updated_at")
1102
1229
  },
1103
1230
  (table) => ({
1231
+ tenantIdx: (0, import_pg_core.index)("board_group_grants_tenant_id_idx").on(table.tenant_id),
1104
1232
  pk: (0, import_pg_core.primaryKey)({ columns: [table.board_id, table.group_id] }),
1105
1233
  groupIdx: (0, import_pg_core.index)("board_group_grants_group_idx").on(table.group_id)
1106
1234
  })
@@ -1108,6 +1236,7 @@ var init_schema_postgres = __esm({
1108
1236
  appVariables = (0, import_pg_core.pgTable)(
1109
1237
  "app_variables",
1110
1238
  {
1239
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1111
1240
  variable_id: (0, import_pg_core.varchar)("variable_id", { length: 36 }).primaryKey(),
1112
1241
  namespace: (0, import_pg_core.text)("namespace").notNull(),
1113
1242
  key: (0, import_pg_core.text)("key").notNull(),
@@ -1123,13 +1252,19 @@ var init_schema_postgres = __esm({
1123
1252
  updated_at: t.timestamp("updated_at").notNull()
1124
1253
  },
1125
1254
  (table) => ({
1126
- namespaceKeyIdx: (0, import_pg_core.uniqueIndex)("app_variables_namespace_key_idx").on(table.namespace, table.key),
1255
+ tenantIdx: (0, import_pg_core.index)("app_variables_tenant_id_idx").on(table.tenant_id),
1256
+ namespaceKeyIdx: (0, import_pg_core.uniqueIndex)("app_variables_tenant_namespace_key_unique").on(
1257
+ table.tenant_id,
1258
+ table.namespace,
1259
+ table.key
1260
+ ),
1127
1261
  namespaceIdx: (0, import_pg_core.index)("app_variables_namespace_idx").on(table.namespace)
1128
1262
  })
1129
1263
  );
1130
1264
  userApiKeys = (0, import_pg_core.pgTable)(
1131
1265
  "user_api_keys",
1132
1266
  {
1267
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1133
1268
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1134
1269
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1135
1270
  name: (0, import_pg_core.text)("name").notNull(),
@@ -1141,6 +1276,7 @@ var init_schema_postgres = __esm({
1141
1276
  last_used_at: t.timestamp("last_used_at")
1142
1277
  },
1143
1278
  (table) => ({
1279
+ tenantIdx: (0, import_pg_core.index)("user_api_keys_tenant_id_idx").on(table.tenant_id),
1144
1280
  userIdx: (0, import_pg_core.index)("user_api_keys_user_idx").on(table.user_id),
1145
1281
  prefixIdx: (0, import_pg_core.index)("user_api_keys_prefix_idx").on(table.prefix)
1146
1282
  })
@@ -1148,6 +1284,7 @@ var init_schema_postgres = __esm({
1148
1284
  mcpServers = (0, import_pg_core.pgTable)(
1149
1285
  "mcp_servers",
1150
1286
  {
1287
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1151
1288
  // Primary identity
1152
1289
  mcp_server_id: (0, import_pg_core.varchar)("mcp_server_id", { length: 36 }).primaryKey(),
1153
1290
  created_at: t.timestamp("created_at").notNull(),
@@ -1174,6 +1311,7 @@ var init_schema_postgres = __esm({
1174
1311
  data: t.json("data").$type().notNull()
1175
1312
  },
1176
1313
  (table) => ({
1314
+ tenantIdx: (0, import_pg_core.index)("mcp_servers_tenant_id_idx").on(table.tenant_id),
1177
1315
  nameIdx: (0, import_pg_core.index)("mcp_servers_name_idx").on(table.name),
1178
1316
  scopeIdx: (0, import_pg_core.index)("mcp_servers_scope_idx").on(table.scope),
1179
1317
  ownerIdx: (0, import_pg_core.index)("mcp_servers_owner_idx").on(table.owner_user_id),
@@ -1183,6 +1321,7 @@ var init_schema_postgres = __esm({
1183
1321
  cardTypes = (0, import_pg_core.pgTable)(
1184
1322
  "card_types",
1185
1323
  {
1324
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1186
1325
  card_type_id: (0, import_pg_core.varchar)("card_type_id", { length: 36 }).primaryKey(),
1187
1326
  name: (0, import_pg_core.text)("name").notNull(),
1188
1327
  emoji: (0, import_pg_core.text)("emoji"),
@@ -1194,12 +1333,14 @@ var init_schema_postgres = __esm({
1194
1333
  updated_at: t.timestamp("updated_at").notNull()
1195
1334
  },
1196
1335
  (table) => ({
1336
+ tenantIdx: (0, import_pg_core.index)("card_types_tenant_id_idx").on(table.tenant_id),
1197
1337
  nameIdx: (0, import_pg_core.index)("card_types_name_idx").on(table.name)
1198
1338
  })
1199
1339
  );
1200
1340
  cards = (0, import_pg_core.pgTable)(
1201
1341
  "cards",
1202
1342
  {
1343
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1203
1344
  card_id: (0, import_pg_core.varchar)("card_id", { length: 36 }).primaryKey(),
1204
1345
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1205
1346
  card_type_id: (0, import_pg_core.varchar)("card_type_id", { length: 36 }).references(() => cardTypes.card_type_id, {
@@ -1220,6 +1361,7 @@ var init_schema_postgres = __esm({
1220
1361
  archived_at: t.timestamp("archived_at")
1221
1362
  },
1222
1363
  (table) => ({
1364
+ tenantIdx: (0, import_pg_core.index)("cards_tenant_id_idx").on(table.tenant_id),
1223
1365
  boardIdx: (0, import_pg_core.index)("cards_board_idx").on(table.board_id),
1224
1366
  cardTypeIdx: (0, import_pg_core.index)("cards_card_type_idx").on(table.card_type_id),
1225
1367
  titleIdx: (0, import_pg_core.index)("cards_title_idx").on(table.title),
@@ -1230,6 +1372,7 @@ var init_schema_postgres = __esm({
1230
1372
  artifacts = (0, import_pg_core.pgTable)(
1231
1373
  "artifacts",
1232
1374
  {
1375
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1233
1376
  artifact_id: (0, import_pg_core.varchar)("artifact_id", { length: 36 }).primaryKey(),
1234
1377
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).references(() => branches.branch_id, {
1235
1378
  onDelete: "set null"
@@ -1265,6 +1408,7 @@ var init_schema_postgres = __esm({
1265
1408
  archived_at: t.timestamp("archived_at")
1266
1409
  },
1267
1410
  (table) => ({
1411
+ tenantIdx: (0, import_pg_core.index)("artifacts_tenant_id_idx").on(table.tenant_id),
1268
1412
  branchIdx: (0, import_pg_core.index)("artifacts_branch_idx").on(table.branch_id),
1269
1413
  sourceSessionIdx: (0, import_pg_core.index)("artifacts_source_session_idx").on(table.source_session_id),
1270
1414
  boardIdx: (0, import_pg_core.index)("artifacts_board_idx").on(table.board_id),
@@ -1275,6 +1419,7 @@ var init_schema_postgres = __esm({
1275
1419
  artifactTrustGrants = (0, import_pg_core.pgTable)(
1276
1420
  "artifact_trust_grants",
1277
1421
  {
1422
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1278
1423
  grant_id: (0, import_pg_core.varchar)("grant_id", { length: 36 }).primaryKey(),
1279
1424
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull(),
1280
1425
  scope_type: (0, import_pg_core.text)("scope_type").notNull(),
@@ -1285,6 +1430,7 @@ var init_schema_postgres = __esm({
1285
1430
  revoked_at: t.timestamp("revoked_at")
1286
1431
  },
1287
1432
  (table) => ({
1433
+ tenantIdx: (0, import_pg_core.index)("artifact_trust_grants_tenant_id_idx").on(table.tenant_id),
1288
1434
  userIdx: (0, import_pg_core.index)("artifact_trust_grants_user_idx").on(table.user_id),
1289
1435
  scopeIdx: (0, import_pg_core.index)("artifact_trust_grants_scope_idx").on(table.scope_type, table.scope_value)
1290
1436
  })
@@ -1292,6 +1438,7 @@ var init_schema_postgres = __esm({
1292
1438
  boardObjects = (0, import_pg_core.pgTable)(
1293
1439
  "board_objects",
1294
1440
  {
1441
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1295
1442
  // Primary identity
1296
1443
  object_id: (0, import_pg_core.varchar)("object_id", { length: 36 }).primaryKey(),
1297
1444
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
@@ -1307,6 +1454,7 @@ var init_schema_postgres = __esm({
1307
1454
  data: t.json("data").$type().notNull()
1308
1455
  },
1309
1456
  (table) => ({
1457
+ tenantIdx: (0, import_pg_core.index)("board_objects_tenant_id_idx").on(table.tenant_id),
1310
1458
  boardIdx: (0, import_pg_core.index)("board_objects_board_idx").on(table.board_id),
1311
1459
  branchIdx: (0, import_pg_core.index)("board_objects_branch_idx").on(table.branch_id),
1312
1460
  cardIdx: (0, import_pg_core.index)("board_objects_card_idx").on(table.card_id)
@@ -1315,12 +1463,14 @@ var init_schema_postgres = __esm({
1315
1463
  sessionMcpServers = (0, import_pg_core.pgTable)(
1316
1464
  "session_mcp_servers",
1317
1465
  {
1466
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1318
1467
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
1319
1468
  mcp_server_id: (0, import_pg_core.varchar)("mcp_server_id", { length: 36 }).notNull().references(() => mcpServers.mcp_server_id, { onDelete: "cascade" }),
1320
1469
  enabled: t.bool("enabled").notNull().default(true),
1321
1470
  added_at: t.timestamp("added_at").notNull()
1322
1471
  },
1323
1472
  (table) => ({
1473
+ tenantIdx: (0, import_pg_core.index)("session_mcp_servers_tenant_id_idx").on(table.tenant_id),
1324
1474
  // Composite primary key
1325
1475
  pk: (0, import_pg_core.index)("session_mcp_servers_pk").on(table.session_id, table.mcp_server_id),
1326
1476
  // Indexes for queries
@@ -1332,6 +1482,7 @@ var init_schema_postgres = __esm({
1332
1482
  userMcpOauthTokens = (0, import_pg_core.pgTable)(
1333
1483
  "user_mcp_oauth_tokens",
1334
1484
  {
1485
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1335
1486
  // NULL = shared-mode token (one per mcp_server_id)
1336
1487
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).references(() => users.user_id, {
1337
1488
  onDelete: "cascade"
@@ -1349,6 +1500,7 @@ var init_schema_postgres = __esm({
1349
1500
  updated_at: t.timestamp("updated_at")
1350
1501
  },
1351
1502
  (table) => ({
1503
+ tenantIdx: (0, import_pg_core.index)("user_mcp_oauth_tokens_tenant_id_idx").on(table.tenant_id),
1352
1504
  // Composite lookup indexes. Uniqueness enforced via partial unique indexes
1353
1505
  // created in the migration (one for per-user rows, one for the shared row).
1354
1506
  pk: (0, import_pg_core.index)("user_mcp_oauth_tokens_pk").on(table.user_id, table.mcp_server_id),
@@ -1359,6 +1511,7 @@ var init_schema_postgres = __esm({
1359
1511
  boardComments = (0, import_pg_core.pgTable)(
1360
1512
  "board_comments",
1361
1513
  {
1514
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1362
1515
  // Primary identity
1363
1516
  comment_id: (0, import_pg_core.varchar)("comment_id", { length: 36 }).primaryKey(),
1364
1517
  created_at: t.timestamp("created_at").notNull(),
@@ -1400,6 +1553,7 @@ var init_schema_postgres = __esm({
1400
1553
  data: t.json("data").$type().notNull()
1401
1554
  },
1402
1555
  (table) => ({
1556
+ tenantIdx: (0, import_pg_core.index)("board_comments_tenant_id_idx").on(table.tenant_id),
1403
1557
  boardIdx: (0, import_pg_core.index)("board_comments_board_idx").on(table.board_id),
1404
1558
  sessionIdx: (0, import_pg_core.index)("board_comments_session_idx").on(table.session_id),
1405
1559
  taskIdx: (0, import_pg_core.index)("board_comments_task_idx").on(table.task_id),
@@ -1414,6 +1568,7 @@ var init_schema_postgres = __esm({
1414
1568
  gatewayChannels = (0, import_pg_core.pgTable)(
1415
1569
  "gateway_channels",
1416
1570
  {
1571
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1417
1572
  // Primary identity
1418
1573
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1419
1574
  created_at: t.timestamp("created_at").notNull(),
@@ -1427,7 +1582,7 @@ var init_schema_postgres = __esm({
1427
1582
  }).notNull(),
1428
1583
  target_branch_id: (0, import_pg_core.varchar)("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1429
1584
  agor_user_id: (0, import_pg_core.varchar)("agor_user_id", { length: 36 }).notNull(),
1430
- channel_key: (0, import_pg_core.text)("channel_key").notNull().unique(),
1585
+ channel_key: (0, import_pg_core.text)("channel_key").notNull(),
1431
1586
  enabled: t.bool("enabled").notNull().default(true),
1432
1587
  last_message_at: t.timestamp("last_message_at"),
1433
1588
  // JSON blob for platform credentials (encrypted at rest)
@@ -1436,13 +1591,19 @@ var init_schema_postgres = __esm({
1436
1591
  agentic_config: t.json("agentic_config")
1437
1592
  },
1438
1593
  (table) => ({
1594
+ tenantIdx: (0, import_pg_core.index)("gateway_channels_tenant_id_idx").on(table.tenant_id),
1439
1595
  channelKeyIdx: (0, import_pg_core.index)("idx_gateway_channel_key").on(table.channel_key),
1596
+ channelKeyTenantUnique: (0, import_pg_core.uniqueIndex)("gateway_channels_tenant_channel_key_unique").on(
1597
+ table.tenant_id,
1598
+ table.channel_key
1599
+ ),
1440
1600
  enabledTypeIdx: (0, import_pg_core.index)("idx_gateway_enabled_type").on(table.enabled, table.channel_type)
1441
1601
  })
1442
1602
  );
1443
1603
  threadSessionMap = (0, import_pg_core.pgTable)(
1444
1604
  "thread_session_map",
1445
1605
  {
1606
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1446
1607
  // Primary identity
1447
1608
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1448
1609
  created_at: t.timestamp("created_at").notNull(),
@@ -1460,7 +1621,9 @@ var init_schema_postgres = __esm({
1460
1621
  metadata: t.json("metadata")
1461
1622
  },
1462
1623
  (table) => ({
1463
- uniqueChannelThread: (0, import_pg_core.uniqueIndex)("uniq_thread_map_channel_thread").on(
1624
+ tenantIdx: (0, import_pg_core.index)("thread_session_map_tenant_id_idx").on(table.tenant_id),
1625
+ uniqueChannelThread: (0, import_pg_core.uniqueIndex)("uniq_thread_map_tenant_channel_thread").on(
1626
+ table.tenant_id,
1464
1627
  table.channel_id,
1465
1628
  table.thread_id
1466
1629
  ),
@@ -1469,14 +1632,82 @@ var init_schema_postgres = __esm({
1469
1632
  channelStatusIdx: (0, import_pg_core.index)("idx_thread_map_channel_status").on(table.channel_id, table.status)
1470
1633
  })
1471
1634
  );
1635
+ gatewayOutboundMessages = (0, import_pg_core.pgTable)(
1636
+ "gateway_outbound_messages",
1637
+ {
1638
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1639
+ id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1640
+ created_at: t.timestamp("created_at").notNull(),
1641
+ updated_at: t.timestamp("updated_at").notNull(),
1642
+ gateway_channel_id: (0, import_pg_core.varchar)("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
1643
+ channel_type: (0, import_pg_core.text)("channel_type", {
1644
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
1645
+ }).notNull(),
1646
+ platform_channel_id: (0, import_pg_core.text)("platform_channel_id").notNull(),
1647
+ platform_message_id: (0, import_pg_core.text)("platform_message_id").notNull(),
1648
+ platform_thread_id: (0, import_pg_core.text)("platform_thread_id").notNull(),
1649
+ platform_permalink: (0, import_pg_core.text)("platform_permalink"),
1650
+ target_branch_id: (0, import_pg_core.varchar)("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id),
1651
+ emitted_by_user_id: (0, import_pg_core.varchar)("emitted_by_user_id", { length: 36 }).notNull().references(() => users.user_id),
1652
+ emitted_by_session_id: (0, import_pg_core.varchar)("emitted_by_session_id", { length: 36 }).references(
1653
+ () => sessions.session_id,
1654
+ {
1655
+ onDelete: "set null"
1656
+ }
1657
+ ),
1658
+ emitted_by_task_id: (0, import_pg_core.varchar)("emitted_by_task_id", { length: 36 }).references(
1659
+ () => tasks.task_id,
1660
+ {
1661
+ onDelete: "set null"
1662
+ }
1663
+ ),
1664
+ emitted_by_schedule_id: (0, import_pg_core.varchar)("emitted_by_schedule_id", { length: 36 }).references(
1665
+ () => schedules.schedule_id,
1666
+ {
1667
+ onDelete: "set null"
1668
+ }
1669
+ ),
1670
+ message_text: (0, import_pg_core.text)("message_text").notNull(),
1671
+ message_preview: (0, import_pg_core.text)("message_preview").notNull(),
1672
+ metadata: t.json("metadata"),
1673
+ consumed_by_session_id: (0, import_pg_core.varchar)("consumed_by_session_id", { length: 36 }).references(
1674
+ () => sessions.session_id,
1675
+ {
1676
+ onDelete: "set null"
1677
+ }
1678
+ ),
1679
+ consumed_at: t.timestamp("consumed_at")
1680
+ },
1681
+ (table) => ({
1682
+ tenantIdx: (0, import_pg_core.index)("gateway_outbound_messages_tenant_id_idx").on(table.tenant_id),
1683
+ uniqueChannelThread: (0, import_pg_core.uniqueIndex)("uniq_gateway_outbound_tenant_channel_thread").on(
1684
+ table.tenant_id,
1685
+ table.gateway_channel_id,
1686
+ table.platform_thread_id
1687
+ ),
1688
+ emittedSessionIdx: (0, import_pg_core.index)("idx_gateway_outbound_emitted_session").on(
1689
+ table.emitted_by_session_id
1690
+ ),
1691
+ emittedScheduleIdx: (0, import_pg_core.index)("idx_gateway_outbound_emitted_schedule").on(
1692
+ table.emitted_by_schedule_id
1693
+ ),
1694
+ targetBranchCreatedIdx: (0, import_pg_core.index)("idx_gateway_outbound_branch_created").on(
1695
+ table.target_branch_id,
1696
+ table.created_at
1697
+ ),
1698
+ consumedIdx: (0, import_pg_core.index)("idx_gateway_outbound_consumed").on(table.consumed_at)
1699
+ })
1700
+ );
1472
1701
  sessionEnvSelections = (0, import_pg_core.pgTable)(
1473
1702
  "session_env_selections",
1474
1703
  {
1704
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1475
1705
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
1476
1706
  env_var_name: (0, import_pg_core.text)("env_var_name").notNull(),
1477
1707
  created_at: t.timestamp("created_at").notNull()
1478
1708
  },
1479
1709
  (table) => ({
1710
+ tenantIdx: (0, import_pg_core.index)("session_env_selections_tenant_id_idx").on(table.tenant_id),
1480
1711
  pk: (0, import_pg_core.primaryKey)({ columns: [table.session_id, table.env_var_name] }),
1481
1712
  sessionIdx: (0, import_pg_core.index)("session_env_selections_session_idx").on(table.session_id)
1482
1713
  })
@@ -1484,6 +1715,7 @@ var init_schema_postgres = __esm({
1484
1715
  kbNamespaces = (0, import_pg_core.pgTable)(
1485
1716
  "kb_namespaces",
1486
1717
  {
1718
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1487
1719
  namespace_id: (0, import_pg_core.varchar)("namespace_id", { length: 36 }).primaryKey(),
1488
1720
  slug: (0, import_pg_core.text)("slug").notNull(),
1489
1721
  display_name: (0, import_pg_core.text)("display_name").notNull(),
@@ -1510,7 +1742,8 @@ var init_schema_postgres = __esm({
1510
1742
  archived_at: t.timestamp("archived_at")
1511
1743
  },
1512
1744
  (table) => ({
1513
- slugIdx: (0, import_pg_core.uniqueIndex)("kb_namespaces_slug_idx").on(table.slug).where(import_drizzle_orm2.sql`${table.archived} = false`),
1745
+ tenantIdx: (0, import_pg_core.index)("kb_namespaces_tenant_id_idx").on(table.tenant_id),
1746
+ slugIdx: (0, import_pg_core.uniqueIndex)("kb_namespaces_tenant_slug_unique").on(table.tenant_id, table.slug).where(import_drizzle_orm2.sql`${table.archived} = false`),
1514
1747
  kindIdx: (0, import_pg_core.index)("kb_namespaces_kind_idx").on(table.kind),
1515
1748
  ownerIdx: (0, import_pg_core.index)("kb_namespaces_owner_idx").on(table.owner_user_id),
1516
1749
  repoIdx: (0, import_pg_core.index)("kb_namespaces_repo_idx").on(table.repo_id),
@@ -1521,6 +1754,7 @@ var init_schema_postgres = __esm({
1521
1754
  kbNamespaceAcl = (0, import_pg_core.pgTable)(
1522
1755
  "kb_namespace_acl",
1523
1756
  {
1757
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1524
1758
  namespace_acl_id: (0, import_pg_core.varchar)("namespace_acl_id", { length: 36 }).primaryKey(),
1525
1759
  namespace_id: (0, import_pg_core.varchar)("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
1526
1760
  subject_type: (0, import_pg_core.text)("subject_type", { enum: ["user", "group"] }).notNull(),
@@ -1533,9 +1767,11 @@ var init_schema_postgres = __esm({
1533
1767
  updated_at: t.timestamp("updated_at")
1534
1768
  },
1535
1769
  (table) => ({
1770
+ tenantIdx: (0, import_pg_core.index)("kb_namespace_acl_tenant_id_idx").on(table.tenant_id),
1536
1771
  namespaceIdx: (0, import_pg_core.index)("kb_namespace_acl_namespace_idx").on(table.namespace_id),
1537
1772
  subjectIdx: (0, import_pg_core.index)("kb_namespace_acl_subject_idx").on(table.subject_type, table.subject_id),
1538
- namespaceSubjectIdx: (0, import_pg_core.uniqueIndex)("kb_namespace_acl_namespace_subject_idx").on(
1773
+ namespaceSubjectIdx: (0, import_pg_core.uniqueIndex)("kb_namespace_acl_tenant_namespace_subject_unique").on(
1774
+ table.tenant_id,
1539
1775
  table.namespace_id,
1540
1776
  table.subject_type,
1541
1777
  table.subject_id
@@ -1545,6 +1781,7 @@ var init_schema_postgres = __esm({
1545
1781
  kbDocuments = (0, import_pg_core.pgTable)(
1546
1782
  "kb_documents",
1547
1783
  {
1784
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1548
1785
  document_id: (0, import_pg_core.varchar)("document_id", { length: 36 }).primaryKey(),
1549
1786
  namespace_id: (0, import_pg_core.varchar)("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
1550
1787
  path: (0, import_pg_core.text)("path").notNull(),
@@ -1572,8 +1809,9 @@ var init_schema_postgres = __esm({
1572
1809
  archived_at: t.timestamp("archived_at")
1573
1810
  },
1574
1811
  (table) => ({
1575
- namespacePathIdx: (0, import_pg_core.uniqueIndex)("kb_documents_namespace_path_idx").on(table.namespace_id, table.path).where(import_drizzle_orm2.sql`${table.archived} = false`),
1576
- uriIdx: (0, import_pg_core.uniqueIndex)("kb_documents_uri_idx").on(table.uri).where(import_drizzle_orm2.sql`${table.archived} = false`),
1812
+ tenantIdx: (0, import_pg_core.index)("kb_documents_tenant_id_idx").on(table.tenant_id),
1813
+ namespacePathIdx: (0, import_pg_core.uniqueIndex)("kb_documents_tenant_namespace_path_unique").on(table.tenant_id, table.namespace_id, table.path).where(import_drizzle_orm2.sql`${table.archived} = false`),
1814
+ uriIdx: (0, import_pg_core.uniqueIndex)("kb_documents_tenant_uri_unique").on(table.tenant_id, table.uri).where(import_drizzle_orm2.sql`${table.archived} = false`),
1577
1815
  namespaceIdx: (0, import_pg_core.index)("kb_documents_namespace_idx").on(table.namespace_id),
1578
1816
  kindIdx: (0, import_pg_core.index)("kb_documents_kind_idx").on(table.kind),
1579
1817
  visibilityIdx: (0, import_pg_core.index)("kb_documents_visibility_idx").on(table.visibility),
@@ -1586,6 +1824,7 @@ var init_schema_postgres = __esm({
1586
1824
  kbDocumentVersions = (0, import_pg_core.pgTable)(
1587
1825
  "kb_document_versions",
1588
1826
  {
1827
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1589
1828
  version_id: (0, import_pg_core.varchar)("version_id", { length: 36 }).primaryKey(),
1590
1829
  document_id: (0, import_pg_core.varchar)("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
1591
1830
  version_number: (0, import_pg_core.integer)("version_number").notNull(),
@@ -1605,7 +1844,9 @@ var init_schema_postgres = __esm({
1605
1844
  created_at: t.timestamp("created_at").notNull()
1606
1845
  },
1607
1846
  (table) => ({
1608
- documentVersionIdx: (0, import_pg_core.uniqueIndex)("kb_document_versions_document_version_idx").on(
1847
+ tenantIdx: (0, import_pg_core.index)("kb_document_versions_tenant_id_idx").on(table.tenant_id),
1848
+ documentVersionIdx: (0, import_pg_core.uniqueIndex)("kb_document_versions_tenant_document_version_unique").on(
1849
+ table.tenant_id,
1609
1850
  table.document_id,
1610
1851
  table.version_number
1611
1852
  ),
@@ -1617,6 +1858,7 @@ var init_schema_postgres = __esm({
1617
1858
  kbDocumentUnits = (0, import_pg_core.pgTable)(
1618
1859
  "kb_document_units",
1619
1860
  {
1861
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1620
1862
  unit_id: (0, import_pg_core.varchar)("unit_id", { length: 36 }).primaryKey(),
1621
1863
  document_id: (0, import_pg_core.varchar)("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
1622
1864
  version_id: (0, import_pg_core.varchar)("version_id", { length: 36 }).notNull().references(() => kbDocumentVersions.version_id, { onDelete: "cascade" }),
@@ -1641,6 +1883,7 @@ var init_schema_postgres = __esm({
1641
1883
  updated_at: t.timestamp("updated_at")
1642
1884
  },
1643
1885
  (table) => ({
1886
+ tenantIdx: (0, import_pg_core.index)("kb_document_units_tenant_id_idx").on(table.tenant_id),
1644
1887
  documentIdx: (0, import_pg_core.index)("kb_document_units_document_idx").on(table.document_id),
1645
1888
  versionIdx: (0, import_pg_core.index)("kb_document_units_version_idx").on(table.version_id),
1646
1889
  versionOrdinalIdx: (0, import_pg_core.index)("kb_document_units_version_ordinal_idx").on(
@@ -1654,6 +1897,7 @@ var init_schema_postgres = __esm({
1654
1897
  kbEmbeddingSpaces = (0, import_pg_core.pgTable)(
1655
1898
  "kb_embedding_spaces",
1656
1899
  {
1900
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1657
1901
  embedding_space_id: (0, import_pg_core.varchar)("embedding_space_id", { length: 36 }).primaryKey(),
1658
1902
  provider: (0, import_pg_core.text)("provider").notNull(),
1659
1903
  model: (0, import_pg_core.text)("model").notNull(),
@@ -1666,7 +1910,9 @@ var init_schema_postgres = __esm({
1666
1910
  updated_at: t.timestamp("updated_at")
1667
1911
  },
1668
1912
  (table) => ({
1669
- providerModelIdx: (0, import_pg_core.uniqueIndex)("kb_embedding_spaces_provider_model_idx").on(
1913
+ tenantIdx: (0, import_pg_core.index)("kb_embedding_spaces_tenant_id_idx").on(table.tenant_id),
1914
+ providerModelIdx: (0, import_pg_core.uniqueIndex)("kb_embedding_spaces_tenant_provider_model_unique").on(
1915
+ table.tenant_id,
1670
1916
  table.provider,
1671
1917
  table.model,
1672
1918
  table.dimensions,
@@ -1679,6 +1925,7 @@ var init_schema_postgres = __esm({
1679
1925
  kbGraphNodes = (0, import_pg_core.pgTable)(
1680
1926
  "kb_graph_nodes",
1681
1927
  {
1928
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1682
1929
  node_id: (0, import_pg_core.varchar)("node_id", { length: 36 }).primaryKey(),
1683
1930
  node_type: (0, import_pg_core.text)("node_type", {
1684
1931
  enum: [
@@ -1744,7 +1991,8 @@ var init_schema_postgres = __esm({
1744
1991
  archived_at: t.timestamp("archived_at")
1745
1992
  },
1746
1993
  (table) => ({
1747
- uriIdx: (0, import_pg_core.uniqueIndex)("kb_graph_nodes_uri_idx").on(table.uri).where(import_drizzle_orm2.sql`${table.archived} = false`),
1994
+ tenantIdx: (0, import_pg_core.index)("kb_graph_nodes_tenant_id_idx").on(table.tenant_id),
1995
+ uriIdx: (0, import_pg_core.uniqueIndex)("kb_graph_nodes_tenant_uri_unique").on(table.tenant_id, table.uri).where(import_drizzle_orm2.sql`${table.archived} = false`),
1748
1996
  typeIdx: (0, import_pg_core.index)("kb_graph_nodes_type_idx").on(table.node_type),
1749
1997
  namespaceIdx: (0, import_pg_core.index)("kb_graph_nodes_namespace_idx").on(table.namespace_id),
1750
1998
  documentIdx: (0, import_pg_core.index)("kb_graph_nodes_document_idx").on(table.document_id),
@@ -1764,6 +2012,7 @@ var init_schema_postgres = __esm({
1764
2012
  kbGraphEdges = (0, import_pg_core.pgTable)(
1765
2013
  "kb_graph_edges",
1766
2014
  {
2015
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1767
2016
  edge_id: (0, import_pg_core.varchar)("edge_id", { length: 36 }).primaryKey(),
1768
2017
  source_node_id: (0, import_pg_core.varchar)("source_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
1769
2018
  target_node_id: (0, import_pg_core.varchar)("target_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
@@ -1792,6 +2041,7 @@ var init_schema_postgres = __esm({
1792
2041
  archived_at: t.timestamp("archived_at")
1793
2042
  },
1794
2043
  (table) => ({
2044
+ tenantIdx: (0, import_pg_core.index)("kb_graph_edges_tenant_id_idx").on(table.tenant_id),
1795
2045
  sourceIdx: (0, import_pg_core.index)("kb_graph_edges_source_idx").on(table.source_node_id),
1796
2046
  targetIdx: (0, import_pg_core.index)("kb_graph_edges_target_idx").on(table.target_node_id),
1797
2047
  typeIdx: (0, import_pg_core.index)("kb_graph_edges_type_idx").on(table.edge_type),
@@ -1803,7 +2053,7 @@ var init_schema_postgres = __esm({
1803
2053
  table.target_node_id,
1804
2054
  table.edge_type
1805
2055
  ),
1806
- sourceTargetTypeIdx: (0, import_pg_core.uniqueIndex)("kb_graph_edges_source_target_type_idx").on(table.source_node_id, table.target_node_id, table.edge_type).where(import_drizzle_orm2.sql`${table.archived} = false`),
2056
+ sourceTargetTypeIdx: (0, import_pg_core.uniqueIndex)("kb_graph_edges_tenant_source_target_type_unique").on(table.tenant_id, table.source_node_id, table.target_node_id, table.edge_type).where(import_drizzle_orm2.sql`${table.archived} = false`),
1807
2057
  archivedIdx: (0, import_pg_core.index)("kb_graph_edges_archived_idx").on(table.archived)
1808
2058
  })
1809
2059
  );
@@ -1867,6 +2117,7 @@ __export(schema_sqlite_exports, {
1867
2117
  cardTypes: () => cardTypes2,
1868
2118
  cards: () => cards2,
1869
2119
  gatewayChannels: () => gatewayChannels2,
2120
+ gatewayOutboundMessages: () => gatewayOutboundMessages2,
1870
2121
  groupMemberships: () => groupMemberships2,
1871
2122
  groups: () => groups2,
1872
2123
  kbDocumentUnits: () => kbDocumentUnits2,
@@ -1895,7 +2146,7 @@ __export(schema_sqlite_exports, {
1895
2146
  userMcpOauthTokens: () => userMcpOauthTokens2,
1896
2147
  users: () => users2
1897
2148
  });
1898
- var import_drizzle_orm3, import_sqlite_core, t2, sessions2, sessionRelationships2, tasks2, serializedSessions2, messages2, boards2, repos2, branches2, branchOwners2, boardOwners2, schedules2, users2, groups2, groupMemberships2, branchGroupGrants2, boardGroupGrants2, appVariables2, userApiKeys2, mcpServers2, cardTypes2, cards2, artifacts2, artifactTrustGrants2, boardObjects2, sessionMcpServers2, userMcpOauthTokens2, boardComments2, gatewayChannels2, threadSessionMap2, sessionEnvSelections2, kbNamespaces2, kbNamespaceAcl2, kbDocuments2, kbDocumentVersions2, kbDocumentUnits2, kbEmbeddingSpaces2, kbGraphNodes2, kbGraphEdges2, sessionsRelations2, sessionRelationshipsRelations2, branchesRelations2, schedulesRelations2;
2149
+ var import_drizzle_orm3, import_sqlite_core, t2, sessions2, sessionRelationships2, tasks2, serializedSessions2, messages2, boards2, repos2, branches2, branchOwners2, boardOwners2, schedules2, users2, groups2, groupMemberships2, branchGroupGrants2, boardGroupGrants2, appVariables2, userApiKeys2, mcpServers2, cardTypes2, cards2, artifacts2, artifactTrustGrants2, boardObjects2, sessionMcpServers2, userMcpOauthTokens2, boardComments2, gatewayChannels2, threadSessionMap2, gatewayOutboundMessages2, sessionEnvSelections2, kbNamespaces2, kbNamespaceAcl2, kbDocuments2, kbDocumentVersions2, kbDocumentUnits2, kbEmbeddingSpaces2, kbGraphNodes2, kbGraphEdges2, sessionsRelations2, sessionRelationshipsRelations2, branchesRelations2, schedulesRelations2;
1899
2150
  var init_schema_sqlite = __esm({
1900
2151
  "src/db/schema.sqlite.ts"() {
1901
2152
  "use strict";
@@ -1971,6 +2222,7 @@ var init_schema_sqlite = __esm({
1971
2222
  },
1972
2223
  (table) => ({
1973
2224
  statusIdx: (0, import_sqlite_core.index)("sessions_status_idx").on(table.status),
2225
+ statusReadyIdx: (0, import_sqlite_core.index)("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
1974
2226
  agenticToolIdx: (0, import_sqlite_core.index)("sessions_agentic_tool_idx").on(table.agentic_tool),
1975
2227
  boardIdx: (0, import_sqlite_core.index)("sessions_board_idx").on(table.board_id),
1976
2228
  branchIdx: (0, import_sqlite_core.index)("sessions_branch_idx").on(table.branch_id),
@@ -2010,6 +2262,9 @@ var init_schema_sqlite = __esm({
2010
2262
  sourceIdx: (0, import_sqlite_core.index)("session_relationships_source_idx").on(table.source_session_id),
2011
2263
  targetIdx: (0, import_sqlite_core.index)("session_relationships_target_idx").on(table.target_session_id),
2012
2264
  callbackIdx: (0, import_sqlite_core.index)("session_relationships_callback_idx").on(table.callback_session_id),
2265
+ // Note: no tenant_source/tenant_target composite indexes here — SQLite schema
2266
+ // has no tenant column on this table (RLS is Postgres-only). The standalone
2267
+ // source/target indexes above are sufficient for SQLite.
2013
2268
  sourceTargetTypeUnique: (0, import_sqlite_core.uniqueIndex)("session_relationships_source_target_type_unique").on(
2014
2269
  table.source_session_id,
2015
2270
  table.target_session_id,
@@ -2129,7 +2384,12 @@ var init_schema_sqlite = __esm({
2129
2384
  // Indexes for efficient lookups
2130
2385
  sessionIdx: (0, import_sqlite_core.index)("messages_session_id_idx").on(table.session_id),
2131
2386
  taskIdx: (0, import_sqlite_core.index)("messages_task_id_idx").on(table.task_id),
2132
- sessionIndexIdx: (0, import_sqlite_core.index)("messages_session_index_idx").on(table.session_id, table.index)
2387
+ sessionIndexIdx: (0, import_sqlite_core.index)("messages_session_index_idx").on(table.session_id, table.index),
2388
+ timestampIdx: (0, import_sqlite_core.index)("messages_timestamp_idx").on(table.timestamp),
2389
+ sessionTimestampIdx: (0, import_sqlite_core.index)("messages_session_timestamp_idx").on(
2390
+ table.session_id,
2391
+ table.timestamp
2392
+ )
2133
2393
  })
2134
2394
  );
2135
2395
  boards2 = (0, import_sqlite_core.sqliteTable)(
@@ -2355,6 +2615,9 @@ var init_schema_sqlite = __esm({
2355
2615
  onboarding_completed: t2.bool("onboarding_completed").notNull().default(false),
2356
2616
  // Force password change flag (admin-settable, auto-cleared on password change)
2357
2617
  must_change_password: t2.bool("must_change_password").notNull().default(false),
2618
+ // Auth invalidation marker. Password changes set this timestamp so any
2619
+ // previously issued browser access or refresh token is rejected.
2620
+ tokens_valid_after: t2.timestamp("tokens_valid_after"),
2358
2621
  // JSON blob for profile/preferences
2359
2622
  data: t2.json("data").$type().notNull()
2360
2623
  },
@@ -2798,6 +3061,66 @@ var init_schema_sqlite = __esm({
2798
3061
  channelStatusIdx: (0, import_sqlite_core.index)("idx_thread_map_channel_status").on(table.channel_id, table.status)
2799
3062
  })
2800
3063
  );
3064
+ gatewayOutboundMessages2 = (0, import_sqlite_core.sqliteTable)(
3065
+ "gateway_outbound_messages",
3066
+ {
3067
+ id: (0, import_sqlite_core.text)("id", { length: 36 }).primaryKey(),
3068
+ created_at: t2.timestamp("created_at").notNull(),
3069
+ updated_at: t2.timestamp("updated_at").notNull(),
3070
+ gateway_channel_id: (0, import_sqlite_core.text)("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
3071
+ channel_type: (0, import_sqlite_core.text)("channel_type", {
3072
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
3073
+ }).notNull(),
3074
+ platform_channel_id: (0, import_sqlite_core.text)("platform_channel_id").notNull(),
3075
+ platform_message_id: (0, import_sqlite_core.text)("platform_message_id").notNull(),
3076
+ platform_thread_id: (0, import_sqlite_core.text)("platform_thread_id").notNull(),
3077
+ platform_permalink: (0, import_sqlite_core.text)("platform_permalink"),
3078
+ target_branch_id: (0, import_sqlite_core.text)("target_branch_id", { length: 36 }).notNull().references(() => branches2.branch_id),
3079
+ emitted_by_user_id: (0, import_sqlite_core.text)("emitted_by_user_id", { length: 36 }).notNull().references(() => users2.user_id),
3080
+ emitted_by_session_id: (0, import_sqlite_core.text)("emitted_by_session_id", { length: 36 }).references(
3081
+ () => sessions2.session_id,
3082
+ {
3083
+ onDelete: "set null"
3084
+ }
3085
+ ),
3086
+ emitted_by_task_id: (0, import_sqlite_core.text)("emitted_by_task_id", { length: 36 }).references(() => tasks2.task_id, {
3087
+ onDelete: "set null"
3088
+ }),
3089
+ emitted_by_schedule_id: (0, import_sqlite_core.text)("emitted_by_schedule_id", { length: 36 }).references(
3090
+ () => schedules2.schedule_id,
3091
+ {
3092
+ onDelete: "set null"
3093
+ }
3094
+ ),
3095
+ message_text: (0, import_sqlite_core.text)("message_text").notNull(),
3096
+ message_preview: (0, import_sqlite_core.text)("message_preview").notNull(),
3097
+ metadata: t2.json("metadata"),
3098
+ consumed_by_session_id: (0, import_sqlite_core.text)("consumed_by_session_id", { length: 36 }).references(
3099
+ () => sessions2.session_id,
3100
+ {
3101
+ onDelete: "set null"
3102
+ }
3103
+ ),
3104
+ consumed_at: t2.timestamp("consumed_at")
3105
+ },
3106
+ (table) => ({
3107
+ uniqueChannelThread: (0, import_sqlite_core.uniqueIndex)("uniq_gateway_outbound_channel_thread").on(
3108
+ table.gateway_channel_id,
3109
+ table.platform_thread_id
3110
+ ),
3111
+ emittedSessionIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_emitted_session").on(
3112
+ table.emitted_by_session_id
3113
+ ),
3114
+ emittedScheduleIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_emitted_schedule").on(
3115
+ table.emitted_by_schedule_id
3116
+ ),
3117
+ targetBranchCreatedIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_branch_created").on(
3118
+ table.target_branch_id,
3119
+ table.created_at
3120
+ ),
3121
+ consumedIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_consumed").on(table.consumed_at)
3122
+ })
3123
+ );
2801
3124
  sessionEnvSelections2 = (0, import_sqlite_core.sqliteTable)(
2802
3125
  "session_env_selections",
2803
3126
  {
@@ -3296,6 +3619,71 @@ var init_executor_heartbeat = __esm({
3296
3619
  }
3297
3620
  });
3298
3621
 
3622
+ // src/config/multitenancy.ts
3623
+ function detectPostgresUrl(url) {
3624
+ if (!url) return false;
3625
+ const lower = url.toLowerCase();
3626
+ return lower.startsWith("postgresql://") || lower.startsWith("postgres://") || lower.startsWith("pg://");
3627
+ }
3628
+ function resolveMultiTenancyDatabaseDialect(config = {}) {
3629
+ if (process.env.AGOR_DB_DIALECT === "postgresql" || process.env.AGOR_DB_DIALECT === "sqlite") {
3630
+ return process.env.AGOR_DB_DIALECT;
3631
+ }
3632
+ if (detectPostgresUrl(process.env.DATABASE_URL)) return "postgresql";
3633
+ if (config.database?.dialect === "postgresql" || config.database?.dialect === "sqlite") {
3634
+ return config.database.dialect;
3635
+ }
3636
+ if (detectPostgresUrl(config.database?.postgresql?.url) || config.database?.postgresql?.host) {
3637
+ return "postgresql";
3638
+ }
3639
+ return "sqlite";
3640
+ }
3641
+ function resolveMultiTenancyConfig(config) {
3642
+ const raw = config.multi_tenancy ?? {};
3643
+ const mode = raw.mode ?? "static";
3644
+ return {
3645
+ mode,
3646
+ static_tenant_id: raw.static_tenant_id?.trim() || DEFAULT_STATIC_TENANT_ID,
3647
+ ...raw.auth_claim ? { auth_claim: raw.auth_claim } : {},
3648
+ ...raw.trusted_header ? { trusted_header: raw.trusted_header } : {}
3649
+ };
3650
+ }
3651
+ function assertValidMultiTenancyConfig(config) {
3652
+ const resolved = resolveMultiTenancyConfig(config);
3653
+ if (resolved.mode !== "static" && resolved.mode !== "required_from_auth") {
3654
+ throw new Error("Config error: multi_tenancy.mode must be one of: static, required_from_auth");
3655
+ }
3656
+ if (!resolved.static_tenant_id) {
3657
+ throw new Error("Config error: multi_tenancy.static_tenant_id must not be empty");
3658
+ }
3659
+ if (resolved.auth_claim && RESERVED_AUTH_CLAIMS.has(resolved.auth_claim)) {
3660
+ throw new Error(
3661
+ `Config error: multi_tenancy.auth_claim cannot be reserved JWT claim '${resolved.auth_claim}'`
3662
+ );
3663
+ }
3664
+ if (resolved.mode === "required_from_auth") {
3665
+ if (resolveMultiTenancyDatabaseDialect(config) !== "postgresql") {
3666
+ throw new Error(
3667
+ "Config error: multi_tenancy.required_from_auth requires database.dialect: postgresql"
3668
+ );
3669
+ }
3670
+ if (!resolved.auth_claim && !resolved.trusted_header) {
3671
+ throw new Error(
3672
+ "Config error: multi_tenancy.required_from_auth requires multi_tenancy.auth_claim or multi_tenancy.trusted_header"
3673
+ );
3674
+ }
3675
+ }
3676
+ }
3677
+ var DEFAULT_STATIC_TENANT_ID, RESERVED_AUTH_CLAIMS;
3678
+ var init_multitenancy = __esm({
3679
+ "src/config/multitenancy.ts"() {
3680
+ "use strict";
3681
+ init_cjs_shims();
3682
+ DEFAULT_STATIC_TENANT_ID = "default";
3683
+ RESERVED_AUTH_CLAIMS = /* @__PURE__ */ new Set(["aud", "exp", "iat", "iss", "jti", "nbf", "sub", "type"]);
3684
+ }
3685
+ });
3686
+
3299
3687
  // src/config/types.ts
3300
3688
  var init_types2 = __esm({
3301
3689
  "src/config/types.ts"() {
@@ -3333,7 +3721,10 @@ function writeCachedConfig(configPath, config, key) {
3333
3721
  cachedEntry = { path: configPath, config: structuredClone(config), key };
3334
3722
  }
3335
3723
  function parseAndValidateConfig(content) {
3336
- const parsed = import_js_yaml.default.load(content);
3724
+ if (content.trim() === "") {
3725
+ return {};
3726
+ }
3727
+ const parsed = yaml.load(content);
3337
3728
  const finalConfig = parsed || {};
3338
3729
  validateConfig(finalConfig);
3339
3730
  return finalConfig;
@@ -3362,6 +3753,7 @@ To update: agor config set execution.unix_user_mode insulated`
3362
3753
  `Config error: execution.managed_envs_execution_mode must be one of: hybrid, webhook-only`
3363
3754
  );
3364
3755
  }
3756
+ assertValidMultiTenancyConfig(config);
3365
3757
  validateOptionalHttpUrl(
3366
3758
  config.external_launch,
3367
3759
  "login_redirect_url",
@@ -3422,7 +3814,12 @@ function getDefaultConfig() {
3422
3814
  // Default: sync passwords to Unix
3423
3815
  executor_heartbeat: resolveExecutorHeartbeatConfig()
3424
3816
  },
3425
- analytics: getDefaultAnalyticsConfig()
3817
+ analytics: getDefaultAnalyticsConfig(),
3818
+ telemetry: {},
3819
+ multi_tenancy: {
3820
+ mode: "static",
3821
+ static_tenant_id: "default"
3822
+ }
3426
3823
  };
3427
3824
  }
3428
3825
  function loadConfigSync() {
@@ -3466,7 +3863,7 @@ function loadConfigSync() {
3466
3863
  }
3467
3864
  return finalConfig;
3468
3865
  }
3469
- var import_node_fs, import_promises, import_node_os, import_node_path, import_js_yaml, NO_FILE, NO_FILE_KEY, cachedEntry;
3866
+ var import_node_fs, import_promises, import_node_os, import_node_path, yaml, NO_FILE, NO_FILE_KEY, cachedEntry;
3470
3867
  var init_config_manager = __esm({
3471
3868
  "src/config/config-manager.ts"() {
3472
3869
  "use strict";
@@ -3475,10 +3872,11 @@ var init_config_manager = __esm({
3475
3872
  import_promises = __toESM(require("fs/promises"), 1);
3476
3873
  import_node_os = __toESM(require("os"), 1);
3477
3874
  import_node_path = __toESM(require("path"), 1);
3478
- import_js_yaml = __toESM(require("js-yaml"), 1);
3875
+ yaml = __toESM(require("js-yaml"), 1);
3479
3876
  init_analytics_defaults();
3480
3877
  init_constants();
3481
3878
  init_executor_heartbeat();
3879
+ init_multitenancy();
3482
3880
  init_types2();
3483
3881
  NO_FILE = -1;
3484
3882
  NO_FILE_KEY = { mtimeMs: NO_FILE, size: 0 };
@@ -3532,7 +3930,7 @@ var init_schema_factory = __esm({
3532
3930
  });
3533
3931
 
3534
3932
  // src/db/schema.ts
3535
- 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;
3933
+ 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;
3536
3934
  var init_schema = __esm({
3537
3935
  "src/db/schema.ts"() {
3538
3936
  "use strict";
@@ -3570,6 +3968,7 @@ var init_schema = __esm({
3570
3968
  boardComments3 = schema.boardComments;
3571
3969
  gatewayChannels3 = schema.gatewayChannels;
3572
3970
  threadSessionMap3 = schema.threadSessionMap;
3971
+ gatewayOutboundMessages3 = schema.gatewayOutboundMessages;
3573
3972
  userApiKeys3 = schema.userApiKeys;
3574
3973
  serializedSessions3 = schema.serializedSessions;
3575
3974
  kbNamespaces3 = schema.kbNamespaces;
@@ -3620,6 +4019,7 @@ init_schema();
3620
4019
  init_cjs_shims();
3621
4020
  init_ids();
3622
4021
  init_id();
4022
+ init_tenant_context();
3623
4023
  var RepositoryError = class extends Error {
3624
4024
  constructor(message, cause) {
3625
4025
  super(message);
@@ -3671,7 +4071,7 @@ init_schema();
3671
4071
 
3672
4072
  // src/db/repositories/artifacts.ts
3673
4073
  init_cjs_shims();
3674
- var import_drizzle_orm6 = require("drizzle-orm");
4074
+ var import_drizzle_orm7 = require("drizzle-orm");
3675
4075
  init_config_manager();
3676
4076
  init_ids();
3677
4077
 
@@ -3683,9 +4083,19 @@ init_id();
3683
4083
  init_database_wrapper();
3684
4084
  init_schema();
3685
4085
 
4086
+ // src/db/repositories/branch-access.ts
4087
+ init_cjs_shims();
4088
+ init_types();
4089
+ var import_drizzle_orm6 = require("drizzle-orm");
4090
+ init_database_wrapper();
4091
+ init_schema();
4092
+ var VISIBLE_BRANCH_PERMISSION_LEVELS = BRANCH_PERMISSION_LEVELS.filter(
4093
+ (level) => level !== "none"
4094
+ );
4095
+
3686
4096
  // src/db/repositories/board-comments.ts
3687
4097
  init_cjs_shims();
3688
- var import_drizzle_orm7 = require("drizzle-orm");
4098
+ var import_drizzle_orm8 = require("drizzle-orm");
3689
4099
  init_ids();
3690
4100
  init_database_wrapper();
3691
4101
  init_schema();
@@ -3702,16 +4112,6 @@ init_cjs_shims();
3702
4112
  init_database_wrapper();
3703
4113
  init_schema();
3704
4114
 
3705
- // src/db/repositories/branch-access.ts
3706
- init_cjs_shims();
3707
- init_types();
3708
- var import_drizzle_orm8 = require("drizzle-orm");
3709
- init_database_wrapper();
3710
- init_schema();
3711
- var VISIBLE_BRANCH_PERMISSION_LEVELS = BRANCH_PERMISSION_LEVELS.filter(
3712
- (level) => level !== "none"
3713
- );
3714
-
3715
4115
  // src/db/repositories/boards.ts
3716
4116
  init_cjs_shims();
3717
4117
  init_types();
@@ -3723,6 +4123,30 @@ init_ids();
3723
4123
  // src/lib/slugs.ts
3724
4124
  init_cjs_shims();
3725
4125
 
4126
+ // src/utils/emoji-shortcodes.ts
4127
+ init_cjs_shims();
4128
+ var import_node_module = require("module");
4129
+ var requireJson = (0, import_node_module.createRequire)(importMetaUrl);
4130
+ var emojiData = requireJson("emojibase-data/en/compact.json");
4131
+ var shortcodes = requireJson(
4132
+ "emojibase-data/en/shortcodes/emojibase.json"
4133
+ );
4134
+ var emojiByHexcode = /* @__PURE__ */ new Map();
4135
+ for (const emoji of emojiData) {
4136
+ if (emoji.unicode) {
4137
+ emojiByHexcode.set(emoji.hexcode, emoji.unicode);
4138
+ }
4139
+ }
4140
+ var emojiByShortcode = /* @__PURE__ */ new Map();
4141
+ for (const [hexcode, codes] of Object.entries(shortcodes)) {
4142
+ const emoji = emojiByHexcode.get(hexcode);
4143
+ if (!emoji) continue;
4144
+ const codeList = Array.isArray(codes) ? codes : [codes];
4145
+ for (const code of codeList) {
4146
+ emojiByShortcode.set(code.toLowerCase(), emoji);
4147
+ }
4148
+ }
4149
+
3726
4150
  // src/db/repositories/boards.ts
3727
4151
  init_database_wrapper();
3728
4152
  init_schema();
@@ -3773,11 +4197,19 @@ init_ids();
3773
4197
  init_database_wrapper();
3774
4198
  init_schema();
3775
4199
 
4200
+ // src/db/repositories/gateway-outbound-messages.ts
4201
+ init_cjs_shims();
4202
+ init_types();
4203
+ var import_drizzle_orm16 = require("drizzle-orm");
4204
+ init_ids();
4205
+ init_database_wrapper();
4206
+ init_schema();
4207
+
3776
4208
  // src/db/repositories/knowledge.ts
3777
4209
  init_cjs_shims();
3778
4210
  var import_node_crypto3 = require("crypto");
3779
4211
  init_types();
3780
- var import_drizzle_orm16 = require("drizzle-orm");
4212
+ var import_drizzle_orm17 = require("drizzle-orm");
3781
4213
  init_config_manager();
3782
4214
  init_ids();
3783
4215
  init_database_wrapper();
@@ -3785,12 +4217,49 @@ init_schema();
3785
4217
 
3786
4218
  // src/db/repositories/mcp-servers.ts
3787
4219
  init_cjs_shims();
3788
- var import_drizzle_orm17 = require("drizzle-orm");
4220
+ var import_drizzle_orm20 = require("drizzle-orm");
3789
4221
  init_ids();
3790
4222
 
3791
4223
  // src/tools/mcp/auth-secrets.ts
3792
4224
  init_cjs_shims();
3793
4225
 
4226
+ // src/mcp/template-resolver.ts
4227
+ init_cjs_shims();
4228
+
4229
+ // src/config/env-resolver.ts
4230
+ init_cjs_shims();
4231
+ var import_drizzle_orm19 = require("drizzle-orm");
4232
+ init_database_wrapper();
4233
+
4234
+ // src/db/repositories/session-env-selections.ts
4235
+ init_cjs_shims();
4236
+ var import_drizzle_orm18 = require("drizzle-orm");
4237
+ init_database_wrapper();
4238
+ init_schema();
4239
+
4240
+ // src/config/env-resolver.ts
4241
+ init_schema();
4242
+
4243
+ // src/config/env-blocklist.ts
4244
+ init_cjs_shims();
4245
+ var BLOCKED_ENV_PATTERNS = Object.freeze([
4246
+ /^LD_/i,
4247
+ /^DYLD_/i,
4248
+ /^PYTHON(?!_AGOR_)/i
4249
+ ]);
4250
+
4251
+ // src/config/env-vars.ts
4252
+ init_cjs_shims();
4253
+ var V05_SCOPES = ["global", "session"];
4254
+ var V05_SCOPE_SET = new Set(V05_SCOPES);
4255
+
4256
+ // src/templates/handlebars-helpers.ts
4257
+ init_cjs_shims();
4258
+ var import_handlebars = __toESM(require("handlebars"), 1);
4259
+
4260
+ // src/mcp/template-patterns.ts
4261
+ init_cjs_shims();
4262
+
3794
4263
  // src/tools/mcp/http-headers.ts
3795
4264
  init_cjs_shims();
3796
4265
  var MCP_HEADER_REDACTED_SENTINEL = "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022";
@@ -3941,7 +4410,7 @@ var MCPServerRepository = class {
3941
4410
  */
3942
4411
  async resolveId(id) {
3943
4412
  return resolveByShortIdPrefix(id, "MCPServer", async (pattern) => {
3944
- const rows = await select(this.db).from(mcpServers3).where((0, import_drizzle_orm17.like)(mcpServers3.mcp_server_id, pattern)).limit(RESOLVE_SHORT_ID_FETCH_LIMIT).all();
4413
+ const rows = await select(this.db).from(mcpServers3).where((0, import_drizzle_orm20.like)(mcpServers3.mcp_server_id, pattern)).limit(RESOLVE_SHORT_ID_FETCH_LIMIT).all();
3945
4414
  return rows.map((r) => r.mcp_server_id);
3946
4415
  });
3947
4416
  }
@@ -3952,7 +4421,7 @@ var MCPServerRepository = class {
3952
4421
  try {
3953
4422
  const insertData = this.mcpServerToInsert(data);
3954
4423
  await insert(this.db, mcpServers3).values(insertData).run();
3955
- const row = await select(this.db).from(mcpServers3).where((0, import_drizzle_orm17.eq)(mcpServers3.mcp_server_id, insertData.mcp_server_id)).one();
4424
+ const row = await select(this.db).from(mcpServers3).where((0, import_drizzle_orm20.eq)(mcpServers3.mcp_server_id, insertData.mcp_server_id)).one();
3956
4425
  if (!row) {
3957
4426
  throw new RepositoryError("Failed to retrieve created MCP server");
3958
4427
  }
@@ -3971,7 +4440,7 @@ var MCPServerRepository = class {
3971
4440
  async findById(id) {
3972
4441
  try {
3973
4442
  const fullId = await this.resolveId(id);
3974
- const row = await select(this.db).from(mcpServers3).where((0, import_drizzle_orm17.eq)(mcpServers3.mcp_server_id, fullId)).one();
4443
+ const row = await select(this.db).from(mcpServers3).where((0, import_drizzle_orm20.eq)(mcpServers3.mcp_server_id, fullId)).one();
3975
4444
  return row ? this.rowToMCPServer(row) : null;
3976
4445
  } catch (error) {
3977
4446
  if (error instanceof EntityNotFoundError) return null;
@@ -3990,24 +4459,24 @@ var MCPServerRepository = class {
3990
4459
  let query = select(this.db).from(mcpServers3);
3991
4460
  const conditions = [];
3992
4461
  if (filters?.scope) {
3993
- conditions.push((0, import_drizzle_orm17.eq)(mcpServers3.scope, filters.scope));
4462
+ conditions.push((0, import_drizzle_orm20.eq)(mcpServers3.scope, filters.scope));
3994
4463
  }
3995
4464
  if (filters?.scopeId) {
3996
4465
  if (filters.scope === "global") {
3997
- conditions.push((0, import_drizzle_orm17.eq)(mcpServers3.owner_user_id, filters.scopeId));
4466
+ conditions.push((0, import_drizzle_orm20.eq)(mcpServers3.owner_user_id, filters.scopeId));
3998
4467
  }
3999
4468
  }
4000
4469
  if (filters?.transport) {
4001
- conditions.push((0, import_drizzle_orm17.eq)(mcpServers3.transport, filters.transport));
4470
+ conditions.push((0, import_drizzle_orm20.eq)(mcpServers3.transport, filters.transport));
4002
4471
  }
4003
4472
  if (filters?.enabled !== void 0) {
4004
- conditions.push((0, import_drizzle_orm17.eq)(mcpServers3.enabled, filters.enabled));
4473
+ conditions.push((0, import_drizzle_orm20.eq)(mcpServers3.enabled, filters.enabled));
4005
4474
  }
4006
4475
  if (filters?.source) {
4007
- conditions.push((0, import_drizzle_orm17.eq)(mcpServers3.source, filters.source));
4476
+ conditions.push((0, import_drizzle_orm20.eq)(mcpServers3.source, filters.source));
4008
4477
  }
4009
4478
  if (conditions.length > 0) {
4010
- query = query.where((0, import_drizzle_orm17.and)(...conditions));
4479
+ query = query.where((0, import_drizzle_orm20.and)(...conditions));
4011
4480
  }
4012
4481
  const rows = await query.all();
4013
4482
  return rows.map((row) => this.rowToMCPServer(row));
@@ -4054,7 +4523,7 @@ var MCPServerRepository = class {
4054
4523
  transport: insertData.transport,
4055
4524
  updated_at: /* @__PURE__ */ new Date(),
4056
4525
  data: insertData.data
4057
- }).where((0, import_drizzle_orm17.eq)(mcpServers3.mcp_server_id, fullId)).run();
4526
+ }).where((0, import_drizzle_orm20.eq)(mcpServers3.mcp_server_id, fullId)).run();
4058
4527
  const updated = await this.findById(fullId);
4059
4528
  if (!updated) {
4060
4529
  throw new RepositoryError("Failed to retrieve updated MCP server");
@@ -4075,7 +4544,7 @@ var MCPServerRepository = class {
4075
4544
  async delete(id) {
4076
4545
  try {
4077
4546
  const fullId = await this.resolveId(id);
4078
- const result = await deleteFrom(this.db, mcpServers3).where((0, import_drizzle_orm17.eq)(mcpServers3.mcp_server_id, fullId)).run();
4547
+ const result = await deleteFrom(this.db, mcpServers3).where((0, import_drizzle_orm20.eq)(mcpServers3.mcp_server_id, fullId)).run();
4079
4548
  if (result.rowsAffected === 0) {
4080
4549
  throw new EntityNotFoundError("MCPServer", id);
4081
4550
  }
@@ -4105,23 +4574,20 @@ var MCPServerRepository = class {
4105
4574
 
4106
4575
  // src/db/repositories/messages.ts
4107
4576
  init_cjs_shims();
4108
- var import_drizzle_orm18 = require("drizzle-orm");
4577
+ var import_drizzle_orm21 = require("drizzle-orm");
4109
4578
  init_database_wrapper();
4110
4579
  init_schema();
4111
4580
 
4112
4581
  // src/db/repositories/repos.ts
4113
4582
  init_cjs_shims();
4114
- var import_drizzle_orm19 = require("drizzle-orm");
4583
+ var import_drizzle_orm22 = require("drizzle-orm");
4115
4584
 
4116
4585
  // src/config/variant-resolver.ts
4117
4586
  init_cjs_shims();
4118
4587
 
4119
4588
  // src/yaml/index.ts
4120
4589
  init_cjs_shims();
4121
- var import_js_yaml2 = __toESM(require("js-yaml"), 1);
4122
- var load2 = import_js_yaml2.default.load;
4123
- var dump2 = import_js_yaml2.default.dump;
4124
- var YAMLException = import_js_yaml2.default.YAMLException;
4590
+ var yaml3 = __toESM(require("js-yaml"), 1);
4125
4591
 
4126
4592
  // src/db/repositories/repos.ts
4127
4593
  init_ids();
@@ -4130,34 +4596,28 @@ init_schema();
4130
4596
 
4131
4597
  // src/db/repositories/schedules.ts
4132
4598
  init_cjs_shims();
4133
- var import_drizzle_orm20 = require("drizzle-orm");
4599
+ var import_drizzle_orm23 = require("drizzle-orm");
4134
4600
  init_ids();
4135
4601
  init_database_wrapper();
4136
4602
  init_schema();
4137
4603
 
4138
4604
  // src/db/repositories/serialized-sessions.ts
4139
4605
  init_cjs_shims();
4140
- var import_drizzle_orm21 = require("drizzle-orm");
4606
+ var import_drizzle_orm24 = require("drizzle-orm");
4141
4607
  init_ids();
4142
4608
  init_database_wrapper();
4143
4609
  init_schema();
4144
4610
 
4145
- // src/db/repositories/session-env-selections.ts
4146
- init_cjs_shims();
4147
- var import_drizzle_orm22 = require("drizzle-orm");
4148
- init_database_wrapper();
4149
- init_schema();
4150
-
4151
4611
  // src/db/repositories/session-mcp-servers.ts
4152
4612
  init_cjs_shims();
4153
- var import_drizzle_orm24 = require("drizzle-orm");
4613
+ var import_drizzle_orm26 = require("drizzle-orm");
4154
4614
  init_database_wrapper();
4155
4615
  init_schema();
4156
4616
 
4157
4617
  // src/db/repositories/sessions.ts
4158
4618
  init_cjs_shims();
4159
4619
  init_types();
4160
- var import_drizzle_orm23 = require("drizzle-orm");
4620
+ var import_drizzle_orm25 = require("drizzle-orm");
4161
4621
  init_config_manager();
4162
4622
  init_ids();
4163
4623
  init_database_wrapper();
@@ -4165,7 +4625,7 @@ init_schema();
4165
4625
 
4166
4626
  // src/db/repositories/session-relationships.ts
4167
4627
  init_cjs_shims();
4168
- var import_drizzle_orm25 = require("drizzle-orm");
4628
+ var import_drizzle_orm27 = require("drizzle-orm");
4169
4629
  init_ids();
4170
4630
  init_database_wrapper();
4171
4631
  init_schema();
@@ -4173,7 +4633,7 @@ init_schema();
4173
4633
  // src/db/repositories/tasks.ts
4174
4634
  init_cjs_shims();
4175
4635
  init_types();
4176
- var import_drizzle_orm26 = require("drizzle-orm");
4636
+ var import_drizzle_orm28 = require("drizzle-orm");
4177
4637
  init_ids();
4178
4638
  init_database_wrapper();
4179
4639
  init_schema();
@@ -4181,7 +4641,7 @@ init_schema();
4181
4641
  // src/db/repositories/thread-session-map.ts
4182
4642
  init_cjs_shims();
4183
4643
  init_types();
4184
- var import_drizzle_orm27 = require("drizzle-orm");
4644
+ var import_drizzle_orm29 = require("drizzle-orm");
4185
4645
  init_ids();
4186
4646
  init_database_wrapper();
4187
4647
  init_schema();
@@ -4190,14 +4650,15 @@ init_schema();
4190
4650
  init_cjs_shims();
4191
4651
  var import_node_crypto4 = require("crypto");
4192
4652
  var import_bcryptjs = __toESM(require("bcryptjs"), 1);
4193
- var import_drizzle_orm28 = require("drizzle-orm");
4653
+ var import_drizzle_orm30 = require("drizzle-orm");
4194
4654
  init_ids();
4195
4655
  init_database_wrapper();
4196
4656
  init_schema();
4657
+ init_tenant_context();
4197
4658
 
4198
4659
  // src/db/repositories/user-mcp-oauth-tokens.ts
4199
4660
  init_cjs_shims();
4200
- var import_drizzle_orm29 = require("drizzle-orm");
4661
+ var import_drizzle_orm31 = require("drizzle-orm");
4201
4662
  init_database_wrapper();
4202
4663
  init_schema();
4203
4664
  function rowToToken(row) {
@@ -4214,9 +4675,9 @@ function rowToToken(row) {
4214
4675
  };
4215
4676
  }
4216
4677
  function matchKey(userId, serverId) {
4217
- return (0, import_drizzle_orm29.and)(
4218
- userId === null ? (0, import_drizzle_orm29.isNull)(userMcpOauthTokens3.user_id) : (0, import_drizzle_orm29.eq)(userMcpOauthTokens3.user_id, userId),
4219
- (0, import_drizzle_orm29.eq)(userMcpOauthTokens3.mcp_server_id, serverId)
4678
+ return (0, import_drizzle_orm31.and)(
4679
+ userId === null ? (0, import_drizzle_orm31.isNull)(userMcpOauthTokens3.user_id) : (0, import_drizzle_orm31.eq)(userMcpOauthTokens3.user_id, userId),
4680
+ (0, import_drizzle_orm31.eq)(userMcpOauthTokens3.mcp_server_id, serverId)
4220
4681
  );
4221
4682
  }
4222
4683
  var UserMCPOAuthTokenRepository = class {
@@ -4333,7 +4794,7 @@ var UserMCPOAuthTokenRepository = class {
4333
4794
  }
4334
4795
  async deleteAllForUser(userId) {
4335
4796
  try {
4336
- const result = await deleteFrom(this.db, userMcpOauthTokens3).where((0, import_drizzle_orm29.eq)(userMcpOauthTokens3.user_id, userId)).run();
4797
+ const result = await deleteFrom(this.db, userMcpOauthTokens3).where((0, import_drizzle_orm31.eq)(userMcpOauthTokens3.user_id, userId)).run();
4337
4798
  return result.rowsAffected;
4338
4799
  } catch (error) {
4339
4800
  throw new RepositoryError(
@@ -4344,7 +4805,7 @@ var UserMCPOAuthTokenRepository = class {
4344
4805
  }
4345
4806
  async deleteAllForServer(serverId) {
4346
4807
  try {
4347
- const result = await deleteFrom(this.db, userMcpOauthTokens3).where((0, import_drizzle_orm29.eq)(userMcpOauthTokens3.mcp_server_id, serverId)).run();
4808
+ const result = await deleteFrom(this.db, userMcpOauthTokens3).where((0, import_drizzle_orm31.eq)(userMcpOauthTokens3.mcp_server_id, serverId)).run();
4348
4809
  return result.rowsAffected;
4349
4810
  } catch (error) {
4350
4811
  throw new RepositoryError(
@@ -4355,7 +4816,7 @@ var UserMCPOAuthTokenRepository = class {
4355
4816
  }
4356
4817
  async listForUser(userId) {
4357
4818
  try {
4358
- const rows = await select(this.db).from(userMcpOauthTokens3).where((0, import_drizzle_orm29.eq)(userMcpOauthTokens3.user_id, userId)).all();
4819
+ const rows = await select(this.db).from(userMcpOauthTokens3).where((0, import_drizzle_orm31.eq)(userMcpOauthTokens3.user_id, userId)).all();
4359
4820
  return rows.map(rowToToken);
4360
4821
  } catch (error) {
4361
4822
  throw new RepositoryError(
@@ -4373,14 +4834,7 @@ var UserMCPOAuthTokenRepository = class {
4373
4834
  // src/db/repositories/users.ts
4374
4835
  init_cjs_shims();
4375
4836
  init_types();
4376
- var import_drizzle_orm30 = require("drizzle-orm");
4377
-
4378
- // src/config/env-vars.ts
4379
- init_cjs_shims();
4380
- var V05_SCOPES = ["global", "session"];
4381
- var V05_SCOPE_SET = new Set(V05_SCOPES);
4382
-
4383
- // src/db/repositories/users.ts
4837
+ var import_drizzle_orm32 = require("drizzle-orm");
4384
4838
  init_ids();
4385
4839
  init_database_wrapper();
4386
4840
  init_schema();