agor-live 0.21.2 → 0.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (974) 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 +8 -2
  38. package/dist/cli/commands/branch/env/start.d.ts.map +1 -1
  39. package/dist/cli/commands/branch/env/start.js +8 -2
  40. package/dist/cli/commands/branch/env/stop.d.ts.map +1 -1
  41. package/dist/cli/commands/branch/env/stop.js +8 -2
  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 +12 -3
  103. package/dist/core/api/index.d.ts +16 -2
  104. package/dist/core/api/index.d.ts.map +1 -1
  105. package/dist/core/api/index.js +12 -3
  106. package/dist/core/claude/index.cjs +634 -81
  107. package/dist/core/claude/index.js +631 -80
  108. package/dist/core/claude-cli/index.cjs +11 -0
  109. package/dist/core/claude-cli/index.js +11 -0
  110. package/dist/core/claude-cli/pricing.d.ts.map +1 -1
  111. package/dist/core/client/index.cjs +78 -10
  112. package/dist/core/client/index.js +69 -10
  113. package/dist/core/config/browser.cjs +5 -7
  114. package/dist/core/config/browser.js +5 -7
  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/constants.d.ts +1 -1
  118. package/dist/core/config/index.cjs +4277 -4391
  119. package/dist/core/config/index.d.ts +1 -0
  120. package/dist/core/config/index.d.ts.map +1 -1
  121. package/dist/core/config/index.js +4299 -4433
  122. package/dist/core/config/key-resolver.d.ts.map +1 -1
  123. package/dist/core/config/multitenancy.d.ts +33 -0
  124. package/dist/core/config/multitenancy.d.ts.map +1 -0
  125. package/dist/core/config/security-resolver.d.ts +1 -0
  126. package/dist/core/config/security-resolver.d.ts.map +1 -1
  127. package/dist/core/config/types.d.ts +75 -4
  128. package/dist/core/config/types.d.ts.map +1 -1
  129. package/dist/core/db/client.d.ts +34 -2
  130. package/dist/core/db/client.d.ts.map +1 -1
  131. package/dist/core/db/database-wrapper.d.ts.map +1 -1
  132. package/dist/core/db/first-run-bootstrap.d.ts.map +1 -1
  133. package/dist/core/db/index.cjs +2765 -1018
  134. package/dist/core/db/index.d.ts +2 -1
  135. package/dist/core/db/index.d.ts.map +1 -1
  136. package/dist/core/db/index.js +2612 -895
  137. package/dist/core/db/migrate.d.ts.map +1 -1
  138. package/dist/core/db/repositories/artifacts.d.ts +27 -2
  139. package/dist/core/db/repositories/artifacts.d.ts.map +1 -1
  140. package/dist/core/db/repositories/base.d.ts +18 -0
  141. package/dist/core/db/repositories/base.d.ts.map +1 -1
  142. package/dist/core/db/repositories/board-comments.d.ts +17 -1
  143. package/dist/core/db/repositories/board-comments.d.ts.map +1 -1
  144. package/dist/core/db/repositories/board-objects.d.ts.map +1 -1
  145. package/dist/core/db/repositories/boards.d.ts +28 -4
  146. package/dist/core/db/repositories/boards.d.ts.map +1 -1
  147. package/dist/core/db/repositories/branch-access.d.ts +32 -0
  148. package/dist/core/db/repositories/branch-access.d.ts.map +1 -1
  149. package/dist/core/db/repositories/branches.d.ts +54 -2
  150. package/dist/core/db/repositories/branches.d.ts.map +1 -1
  151. package/dist/core/db/repositories/cards.d.ts +15 -1
  152. package/dist/core/db/repositories/cards.d.ts.map +1 -1
  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 +3 -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/session-relationships.d.ts +30 -0
  164. package/dist/core/db/repositories/session-relationships.d.ts.map +1 -0
  165. package/dist/core/db/repositories/sessions.d.ts +49 -5
  166. package/dist/core/db/repositories/sessions.d.ts.map +1 -1
  167. package/dist/core/db/repositories/tasks.d.ts +7 -2
  168. package/dist/core/db/repositories/tasks.d.ts.map +1 -1
  169. package/dist/core/db/repositories/user-api-keys.d.ts +10 -1
  170. package/dist/core/db/repositories/user-api-keys.d.ts.map +1 -1
  171. package/dist/core/db/repositories/users.d.ts +18 -7
  172. package/dist/core/db/repositories/users.d.ts.map +1 -1
  173. package/dist/core/db/schema.d.ts +2605 -766
  174. package/dist/core/db/schema.d.ts.map +1 -1
  175. package/dist/core/db/schema.postgres.d.ts +1318 -49
  176. package/dist/core/db/schema.postgres.d.ts.map +1 -1
  177. package/dist/core/db/schema.sqlite.d.ts +667 -45
  178. package/dist/core/db/schema.sqlite.d.ts.map +1 -1
  179. package/dist/core/db/tenant-context.d.ts +26 -0
  180. package/dist/core/db/tenant-context.d.ts.map +1 -0
  181. package/dist/core/db/tenant-scope.d.ts +31 -0
  182. package/dist/core/db/tenant-scope.d.ts.map +1 -0
  183. package/dist/core/db/user-utils.d.ts +2 -2
  184. package/dist/core/db/user-utils.d.ts.map +1 -1
  185. package/dist/core/drizzle/postgres/0050_artifact_source_session.sql +3 -0
  186. package/dist/core/drizzle/postgres/0051_session_relationships.sql +26 -0
  187. package/dist/core/drizzle/postgres/0052_gateway_outbound_messages.sql +45 -0
  188. package/dist/core/drizzle/postgres/0053_user_token_invalidation.sql +1 -0
  189. package/dist/core/drizzle/postgres/0054_app_level_multitenancy.sql +219 -0
  190. package/dist/core/drizzle/postgres/0055_app_level_multitenancy_rls.sql +411 -0
  191. package/dist/core/drizzle/postgres/0056_composite_indexes.sql +15 -0
  192. package/dist/core/drizzle/postgres/0057_message_timestamp_indexes.sql +3 -0
  193. package/dist/core/drizzle/postgres/meta/_journal.json +56 -0
  194. package/dist/core/drizzle/sqlite/0059_artifact_source_session.sql +2 -0
  195. package/dist/core/drizzle/sqlite/0060_session_relationships.sql +23 -0
  196. package/dist/core/drizzle/sqlite/0061_gateway_outbound_messages.sql +38 -0
  197. package/dist/core/drizzle/sqlite/0062_user_token_invalidation.sql +1 -0
  198. package/dist/core/drizzle/sqlite/0063_composite_indexes.sql +10 -0
  199. package/dist/core/drizzle/sqlite/0064_message_timestamp_indexes.sql +2 -0
  200. package/dist/core/drizzle/sqlite/meta/_journal.json +42 -0
  201. package/dist/core/environment/render-snapshot.cjs +1 -4
  202. package/dist/core/environment/render-snapshot.js +1 -4
  203. package/dist/core/environment/webhook.cjs +1 -4
  204. package/dist/core/environment/webhook.js +1 -4
  205. package/dist/core/gateway/connector-registry.d.ts.map +1 -1
  206. package/dist/core/gateway/connector.d.ts +32 -1
  207. package/dist/core/gateway/connector.d.ts.map +1 -1
  208. package/dist/core/gateway/connectors/slack-manifest.cjs +108 -0
  209. package/dist/core/gateway/connectors/slack-manifest.d.ts +85 -0
  210. package/dist/core/gateway/connectors/slack-manifest.d.ts.map +1 -0
  211. package/dist/core/gateway/connectors/slack-manifest.js +81 -0
  212. package/dist/core/gateway/connectors/slack.d.ts +136 -7
  213. package/dist/core/gateway/connectors/slack.d.ts.map +1 -1
  214. package/dist/core/gateway/connectors/teams.d.ts +107 -0
  215. package/dist/core/gateway/connectors/teams.d.ts.map +1 -0
  216. package/dist/core/gateway/context.d.ts.map +1 -1
  217. package/dist/core/gateway/index.cjs +1044 -78
  218. package/dist/core/gateway/index.d.ts +6 -2
  219. package/dist/core/gateway/index.d.ts.map +1 -1
  220. package/dist/core/gateway/index.js +1031 -77
  221. package/dist/core/gateway/system-message.d.ts +21 -0
  222. package/dist/core/gateway/system-message.d.ts.map +1 -1
  223. package/dist/core/git/exec.cjs +24 -0
  224. package/dist/core/git/exec.d.ts +6 -4
  225. package/dist/core/git/exec.d.ts.map +1 -1
  226. package/dist/core/git/exec.js +2 -0
  227. package/dist/core/git/index.cjs +3 -1363
  228. package/dist/core/git/index.d.ts +4 -614
  229. package/dist/core/git/index.d.ts.map +1 -1
  230. package/dist/core/git/index.js +1 -1304
  231. package/dist/core/git/pure.cjs +24 -0
  232. package/dist/core/git/pure.d.ts +2 -27
  233. package/dist/core/git/pure.d.ts.map +1 -1
  234. package/dist/core/git/pure.js +2 -0
  235. package/dist/core/index.cjs +11268 -10246
  236. package/dist/core/index.d.ts +2 -0
  237. package/dist/core/index.d.ts.map +1 -1
  238. package/dist/core/index.js +11703 -10179
  239. package/dist/core/lib/feathers-validation.cjs +6 -1
  240. package/dist/core/lib/feathers-validation.d.ts +1 -0
  241. package/dist/core/lib/feathers-validation.d.ts.map +1 -1
  242. package/dist/core/lib/feathers-validation.js +6 -1
  243. package/dist/core/local-actions/git-remotes.d.ts +7 -0
  244. package/dist/core/local-actions/git-remotes.d.ts.map +1 -0
  245. package/dist/core/local-actions/index.cjs +7941 -0
  246. package/dist/core/local-actions/index.d.ts +6 -0
  247. package/dist/core/local-actions/index.d.ts.map +1 -0
  248. package/dist/core/local-actions/index.js +7943 -0
  249. package/dist/core/local-actions/symlinks.d.ts +20 -0
  250. package/dist/core/local-actions/symlinks.d.ts.map +1 -0
  251. package/dist/core/local-actions/types.d.ts +14 -0
  252. package/dist/core/local-actions/types.d.ts.map +1 -0
  253. package/dist/core/local-actions/unix-groups.d.ts +16 -0
  254. package/dist/core/local-actions/unix-groups.d.ts.map +1 -0
  255. package/dist/core/local-actions/unix-users.d.ts +12 -0
  256. package/dist/core/local-actions/unix-users.d.ts.map +1 -0
  257. package/dist/core/mcp/index.cjs +498 -34
  258. package/dist/core/mcp/index.js +497 -33
  259. package/dist/core/mcp/template-resolver.d.ts.map +1 -1
  260. package/dist/core/models/browser.cjs +148 -25
  261. package/dist/core/models/browser.js +144 -25
  262. package/dist/core/models/claude.d.ts +2 -2
  263. package/dist/core/models/claude.d.ts.map +1 -1
  264. package/dist/core/models/codex.d.ts +205 -21
  265. package/dist/core/models/codex.d.ts.map +1 -1
  266. package/dist/core/models/index.cjs +148 -25
  267. package/dist/core/models/index.js +144 -25
  268. package/dist/core/package.json +24 -0
  269. package/dist/core/seed/demo-fixtures.d.ts +87 -0
  270. package/dist/core/seed/demo-fixtures.d.ts.map +1 -0
  271. package/dist/core/seed/dev-fixtures.d.ts.map +1 -1
  272. package/dist/core/seed/index.cjs +8785 -5563
  273. package/dist/core/seed/index.d.ts +1 -0
  274. package/dist/core/seed/index.d.ts.map +1 -1
  275. package/dist/core/seed/index.js +8787 -5570
  276. package/dist/core/sessions/index.cjs +129 -24
  277. package/dist/core/sessions/index.js +129 -24
  278. package/dist/core/telemetry/index.cjs +361 -0
  279. package/dist/core/telemetry/index.d.ts +5 -0
  280. package/dist/core/telemetry/index.d.ts.map +1 -0
  281. package/dist/core/telemetry/index.js +315 -0
  282. package/dist/core/telemetry/logger.d.ts +44 -0
  283. package/dist/core/telemetry/logger.d.ts.map +1 -0
  284. package/dist/core/telemetry/model-normalization.d.ts +3 -0
  285. package/dist/core/telemetry/model-normalization.d.ts.map +1 -0
  286. package/dist/core/telemetry/types.d.ts +47 -0
  287. package/dist/core/telemetry/types.d.ts.map +1 -0
  288. package/dist/core/telemetry/version.d.ts +9 -0
  289. package/dist/core/telemetry/version.d.ts.map +1 -0
  290. package/dist/core/templates/agor-system-prompt.md +22 -53
  291. package/dist/core/templates/session-context.cjs +2 -73
  292. package/dist/core/templates/session-context.d.ts +9 -53
  293. package/dist/core/templates/session-context.d.ts.map +1 -1
  294. package/dist/core/templates/session-context.js +2 -72
  295. package/dist/core/tools/mcp/jwt-auth.cjs +2 -20
  296. package/dist/core/tools/mcp/jwt-auth.d.ts.map +1 -1
  297. package/dist/core/tools/mcp/jwt-auth.js +2 -20
  298. package/dist/core/tools/mcp/oauth-mcp-transport.cjs +2 -15
  299. package/dist/core/tools/mcp/oauth-mcp-transport.d.ts.map +1 -1
  300. package/dist/core/tools/mcp/oauth-mcp-transport.js +2 -15
  301. package/dist/core/tools/mcp/oauth-refresh.cjs +684 -106
  302. package/dist/core/tools/mcp/oauth-refresh.js +682 -107
  303. package/dist/core/types/artifact.d.ts +5 -1
  304. package/dist/core/types/artifact.d.ts.map +1 -1
  305. package/dist/core/types/board.d.ts +2 -0
  306. package/dist/core/types/board.d.ts.map +1 -1
  307. package/dist/core/types/branch.d.ts +27 -0
  308. package/dist/core/types/branch.d.ts.map +1 -1
  309. package/dist/core/types/config-services.d.ts.map +1 -1
  310. package/dist/core/types/feathers.d.ts +6 -0
  311. package/dist/core/types/feathers.d.ts.map +1 -1
  312. package/dist/core/types/gateway.d.ts +77 -2
  313. package/dist/core/types/gateway.d.ts.map +1 -1
  314. package/dist/core/types/id.d.ts +1 -0
  315. package/dist/core/types/id.d.ts.map +1 -1
  316. package/dist/core/types/index.cjs +61 -0
  317. package/dist/core/types/index.d.ts +1 -0
  318. package/dist/core/types/index.d.ts.map +1 -1
  319. package/dist/core/types/index.js +52 -0
  320. package/dist/core/types/schedule.d.ts +4 -3
  321. package/dist/core/types/schedule.d.ts.map +1 -1
  322. package/dist/core/types/session.d.ts +72 -2
  323. package/dist/core/types/session.d.ts.map +1 -1
  324. package/dist/core/types/task.d.ts +9 -0
  325. package/dist/core/types/task.d.ts.map +1 -1
  326. package/dist/core/types/tenant.d.ts +15 -0
  327. package/dist/core/types/tenant.d.ts.map +1 -0
  328. package/dist/core/types/user.d.ts +61 -0
  329. package/dist/core/types/user.d.ts.map +1 -1
  330. package/dist/core/unix/index.cjs +1367 -669
  331. package/dist/core/unix/index.js +1330 -634
  332. package/dist/core/unix/unix-integration-service.d.ts +10 -7
  333. package/dist/core/unix/unix-integration-service.d.ts.map +1 -1
  334. package/dist/core/utils/emoji-shortcodes.d.ts +13 -0
  335. package/dist/core/utils/emoji-shortcodes.d.ts.map +1 -0
  336. package/dist/core/utils/permission-mode-mapper.cjs +19 -0
  337. package/dist/core/utils/permission-mode-mapper.js +19 -0
  338. package/dist/core/yaml/index.cjs +8 -8
  339. package/dist/core/yaml/index.d.ts +1 -1
  340. package/dist/core/yaml/index.d.ts.map +1 -1
  341. package/dist/core/yaml/index.js +7 -7
  342. package/dist/daemon/adapters/drizzle.d.ts +26 -4
  343. package/dist/daemon/adapters/drizzle.d.ts.map +1 -1
  344. package/dist/daemon/adapters/drizzle.js +68 -7
  345. package/dist/daemon/auth/api-key-strategy.js +1 -1
  346. package/dist/daemon/auth/executor-runtime-scope.d.ts.map +1 -1
  347. package/dist/daemon/auth/executor-runtime-scope.js +19 -5
  348. package/dist/daemon/auth/launch-auth.d.ts +5 -4
  349. package/dist/daemon/auth/launch-auth.d.ts.map +1 -1
  350. package/dist/daemon/auth/launch-auth.js +123 -39
  351. package/dist/daemon/auth/refresh-token-service.d.ts +22 -0
  352. package/dist/daemon/auth/refresh-token-service.d.ts.map +1 -0
  353. package/dist/daemon/auth/refresh-token-service.js +133 -0
  354. package/dist/daemon/auth/runtime-tokens.d.ts +3 -1
  355. package/dist/daemon/auth/runtime-tokens.d.ts.map +1 -1
  356. package/dist/daemon/auth/runtime-tokens.js +17 -4
  357. package/dist/daemon/auth/service-jwt-strategy.d.ts +2 -1
  358. package/dist/daemon/auth/service-jwt-strategy.d.ts.map +1 -1
  359. package/dist/daemon/auth/service-jwt-strategy.js +127 -1
  360. package/dist/daemon/auth/token-invalidation.d.ts +11 -0
  361. package/dist/daemon/auth/token-invalidation.d.ts.map +1 -0
  362. package/dist/daemon/auth/token-invalidation.js +38 -0
  363. package/dist/daemon/auth/user-redaction.d.ts +12 -0
  364. package/dist/daemon/auth/user-redaction.d.ts.map +1 -0
  365. package/dist/daemon/auth/user-redaction.js +13 -0
  366. package/dist/daemon/declarations.d.ts +8 -1
  367. package/dist/daemon/declarations.d.ts.map +1 -1
  368. package/dist/daemon/hooks/gateway-route.d.ts.map +1 -1
  369. package/dist/daemon/hooks/gateway-route.js +69 -7
  370. package/dist/daemon/index.d.ts.map +1 -1
  371. package/dist/daemon/index.js +10429 -4408
  372. package/dist/daemon/knowledge/pgvector.d.ts +3 -3
  373. package/dist/daemon/knowledge/pgvector.d.ts.map +1 -1
  374. package/dist/daemon/knowledge/pgvector.js +24 -0
  375. package/dist/daemon/knowledge/units.d.ts +2 -2
  376. package/dist/daemon/knowledge/units.d.ts.map +1 -1
  377. package/dist/daemon/main.js +10429 -4408
  378. package/dist/daemon/mcp/server.d.ts +3 -3
  379. package/dist/daemon/mcp/server.d.ts.map +1 -1
  380. package/dist/daemon/mcp/server.js +1621 -87
  381. package/dist/daemon/mcp/tokens.d.ts +2 -2
  382. package/dist/daemon/mcp/tokens.d.ts.map +1 -1
  383. package/dist/daemon/mcp/tokens.js +5 -1
  384. package/dist/daemon/mcp/tool-registry.d.ts.map +1 -1
  385. package/dist/daemon/mcp/tool-registry.js +1 -0
  386. package/dist/daemon/mcp/tools/analytics.d.ts.map +1 -1
  387. package/dist/daemon/mcp/tools/analytics.js +553 -29
  388. package/dist/daemon/mcp/tools/artifacts.d.ts.map +1 -1
  389. package/dist/daemon/mcp/tools/artifacts.js +516 -25
  390. package/dist/daemon/mcp/tools/boards.d.ts.map +1 -1
  391. package/dist/daemon/mcp/tools/boards.js +522 -26
  392. package/dist/daemon/mcp/tools/branches.d.ts.map +1 -1
  393. package/dist/daemon/mcp/tools/branches.js +579 -55
  394. package/dist/daemon/mcp/tools/card-types.js +513 -23
  395. package/dist/daemon/mcp/tools/cards.js +513 -23
  396. package/dist/daemon/mcp/tools/environment.d.ts.map +1 -1
  397. package/dist/daemon/mcp/tools/environment.js +534 -28
  398. package/dist/daemon/mcp/tools/gateway-channels.d.ts +4 -0
  399. package/dist/daemon/mcp/tools/gateway-channels.d.ts.map +1 -0
  400. package/dist/daemon/mcp/tools/gateway-channels.js +16035 -0
  401. package/dist/daemon/mcp/tools/knowledge.js +513 -23
  402. package/dist/daemon/mcp/tools/mcp-servers.d.ts.map +1 -1
  403. package/dist/daemon/mcp/tools/mcp-servers.js +848 -23
  404. package/dist/daemon/mcp/tools/messages.d.ts.map +1 -1
  405. package/dist/daemon/mcp/tools/messages.js +573 -37
  406. package/dist/daemon/mcp/tools/proxies.js +523 -25
  407. package/dist/daemon/mcp/tools/repos.js +513 -23
  408. package/dist/daemon/mcp/tools/schedules.d.ts.map +1 -1
  409. package/dist/daemon/mcp/tools/schedules.js +516 -24
  410. package/dist/daemon/mcp/tools/search.js +513 -23
  411. package/dist/daemon/mcp/tools/sessions.d.ts.map +1 -1
  412. package/dist/daemon/mcp/tools/sessions.js +660 -33
  413. package/dist/daemon/mcp/tools/tasks.js +513 -23
  414. package/dist/daemon/mcp/tools/users.d.ts.map +1 -1
  415. package/dist/daemon/mcp/tools/users.js +532 -28
  416. package/dist/daemon/mcp/tools/widgets.d.ts.map +1 -1
  417. package/dist/daemon/mcp/tools/widgets.js +542 -25
  418. package/dist/daemon/register-hooks.d.ts +8 -3
  419. package/dist/daemon/register-hooks.d.ts.map +1 -1
  420. package/dist/daemon/register-hooks.js +1146 -609
  421. package/dist/daemon/register-routes.d.ts +3 -2
  422. package/dist/daemon/register-routes.d.ts.map +1 -1
  423. package/dist/daemon/register-routes.js +2926 -829
  424. package/dist/daemon/register-services.d.ts +2 -2
  425. package/dist/daemon/register-services.d.ts.map +1 -1
  426. package/dist/daemon/register-services.js +4209 -1140
  427. package/dist/daemon/services/artifacts.d.ts +43 -6
  428. package/dist/daemon/services/artifacts.d.ts.map +1 -1
  429. package/dist/daemon/services/artifacts.js +134 -9
  430. package/dist/daemon/services/assistant-knowledge.d.ts +2 -2
  431. package/dist/daemon/services/assistant-knowledge.d.ts.map +1 -1
  432. package/dist/daemon/services/board-comments.d.ts +8 -5
  433. package/dist/daemon/services/board-comments.d.ts.map +1 -1
  434. package/dist/daemon/services/board-comments.js +78 -13
  435. package/dist/daemon/services/board-objects.d.ts +8 -5
  436. package/dist/daemon/services/board-objects.d.ts.map +1 -1
  437. package/dist/daemon/services/board-objects.js +14 -4
  438. package/dist/daemon/services/boards.d.ts +34 -5
  439. package/dist/daemon/services/boards.d.ts.map +1 -1
  440. package/dist/daemon/services/boards.js +116 -8
  441. package/dist/daemon/services/branch-owners.d.ts +3 -1
  442. package/dist/daemon/services/branch-owners.d.ts.map +1 -1
  443. package/dist/daemon/services/branch-owners.js +31 -4
  444. package/dist/daemon/services/branches.d.ts +39 -6
  445. package/dist/daemon/services/branches.d.ts.map +1 -1
  446. package/dist/daemon/services/branches.js +703 -210
  447. package/dist/daemon/services/card-types.d.ts +3 -3
  448. package/dist/daemon/services/card-types.d.ts.map +1 -1
  449. package/dist/daemon/services/card-types.js +68 -7
  450. package/dist/daemon/services/cards.d.ts +19 -4
  451. package/dist/daemon/services/cards.d.ts.map +1 -1
  452. package/dist/daemon/services/cards.js +92 -8
  453. package/dist/daemon/services/check-auth.d.ts +2 -2
  454. package/dist/daemon/services/check-auth.d.ts.map +1 -1
  455. package/dist/daemon/services/claude-cli-integration.d.ts +4 -1
  456. package/dist/daemon/services/claude-cli-integration.d.ts.map +1 -1
  457. package/dist/daemon/services/claude-cli-integration.js +117 -65
  458. package/dist/daemon/services/claude-models.d.ts +3 -3
  459. package/dist/daemon/services/claude-models.d.ts.map +1 -1
  460. package/dist/daemon/services/claude-models.js +1048 -397
  461. package/dist/daemon/services/config.d.ts +12 -4
  462. package/dist/daemon/services/config.d.ts.map +1 -1
  463. package/dist/daemon/services/config.js +39 -3
  464. package/dist/daemon/services/copilot-models.d.ts +3 -3
  465. package/dist/daemon/services/copilot-models.d.ts.map +1 -1
  466. package/dist/daemon/services/cursor-models.d.ts +3 -3
  467. package/dist/daemon/services/cursor-models.d.ts.map +1 -1
  468. package/dist/daemon/services/files.d.ts +3 -3
  469. package/dist/daemon/services/files.d.ts.map +1 -1
  470. package/dist/daemon/services/files.js +24 -5
  471. package/dist/daemon/services/gateway-channels-test.d.ts +24 -0
  472. package/dist/daemon/services/gateway-channels-test.d.ts.map +1 -0
  473. package/dist/daemon/services/gateway-channels-test.js +66 -0
  474. package/dist/daemon/services/gateway-channels.d.ts +3 -3
  475. package/dist/daemon/services/gateway-channels.d.ts.map +1 -1
  476. package/dist/daemon/services/gateway-channels.js +68 -7
  477. package/dist/daemon/services/gateway.d.ts +106 -5
  478. package/dist/daemon/services/gateway.d.ts.map +1 -1
  479. package/dist/daemon/services/gateway.js +1184 -95
  480. package/dist/daemon/services/github-app-setup.d.ts +3 -3
  481. package/dist/daemon/services/github-app-setup.d.ts.map +1 -1
  482. package/dist/daemon/services/groups.d.ts +7 -5
  483. package/dist/daemon/services/groups.d.ts.map +1 -1
  484. package/dist/daemon/services/groups.js +56 -0
  485. package/dist/daemon/services/health-monitor.d.ts +34 -2
  486. package/dist/daemon/services/health-monitor.d.ts.map +1 -1
  487. package/dist/daemon/services/health-monitor.js +145 -23
  488. package/dist/daemon/services/knowledge-document-edits.d.ts +3 -3
  489. package/dist/daemon/services/knowledge-document-edits.d.ts.map +1 -1
  490. package/dist/daemon/services/knowledge-documents.d.ts +3 -3
  491. package/dist/daemon/services/knowledge-documents.d.ts.map +1 -1
  492. package/dist/daemon/services/knowledge-documents.js +92 -7
  493. package/dist/daemon/services/knowledge-embedding-indexer.d.ts +7 -2
  494. package/dist/daemon/services/knowledge-embedding-indexer.d.ts.map +1 -1
  495. package/dist/daemon/services/knowledge-embedding-indexer.js +37 -3
  496. package/dist/daemon/services/knowledge-graph.d.ts +3 -3
  497. package/dist/daemon/services/knowledge-graph.d.ts.map +1 -1
  498. package/dist/daemon/services/knowledge-indexing.d.ts +3 -3
  499. package/dist/daemon/services/knowledge-indexing.d.ts.map +1 -1
  500. package/dist/daemon/services/knowledge-namespaces.d.ts +3 -3
  501. package/dist/daemon/services/knowledge-namespaces.d.ts.map +1 -1
  502. package/dist/daemon/services/knowledge-namespaces.js +72 -8
  503. package/dist/daemon/services/knowledge-reindex.d.ts +3 -3
  504. package/dist/daemon/services/knowledge-reindex.d.ts.map +1 -1
  505. package/dist/daemon/services/knowledge-reindex.js +28 -1
  506. package/dist/daemon/services/knowledge-search.d.ts +3 -3
  507. package/dist/daemon/services/knowledge-search.d.ts.map +1 -1
  508. package/dist/daemon/services/knowledge-settings.d.ts +3 -3
  509. package/dist/daemon/services/knowledge-settings.d.ts.map +1 -1
  510. package/dist/daemon/services/knowledge-settings.js +24 -0
  511. package/dist/daemon/services/knowledge-versions.d.ts +3 -3
  512. package/dist/daemon/services/knowledge-versions.d.ts.map +1 -1
  513. package/dist/daemon/services/knowledge-versions.js +68 -7
  514. package/dist/daemon/services/leaderboard.d.ts +14 -6
  515. package/dist/daemon/services/leaderboard.d.ts.map +1 -1
  516. package/dist/daemon/services/leaderboard.js +74 -15
  517. package/dist/daemon/services/local-actions.d.ts +13 -0
  518. package/dist/daemon/services/local-actions.d.ts.map +1 -0
  519. package/dist/daemon/services/local-actions.js +120 -0
  520. package/dist/daemon/services/mcp-servers.d.ts +3 -3
  521. package/dist/daemon/services/mcp-servers.d.ts.map +1 -1
  522. package/dist/daemon/services/mcp-servers.js +68 -13
  523. package/dist/daemon/services/messages.d.ts +10 -6
  524. package/dist/daemon/services/messages.d.ts.map +1 -1
  525. package/dist/daemon/services/messages.js +87 -7
  526. package/dist/daemon/services/repos.d.ts +6 -6
  527. package/dist/daemon/services/repos.d.ts.map +1 -1
  528. package/dist/daemon/services/repos.js +131 -32
  529. package/dist/daemon/services/scheduler.d.ts +23 -27
  530. package/dist/daemon/services/scheduler.d.ts.map +1 -1
  531. package/dist/daemon/services/scheduler.js +61 -30
  532. package/dist/daemon/services/schedules.d.ts +3 -3
  533. package/dist/daemon/services/schedules.d.ts.map +1 -1
  534. package/dist/daemon/services/schedules.js +68 -7
  535. package/dist/daemon/services/session-env-selections.d.ts +3 -3
  536. package/dist/daemon/services/session-env-selections.d.ts.map +1 -1
  537. package/dist/daemon/services/session-mcp-servers.d.ts +3 -3
  538. package/dist/daemon/services/session-mcp-servers.d.ts.map +1 -1
  539. package/dist/daemon/services/session-token-service.d.ts.map +1 -1
  540. package/dist/daemon/services/session-token-service.js +3 -0
  541. package/dist/daemon/services/sessions.d.ts +20 -8
  542. package/dist/daemon/services/sessions.d.ts.map +1 -1
  543. package/dist/daemon/services/sessions.js +211 -17
  544. package/dist/daemon/services/tasks.d.ts +24 -7
  545. package/dist/daemon/services/tasks.d.ts.map +1 -1
  546. package/dist/daemon/services/tasks.js +235 -59
  547. package/dist/daemon/services/terminals.d.ts +21 -3
  548. package/dist/daemon/services/terminals.d.ts.map +1 -1
  549. package/dist/daemon/services/terminals.js +81 -25
  550. package/dist/daemon/services/thread-session-map.d.ts +3 -3
  551. package/dist/daemon/services/thread-session-map.d.ts.map +1 -1
  552. package/dist/daemon/services/thread-session-map.js +68 -7
  553. package/dist/daemon/services/user-avatar-sync.d.ts +21 -0
  554. package/dist/daemon/services/user-avatar-sync.d.ts.map +1 -0
  555. package/dist/daemon/services/user-avatar-sync.js +267 -0
  556. package/dist/daemon/services/users.d.ts +29 -9
  557. package/dist/daemon/services/users.d.ts.map +1 -1
  558. package/dist/daemon/services/users.js +383 -30
  559. package/dist/daemon/services/zone-trigger.d.ts.map +1 -1
  560. package/dist/daemon/services/zone-trigger.js +17 -4
  561. package/dist/daemon/setup/build-info.d.ts +1 -1
  562. package/dist/daemon/setup/build-info.d.ts.map +1 -1
  563. package/dist/daemon/setup/build-info.js +5 -1
  564. package/dist/daemon/setup/database.d.ts +8 -3
  565. package/dist/daemon/setup/database.d.ts.map +1 -1
  566. package/dist/daemon/setup/database.js +26 -6
  567. package/dist/daemon/setup/first-run-admin.d.ts +2 -2
  568. package/dist/daemon/setup/first-run-admin.d.ts.map +1 -1
  569. package/dist/daemon/setup/index.js +97 -17
  570. package/dist/daemon/setup/socketio.d.ts +10 -1
  571. package/dist/daemon/setup/socketio.d.ts.map +1 -1
  572. package/dist/daemon/setup/socketio.js +68 -10
  573. package/dist/daemon/startup.d.ts +13 -2
  574. package/dist/daemon/startup.d.ts.map +1 -1
  575. package/dist/daemon/startup.js +354 -88
  576. package/dist/daemon/utils/append-system-message.d.ts +2 -2
  577. package/dist/daemon/utils/append-system-message.d.ts.map +1 -1
  578. package/dist/daemon/utils/apply-session-config-defaults.d.ts.map +1 -1
  579. package/dist/daemon/utils/apply-session-config-defaults.js +12 -1
  580. package/dist/daemon/utils/authorization.d.ts +3 -1
  581. package/dist/daemon/utils/authorization.d.ts.map +1 -1
  582. package/dist/daemon/utils/authorization.js +21 -6
  583. package/dist/daemon/utils/branch-authorization.d.ts +30 -0
  584. package/dist/daemon/utils/branch-authorization.d.ts.map +1 -1
  585. package/dist/daemon/utils/branch-authorization.js +63 -5
  586. package/dist/daemon/utils/branch-inspect.d.ts +1 -0
  587. package/dist/daemon/utils/branch-inspect.d.ts.map +1 -1
  588. package/dist/daemon/utils/branch-inspect.js +11 -3
  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-token-authorization.d.ts +18 -13
  597. package/dist/daemon/utils/mcp-token-authorization.d.ts.map +1 -1
  598. package/dist/daemon/utils/mcp-token-authorization.js +11 -5
  599. package/dist/daemon/utils/open-source-telemetry-config.d.ts +6 -0
  600. package/dist/daemon/utils/open-source-telemetry-config.d.ts.map +1 -0
  601. package/dist/daemon/utils/open-source-telemetry-config.js +21 -0
  602. package/dist/daemon/utils/open-source-telemetry-heartbeat.d.ts +7 -0
  603. package/dist/daemon/utils/open-source-telemetry-heartbeat.d.ts.map +1 -0
  604. package/dist/daemon/utils/open-source-telemetry-heartbeat.js +15 -0
  605. package/dist/daemon/utils/open-source-telemetry-usage.d.ts +9 -0
  606. package/dist/daemon/utils/open-source-telemetry-usage.d.ts.map +1 -0
  607. package/dist/daemon/utils/open-source-telemetry-usage.js +121 -0
  608. package/dist/daemon/utils/realign-repo-origin.d.ts +3 -3
  609. package/dist/daemon/utils/realign-repo-origin.d.ts.map +1 -1
  610. package/dist/daemon/utils/realign-repo-origin.js +47 -16
  611. package/dist/daemon/utils/realtime-publish.d.ts +2 -0
  612. package/dist/daemon/utils/realtime-publish.d.ts.map +1 -1
  613. package/dist/daemon/utils/realtime-publish.js +51 -10
  614. package/dist/daemon/utils/session-state-hooks.d.ts +3 -3
  615. package/dist/daemon/utils/session-state-hooks.d.ts.map +1 -1
  616. package/dist/daemon/utils/session-stop.d.ts +43 -0
  617. package/dist/daemon/utils/session-stop.d.ts.map +1 -0
  618. package/dist/daemon/utils/session-stop.js +102 -0
  619. package/dist/daemon/utils/session-task-state.d.ts +7 -2
  620. package/dist/daemon/utils/session-task-state.d.ts.map +1 -1
  621. package/dist/daemon/utils/session-task-state.js +9 -3
  622. package/dist/daemon/utils/session-tasks.d.ts +4 -4
  623. package/dist/daemon/utils/session-tasks.d.ts.map +1 -1
  624. package/dist/daemon/utils/session-tasks.js +4 -8
  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/index.js +137 -21
  643. package/dist/executor/commands/environment.d.ts +13 -0
  644. package/dist/executor/commands/environment.d.ts.map +1 -0
  645. package/dist/executor/commands/environment.js +291 -0
  646. package/dist/executor/commands/git.js +1 -1
  647. package/dist/executor/commands/index.d.ts.map +1 -1
  648. package/dist/executor/commands/index.js +5 -1
  649. package/dist/executor/commands/unix.d.ts +8 -1
  650. package/dist/executor/commands/unix.d.ts.map +1 -1
  651. package/dist/executor/commands/unix.js +157 -2
  652. package/dist/executor/git/index.d.ts +8 -0
  653. package/dist/executor/git/index.d.ts.map +1 -0
  654. package/dist/executor/git/index.js +7 -0
  655. package/dist/executor/handlers/sdk/base-executor.d.ts.map +1 -1
  656. package/dist/executor/handlers/sdk/base-executor.js +4 -1
  657. package/dist/executor/handlers/sdk/git-safe-directory.d.ts.map +1 -1
  658. package/dist/executor/handlers/sdk/git-safe-directory.js +1 -1
  659. package/dist/executor/payload-types.d.ts +201 -5
  660. package/dist/executor/payload-types.d.ts.map +1 -1
  661. package/dist/executor/payload-types.js +98 -0
  662. package/dist/executor/sdk-handlers/base/diff-enrichment.js +1 -1
  663. package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts.map +1 -1
  664. package/dist/executor/sdk-handlers/base/mcp-scoping.js +14 -0
  665. package/dist/executor/sdk-handlers/claude/message-processor.d.ts.map +1 -1
  666. package/dist/executor/sdk-handlers/claude/message-processor.js +0 -1
  667. package/dist/executor/sdk-handlers/claude/query-builder.d.ts +1 -0
  668. package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +1 -1
  669. package/dist/executor/sdk-handlers/claude/query-builder.js +91 -39
  670. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +6 -10
  671. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
  672. package/dist/executor/sdk-handlers/codex/codex-tool.js +12 -15
  673. package/dist/executor/sdk-handlers/codex/normalizer.d.ts.map +1 -1
  674. package/dist/executor/sdk-handlers/codex/normalizer.js +11 -1
  675. package/dist/executor/sdk-handlers/codex/pricing/litellm-openai-model-prices.json +3663 -0
  676. package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.d.ts +31 -0
  677. package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.d.ts.map +1 -0
  678. package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.js +46 -0
  679. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts +12 -5
  680. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
  681. package/dist/executor/sdk-handlers/codex/prompt-service.js +133 -36
  682. package/dist/executor/sdk-handlers/codex/usage.d.ts +14 -23
  683. package/dist/executor/sdk-handlers/codex/usage.d.ts.map +1 -1
  684. package/dist/executor/sdk-handlers/codex/usage.js +18 -33
  685. package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts +2 -4
  686. package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts.map +1 -1
  687. package/dist/executor/sdk-handlers/copilot/prompt-service.js +4 -13
  688. package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts +2 -4
  689. package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts.map +1 -1
  690. package/dist/executor/sdk-handlers/gemini/prompt-service.js +4 -13
  691. package/dist/executor/services/feathers-client.js +5 -5
  692. package/dist/git/index.cjs +1101 -0
  693. package/dist/git/index.d.ts +533 -0
  694. package/dist/git/index.d.ts.map +1 -0
  695. package/dist/git/index.js +1022 -0
  696. package/dist/git/package.json +21 -0
  697. package/dist/git/pure.cjs +185 -0
  698. package/dist/git/pure.d.ts +39 -0
  699. package/dist/git/pure.d.ts.map +1 -0
  700. package/dist/git/pure.js +139 -0
  701. package/dist/ui/assets/AgorEmojiPickerInner-DQjr8M3_.js +1 -0
  702. package/dist/ui/assets/App-hJtcOxHv.js +5 -0
  703. package/dist/ui/assets/App-hJtcOxHv.js.gz +0 -0
  704. package/dist/ui/assets/AppNode-BhuMpn8O.js +1 -0
  705. package/dist/ui/assets/AppNode-BhuMpn8O.js.gz +0 -0
  706. package/dist/ui/assets/ArtifactConsentModal-oMMzRn8L.js +1 -0
  707. package/dist/ui/assets/ArtifactConsentModal-oMMzRn8L.js.gz +0 -0
  708. package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js +9 -0
  709. package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js.gz +0 -0
  710. package/dist/ui/assets/ArtifactNode-BzQcrwFS.js +9 -0
  711. package/dist/ui/assets/ArtifactNode-BzQcrwFS.js.gz +0 -0
  712. package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js +19 -0
  713. package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js.gz +0 -0
  714. package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js +34 -0
  715. package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js.gz +0 -0
  716. package/dist/ui/assets/CodeEditor.inner-Cuj6RuLL.js +7 -0
  717. package/dist/ui/assets/CodeEditor.inner-Cuj6RuLL.js.gz +0 -0
  718. package/dist/ui/assets/ConversationView-9-3ma1u-.js +1 -0
  719. package/dist/ui/assets/ConversationView-9-3ma1u-.js.gz +0 -0
  720. package/dist/ui/assets/EmbeddedTerminal-Lx5I9EOJ.js +2 -0
  721. package/dist/ui/assets/EmbeddedTerminal-Lx5I9EOJ.js.gz +0 -0
  722. package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js +24 -0
  723. package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js.gz +0 -0
  724. package/dist/ui/assets/MarketingScreenshotPage-9Qd7eZsm.css +1 -0
  725. package/dist/ui/assets/MarketingScreenshotPage-CmDPBHOl.js +143 -0
  726. package/dist/ui/assets/MarketingScreenshotPage-CmDPBHOl.js.gz +0 -0
  727. package/dist/ui/assets/MobileApp-BpgSG_gz.js +1 -0
  728. package/dist/ui/assets/MobileApp-BpgSG_gz.js.gz +0 -0
  729. package/dist/ui/assets/SessionCanvas-B6_mtlxK.js +13 -0
  730. package/dist/ui/assets/SessionCanvas-B6_mtlxK.js.gz +0 -0
  731. package/dist/ui/assets/SessionCanvas-Bh7Yg5dZ.css +1 -0
  732. package/dist/ui/assets/SessionCanvas-Bh7Yg5dZ.css.gz +0 -0
  733. package/dist/ui/assets/{StreamdownDemoPage-B9wbgp2s.js → StreamdownDemoPage-okKKR2QH.js} +2 -2
  734. package/dist/ui/assets/StreamdownDemoPage-okKKR2QH.js.gz +0 -0
  735. package/dist/ui/assets/TerminalModal-D9jMGZXv.js +2 -0
  736. package/dist/ui/assets/TerminalModal-D9jMGZXv.js.gz +0 -0
  737. package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js +1 -0
  738. package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js.gz +0 -0
  739. package/dist/ui/assets/ThemedSyntaxHighlighter.inner-C1FdIHn0.js +1 -0
  740. package/dist/ui/assets/antd-DT5ackd0.js +401 -0
  741. package/dist/ui/assets/antd-DT5ackd0.js.gz +0 -0
  742. package/dist/ui/assets/architecture-U656AL7Q-DMnxkQRZ.js +1 -0
  743. package/dist/ui/assets/architectureDiagram-VXUJARFQ-DwTJGGoj.js +36 -0
  744. package/dist/ui/assets/architectureDiagram-VXUJARFQ-DwTJGGoj.js.gz +0 -0
  745. package/dist/ui/assets/{blockDiagram-VD42YOAC-CzGHAHao.js → blockDiagram-VD42YOAC-Dh1_TVW2.js} +4 -4
  746. package/dist/ui/assets/blockDiagram-VD42YOAC-Dh1_TVW2.js.gz +0 -0
  747. package/dist/ui/assets/{c4Diagram-YG6GDRKO-DscJyaWN.js → c4Diagram-YG6GDRKO-B1e96AcB.js} +2 -2
  748. package/dist/ui/assets/c4Diagram-YG6GDRKO-B1e96AcB.js.gz +0 -0
  749. package/dist/ui/assets/channel-Jv4dT4S5.js +1 -0
  750. package/dist/ui/assets/{chunk-4BX2VUAB-DoWpTvP8.js → chunk-4BX2VUAB-BODpCjJx.js} +1 -1
  751. package/dist/ui/assets/chunk-55IACEB6-lJXvUquf.js +1 -0
  752. package/dist/ui/assets/{chunk-ABZYJK2D-RzDCrjE6.js → chunk-ABZYJK2D-DCTXWSzV.js} +3 -3
  753. package/dist/ui/assets/chunk-ABZYJK2D-DCTXWSzV.js.gz +0 -0
  754. package/dist/ui/assets/{chunk-AGHRB4JF-jidCS5Of.js → chunk-AGHRB4JF-CbNphBjE.js} +1 -1
  755. package/dist/ui/assets/chunk-AGHRB4JF-CbNphBjE.js.gz +0 -0
  756. package/dist/ui/assets/{chunk-ATLVNIR6-BEIIfJtC.js → chunk-ATLVNIR6-rWg3qxof.js} +1 -1
  757. package/dist/ui/assets/chunk-ATLVNIR6-rWg3qxof.js.gz +0 -0
  758. package/dist/ui/assets/{chunk-B4BG7PRW-B8b6dQQ2.js → chunk-B4BG7PRW-CgtLCbpE.js} +3 -3
  759. package/dist/ui/assets/chunk-B4BG7PRW-CgtLCbpE.js.gz +0 -0
  760. package/dist/ui/assets/{chunk-CVBHYZKI-D-mQAfrk.js → chunk-CVBHYZKI-DTL6Zgr0.js} +1 -1
  761. package/dist/ui/assets/{chunk-DI55MBZ5-BfATX3V8.js → chunk-DI55MBZ5-Dwvx2Kva.js} +1 -1
  762. package/dist/ui/assets/chunk-DI55MBZ5-Dwvx2Kva.js.gz +0 -0
  763. package/dist/ui/assets/chunk-EXTU4WIE-DHyaqTsP.js +1 -0
  764. package/dist/ui/assets/{chunk-FMBD7UC4-fqXscNvc.js → chunk-FMBD7UC4-BogA_9CV.js} +1 -1
  765. package/dist/ui/assets/{chunk-HN2XXSSU-BCHvD80g.js → chunk-HN2XXSSU-2blQO3Gb.js} +1 -1
  766. package/dist/ui/assets/chunk-HN2XXSSU-2blQO3Gb.js.gz +0 -0
  767. package/dist/ui/assets/chunk-JA3XYJ7Z-Cr1rmOui.js +11 -0
  768. package/dist/ui/assets/chunk-JA3XYJ7Z-Cr1rmOui.js.gz +0 -0
  769. package/dist/ui/assets/{chunk-JZLCHNYA-cKMooY3y.js → chunk-JZLCHNYA-BsgZ79Fa.js} +5 -5
  770. package/dist/ui/assets/chunk-JZLCHNYA-BsgZ79Fa.js.gz +0 -0
  771. package/dist/ui/assets/{chunk-MI3HLSF2-BlzO5wOE.js → chunk-MI3HLSF2-dwYeUy5S.js} +1 -1
  772. package/dist/ui/assets/chunk-MI3HLSF2-dwYeUy5S.js.gz +0 -0
  773. package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js +2 -0
  774. package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js.gz +0 -0
  775. package/dist/ui/assets/{chunk-QN33PNHL-DIHGQ_pd.js → chunk-QN33PNHL-DxdIDCAa.js} +1 -1
  776. package/dist/ui/assets/{chunk-QXUST7PY-C9l0muI0.js → chunk-QXUST7PY-BCK2V0i-.js} +2 -2
  777. package/dist/ui/assets/chunk-QXUST7PY-BCK2V0i-.js.gz +0 -0
  778. package/dist/ui/assets/chunk-QZHKN3VN-CALjGrEE.js +1 -0
  779. package/dist/ui/assets/chunk-S3R3BYOJ-GP3zIxrB.js +2 -0
  780. package/dist/ui/assets/chunk-S3R3BYOJ-GP3zIxrB.js.gz +0 -0
  781. package/dist/ui/assets/{chunk-TZMSLE5B-DZwI0C_2.js → chunk-TZMSLE5B-dX5RaM6g.js} +1 -1
  782. package/dist/ui/assets/chunk-TZMSLE5B-dX5RaM6g.js.gz +0 -0
  783. package/dist/ui/assets/classDiagram-2ON5EDUG-C3_RVP70.js +1 -0
  784. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-C3_RVP70.js +1 -0
  785. package/dist/ui/assets/constants-GjIDNVyt.js +1 -0
  786. package/dist/ui/assets/{cose-bilkent-S5V4N54A-Ipik-oSD.js → cose-bilkent-S5V4N54A-Dx0BJVDl.js} +1 -1
  787. package/dist/ui/assets/cose-bilkent-S5V4N54A-Dx0BJVDl.js.gz +0 -0
  788. package/dist/ui/assets/cursor-QEb7m-rN.png +0 -0
  789. package/dist/ui/assets/{dagre-6UL2VRFP-BDpyWQnh.js → dagre-6UL2VRFP-DiQSUxqN.js} +1 -1
  790. package/dist/ui/assets/dagre-6UL2VRFP-DiQSUxqN.js.gz +0 -0
  791. package/dist/ui/assets/{dagre-CgA4KhUX.js → dagre-Bekd9Vdj.js} +1 -1
  792. package/dist/ui/assets/dagre-Bekd9Vdj.js.gz +0 -0
  793. package/dist/ui/assets/diagram-PSM6KHXK-DtJnDQjc.js +24 -0
  794. package/dist/ui/assets/diagram-PSM6KHXK-DtJnDQjc.js.gz +0 -0
  795. package/dist/ui/assets/{diagram-QEK2KX5R-BWPW28XI.js → diagram-QEK2KX5R-CobkCRdj.js} +1 -1
  796. package/dist/ui/assets/diagram-QEK2KX5R-CobkCRdj.js.gz +0 -0
  797. package/dist/ui/assets/{diagram-S2PKOQOG-BIHhcGoV.js → diagram-S2PKOQOG-DHEZYivc.js} +1 -1
  798. package/dist/ui/assets/diagram-S2PKOQOG-DHEZYivc.js.gz +0 -0
  799. package/dist/ui/assets/editor-DQIG-JYZ.js +43 -0
  800. package/dist/ui/assets/editor-DQIG-JYZ.js.gz +0 -0
  801. package/dist/ui/assets/emoji-B0hLmSLZ.js +3 -0
  802. package/dist/ui/assets/emoji-B0hLmSLZ.js.gz +0 -0
  803. package/dist/ui/assets/{erDiagram-Q2GNP2WA-ubTaAFcK.js → erDiagram-Q2GNP2WA-BVNeTZPQ.js} +2 -2
  804. package/dist/ui/assets/erDiagram-Q2GNP2WA-BVNeTZPQ.js.gz +0 -0
  805. package/dist/ui/assets/flowDiagram-NV44I4VS-C73VFdyk.js +162 -0
  806. package/dist/ui/assets/flowDiagram-NV44I4VS-C73VFdyk.js.gz +0 -0
  807. package/dist/ui/assets/ganttDiagram-LVOFAZNH-B_RosuD1.js +267 -0
  808. package/dist/ui/assets/ganttDiagram-LVOFAZNH-B_RosuD1.js.gz +0 -0
  809. package/dist/ui/assets/{gitGraph-F6HP7TQM-DghoobE6.js → gitGraph-F6HP7TQM-DMFIqn4h.js} +1 -1
  810. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-hxbgwNA1.js +65 -0
  811. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-hxbgwNA1.js.gz +0 -0
  812. package/dist/ui/assets/index-DTz1Dif6.js +64 -0
  813. package/dist/ui/assets/index-DTz1Dif6.js.gz +0 -0
  814. package/dist/ui/assets/index-qkT7Qqm2.css +1 -0
  815. package/dist/ui/assets/index-qkT7Qqm2.css.gz +0 -0
  816. package/dist/ui/assets/{info-NVLQJR56-0ZldEXPQ.js → info-NVLQJR56-DZ3K-w48.js} +1 -1
  817. package/dist/ui/assets/{infoDiagram-ER5ION4S-DMmPX-il.js → infoDiagram-ER5ION4S-CxnBJQu6.js} +1 -1
  818. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-CrVickA2.js → journeyDiagram-XKPGCS4Q-CHYNj-f8.js} +3 -3
  819. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CHYNj-f8.js.gz +0 -0
  820. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-C_BsdHYL.js → kanban-definition-3W4ZIXB7-DQPCCsj2.js} +1 -1
  821. package/dist/ui/assets/kanban-definition-3W4ZIXB7-DQPCCsj2.js.gz +0 -0
  822. package/dist/ui/assets/{line-CfBP7Yic.js → line-DBRjKmfa.js} +1 -1
  823. package/dist/ui/assets/{linear-BsjageUB.js → linear-DFao5Wyp.js} +1 -1
  824. package/dist/ui/assets/linear-DFao5Wyp.js.gz +0 -0
  825. package/dist/ui/assets/{mermaid-parser.core-DZdP-NFq.js → mermaid-parser.core-DYCfacHj.js} +2 -2
  826. package/dist/ui/assets/mermaid-parser.core-DYCfacHj.js.gz +0 -0
  827. package/dist/ui/assets/mermaid.core-C6xGFSdE.js +11 -0
  828. package/dist/ui/assets/mermaid.core-C6xGFSdE.js.gz +0 -0
  829. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-BbmaUjMY.js → mindmap-definition-VGOIOE7T-L3Pw-YM7.js} +1 -1
  830. package/dist/ui/assets/mindmap-definition-VGOIOE7T-L3Pw-YM7.js.gz +0 -0
  831. package/dist/ui/assets/{packet-BFZMPI3H-D_ZhkXuT.js → packet-BFZMPI3H-CpL6iNoa.js} +1 -1
  832. package/dist/ui/assets/{particles-Dv28pjOd.js → particles-CT8hcJOA.js} +1 -1
  833. package/dist/ui/assets/particles-CT8hcJOA.js.gz +0 -0
  834. package/dist/ui/assets/{pie-7BOR55EZ-Dn0Q3qNx.js → pie-7BOR55EZ-hTqChbTo.js} +1 -1
  835. package/dist/ui/assets/{pieDiagram-ADFJNKIX-BbyjfYu8.js → pieDiagram-ADFJNKIX-Bf4Nou75.js} +1 -1
  836. package/dist/ui/assets/pieDiagram-ADFJNKIX-Bf4Nou75.js.gz +0 -0
  837. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-Bc3GqMKz.js → quadrantDiagram-AYHSOK5B-DpjUTLB1.js} +3 -3
  838. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DpjUTLB1.js.gz +0 -0
  839. package/dist/ui/assets/{radar-NHE76QYJ-BHwoAy1q.js → radar-NHE76QYJ-myy7OENC.js} +1 -1
  840. package/dist/ui/assets/reactflow-Cubtnk8i.js +2 -0
  841. package/dist/ui/assets/reactflow-Cubtnk8i.js.gz +0 -0
  842. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-BQaKKL09.js → requirementDiagram-UZGBJVZJ-Bfrfh-0-.js} +1 -1
  843. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-Bfrfh-0-.js.gz +0 -0
  844. package/dist/ui/assets/{sandpack-BQW_FQ7G.js → sandpack-C58bwfIS.js} +38 -38
  845. package/dist/ui/assets/sandpack-C58bwfIS.js.gz +0 -0
  846. package/dist/ui/assets/sandpackDefaults-Bkga8XAE.js +1 -0
  847. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-ClZAZ6va.js +10 -0
  848. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-ClZAZ6va.js.gz +0 -0
  849. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-Dw32824o.js → sequenceDiagram-WL72ISMW-CNgly63p.js} +6 -6
  850. package/dist/ui/assets/sequenceDiagram-WL72ISMW-CNgly63p.js.gz +0 -0
  851. package/dist/ui/assets/src-DAeyG22O.js +34 -0
  852. package/dist/ui/assets/src-DAeyG22O.js.gz +0 -0
  853. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BrEAoDpE.js +1 -0
  854. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BrEAoDpE.js.gz +0 -0
  855. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-BNL52_oN.js +1 -0
  856. package/dist/ui/assets/streamdown-BdAVfkeF.js +521 -0
  857. package/dist/ui/assets/streamdown-BdAVfkeF.js.gz +0 -0
  858. package/dist/ui/assets/syntax-BOfTnQiy.js +9 -0
  859. package/dist/ui/assets/syntax-BOfTnQiy.js.gz +0 -0
  860. package/dist/ui/assets/{timeline-definition-IT6M3QCI-Jh_WZzXv.js → timeline-definition-IT6M3QCI-CaRH3k4l.js} +16 -16
  861. package/dist/ui/assets/timeline-definition-IT6M3QCI-CaRH3k4l.js.gz +0 -0
  862. package/dist/ui/assets/{treemap-KMMF4GRG-CPYIgjxE.js → treemap-KMMF4GRG-CUaLOV_B.js} +1 -1
  863. package/dist/ui/assets/{knowledgeRoutes-CivaUqha.js → useUserLocalStorage-C8sgXgXR.js} +1 -1
  864. package/dist/ui/assets/useUserLocalStorage-C8sgXgXR.js.gz +0 -0
  865. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-CERc7Rdb.js → xychartDiagram-PRI3JC2R-BlhkI9T_.js} +1 -1
  866. package/dist/ui/assets/xychartDiagram-PRI3JC2R-BlhkI9T_.js.gz +0 -0
  867. package/dist/ui/index.html +13 -12
  868. package/dist/ui/index.html.gz +0 -0
  869. package/package.json +12 -10
  870. package/scripts/postinstall.js +27 -19
  871. package/dist/cli/commands/daemon/sync.d.ts.map +0 -1
  872. package/dist/ui/assets/App-9s2WHM6S.js +0 -22
  873. package/dist/ui/assets/App-9s2WHM6S.js.gz +0 -0
  874. package/dist/ui/assets/App-BAdBsEnV.css +0 -1
  875. package/dist/ui/assets/App-BAdBsEnV.css.gz +0 -0
  876. package/dist/ui/assets/ArtifactConsentModal-ParNk5kW.js +0 -1
  877. package/dist/ui/assets/ArtifactConsentModal-ParNk5kW.js.gz +0 -0
  878. package/dist/ui/assets/ArtifactFullscreenPage-VQxLMCiN.js +0 -9
  879. package/dist/ui/assets/ArtifactFullscreenPage-VQxLMCiN.js.gz +0 -0
  880. package/dist/ui/assets/AutocompleteTextarea-3RchrIgk.js +0 -18
  881. package/dist/ui/assets/AutocompleteTextarea-3RchrIgk.js.gz +0 -0
  882. package/dist/ui/assets/CodeEditor.inner-D51Z_CLQ.js +0 -8
  883. package/dist/ui/assets/CodeEditor.inner-D51Z_CLQ.js.gz +0 -0
  884. package/dist/ui/assets/ConversationView-Dyddw2b1.js +0 -34
  885. package/dist/ui/assets/ConversationView-Dyddw2b1.js.gz +0 -0
  886. package/dist/ui/assets/KnowledgePage-CdftslnF.js +0 -24
  887. package/dist/ui/assets/KnowledgePage-CdftslnF.js.gz +0 -0
  888. package/dist/ui/assets/MobileApp-BdBMpnJ1.js +0 -1
  889. package/dist/ui/assets/MobileApp-BdBMpnJ1.js.gz +0 -0
  890. package/dist/ui/assets/StreamdownDemoPage-B9wbgp2s.js.gz +0 -0
  891. package/dist/ui/assets/ThemeSwitcher-ubn6IOz9.js +0 -1
  892. package/dist/ui/assets/ThemeSwitcher-ubn6IOz9.js.gz +0 -0
  893. package/dist/ui/assets/antd-C-HfEC4E.js +0 -400
  894. package/dist/ui/assets/antd-C-HfEC4E.js.gz +0 -0
  895. package/dist/ui/assets/architecture-U656AL7Q-dkBewUpN.js +0 -1
  896. package/dist/ui/assets/architectureDiagram-VXUJARFQ-ChmZt3zk.js +0 -36
  897. package/dist/ui/assets/architectureDiagram-VXUJARFQ-ChmZt3zk.js.gz +0 -0
  898. package/dist/ui/assets/blockDiagram-VD42YOAC-CzGHAHao.js.gz +0 -0
  899. package/dist/ui/assets/c4Diagram-YG6GDRKO-DscJyaWN.js.gz +0 -0
  900. package/dist/ui/assets/channel-DvRQqEqC.js +0 -1
  901. package/dist/ui/assets/chunk-55IACEB6-DojF2pZN.js +0 -1
  902. package/dist/ui/assets/chunk-ABZYJK2D-RzDCrjE6.js.gz +0 -0
  903. package/dist/ui/assets/chunk-AGHRB4JF-jidCS5Of.js.gz +0 -0
  904. package/dist/ui/assets/chunk-ATLVNIR6-BEIIfJtC.js.gz +0 -0
  905. package/dist/ui/assets/chunk-B4BG7PRW-B8b6dQQ2.js.gz +0 -0
  906. package/dist/ui/assets/chunk-DI55MBZ5-BfATX3V8.js.gz +0 -0
  907. package/dist/ui/assets/chunk-EXTU4WIE-BKt6lPJM.js +0 -1
  908. package/dist/ui/assets/chunk-HN2XXSSU-BCHvD80g.js.gz +0 -0
  909. package/dist/ui/assets/chunk-JA3XYJ7Z-Cp6dqHnY.js +0 -11
  910. package/dist/ui/assets/chunk-JA3XYJ7Z-Cp6dqHnY.js.gz +0 -0
  911. package/dist/ui/assets/chunk-JZLCHNYA-cKMooY3y.js.gz +0 -0
  912. package/dist/ui/assets/chunk-MI3HLSF2-BlzO5wOE.js.gz +0 -0
  913. package/dist/ui/assets/chunk-N4CR4FBY-pASDorUx.js +0 -2
  914. package/dist/ui/assets/chunk-N4CR4FBY-pASDorUx.js.gz +0 -0
  915. package/dist/ui/assets/chunk-QXUST7PY-C9l0muI0.js.gz +0 -0
  916. package/dist/ui/assets/chunk-QZHKN3VN-CZskCFCf.js +0 -1
  917. package/dist/ui/assets/chunk-S3R3BYOJ-VJiLzt2o.js +0 -2
  918. package/dist/ui/assets/chunk-S3R3BYOJ-VJiLzt2o.js.gz +0 -0
  919. package/dist/ui/assets/chunk-TZMSLE5B-DZwI0C_2.js.gz +0 -0
  920. package/dist/ui/assets/classDiagram-2ON5EDUG-BFASUbmZ.js +0 -1
  921. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-BFASUbmZ.js +0 -1
  922. package/dist/ui/assets/cose-bilkent-S5V4N54A-Ipik-oSD.js.gz +0 -0
  923. package/dist/ui/assets/dagre-6UL2VRFP-BDpyWQnh.js.gz +0 -0
  924. package/dist/ui/assets/dagre-CgA4KhUX.js.gz +0 -0
  925. package/dist/ui/assets/diagram-PSM6KHXK-B4GRzxLJ.js +0 -24
  926. package/dist/ui/assets/diagram-PSM6KHXK-B4GRzxLJ.js.gz +0 -0
  927. package/dist/ui/assets/diagram-QEK2KX5R-BWPW28XI.js.gz +0 -0
  928. package/dist/ui/assets/diagram-S2PKOQOG-BIHhcGoV.js.gz +0 -0
  929. package/dist/ui/assets/editor-C-HJ7Yw0.js +0 -39
  930. package/dist/ui/assets/editor-C-HJ7Yw0.js.gz +0 -0
  931. package/dist/ui/assets/emoji-D8F6B62m.js +0 -3
  932. package/dist/ui/assets/emoji-D8F6B62m.js.gz +0 -0
  933. package/dist/ui/assets/erDiagram-Q2GNP2WA-ubTaAFcK.js.gz +0 -0
  934. package/dist/ui/assets/flowDiagram-NV44I4VS-BHLCTYjI.js +0 -162
  935. package/dist/ui/assets/flowDiagram-NV44I4VS-BHLCTYjI.js.gz +0 -0
  936. package/dist/ui/assets/ganttDiagram-LVOFAZNH-ClC3pay1.js +0 -267
  937. package/dist/ui/assets/ganttDiagram-LVOFAZNH-ClC3pay1.js.gz +0 -0
  938. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-Clqpiswu.js +0 -65
  939. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-Clqpiswu.js.gz +0 -0
  940. package/dist/ui/assets/index-D9OElx9A.css +0 -1
  941. package/dist/ui/assets/index-D9OElx9A.css.gz +0 -0
  942. package/dist/ui/assets/index-DxPuzG7E.js +0 -350
  943. package/dist/ui/assets/index-DxPuzG7E.js.gz +0 -0
  944. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CrVickA2.js.gz +0 -0
  945. package/dist/ui/assets/kanban-definition-3W4ZIXB7-C_BsdHYL.js.gz +0 -0
  946. package/dist/ui/assets/katex-CamJ39w1.js +0 -257
  947. package/dist/ui/assets/katex-CamJ39w1.js.gz +0 -0
  948. package/dist/ui/assets/knowledgeRoutes-CivaUqha.js.gz +0 -0
  949. package/dist/ui/assets/linear-BsjageUB.js.gz +0 -0
  950. package/dist/ui/assets/mermaid-parser.core-DZdP-NFq.js.gz +0 -0
  951. package/dist/ui/assets/mermaid.core-TNrI0pHG.js +0 -11
  952. package/dist/ui/assets/mermaid.core-TNrI0pHG.js.gz +0 -0
  953. package/dist/ui/assets/message-BtWWJ9Af.js +0 -36
  954. package/dist/ui/assets/message-BtWWJ9Af.js.gz +0 -0
  955. package/dist/ui/assets/mindmap-definition-VGOIOE7T-BbmaUjMY.js.gz +0 -0
  956. package/dist/ui/assets/particles-Dv28pjOd.js.gz +0 -0
  957. package/dist/ui/assets/pieDiagram-ADFJNKIX-BbyjfYu8.js.gz +0 -0
  958. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-Bc3GqMKz.js.gz +0 -0
  959. package/dist/ui/assets/reactflow-BVYPxNhc.js +0 -2
  960. package/dist/ui/assets/reactflow-BVYPxNhc.js.gz +0 -0
  961. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-BQaKKL09.js.gz +0 -0
  962. package/dist/ui/assets/sandpack-BQW_FQ7G.js.gz +0 -0
  963. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DiJvDvhb.js +0 -10
  964. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DiJvDvhb.js.gz +0 -0
  965. package/dist/ui/assets/sequenceDiagram-WL72ISMW-Dw32824o.js.gz +0 -0
  966. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BCOpNdHV.js +0 -1
  967. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BCOpNdHV.js.gz +0 -0
  968. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-Cuqwvgfg.js +0 -1
  969. package/dist/ui/assets/syntax-VJrU5BEu.js +0 -10
  970. package/dist/ui/assets/syntax-VJrU5BEu.js.gz +0 -0
  971. package/dist/ui/assets/theme-DZtFA8b4.js +0 -1
  972. package/dist/ui/assets/timeline-definition-IT6M3QCI-Jh_WZzXv.js.gz +0 -0
  973. package/dist/ui/assets/xychartDiagram-PRI3JC2R-CERc7Rdb.js.gz +0 -0
  974. /package/dist/cli/commands/{admin → local}/sync-unix.d.ts +0 -0
@@ -31,9 +31,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
31
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
32
 
33
33
  // ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.15_tsx@4.22.4_typescript@6.0.3_yaml@2.9.0/node_modules/tsup/assets/cjs_shims.js
34
+ var getImportMetaUrl, importMetaUrl;
34
35
  var init_cjs_shims = __esm({
35
36
  "../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.15_tsx@4.22.4_typescript@6.0.3_yaml@2.9.0/node_modules/tsup/assets/cjs_shims.js"() {
36
37
  "use strict";
38
+ getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
39
+ importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
37
40
  }
38
41
  });
39
42
 
@@ -179,6 +182,71 @@ var init_executor_heartbeat = __esm({
179
182
  }
180
183
  });
181
184
 
185
+ // src/config/multitenancy.ts
186
+ function detectPostgresUrl(url) {
187
+ if (!url) return false;
188
+ const lower = url.toLowerCase();
189
+ return lower.startsWith("postgresql://") || lower.startsWith("postgres://") || lower.startsWith("pg://");
190
+ }
191
+ function resolveMultiTenancyDatabaseDialect(config = {}) {
192
+ if (process.env.AGOR_DB_DIALECT === "postgresql" || process.env.AGOR_DB_DIALECT === "sqlite") {
193
+ return process.env.AGOR_DB_DIALECT;
194
+ }
195
+ if (detectPostgresUrl(process.env.DATABASE_URL)) return "postgresql";
196
+ if (config.database?.dialect === "postgresql" || config.database?.dialect === "sqlite") {
197
+ return config.database.dialect;
198
+ }
199
+ if (detectPostgresUrl(config.database?.postgresql?.url) || config.database?.postgresql?.host) {
200
+ return "postgresql";
201
+ }
202
+ return "sqlite";
203
+ }
204
+ function resolveMultiTenancyConfig(config) {
205
+ const raw = config.multi_tenancy ?? {};
206
+ const mode = raw.mode ?? "static";
207
+ return {
208
+ mode,
209
+ static_tenant_id: raw.static_tenant_id?.trim() || DEFAULT_STATIC_TENANT_ID,
210
+ ...raw.auth_claim ? { auth_claim: raw.auth_claim } : {},
211
+ ...raw.trusted_header ? { trusted_header: raw.trusted_header } : {}
212
+ };
213
+ }
214
+ function assertValidMultiTenancyConfig(config) {
215
+ const resolved = resolveMultiTenancyConfig(config);
216
+ if (resolved.mode !== "static" && resolved.mode !== "required_from_auth") {
217
+ throw new Error("Config error: multi_tenancy.mode must be one of: static, required_from_auth");
218
+ }
219
+ if (!resolved.static_tenant_id) {
220
+ throw new Error("Config error: multi_tenancy.static_tenant_id must not be empty");
221
+ }
222
+ if (resolved.auth_claim && RESERVED_AUTH_CLAIMS.has(resolved.auth_claim)) {
223
+ throw new Error(
224
+ `Config error: multi_tenancy.auth_claim cannot be reserved JWT claim '${resolved.auth_claim}'`
225
+ );
226
+ }
227
+ if (resolved.mode === "required_from_auth") {
228
+ if (resolveMultiTenancyDatabaseDialect(config) !== "postgresql") {
229
+ throw new Error(
230
+ "Config error: multi_tenancy.required_from_auth requires database.dialect: postgresql"
231
+ );
232
+ }
233
+ if (!resolved.auth_claim && !resolved.trusted_header) {
234
+ throw new Error(
235
+ "Config error: multi_tenancy.required_from_auth requires multi_tenancy.auth_claim or multi_tenancy.trusted_header"
236
+ );
237
+ }
238
+ }
239
+ }
240
+ var DEFAULT_STATIC_TENANT_ID, RESERVED_AUTH_CLAIMS;
241
+ var init_multitenancy = __esm({
242
+ "src/config/multitenancy.ts"() {
243
+ "use strict";
244
+ init_cjs_shims();
245
+ DEFAULT_STATIC_TENANT_ID = "default";
246
+ RESERVED_AUTH_CLAIMS = /* @__PURE__ */ new Set(["aud", "exp", "iat", "iss", "jti", "nbf", "sub", "type"]);
247
+ }
248
+ });
249
+
182
250
  // src/config/types.ts
183
251
  var init_types = __esm({
184
252
  "src/config/types.ts"() {
@@ -216,7 +284,10 @@ function writeCachedConfig(configPath, config, key) {
216
284
  cachedEntry = { path: configPath, config: structuredClone(config), key };
217
285
  }
218
286
  function parseAndValidateConfig(content) {
219
- const parsed = import_js_yaml.default.load(content);
287
+ if (content.trim() === "") {
288
+ return {};
289
+ }
290
+ const parsed = yaml.load(content);
220
291
  const finalConfig = parsed || {};
221
292
  validateConfig(finalConfig);
222
293
  return finalConfig;
@@ -245,6 +316,7 @@ To update: agor config set execution.unix_user_mode insulated`
245
316
  `Config error: execution.managed_envs_execution_mode must be one of: hybrid, webhook-only`
246
317
  );
247
318
  }
319
+ assertValidMultiTenancyConfig(config);
248
320
  validateOptionalHttpUrl(
249
321
  config.external_launch,
250
322
  "login_redirect_url",
@@ -305,7 +377,12 @@ function getDefaultConfig() {
305
377
  // Default: sync passwords to Unix
306
378
  executor_heartbeat: resolveExecutorHeartbeatConfig()
307
379
  },
308
- analytics: getDefaultAnalyticsConfig()
380
+ analytics: getDefaultAnalyticsConfig(),
381
+ telemetry: {},
382
+ multi_tenancy: {
383
+ mode: "static",
384
+ static_tenant_id: "default"
385
+ }
309
386
  };
310
387
  }
311
388
  function loadConfigSync() {
@@ -349,7 +426,7 @@ function loadConfigSync() {
349
426
  }
350
427
  return finalConfig;
351
428
  }
352
- var import_node_fs2, import_promises, import_node_os, import_node_path2, import_js_yaml, NO_FILE, NO_FILE_KEY, cachedEntry;
429
+ var import_node_fs2, import_promises, import_node_os, import_node_path2, yaml, NO_FILE, NO_FILE_KEY, cachedEntry;
353
430
  var init_config_manager = __esm({
354
431
  "src/config/config-manager.ts"() {
355
432
  "use strict";
@@ -358,10 +435,11 @@ var init_config_manager = __esm({
358
435
  import_promises = __toESM(require("fs/promises"), 1);
359
436
  import_node_os = __toESM(require("os"), 1);
360
437
  import_node_path2 = __toESM(require("path"), 1);
361
- import_js_yaml = __toESM(require("js-yaml"), 1);
438
+ yaml = __toESM(require("js-yaml"), 1);
362
439
  init_analytics_defaults();
363
440
  init_constants();
364
441
  init_executor_heartbeat();
442
+ init_multitenancy();
365
443
  init_types();
366
444
  NO_FILE = -1;
367
445
  NO_FILE_KEY = { mtimeMs: NO_FILE, size: 0 };
@@ -540,15 +618,35 @@ var init_schedule = __esm({
540
618
  });
541
619
 
542
620
  // src/types/session.ts
621
+ var SessionStatus, EXECUTING_SESSION_STATUSES;
543
622
  var init_session = __esm({
544
623
  "src/types/session.ts"() {
545
624
  "use strict";
546
625
  init_cjs_shims();
626
+ SessionStatus = {
627
+ IDLE: "idle",
628
+ RUNNING: "running",
629
+ STOPPING: "stopping",
630
+ // Stop requested, waiting for task to stop
631
+ AWAITING_PERMISSION: "awaiting_permission",
632
+ AWAITING_INPUT: "awaiting_input",
633
+ // Legacy / pre-#1177: AskUserQuestion was disallowed at the SDK; new sessions never enter this state, kept for historical rows
634
+ TIMED_OUT: "timed_out",
635
+ // Permission/input request timed out, executor exited — user must re-prompt
636
+ COMPLETED: "completed",
637
+ FAILED: "failed"
638
+ };
639
+ EXECUTING_SESSION_STATUSES = /* @__PURE__ */ new Set([
640
+ SessionStatus.RUNNING,
641
+ SessionStatus.STOPPING,
642
+ SessionStatus.AWAITING_PERMISSION,
643
+ SessionStatus.AWAITING_INPUT
644
+ ]);
547
645
  }
548
646
  });
549
647
 
550
648
  // src/types/task.ts
551
- var TaskStatus, TERMINAL_TASK_STATUSES;
649
+ var TaskStatus, TERMINAL_TASK_STATUSES, EXECUTING_TASK_STATUSES;
552
650
  var init_task = __esm({
553
651
  "src/types/task.ts"() {
554
652
  "use strict";
@@ -576,6 +674,12 @@ var init_task = __esm({
576
674
  TaskStatus.STOPPED,
577
675
  TaskStatus.TIMED_OUT
578
676
  ]);
677
+ EXECUTING_TASK_STATUSES = /* @__PURE__ */ new Set([
678
+ TaskStatus.RUNNING,
679
+ TaskStatus.STOPPING,
680
+ TaskStatus.AWAITING_PERMISSION,
681
+ TaskStatus.AWAITING_INPUT
682
+ ]);
579
683
  }
580
684
  });
581
685
 
@@ -587,6 +691,14 @@ var init_template = __esm({
587
691
  }
588
692
  });
589
693
 
694
+ // src/types/tenant.ts
695
+ var init_tenant = __esm({
696
+ "src/types/tenant.ts"() {
697
+ "use strict";
698
+ init_cjs_shims();
699
+ }
700
+ });
701
+
590
702
  // src/types/ui.ts
591
703
  var init_ui = __esm({
592
704
  "src/types/ui.ts"() {
@@ -677,6 +789,7 @@ var init_types2 = __esm({
677
789
  init_session();
678
790
  init_task();
679
791
  init_template();
792
+ init_tenant();
680
793
  init_ui();
681
794
  init_user();
682
795
  init_utils();
@@ -702,6 +815,7 @@ __export(schema_postgres_exports, {
702
815
  cardTypes: () => cardTypes,
703
816
  cards: () => cards,
704
817
  gatewayChannels: () => gatewayChannels,
818
+ gatewayOutboundMessages: () => gatewayOutboundMessages,
705
819
  groupMemberships: () => groupMemberships,
706
820
  groups: () => groups,
707
821
  kbDocumentUnits: () => kbDocumentUnits,
@@ -720,6 +834,8 @@ __export(schema_postgres_exports, {
720
834
  serializedSessions: () => serializedSessions,
721
835
  sessionEnvSelections: () => sessionEnvSelections,
722
836
  sessionMcpServers: () => sessionMcpServers,
837
+ sessionRelationships: () => sessionRelationships,
838
+ sessionRelationshipsRelations: () => sessionRelationshipsRelations,
723
839
  sessions: () => sessions,
724
840
  sessionsRelations: () => sessionsRelations,
725
841
  tasks: () => tasks,
@@ -728,7 +844,7 @@ __export(schema_postgres_exports, {
728
844
  userMcpOauthTokens: () => userMcpOauthTokens,
729
845
  users: () => users
730
846
  });
731
- var import_drizzle_orm, import_pg_core, bytea, t, sessions, 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, branchesRelations, schedulesRelations;
847
+ var import_drizzle_orm, import_pg_core, bytea, t, sessions, sessionRelationships, tasks, serializedSessions, messages, boards, repos, branches, branchOwners, boardOwners, schedules, users, groups, groupMemberships, branchGroupGrants, boardGroupGrants, appVariables, userApiKeys, mcpServers, cardTypes, cards, artifacts, artifactTrustGrants, boardObjects, sessionMcpServers, userMcpOauthTokens, boardComments, gatewayChannels, threadSessionMap, gatewayOutboundMessages, sessionEnvSelections, kbNamespaces, kbNamespaceAcl, kbDocuments, kbDocumentVersions, kbDocumentUnits, kbEmbeddingSpaces, kbGraphNodes, kbGraphEdges, sessionsRelations, sessionRelationshipsRelations, branchesRelations, schedulesRelations;
732
848
  var init_schema_postgres = __esm({
733
849
  "src/db/schema.postgres.ts"() {
734
850
  "use strict";
@@ -749,6 +865,7 @@ var init_schema_postgres = __esm({
749
865
  sessions = (0, import_pg_core.pgTable)(
750
866
  "sessions",
751
867
  {
868
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
752
869
  // Primary identity
753
870
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).primaryKey(),
754
871
  created_at: t.timestamp("created_at").notNull(),
@@ -808,7 +925,9 @@ var init_schema_postgres = __esm({
808
925
  data: t.json("data").$type().notNull()
809
926
  },
810
927
  (table) => ({
928
+ tenantIdx: (0, import_pg_core.index)("sessions_tenant_id_idx").on(table.tenant_id),
811
929
  statusIdx: (0, import_pg_core.index)("sessions_status_idx").on(table.status),
930
+ statusReadyIdx: (0, import_pg_core.index)("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
812
931
  agenticToolIdx: (0, import_pg_core.index)("sessions_agentic_tool_idx").on(table.agentic_tool),
813
932
  boardIdx: (0, import_pg_core.index)("sessions_board_idx").on(table.board_id),
814
933
  branchIdx: (0, import_pg_core.index)("sessions_branch_idx").on(table.branch_id),
@@ -820,12 +939,57 @@ var init_schema_postgres = __esm({
820
939
  // Partial unique index — covering for the scheduler's dedup lookup
821
940
  // AND serves as the DB-level guard against check-then-create races
822
941
  // in spawnScheduledSession.
823
- scheduleRunUnique: (0, import_pg_core.uniqueIndex)("sessions_schedule_run_unique").on(table.schedule_id, table.scheduled_run_at).where(import_drizzle_orm.sql`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
942
+ scheduleRunUnique: (0, import_pg_core.uniqueIndex)("sessions_schedule_run_unique").on(table.tenant_id, table.schedule_id, table.scheduled_run_at).where(import_drizzle_orm.sql`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
943
+ })
944
+ );
945
+ sessionRelationships = (0, import_pg_core.pgTable)(
946
+ "session_relationships",
947
+ {
948
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
949
+ relationship_id: (0, import_pg_core.varchar)("relationship_id", { length: 36 }).primaryKey(),
950
+ source_session_id: (0, import_pg_core.varchar)("source_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
951
+ target_session_id: (0, import_pg_core.varchar)("target_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
952
+ relationship_type: (0, import_pg_core.text)("relationship_type", { enum: ["remote_create"] }).notNull(),
953
+ created_by: (0, import_pg_core.varchar)("created_by", { length: 36 }).notNull(),
954
+ created_at: t.timestamp("created_at").notNull(),
955
+ updated_at: t.timestamp("updated_at"),
956
+ callback_enabled: t.bool("callback_enabled").notNull().default(false),
957
+ callback_session_id: (0, import_pg_core.varchar)("callback_session_id", { length: 36 }).references(
958
+ () => sessions.session_id,
959
+ {
960
+ onDelete: "set null"
961
+ }
962
+ ),
963
+ data: t.json("data")
964
+ },
965
+ (table) => ({
966
+ tenantIdx: (0, import_pg_core.index)("session_relationships_tenant_id_idx").on(table.tenant_id),
967
+ sourceIdx: (0, import_pg_core.index)("session_relationships_source_idx").on(table.source_session_id),
968
+ targetIdx: (0, import_pg_core.index)("session_relationships_target_idx").on(table.target_session_id),
969
+ callbackIdx: (0, import_pg_core.index)("session_relationships_callback_idx").on(table.callback_session_id),
970
+ // Composite indexes so the OR predicate in dispatchCompletionCallbacks
971
+ // (WHERE source_session_id = $1 OR target_session_id = $2) uses BitmapOr
972
+ // over these instead of a full tenant table scan via tenant_id_idx.
973
+ tenantSourceIdx: (0, import_pg_core.index)("session_relationships_tenant_source_idx").on(
974
+ table.tenant_id,
975
+ table.source_session_id
976
+ ),
977
+ tenantTargetIdx: (0, import_pg_core.index)("session_relationships_tenant_target_idx").on(
978
+ table.tenant_id,
979
+ table.target_session_id
980
+ ),
981
+ sourceTargetTypeUnique: (0, import_pg_core.uniqueIndex)("session_relationships_source_target_type_unique").on(
982
+ table.tenant_id,
983
+ table.source_session_id,
984
+ table.target_session_id,
985
+ table.relationship_type
986
+ )
824
987
  })
825
988
  );
826
989
  tasks = (0, import_pg_core.pgTable)(
827
990
  "tasks",
828
991
  {
992
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
829
993
  task_id: (0, import_pg_core.varchar)("task_id", { length: 36 }).primaryKey(),
830
994
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
831
995
  created_at: t.timestamp("created_at").notNull(),
@@ -855,19 +1019,23 @@ var init_schema_postgres = __esm({
855
1019
  data: t.json("data").$type().notNull()
856
1020
  },
857
1021
  (table) => ({
1022
+ tenantIdx: (0, import_pg_core.index)("tasks_tenant_id_idx").on(table.tenant_id),
858
1023
  sessionIdx: (0, import_pg_core.index)("tasks_session_idx").on(table.session_id),
859
1024
  statusIdx: (0, import_pg_core.index)("tasks_status_idx").on(table.status),
860
1025
  createdIdx: (0, import_pg_core.index)("tasks_created_idx").on(table.created_at),
1026
+ // Composite for "latest task for session" queries (ORDER BY created_at DESC LIMIT 1).
1027
+ sessionCreatedIdx: (0, import_pg_core.index)("tasks_session_created_idx").on(table.session_id, table.created_at),
861
1028
  queueIdx: (0, import_pg_core.index)("tasks_queue_idx").on(table.session_id, table.status, table.queue_position),
862
1029
  // Partial unique index — defense-in-depth for `tasks.createPending` race
863
1030
  // serialization. Only QUEUED rows are constrained; CREATED/RUNNING/done
864
1031
  // rows have NULL queue_position and are unaffected.
865
- queuedPositionUnique: (0, import_pg_core.uniqueIndex)("tasks_queued_position_unique").on(table.session_id, table.queue_position).where(import_drizzle_orm.sql`${table.status} = 'queued'`)
1032
+ queuedPositionUnique: (0, import_pg_core.uniqueIndex)("tasks_queued_position_unique").on(table.tenant_id, table.session_id, table.queue_position).where(import_drizzle_orm.sql`${table.status} = 'queued'`)
866
1033
  })
867
1034
  );
868
1035
  serializedSessions = (0, import_pg_core.pgTable)(
869
1036
  "serialized_sessions",
870
1037
  {
1038
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
871
1039
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
872
1040
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
873
1041
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
@@ -883,6 +1051,7 @@ var init_schema_postgres = __esm({
883
1051
  // gzipped; NULL while status='processing'
884
1052
  },
885
1053
  (table) => ({
1054
+ tenantIdx: (0, import_pg_core.index)("serialized_sessions_tenant_id_idx").on(table.tenant_id),
886
1055
  sessionTurnIdx: (0, import_pg_core.index)("serialized_sessions_session_turn_idx").on(
887
1056
  table.session_id,
888
1057
  table.turn_index
@@ -893,6 +1062,7 @@ var init_schema_postgres = __esm({
893
1062
  messages = (0, import_pg_core.pgTable)(
894
1063
  "messages",
895
1064
  {
1065
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
896
1066
  // Primary identity
897
1067
  message_id: (0, import_pg_core.varchar)("message_id", { length: 36 }).primaryKey(),
898
1068
  created_at: t.timestamp("created_at").notNull(),
@@ -932,15 +1102,23 @@ var init_schema_postgres = __esm({
932
1102
  data: t.json("data").$type().notNull()
933
1103
  },
934
1104
  (table) => ({
1105
+ tenantIdx: (0, import_pg_core.index)("messages_tenant_id_idx").on(table.tenant_id),
1106
+ tenantTimestampIdx: (0, import_pg_core.index)("messages_tenant_timestamp_idx").on(table.tenant_id, table.timestamp),
935
1107
  // Indexes for efficient lookups
936
1108
  sessionIdx: (0, import_pg_core.index)("messages_session_id_idx").on(table.session_id),
937
1109
  taskIdx: (0, import_pg_core.index)("messages_task_id_idx").on(table.task_id),
938
- sessionIndexIdx: (0, import_pg_core.index)("messages_session_index_idx").on(table.session_id, table.index)
1110
+ sessionIndexIdx: (0, import_pg_core.index)("messages_session_index_idx").on(table.session_id, table.index),
1111
+ timestampIdx: (0, import_pg_core.index)("messages_timestamp_idx").on(table.timestamp),
1112
+ sessionTimestampIdx: (0, import_pg_core.index)("messages_session_timestamp_idx").on(
1113
+ table.session_id,
1114
+ table.timestamp
1115
+ )
939
1116
  })
940
1117
  );
941
1118
  boards = (0, import_pg_core.pgTable)(
942
1119
  "boards",
943
1120
  {
1121
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
944
1122
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).primaryKey(),
945
1123
  created_at: t.timestamp("created_at").notNull(),
946
1124
  updated_at: t.timestamp("updated_at"),
@@ -948,7 +1126,7 @@ var init_schema_postgres = __esm({
948
1126
  created_by: (0, import_pg_core.varchar)("created_by", { length: 36 }).notNull(),
949
1127
  // Materialized for lookups
950
1128
  name: (0, import_pg_core.text)("name").notNull(),
951
- slug: (0, import_pg_core.text)("slug").unique(),
1129
+ slug: (0, import_pg_core.text)("slug"),
952
1130
  primary_assistant_id: (0, import_pg_core.varchar)("primary_assistant_id", { length: 36 }).references(
953
1131
  () => branches.branch_id,
954
1132
  {
@@ -963,18 +1141,21 @@ var init_schema_postgres = __esm({
963
1141
  archived_by: (0, import_pg_core.varchar)("archived_by", { length: 36 })
964
1142
  },
965
1143
  (table) => ({
1144
+ tenantIdx: (0, import_pg_core.index)("boards_tenant_id_idx").on(table.tenant_id),
966
1145
  nameIdx: (0, import_pg_core.index)("boards_name_idx").on(table.name),
967
- slugIdx: (0, import_pg_core.index)("boards_slug_idx").on(table.slug)
1146
+ slugIdx: (0, import_pg_core.index)("boards_slug_idx").on(table.slug),
1147
+ slugTenantUnique: (0, import_pg_core.uniqueIndex)("boards_tenant_slug_unique").on(table.tenant_id, table.slug)
968
1148
  })
969
1149
  );
970
1150
  repos = (0, import_pg_core.pgTable)(
971
1151
  "repos",
972
1152
  {
1153
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
973
1154
  repo_id: (0, import_pg_core.varchar)("repo_id", { length: 36 }).primaryKey(),
974
1155
  created_at: t.timestamp("created_at").notNull(),
975
1156
  updated_at: t.timestamp("updated_at"),
976
1157
  // Materialized for querying
977
- slug: (0, import_pg_core.text)("slug").notNull().unique(),
1158
+ slug: (0, import_pg_core.text)("slug").notNull(),
978
1159
  repo_type: (0, import_pg_core.text)("repo_type", { enum: ["remote", "local"] }).notNull().default("remote"),
979
1160
  // Unix group for repo-level git access (agor_rp_<short-id>)
980
1161
  // Users who have access to ANY branch in this repo get added to this group.
@@ -985,12 +1166,15 @@ var init_schema_postgres = __esm({
985
1166
  data: t.json("data").$type().notNull()
986
1167
  },
987
1168
  (table) => ({
988
- slugIdx: (0, import_pg_core.index)("repos_slug_idx").on(table.slug)
1169
+ tenantIdx: (0, import_pg_core.index)("repos_tenant_id_idx").on(table.tenant_id),
1170
+ slugIdx: (0, import_pg_core.index)("repos_slug_idx").on(table.slug),
1171
+ slugTenantUnique: (0, import_pg_core.uniqueIndex)("repos_tenant_slug_unique").on(table.tenant_id, table.slug)
989
1172
  })
990
1173
  );
991
1174
  branches = (0, import_pg_core.pgTable)(
992
1175
  "branches",
993
1176
  {
1177
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
994
1178
  // Primary identity
995
1179
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).primaryKey(),
996
1180
  repo_id: (0, import_pg_core.varchar)("repo_id", { length: 36 }).notNull().references(() => repos.repo_id, { onDelete: "cascade" }),
@@ -1065,6 +1249,7 @@ var init_schema_postgres = __esm({
1065
1249
  data: t.json("data").$type().notNull()
1066
1250
  },
1067
1251
  (table) => ({
1252
+ tenantIdx: (0, import_pg_core.index)("branches_tenant_id_idx").on(table.tenant_id),
1068
1253
  repoIdx: (0, import_pg_core.index)("branches_repo_idx").on(table.repo_id),
1069
1254
  nameIdx: (0, import_pg_core.index)("branches_name_idx").on(table.name),
1070
1255
  refIdx: (0, import_pg_core.index)("branches_ref_idx").on(table.ref),
@@ -1078,22 +1263,26 @@ var init_schema_postgres = __esm({
1078
1263
  branchOwners = (0, import_pg_core.pgTable)(
1079
1264
  "branch_owners",
1080
1265
  {
1266
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1081
1267
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1082
1268
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1083
1269
  created_at: t.timestamp("created_at").defaultNow()
1084
1270
  },
1085
1271
  (table) => ({
1272
+ tenantIdx: (0, import_pg_core.index)("branch_owners_tenant_id_idx").on(table.tenant_id),
1086
1273
  pk: (0, import_pg_core.primaryKey)({ columns: [table.branch_id, table.user_id] })
1087
1274
  })
1088
1275
  );
1089
1276
  boardOwners = (0, import_pg_core.pgTable)(
1090
1277
  "board_owners",
1091
1278
  {
1279
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1092
1280
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1093
1281
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1094
1282
  created_at: t.timestamp("created_at")
1095
1283
  },
1096
1284
  (table) => ({
1285
+ tenantIdx: (0, import_pg_core.index)("board_owners_tenant_id_idx").on(table.tenant_id),
1097
1286
  pk: (0, import_pg_core.primaryKey)({ columns: [table.board_id, table.user_id] }),
1098
1287
  userIdx: (0, import_pg_core.index)("board_owners_user_idx").on(table.user_id)
1099
1288
  })
@@ -1101,6 +1290,7 @@ var init_schema_postgres = __esm({
1101
1290
  schedules = (0, import_pg_core.pgTable)(
1102
1291
  "schedules",
1103
1292
  {
1293
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1104
1294
  schedule_id: (0, import_pg_core.varchar)("schedule_id", { length: 36 }).primaryKey(),
1105
1295
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1106
1296
  name: (0, import_pg_core.text)("name").notNull(),
@@ -1124,6 +1314,7 @@ var init_schema_postgres = __esm({
1124
1314
  created_by: (0, import_pg_core.varchar)("created_by", { length: 36 }).notNull().references(() => users.user_id)
1125
1315
  },
1126
1316
  (table) => ({
1317
+ tenantIdx: (0, import_pg_core.index)("schedules_tenant_id_idx").on(table.tenant_id),
1127
1318
  enabledNextRunIdx: (0, import_pg_core.index)("schedules_enabled_next_run_idx").on(table.enabled, table.next_run_at),
1128
1319
  branchIdx: (0, import_pg_core.index)("schedules_branch_idx").on(table.branch_id),
1129
1320
  createdByIdx: (0, import_pg_core.index)("schedules_created_by_idx").on(table.created_by)
@@ -1132,12 +1323,13 @@ var init_schema_postgres = __esm({
1132
1323
  users = (0, import_pg_core.pgTable)(
1133
1324
  "users",
1134
1325
  {
1326
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1135
1327
  // Primary identity
1136
1328
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).primaryKey(),
1137
1329
  created_at: t.timestamp("created_at").notNull(),
1138
1330
  updated_at: t.timestamp("updated_at"),
1139
1331
  // Materialized for auth lookups
1140
- email: (0, import_pg_core.text)("email").unique().notNull(),
1332
+ email: (0, import_pg_core.text)("email").notNull(),
1141
1333
  password: (0, import_pg_core.text)("password").notNull(),
1142
1334
  // bcrypt hashed
1143
1335
  // Basic profile (materialized for display)
@@ -1153,16 +1345,22 @@ var init_schema_postgres = __esm({
1153
1345
  onboarding_completed: t.bool("onboarding_completed").notNull().default(false),
1154
1346
  // Force password change flag (admin-settable, auto-cleared on password change)
1155
1347
  must_change_password: t.bool("must_change_password").notNull().default(false),
1348
+ // Auth invalidation marker. Password changes set this timestamp so any
1349
+ // previously issued browser access or refresh token is rejected.
1350
+ tokens_valid_after: t.timestamp("tokens_valid_after"),
1156
1351
  // JSON blob for profile/preferences
1157
1352
  data: t.json("data").$type().notNull()
1158
1353
  },
1159
1354
  (table) => ({
1160
- emailIdx: (0, import_pg_core.index)("users_email_idx").on(table.email)
1355
+ tenantIdx: (0, import_pg_core.index)("users_tenant_id_idx").on(table.tenant_id),
1356
+ emailIdx: (0, import_pg_core.index)("users_email_idx").on(table.email),
1357
+ emailTenantUnique: (0, import_pg_core.uniqueIndex)("users_tenant_email_unique").on(table.tenant_id, table.email)
1161
1358
  })
1162
1359
  );
1163
1360
  groups = (0, import_pg_core.pgTable)(
1164
1361
  "groups",
1165
1362
  {
1363
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1166
1364
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).primaryKey(),
1167
1365
  name: (0, import_pg_core.text)("name").notNull(),
1168
1366
  slug: (0, import_pg_core.text)("slug").notNull(),
@@ -1175,13 +1373,15 @@ var init_schema_postgres = __esm({
1175
1373
  updated_at: t.timestamp("updated_at")
1176
1374
  },
1177
1375
  (table) => ({
1178
- slugIdx: (0, import_pg_core.uniqueIndex)("groups_slug_idx").on(table.slug),
1376
+ tenantIdx: (0, import_pg_core.index)("groups_tenant_id_idx").on(table.tenant_id),
1377
+ slugIdx: (0, import_pg_core.uniqueIndex)("groups_tenant_slug_unique").on(table.tenant_id, table.slug),
1179
1378
  archivedIdx: (0, import_pg_core.index)("groups_archived_idx").on(table.archived)
1180
1379
  })
1181
1380
  );
1182
1381
  groupMemberships = (0, import_pg_core.pgTable)(
1183
1382
  "group_memberships",
1184
1383
  {
1384
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1185
1385
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1186
1386
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1187
1387
  added_by: (0, import_pg_core.varchar)("added_by", { length: 36 }).references(() => users.user_id, {
@@ -1190,6 +1390,7 @@ var init_schema_postgres = __esm({
1190
1390
  created_at: t.timestamp("created_at").notNull()
1191
1391
  },
1192
1392
  (table) => ({
1393
+ tenantIdx: (0, import_pg_core.index)("group_memberships_tenant_id_idx").on(table.tenant_id),
1193
1394
  pk: (0, import_pg_core.primaryKey)({ columns: [table.group_id, table.user_id] }),
1194
1395
  userIdx: (0, import_pg_core.index)("group_memberships_user_idx").on(table.user_id)
1195
1396
  })
@@ -1197,6 +1398,7 @@ var init_schema_postgres = __esm({
1197
1398
  branchGroupGrants = (0, import_pg_core.pgTable)(
1198
1399
  "branch_group_grants",
1199
1400
  {
1401
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1200
1402
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1201
1403
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1202
1404
  can: (0, import_pg_core.text)("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
@@ -1208,6 +1410,7 @@ var init_schema_postgres = __esm({
1208
1410
  updated_at: t.timestamp("updated_at")
1209
1411
  },
1210
1412
  (table) => ({
1413
+ tenantIdx: (0, import_pg_core.index)("branch_group_grants_tenant_id_idx").on(table.tenant_id),
1211
1414
  pk: (0, import_pg_core.primaryKey)({ columns: [table.branch_id, table.group_id] }),
1212
1415
  groupIdx: (0, import_pg_core.index)("branch_group_grants_group_idx").on(table.group_id)
1213
1416
  })
@@ -1215,6 +1418,7 @@ var init_schema_postgres = __esm({
1215
1418
  boardGroupGrants = (0, import_pg_core.pgTable)(
1216
1419
  "board_group_grants",
1217
1420
  {
1421
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1218
1422
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1219
1423
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1220
1424
  can: (0, import_pg_core.text)("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
@@ -1226,6 +1430,7 @@ var init_schema_postgres = __esm({
1226
1430
  updated_at: t.timestamp("updated_at")
1227
1431
  },
1228
1432
  (table) => ({
1433
+ tenantIdx: (0, import_pg_core.index)("board_group_grants_tenant_id_idx").on(table.tenant_id),
1229
1434
  pk: (0, import_pg_core.primaryKey)({ columns: [table.board_id, table.group_id] }),
1230
1435
  groupIdx: (0, import_pg_core.index)("board_group_grants_group_idx").on(table.group_id)
1231
1436
  })
@@ -1233,6 +1438,7 @@ var init_schema_postgres = __esm({
1233
1438
  appVariables = (0, import_pg_core.pgTable)(
1234
1439
  "app_variables",
1235
1440
  {
1441
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1236
1442
  variable_id: (0, import_pg_core.varchar)("variable_id", { length: 36 }).primaryKey(),
1237
1443
  namespace: (0, import_pg_core.text)("namespace").notNull(),
1238
1444
  key: (0, import_pg_core.text)("key").notNull(),
@@ -1248,13 +1454,19 @@ var init_schema_postgres = __esm({
1248
1454
  updated_at: t.timestamp("updated_at").notNull()
1249
1455
  },
1250
1456
  (table) => ({
1251
- namespaceKeyIdx: (0, import_pg_core.uniqueIndex)("app_variables_namespace_key_idx").on(table.namespace, table.key),
1457
+ tenantIdx: (0, import_pg_core.index)("app_variables_tenant_id_idx").on(table.tenant_id),
1458
+ namespaceKeyIdx: (0, import_pg_core.uniqueIndex)("app_variables_tenant_namespace_key_unique").on(
1459
+ table.tenant_id,
1460
+ table.namespace,
1461
+ table.key
1462
+ ),
1252
1463
  namespaceIdx: (0, import_pg_core.index)("app_variables_namespace_idx").on(table.namespace)
1253
1464
  })
1254
1465
  );
1255
1466
  userApiKeys = (0, import_pg_core.pgTable)(
1256
1467
  "user_api_keys",
1257
1468
  {
1469
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1258
1470
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1259
1471
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1260
1472
  name: (0, import_pg_core.text)("name").notNull(),
@@ -1266,6 +1478,7 @@ var init_schema_postgres = __esm({
1266
1478
  last_used_at: t.timestamp("last_used_at")
1267
1479
  },
1268
1480
  (table) => ({
1481
+ tenantIdx: (0, import_pg_core.index)("user_api_keys_tenant_id_idx").on(table.tenant_id),
1269
1482
  userIdx: (0, import_pg_core.index)("user_api_keys_user_idx").on(table.user_id),
1270
1483
  prefixIdx: (0, import_pg_core.index)("user_api_keys_prefix_idx").on(table.prefix)
1271
1484
  })
@@ -1273,6 +1486,7 @@ var init_schema_postgres = __esm({
1273
1486
  mcpServers = (0, import_pg_core.pgTable)(
1274
1487
  "mcp_servers",
1275
1488
  {
1489
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1276
1490
  // Primary identity
1277
1491
  mcp_server_id: (0, import_pg_core.varchar)("mcp_server_id", { length: 36 }).primaryKey(),
1278
1492
  created_at: t.timestamp("created_at").notNull(),
@@ -1299,6 +1513,7 @@ var init_schema_postgres = __esm({
1299
1513
  data: t.json("data").$type().notNull()
1300
1514
  },
1301
1515
  (table) => ({
1516
+ tenantIdx: (0, import_pg_core.index)("mcp_servers_tenant_id_idx").on(table.tenant_id),
1302
1517
  nameIdx: (0, import_pg_core.index)("mcp_servers_name_idx").on(table.name),
1303
1518
  scopeIdx: (0, import_pg_core.index)("mcp_servers_scope_idx").on(table.scope),
1304
1519
  ownerIdx: (0, import_pg_core.index)("mcp_servers_owner_idx").on(table.owner_user_id),
@@ -1308,6 +1523,7 @@ var init_schema_postgres = __esm({
1308
1523
  cardTypes = (0, import_pg_core.pgTable)(
1309
1524
  "card_types",
1310
1525
  {
1526
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1311
1527
  card_type_id: (0, import_pg_core.varchar)("card_type_id", { length: 36 }).primaryKey(),
1312
1528
  name: (0, import_pg_core.text)("name").notNull(),
1313
1529
  emoji: (0, import_pg_core.text)("emoji"),
@@ -1319,12 +1535,14 @@ var init_schema_postgres = __esm({
1319
1535
  updated_at: t.timestamp("updated_at").notNull()
1320
1536
  },
1321
1537
  (table) => ({
1538
+ tenantIdx: (0, import_pg_core.index)("card_types_tenant_id_idx").on(table.tenant_id),
1322
1539
  nameIdx: (0, import_pg_core.index)("card_types_name_idx").on(table.name)
1323
1540
  })
1324
1541
  );
1325
1542
  cards = (0, import_pg_core.pgTable)(
1326
1543
  "cards",
1327
1544
  {
1545
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1328
1546
  card_id: (0, import_pg_core.varchar)("card_id", { length: 36 }).primaryKey(),
1329
1547
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1330
1548
  card_type_id: (0, import_pg_core.varchar)("card_type_id", { length: 36 }).references(() => cardTypes.card_type_id, {
@@ -1345,6 +1563,7 @@ var init_schema_postgres = __esm({
1345
1563
  archived_at: t.timestamp("archived_at")
1346
1564
  },
1347
1565
  (table) => ({
1566
+ tenantIdx: (0, import_pg_core.index)("cards_tenant_id_idx").on(table.tenant_id),
1348
1567
  boardIdx: (0, import_pg_core.index)("cards_board_idx").on(table.board_id),
1349
1568
  cardTypeIdx: (0, import_pg_core.index)("cards_card_type_idx").on(table.card_type_id),
1350
1569
  titleIdx: (0, import_pg_core.index)("cards_title_idx").on(table.title),
@@ -1355,10 +1574,17 @@ var init_schema_postgres = __esm({
1355
1574
  artifacts = (0, import_pg_core.pgTable)(
1356
1575
  "artifacts",
1357
1576
  {
1577
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1358
1578
  artifact_id: (0, import_pg_core.varchar)("artifact_id", { length: 36 }).primaryKey(),
1359
1579
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).references(() => branches.branch_id, {
1360
1580
  onDelete: "set null"
1361
1581
  }),
1582
+ source_session_id: (0, import_pg_core.varchar)("source_session_id", { length: 36 }).references(
1583
+ () => sessions.session_id,
1584
+ {
1585
+ onDelete: "set null"
1586
+ }
1587
+ ),
1362
1588
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1363
1589
  name: (0, import_pg_core.text)("name").notNull(),
1364
1590
  description: (0, import_pg_core.text)("description"),
@@ -1384,7 +1610,9 @@ var init_schema_postgres = __esm({
1384
1610
  archived_at: t.timestamp("archived_at")
1385
1611
  },
1386
1612
  (table) => ({
1613
+ tenantIdx: (0, import_pg_core.index)("artifacts_tenant_id_idx").on(table.tenant_id),
1387
1614
  branchIdx: (0, import_pg_core.index)("artifacts_branch_idx").on(table.branch_id),
1615
+ sourceSessionIdx: (0, import_pg_core.index)("artifacts_source_session_idx").on(table.source_session_id),
1388
1616
  boardIdx: (0, import_pg_core.index)("artifacts_board_idx").on(table.board_id),
1389
1617
  archivedIdx: (0, import_pg_core.index)("artifacts_archived_idx").on(table.archived),
1390
1618
  publicIdx: (0, import_pg_core.index)("artifacts_public_idx").on(table.public)
@@ -1393,6 +1621,7 @@ var init_schema_postgres = __esm({
1393
1621
  artifactTrustGrants = (0, import_pg_core.pgTable)(
1394
1622
  "artifact_trust_grants",
1395
1623
  {
1624
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1396
1625
  grant_id: (0, import_pg_core.varchar)("grant_id", { length: 36 }).primaryKey(),
1397
1626
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull(),
1398
1627
  scope_type: (0, import_pg_core.text)("scope_type").notNull(),
@@ -1403,6 +1632,7 @@ var init_schema_postgres = __esm({
1403
1632
  revoked_at: t.timestamp("revoked_at")
1404
1633
  },
1405
1634
  (table) => ({
1635
+ tenantIdx: (0, import_pg_core.index)("artifact_trust_grants_tenant_id_idx").on(table.tenant_id),
1406
1636
  userIdx: (0, import_pg_core.index)("artifact_trust_grants_user_idx").on(table.user_id),
1407
1637
  scopeIdx: (0, import_pg_core.index)("artifact_trust_grants_scope_idx").on(table.scope_type, table.scope_value)
1408
1638
  })
@@ -1410,6 +1640,7 @@ var init_schema_postgres = __esm({
1410
1640
  boardObjects = (0, import_pg_core.pgTable)(
1411
1641
  "board_objects",
1412
1642
  {
1643
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1413
1644
  // Primary identity
1414
1645
  object_id: (0, import_pg_core.varchar)("object_id", { length: 36 }).primaryKey(),
1415
1646
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
@@ -1425,6 +1656,7 @@ var init_schema_postgres = __esm({
1425
1656
  data: t.json("data").$type().notNull()
1426
1657
  },
1427
1658
  (table) => ({
1659
+ tenantIdx: (0, import_pg_core.index)("board_objects_tenant_id_idx").on(table.tenant_id),
1428
1660
  boardIdx: (0, import_pg_core.index)("board_objects_board_idx").on(table.board_id),
1429
1661
  branchIdx: (0, import_pg_core.index)("board_objects_branch_idx").on(table.branch_id),
1430
1662
  cardIdx: (0, import_pg_core.index)("board_objects_card_idx").on(table.card_id)
@@ -1433,12 +1665,14 @@ var init_schema_postgres = __esm({
1433
1665
  sessionMcpServers = (0, import_pg_core.pgTable)(
1434
1666
  "session_mcp_servers",
1435
1667
  {
1668
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1436
1669
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
1437
1670
  mcp_server_id: (0, import_pg_core.varchar)("mcp_server_id", { length: 36 }).notNull().references(() => mcpServers.mcp_server_id, { onDelete: "cascade" }),
1438
1671
  enabled: t.bool("enabled").notNull().default(true),
1439
1672
  added_at: t.timestamp("added_at").notNull()
1440
1673
  },
1441
1674
  (table) => ({
1675
+ tenantIdx: (0, import_pg_core.index)("session_mcp_servers_tenant_id_idx").on(table.tenant_id),
1442
1676
  // Composite primary key
1443
1677
  pk: (0, import_pg_core.index)("session_mcp_servers_pk").on(table.session_id, table.mcp_server_id),
1444
1678
  // Indexes for queries
@@ -1450,6 +1684,7 @@ var init_schema_postgres = __esm({
1450
1684
  userMcpOauthTokens = (0, import_pg_core.pgTable)(
1451
1685
  "user_mcp_oauth_tokens",
1452
1686
  {
1687
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1453
1688
  // NULL = shared-mode token (one per mcp_server_id)
1454
1689
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).references(() => users.user_id, {
1455
1690
  onDelete: "cascade"
@@ -1467,6 +1702,7 @@ var init_schema_postgres = __esm({
1467
1702
  updated_at: t.timestamp("updated_at")
1468
1703
  },
1469
1704
  (table) => ({
1705
+ tenantIdx: (0, import_pg_core.index)("user_mcp_oauth_tokens_tenant_id_idx").on(table.tenant_id),
1470
1706
  // Composite lookup indexes. Uniqueness enforced via partial unique indexes
1471
1707
  // created in the migration (one for per-user rows, one for the shared row).
1472
1708
  pk: (0, import_pg_core.index)("user_mcp_oauth_tokens_pk").on(table.user_id, table.mcp_server_id),
@@ -1477,6 +1713,7 @@ var init_schema_postgres = __esm({
1477
1713
  boardComments = (0, import_pg_core.pgTable)(
1478
1714
  "board_comments",
1479
1715
  {
1716
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1480
1717
  // Primary identity
1481
1718
  comment_id: (0, import_pg_core.varchar)("comment_id", { length: 36 }).primaryKey(),
1482
1719
  created_at: t.timestamp("created_at").notNull(),
@@ -1518,6 +1755,7 @@ var init_schema_postgres = __esm({
1518
1755
  data: t.json("data").$type().notNull()
1519
1756
  },
1520
1757
  (table) => ({
1758
+ tenantIdx: (0, import_pg_core.index)("board_comments_tenant_id_idx").on(table.tenant_id),
1521
1759
  boardIdx: (0, import_pg_core.index)("board_comments_board_idx").on(table.board_id),
1522
1760
  sessionIdx: (0, import_pg_core.index)("board_comments_session_idx").on(table.session_id),
1523
1761
  taskIdx: (0, import_pg_core.index)("board_comments_task_idx").on(table.task_id),
@@ -1532,6 +1770,7 @@ var init_schema_postgres = __esm({
1532
1770
  gatewayChannels = (0, import_pg_core.pgTable)(
1533
1771
  "gateway_channels",
1534
1772
  {
1773
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1535
1774
  // Primary identity
1536
1775
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1537
1776
  created_at: t.timestamp("created_at").notNull(),
@@ -1541,11 +1780,11 @@ var init_schema_postgres = __esm({
1541
1780
  // Materialized for queries
1542
1781
  name: (0, import_pg_core.text)("name").notNull(),
1543
1782
  channel_type: (0, import_pg_core.text)("channel_type", {
1544
- enum: ["slack", "discord", "whatsapp", "telegram", "github"]
1783
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
1545
1784
  }).notNull(),
1546
1785
  target_branch_id: (0, import_pg_core.varchar)("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1547
1786
  agor_user_id: (0, import_pg_core.varchar)("agor_user_id", { length: 36 }).notNull(),
1548
- channel_key: (0, import_pg_core.text)("channel_key").notNull().unique(),
1787
+ channel_key: (0, import_pg_core.text)("channel_key").notNull(),
1549
1788
  enabled: t.bool("enabled").notNull().default(true),
1550
1789
  last_message_at: t.timestamp("last_message_at"),
1551
1790
  // JSON blob for platform credentials (encrypted at rest)
@@ -1554,13 +1793,19 @@ var init_schema_postgres = __esm({
1554
1793
  agentic_config: t.json("agentic_config")
1555
1794
  },
1556
1795
  (table) => ({
1796
+ tenantIdx: (0, import_pg_core.index)("gateway_channels_tenant_id_idx").on(table.tenant_id),
1557
1797
  channelKeyIdx: (0, import_pg_core.index)("idx_gateway_channel_key").on(table.channel_key),
1798
+ channelKeyTenantUnique: (0, import_pg_core.uniqueIndex)("gateway_channels_tenant_channel_key_unique").on(
1799
+ table.tenant_id,
1800
+ table.channel_key
1801
+ ),
1558
1802
  enabledTypeIdx: (0, import_pg_core.index)("idx_gateway_enabled_type").on(table.enabled, table.channel_type)
1559
1803
  })
1560
1804
  );
1561
1805
  threadSessionMap = (0, import_pg_core.pgTable)(
1562
1806
  "thread_session_map",
1563
1807
  {
1808
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1564
1809
  // Primary identity
1565
1810
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1566
1811
  created_at: t.timestamp("created_at").notNull(),
@@ -1578,7 +1823,9 @@ var init_schema_postgres = __esm({
1578
1823
  metadata: t.json("metadata")
1579
1824
  },
1580
1825
  (table) => ({
1581
- uniqueChannelThread: (0, import_pg_core.uniqueIndex)("uniq_thread_map_channel_thread").on(
1826
+ tenantIdx: (0, import_pg_core.index)("thread_session_map_tenant_id_idx").on(table.tenant_id),
1827
+ uniqueChannelThread: (0, import_pg_core.uniqueIndex)("uniq_thread_map_tenant_channel_thread").on(
1828
+ table.tenant_id,
1582
1829
  table.channel_id,
1583
1830
  table.thread_id
1584
1831
  ),
@@ -1587,14 +1834,82 @@ var init_schema_postgres = __esm({
1587
1834
  channelStatusIdx: (0, import_pg_core.index)("idx_thread_map_channel_status").on(table.channel_id, table.status)
1588
1835
  })
1589
1836
  );
1837
+ gatewayOutboundMessages = (0, import_pg_core.pgTable)(
1838
+ "gateway_outbound_messages",
1839
+ {
1840
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1841
+ id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1842
+ created_at: t.timestamp("created_at").notNull(),
1843
+ updated_at: t.timestamp("updated_at").notNull(),
1844
+ gateway_channel_id: (0, import_pg_core.varchar)("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
1845
+ channel_type: (0, import_pg_core.text)("channel_type", {
1846
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
1847
+ }).notNull(),
1848
+ platform_channel_id: (0, import_pg_core.text)("platform_channel_id").notNull(),
1849
+ platform_message_id: (0, import_pg_core.text)("platform_message_id").notNull(),
1850
+ platform_thread_id: (0, import_pg_core.text)("platform_thread_id").notNull(),
1851
+ platform_permalink: (0, import_pg_core.text)("platform_permalink"),
1852
+ target_branch_id: (0, import_pg_core.varchar)("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id),
1853
+ emitted_by_user_id: (0, import_pg_core.varchar)("emitted_by_user_id", { length: 36 }).notNull().references(() => users.user_id),
1854
+ emitted_by_session_id: (0, import_pg_core.varchar)("emitted_by_session_id", { length: 36 }).references(
1855
+ () => sessions.session_id,
1856
+ {
1857
+ onDelete: "set null"
1858
+ }
1859
+ ),
1860
+ emitted_by_task_id: (0, import_pg_core.varchar)("emitted_by_task_id", { length: 36 }).references(
1861
+ () => tasks.task_id,
1862
+ {
1863
+ onDelete: "set null"
1864
+ }
1865
+ ),
1866
+ emitted_by_schedule_id: (0, import_pg_core.varchar)("emitted_by_schedule_id", { length: 36 }).references(
1867
+ () => schedules.schedule_id,
1868
+ {
1869
+ onDelete: "set null"
1870
+ }
1871
+ ),
1872
+ message_text: (0, import_pg_core.text)("message_text").notNull(),
1873
+ message_preview: (0, import_pg_core.text)("message_preview").notNull(),
1874
+ metadata: t.json("metadata"),
1875
+ consumed_by_session_id: (0, import_pg_core.varchar)("consumed_by_session_id", { length: 36 }).references(
1876
+ () => sessions.session_id,
1877
+ {
1878
+ onDelete: "set null"
1879
+ }
1880
+ ),
1881
+ consumed_at: t.timestamp("consumed_at")
1882
+ },
1883
+ (table) => ({
1884
+ tenantIdx: (0, import_pg_core.index)("gateway_outbound_messages_tenant_id_idx").on(table.tenant_id),
1885
+ uniqueChannelThread: (0, import_pg_core.uniqueIndex)("uniq_gateway_outbound_tenant_channel_thread").on(
1886
+ table.tenant_id,
1887
+ table.gateway_channel_id,
1888
+ table.platform_thread_id
1889
+ ),
1890
+ emittedSessionIdx: (0, import_pg_core.index)("idx_gateway_outbound_emitted_session").on(
1891
+ table.emitted_by_session_id
1892
+ ),
1893
+ emittedScheduleIdx: (0, import_pg_core.index)("idx_gateway_outbound_emitted_schedule").on(
1894
+ table.emitted_by_schedule_id
1895
+ ),
1896
+ targetBranchCreatedIdx: (0, import_pg_core.index)("idx_gateway_outbound_branch_created").on(
1897
+ table.target_branch_id,
1898
+ table.created_at
1899
+ ),
1900
+ consumedIdx: (0, import_pg_core.index)("idx_gateway_outbound_consumed").on(table.consumed_at)
1901
+ })
1902
+ );
1590
1903
  sessionEnvSelections = (0, import_pg_core.pgTable)(
1591
1904
  "session_env_selections",
1592
1905
  {
1906
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1593
1907
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
1594
1908
  env_var_name: (0, import_pg_core.text)("env_var_name").notNull(),
1595
1909
  created_at: t.timestamp("created_at").notNull()
1596
1910
  },
1597
1911
  (table) => ({
1912
+ tenantIdx: (0, import_pg_core.index)("session_env_selections_tenant_id_idx").on(table.tenant_id),
1598
1913
  pk: (0, import_pg_core.primaryKey)({ columns: [table.session_id, table.env_var_name] }),
1599
1914
  sessionIdx: (0, import_pg_core.index)("session_env_selections_session_idx").on(table.session_id)
1600
1915
  })
@@ -1602,6 +1917,7 @@ var init_schema_postgres = __esm({
1602
1917
  kbNamespaces = (0, import_pg_core.pgTable)(
1603
1918
  "kb_namespaces",
1604
1919
  {
1920
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1605
1921
  namespace_id: (0, import_pg_core.varchar)("namespace_id", { length: 36 }).primaryKey(),
1606
1922
  slug: (0, import_pg_core.text)("slug").notNull(),
1607
1923
  display_name: (0, import_pg_core.text)("display_name").notNull(),
@@ -1628,7 +1944,8 @@ var init_schema_postgres = __esm({
1628
1944
  archived_at: t.timestamp("archived_at")
1629
1945
  },
1630
1946
  (table) => ({
1631
- slugIdx: (0, import_pg_core.uniqueIndex)("kb_namespaces_slug_idx").on(table.slug).where(import_drizzle_orm.sql`${table.archived} = false`),
1947
+ tenantIdx: (0, import_pg_core.index)("kb_namespaces_tenant_id_idx").on(table.tenant_id),
1948
+ slugIdx: (0, import_pg_core.uniqueIndex)("kb_namespaces_tenant_slug_unique").on(table.tenant_id, table.slug).where(import_drizzle_orm.sql`${table.archived} = false`),
1632
1949
  kindIdx: (0, import_pg_core.index)("kb_namespaces_kind_idx").on(table.kind),
1633
1950
  ownerIdx: (0, import_pg_core.index)("kb_namespaces_owner_idx").on(table.owner_user_id),
1634
1951
  repoIdx: (0, import_pg_core.index)("kb_namespaces_repo_idx").on(table.repo_id),
@@ -1639,6 +1956,7 @@ var init_schema_postgres = __esm({
1639
1956
  kbNamespaceAcl = (0, import_pg_core.pgTable)(
1640
1957
  "kb_namespace_acl",
1641
1958
  {
1959
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1642
1960
  namespace_acl_id: (0, import_pg_core.varchar)("namespace_acl_id", { length: 36 }).primaryKey(),
1643
1961
  namespace_id: (0, import_pg_core.varchar)("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
1644
1962
  subject_type: (0, import_pg_core.text)("subject_type", { enum: ["user", "group"] }).notNull(),
@@ -1651,9 +1969,11 @@ var init_schema_postgres = __esm({
1651
1969
  updated_at: t.timestamp("updated_at")
1652
1970
  },
1653
1971
  (table) => ({
1972
+ tenantIdx: (0, import_pg_core.index)("kb_namespace_acl_tenant_id_idx").on(table.tenant_id),
1654
1973
  namespaceIdx: (0, import_pg_core.index)("kb_namespace_acl_namespace_idx").on(table.namespace_id),
1655
1974
  subjectIdx: (0, import_pg_core.index)("kb_namespace_acl_subject_idx").on(table.subject_type, table.subject_id),
1656
- namespaceSubjectIdx: (0, import_pg_core.uniqueIndex)("kb_namespace_acl_namespace_subject_idx").on(
1975
+ namespaceSubjectIdx: (0, import_pg_core.uniqueIndex)("kb_namespace_acl_tenant_namespace_subject_unique").on(
1976
+ table.tenant_id,
1657
1977
  table.namespace_id,
1658
1978
  table.subject_type,
1659
1979
  table.subject_id
@@ -1663,6 +1983,7 @@ var init_schema_postgres = __esm({
1663
1983
  kbDocuments = (0, import_pg_core.pgTable)(
1664
1984
  "kb_documents",
1665
1985
  {
1986
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1666
1987
  document_id: (0, import_pg_core.varchar)("document_id", { length: 36 }).primaryKey(),
1667
1988
  namespace_id: (0, import_pg_core.varchar)("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
1668
1989
  path: (0, import_pg_core.text)("path").notNull(),
@@ -1690,8 +2011,9 @@ var init_schema_postgres = __esm({
1690
2011
  archived_at: t.timestamp("archived_at")
1691
2012
  },
1692
2013
  (table) => ({
1693
- namespacePathIdx: (0, import_pg_core.uniqueIndex)("kb_documents_namespace_path_idx").on(table.namespace_id, table.path).where(import_drizzle_orm.sql`${table.archived} = false`),
1694
- uriIdx: (0, import_pg_core.uniqueIndex)("kb_documents_uri_idx").on(table.uri).where(import_drizzle_orm.sql`${table.archived} = false`),
2014
+ tenantIdx: (0, import_pg_core.index)("kb_documents_tenant_id_idx").on(table.tenant_id),
2015
+ namespacePathIdx: (0, import_pg_core.uniqueIndex)("kb_documents_tenant_namespace_path_unique").on(table.tenant_id, table.namespace_id, table.path).where(import_drizzle_orm.sql`${table.archived} = false`),
2016
+ uriIdx: (0, import_pg_core.uniqueIndex)("kb_documents_tenant_uri_unique").on(table.tenant_id, table.uri).where(import_drizzle_orm.sql`${table.archived} = false`),
1695
2017
  namespaceIdx: (0, import_pg_core.index)("kb_documents_namespace_idx").on(table.namespace_id),
1696
2018
  kindIdx: (0, import_pg_core.index)("kb_documents_kind_idx").on(table.kind),
1697
2019
  visibilityIdx: (0, import_pg_core.index)("kb_documents_visibility_idx").on(table.visibility),
@@ -1704,6 +2026,7 @@ var init_schema_postgres = __esm({
1704
2026
  kbDocumentVersions = (0, import_pg_core.pgTable)(
1705
2027
  "kb_document_versions",
1706
2028
  {
2029
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1707
2030
  version_id: (0, import_pg_core.varchar)("version_id", { length: 36 }).primaryKey(),
1708
2031
  document_id: (0, import_pg_core.varchar)("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
1709
2032
  version_number: (0, import_pg_core.integer)("version_number").notNull(),
@@ -1723,7 +2046,9 @@ var init_schema_postgres = __esm({
1723
2046
  created_at: t.timestamp("created_at").notNull()
1724
2047
  },
1725
2048
  (table) => ({
1726
- documentVersionIdx: (0, import_pg_core.uniqueIndex)("kb_document_versions_document_version_idx").on(
2049
+ tenantIdx: (0, import_pg_core.index)("kb_document_versions_tenant_id_idx").on(table.tenant_id),
2050
+ documentVersionIdx: (0, import_pg_core.uniqueIndex)("kb_document_versions_tenant_document_version_unique").on(
2051
+ table.tenant_id,
1727
2052
  table.document_id,
1728
2053
  table.version_number
1729
2054
  ),
@@ -1735,6 +2060,7 @@ var init_schema_postgres = __esm({
1735
2060
  kbDocumentUnits = (0, import_pg_core.pgTable)(
1736
2061
  "kb_document_units",
1737
2062
  {
2063
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1738
2064
  unit_id: (0, import_pg_core.varchar)("unit_id", { length: 36 }).primaryKey(),
1739
2065
  document_id: (0, import_pg_core.varchar)("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
1740
2066
  version_id: (0, import_pg_core.varchar)("version_id", { length: 36 }).notNull().references(() => kbDocumentVersions.version_id, { onDelete: "cascade" }),
@@ -1759,6 +2085,7 @@ var init_schema_postgres = __esm({
1759
2085
  updated_at: t.timestamp("updated_at")
1760
2086
  },
1761
2087
  (table) => ({
2088
+ tenantIdx: (0, import_pg_core.index)("kb_document_units_tenant_id_idx").on(table.tenant_id),
1762
2089
  documentIdx: (0, import_pg_core.index)("kb_document_units_document_idx").on(table.document_id),
1763
2090
  versionIdx: (0, import_pg_core.index)("kb_document_units_version_idx").on(table.version_id),
1764
2091
  versionOrdinalIdx: (0, import_pg_core.index)("kb_document_units_version_ordinal_idx").on(
@@ -1772,6 +2099,7 @@ var init_schema_postgres = __esm({
1772
2099
  kbEmbeddingSpaces = (0, import_pg_core.pgTable)(
1773
2100
  "kb_embedding_spaces",
1774
2101
  {
2102
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1775
2103
  embedding_space_id: (0, import_pg_core.varchar)("embedding_space_id", { length: 36 }).primaryKey(),
1776
2104
  provider: (0, import_pg_core.text)("provider").notNull(),
1777
2105
  model: (0, import_pg_core.text)("model").notNull(),
@@ -1784,7 +2112,9 @@ var init_schema_postgres = __esm({
1784
2112
  updated_at: t.timestamp("updated_at")
1785
2113
  },
1786
2114
  (table) => ({
1787
- providerModelIdx: (0, import_pg_core.uniqueIndex)("kb_embedding_spaces_provider_model_idx").on(
2115
+ tenantIdx: (0, import_pg_core.index)("kb_embedding_spaces_tenant_id_idx").on(table.tenant_id),
2116
+ providerModelIdx: (0, import_pg_core.uniqueIndex)("kb_embedding_spaces_tenant_provider_model_unique").on(
2117
+ table.tenant_id,
1788
2118
  table.provider,
1789
2119
  table.model,
1790
2120
  table.dimensions,
@@ -1797,6 +2127,7 @@ var init_schema_postgres = __esm({
1797
2127
  kbGraphNodes = (0, import_pg_core.pgTable)(
1798
2128
  "kb_graph_nodes",
1799
2129
  {
2130
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1800
2131
  node_id: (0, import_pg_core.varchar)("node_id", { length: 36 }).primaryKey(),
1801
2132
  node_type: (0, import_pg_core.text)("node_type", {
1802
2133
  enum: [
@@ -1862,7 +2193,8 @@ var init_schema_postgres = __esm({
1862
2193
  archived_at: t.timestamp("archived_at")
1863
2194
  },
1864
2195
  (table) => ({
1865
- uriIdx: (0, import_pg_core.uniqueIndex)("kb_graph_nodes_uri_idx").on(table.uri).where(import_drizzle_orm.sql`${table.archived} = false`),
2196
+ tenantIdx: (0, import_pg_core.index)("kb_graph_nodes_tenant_id_idx").on(table.tenant_id),
2197
+ uriIdx: (0, import_pg_core.uniqueIndex)("kb_graph_nodes_tenant_uri_unique").on(table.tenant_id, table.uri).where(import_drizzle_orm.sql`${table.archived} = false`),
1866
2198
  typeIdx: (0, import_pg_core.index)("kb_graph_nodes_type_idx").on(table.node_type),
1867
2199
  namespaceIdx: (0, import_pg_core.index)("kb_graph_nodes_namespace_idx").on(table.namespace_id),
1868
2200
  documentIdx: (0, import_pg_core.index)("kb_graph_nodes_document_idx").on(table.document_id),
@@ -1882,6 +2214,7 @@ var init_schema_postgres = __esm({
1882
2214
  kbGraphEdges = (0, import_pg_core.pgTable)(
1883
2215
  "kb_graph_edges",
1884
2216
  {
2217
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1885
2218
  edge_id: (0, import_pg_core.varchar)("edge_id", { length: 36 }).primaryKey(),
1886
2219
  source_node_id: (0, import_pg_core.varchar)("source_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
1887
2220
  target_node_id: (0, import_pg_core.varchar)("target_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
@@ -1910,6 +2243,7 @@ var init_schema_postgres = __esm({
1910
2243
  archived_at: t.timestamp("archived_at")
1911
2244
  },
1912
2245
  (table) => ({
2246
+ tenantIdx: (0, import_pg_core.index)("kb_graph_edges_tenant_id_idx").on(table.tenant_id),
1913
2247
  sourceIdx: (0, import_pg_core.index)("kb_graph_edges_source_idx").on(table.source_node_id),
1914
2248
  targetIdx: (0, import_pg_core.index)("kb_graph_edges_target_idx").on(table.target_node_id),
1915
2249
  typeIdx: (0, import_pg_core.index)("kb_graph_edges_type_idx").on(table.edge_type),
@@ -1921,11 +2255,11 @@ var init_schema_postgres = __esm({
1921
2255
  table.target_node_id,
1922
2256
  table.edge_type
1923
2257
  ),
1924
- sourceTargetTypeIdx: (0, import_pg_core.uniqueIndex)("kb_graph_edges_source_target_type_idx").on(table.source_node_id, table.target_node_id, table.edge_type).where(import_drizzle_orm.sql`${table.archived} = false`),
2258
+ sourceTargetTypeIdx: (0, import_pg_core.uniqueIndex)("kb_graph_edges_tenant_source_target_type_unique").on(table.tenant_id, table.source_node_id, table.target_node_id, table.edge_type).where(import_drizzle_orm.sql`${table.archived} = false`),
1925
2259
  archivedIdx: (0, import_pg_core.index)("kb_graph_edges_archived_idx").on(table.archived)
1926
2260
  })
1927
2261
  );
1928
- sessionsRelations = (0, import_drizzle_orm.relations)(sessions, ({ one }) => ({
2262
+ sessionsRelations = (0, import_drizzle_orm.relations)(sessions, ({ one, many }) => ({
1929
2263
  branch: one(branches, {
1930
2264
  fields: [sessions.branch_id],
1931
2265
  references: [branches.branch_id]
@@ -1933,6 +2267,24 @@ var init_schema_postgres = __esm({
1933
2267
  schedule: one(schedules, {
1934
2268
  fields: [sessions.schedule_id],
1935
2269
  references: [schedules.schedule_id]
2270
+ }),
2271
+ outboundRelationships: many(sessionRelationships, { relationName: "relationshipSource" }),
2272
+ inboundRelationships: many(sessionRelationships, { relationName: "relationshipTarget" })
2273
+ }));
2274
+ sessionRelationshipsRelations = (0, import_drizzle_orm.relations)(sessionRelationships, ({ one }) => ({
2275
+ sourceSession: one(sessions, {
2276
+ fields: [sessionRelationships.source_session_id],
2277
+ references: [sessions.session_id],
2278
+ relationName: "relationshipSource"
2279
+ }),
2280
+ targetSession: one(sessions, {
2281
+ fields: [sessionRelationships.target_session_id],
2282
+ references: [sessions.session_id],
2283
+ relationName: "relationshipTarget"
2284
+ }),
2285
+ callbackSession: one(sessions, {
2286
+ fields: [sessionRelationships.callback_session_id],
2287
+ references: [sessions.session_id]
1936
2288
  })
1937
2289
  }));
1938
2290
  branchesRelations = (0, import_drizzle_orm.relations)(branches, ({ many }) => ({
@@ -1967,6 +2319,7 @@ __export(schema_sqlite_exports, {
1967
2319
  cardTypes: () => cardTypes2,
1968
2320
  cards: () => cards2,
1969
2321
  gatewayChannels: () => gatewayChannels2,
2322
+ gatewayOutboundMessages: () => gatewayOutboundMessages2,
1970
2323
  groupMemberships: () => groupMemberships2,
1971
2324
  groups: () => groups2,
1972
2325
  kbDocumentUnits: () => kbDocumentUnits2,
@@ -1985,6 +2338,8 @@ __export(schema_sqlite_exports, {
1985
2338
  serializedSessions: () => serializedSessions2,
1986
2339
  sessionEnvSelections: () => sessionEnvSelections2,
1987
2340
  sessionMcpServers: () => sessionMcpServers2,
2341
+ sessionRelationships: () => sessionRelationships2,
2342
+ sessionRelationshipsRelations: () => sessionRelationshipsRelations2,
1988
2343
  sessions: () => sessions2,
1989
2344
  sessionsRelations: () => sessionsRelations2,
1990
2345
  tasks: () => tasks2,
@@ -1993,7 +2348,7 @@ __export(schema_sqlite_exports, {
1993
2348
  userMcpOauthTokens: () => userMcpOauthTokens2,
1994
2349
  users: () => users2
1995
2350
  });
1996
- var import_drizzle_orm2, import_sqlite_core, t2, sessions2, 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, branchesRelations2, schedulesRelations2;
2351
+ var import_drizzle_orm2, import_sqlite_core, t2, sessions2, sessionRelationships2, tasks2, serializedSessions2, messages2, boards2, repos2, branches2, branchOwners2, boardOwners2, schedules2, users2, groups2, groupMemberships2, branchGroupGrants2, boardGroupGrants2, appVariables2, userApiKeys2, mcpServers2, cardTypes2, cards2, artifacts2, artifactTrustGrants2, boardObjects2, sessionMcpServers2, userMcpOauthTokens2, boardComments2, gatewayChannels2, threadSessionMap2, gatewayOutboundMessages2, sessionEnvSelections2, kbNamespaces2, kbNamespaceAcl2, kbDocuments2, kbDocumentVersions2, kbDocumentUnits2, kbEmbeddingSpaces2, kbGraphNodes2, kbGraphEdges2, sessionsRelations2, sessionRelationshipsRelations2, branchesRelations2, schedulesRelations2;
1997
2352
  var init_schema_sqlite = __esm({
1998
2353
  "src/db/schema.sqlite.ts"() {
1999
2354
  "use strict";
@@ -2069,6 +2424,7 @@ var init_schema_sqlite = __esm({
2069
2424
  },
2070
2425
  (table) => ({
2071
2426
  statusIdx: (0, import_sqlite_core.index)("sessions_status_idx").on(table.status),
2427
+ statusReadyIdx: (0, import_sqlite_core.index)("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
2072
2428
  agenticToolIdx: (0, import_sqlite_core.index)("sessions_agentic_tool_idx").on(table.agentic_tool),
2073
2429
  boardIdx: (0, import_sqlite_core.index)("sessions_board_idx").on(table.board_id),
2074
2430
  branchIdx: (0, import_sqlite_core.index)("sessions_branch_idx").on(table.branch_id),
@@ -2085,6 +2441,39 @@ var init_schema_sqlite = __esm({
2085
2441
  scheduleRunUnique: (0, import_sqlite_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`)
2086
2442
  })
2087
2443
  );
2444
+ sessionRelationships2 = (0, import_sqlite_core.sqliteTable)(
2445
+ "session_relationships",
2446
+ {
2447
+ relationship_id: (0, import_sqlite_core.text)("relationship_id", { length: 36 }).primaryKey(),
2448
+ source_session_id: (0, import_sqlite_core.text)("source_session_id", { length: 36 }).notNull().references(() => sessions2.session_id, { onDelete: "cascade" }),
2449
+ target_session_id: (0, import_sqlite_core.text)("target_session_id", { length: 36 }).notNull().references(() => sessions2.session_id, { onDelete: "cascade" }),
2450
+ relationship_type: (0, import_sqlite_core.text)("relationship_type", { enum: ["remote_create"] }).notNull(),
2451
+ created_by: (0, import_sqlite_core.text)("created_by", { length: 36 }).notNull(),
2452
+ created_at: t2.timestamp("created_at").notNull(),
2453
+ updated_at: t2.timestamp("updated_at"),
2454
+ callback_enabled: t2.bool("callback_enabled").notNull().default(false),
2455
+ callback_session_id: (0, import_sqlite_core.text)("callback_session_id", { length: 36 }).references(
2456
+ () => sessions2.session_id,
2457
+ {
2458
+ onDelete: "set null"
2459
+ }
2460
+ ),
2461
+ data: t2.json("data")
2462
+ },
2463
+ (table) => ({
2464
+ sourceIdx: (0, import_sqlite_core.index)("session_relationships_source_idx").on(table.source_session_id),
2465
+ targetIdx: (0, import_sqlite_core.index)("session_relationships_target_idx").on(table.target_session_id),
2466
+ callbackIdx: (0, import_sqlite_core.index)("session_relationships_callback_idx").on(table.callback_session_id),
2467
+ // Note: no tenant_source/tenant_target composite indexes here — SQLite schema
2468
+ // has no tenant column on this table (RLS is Postgres-only). The standalone
2469
+ // source/target indexes above are sufficient for SQLite.
2470
+ sourceTargetTypeUnique: (0, import_sqlite_core.uniqueIndex)("session_relationships_source_target_type_unique").on(
2471
+ table.source_session_id,
2472
+ table.target_session_id,
2473
+ table.relationship_type
2474
+ )
2475
+ })
2476
+ );
2088
2477
  tasks2 = (0, import_sqlite_core.sqliteTable)(
2089
2478
  "tasks",
2090
2479
  {
@@ -2197,7 +2586,12 @@ var init_schema_sqlite = __esm({
2197
2586
  // Indexes for efficient lookups
2198
2587
  sessionIdx: (0, import_sqlite_core.index)("messages_session_id_idx").on(table.session_id),
2199
2588
  taskIdx: (0, import_sqlite_core.index)("messages_task_id_idx").on(table.task_id),
2200
- sessionIndexIdx: (0, import_sqlite_core.index)("messages_session_index_idx").on(table.session_id, table.index)
2589
+ sessionIndexIdx: (0, import_sqlite_core.index)("messages_session_index_idx").on(table.session_id, table.index),
2590
+ timestampIdx: (0, import_sqlite_core.index)("messages_timestamp_idx").on(table.timestamp),
2591
+ sessionTimestampIdx: (0, import_sqlite_core.index)("messages_session_timestamp_idx").on(
2592
+ table.session_id,
2593
+ table.timestamp
2594
+ )
2201
2595
  })
2202
2596
  );
2203
2597
  boards2 = (0, import_sqlite_core.sqliteTable)(
@@ -2423,6 +2817,9 @@ var init_schema_sqlite = __esm({
2423
2817
  onboarding_completed: t2.bool("onboarding_completed").notNull().default(false),
2424
2818
  // Force password change flag (admin-settable, auto-cleared on password change)
2425
2819
  must_change_password: t2.bool("must_change_password").notNull().default(false),
2820
+ // Auth invalidation marker. Password changes set this timestamp so any
2821
+ // previously issued browser access or refresh token is rejected.
2822
+ tokens_valid_after: t2.timestamp("tokens_valid_after"),
2426
2823
  // JSON blob for profile/preferences
2427
2824
  data: t2.json("data").$type().notNull()
2428
2825
  },
@@ -2629,6 +3026,12 @@ var init_schema_sqlite = __esm({
2629
3026
  branch_id: (0, import_sqlite_core.text)("branch_id", { length: 36 }).references(() => branches2.branch_id, {
2630
3027
  onDelete: "set null"
2631
3028
  }),
3029
+ source_session_id: (0, import_sqlite_core.text)("source_session_id", { length: 36 }).references(
3030
+ () => sessions2.session_id,
3031
+ {
3032
+ onDelete: "set null"
3033
+ }
3034
+ ),
2632
3035
  board_id: (0, import_sqlite_core.text)("board_id", { length: 36 }).notNull().references(() => boards2.board_id, { onDelete: "cascade" }),
2633
3036
  name: (0, import_sqlite_core.text)("name").notNull(),
2634
3037
  description: (0, import_sqlite_core.text)("description"),
@@ -2655,6 +3058,7 @@ var init_schema_sqlite = __esm({
2655
3058
  },
2656
3059
  (table) => ({
2657
3060
  branchIdx: (0, import_sqlite_core.index)("artifacts_branch_idx").on(table.branch_id),
3061
+ sourceSessionIdx: (0, import_sqlite_core.index)("artifacts_source_session_idx").on(table.source_session_id),
2658
3062
  boardIdx: (0, import_sqlite_core.index)("artifacts_board_idx").on(table.board_id),
2659
3063
  archivedIdx: (0, import_sqlite_core.index)("artifacts_archived_idx").on(table.archived),
2660
3064
  publicIdx: (0, import_sqlite_core.index)("artifacts_public_idx").on(table.public)
@@ -2813,7 +3217,7 @@ var init_schema_sqlite = __esm({
2813
3217
  // Materialized for queries
2814
3218
  name: (0, import_sqlite_core.text)("name").notNull(),
2815
3219
  channel_type: (0, import_sqlite_core.text)("channel_type", {
2816
- enum: ["slack", "discord", "whatsapp", "telegram", "github"]
3220
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
2817
3221
  }).notNull(),
2818
3222
  target_branch_id: (0, import_sqlite_core.text)("target_branch_id", { length: 36 }).notNull().references(() => branches2.branch_id, { onDelete: "cascade" }),
2819
3223
  agor_user_id: (0, import_sqlite_core.text)("agor_user_id", { length: 36 }).notNull(),
@@ -2859,6 +3263,66 @@ var init_schema_sqlite = __esm({
2859
3263
  channelStatusIdx: (0, import_sqlite_core.index)("idx_thread_map_channel_status").on(table.channel_id, table.status)
2860
3264
  })
2861
3265
  );
3266
+ gatewayOutboundMessages2 = (0, import_sqlite_core.sqliteTable)(
3267
+ "gateway_outbound_messages",
3268
+ {
3269
+ id: (0, import_sqlite_core.text)("id", { length: 36 }).primaryKey(),
3270
+ created_at: t2.timestamp("created_at").notNull(),
3271
+ updated_at: t2.timestamp("updated_at").notNull(),
3272
+ gateway_channel_id: (0, import_sqlite_core.text)("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
3273
+ channel_type: (0, import_sqlite_core.text)("channel_type", {
3274
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
3275
+ }).notNull(),
3276
+ platform_channel_id: (0, import_sqlite_core.text)("platform_channel_id").notNull(),
3277
+ platform_message_id: (0, import_sqlite_core.text)("platform_message_id").notNull(),
3278
+ platform_thread_id: (0, import_sqlite_core.text)("platform_thread_id").notNull(),
3279
+ platform_permalink: (0, import_sqlite_core.text)("platform_permalink"),
3280
+ target_branch_id: (0, import_sqlite_core.text)("target_branch_id", { length: 36 }).notNull().references(() => branches2.branch_id),
3281
+ emitted_by_user_id: (0, import_sqlite_core.text)("emitted_by_user_id", { length: 36 }).notNull().references(() => users2.user_id),
3282
+ emitted_by_session_id: (0, import_sqlite_core.text)("emitted_by_session_id", { length: 36 }).references(
3283
+ () => sessions2.session_id,
3284
+ {
3285
+ onDelete: "set null"
3286
+ }
3287
+ ),
3288
+ emitted_by_task_id: (0, import_sqlite_core.text)("emitted_by_task_id", { length: 36 }).references(() => tasks2.task_id, {
3289
+ onDelete: "set null"
3290
+ }),
3291
+ emitted_by_schedule_id: (0, import_sqlite_core.text)("emitted_by_schedule_id", { length: 36 }).references(
3292
+ () => schedules2.schedule_id,
3293
+ {
3294
+ onDelete: "set null"
3295
+ }
3296
+ ),
3297
+ message_text: (0, import_sqlite_core.text)("message_text").notNull(),
3298
+ message_preview: (0, import_sqlite_core.text)("message_preview").notNull(),
3299
+ metadata: t2.json("metadata"),
3300
+ consumed_by_session_id: (0, import_sqlite_core.text)("consumed_by_session_id", { length: 36 }).references(
3301
+ () => sessions2.session_id,
3302
+ {
3303
+ onDelete: "set null"
3304
+ }
3305
+ ),
3306
+ consumed_at: t2.timestamp("consumed_at")
3307
+ },
3308
+ (table) => ({
3309
+ uniqueChannelThread: (0, import_sqlite_core.uniqueIndex)("uniq_gateway_outbound_channel_thread").on(
3310
+ table.gateway_channel_id,
3311
+ table.platform_thread_id
3312
+ ),
3313
+ emittedSessionIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_emitted_session").on(
3314
+ table.emitted_by_session_id
3315
+ ),
3316
+ emittedScheduleIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_emitted_schedule").on(
3317
+ table.emitted_by_schedule_id
3318
+ ),
3319
+ targetBranchCreatedIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_branch_created").on(
3320
+ table.target_branch_id,
3321
+ table.created_at
3322
+ ),
3323
+ consumedIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_consumed").on(table.consumed_at)
3324
+ })
3325
+ );
2862
3326
  sessionEnvSelections2 = (0, import_sqlite_core.sqliteTable)(
2863
3327
  "session_env_selections",
2864
3328
  {
@@ -3196,7 +3660,7 @@ var init_schema_sqlite = __esm({
3196
3660
  archivedIdx: (0, import_sqlite_core.index)("kb_graph_edges_archived_idx").on(table.archived)
3197
3661
  })
3198
3662
  );
3199
- sessionsRelations2 = (0, import_drizzle_orm2.relations)(sessions2, ({ one }) => ({
3663
+ sessionsRelations2 = (0, import_drizzle_orm2.relations)(sessions2, ({ one, many }) => ({
3200
3664
  branch: one(branches2, {
3201
3665
  fields: [sessions2.branch_id],
3202
3666
  references: [branches2.branch_id]
@@ -3204,6 +3668,24 @@ var init_schema_sqlite = __esm({
3204
3668
  schedule: one(schedules2, {
3205
3669
  fields: [sessions2.schedule_id],
3206
3670
  references: [schedules2.schedule_id]
3671
+ }),
3672
+ outboundRelationships: many(sessionRelationships2, { relationName: "relationshipSource" }),
3673
+ inboundRelationships: many(sessionRelationships2, { relationName: "relationshipTarget" })
3674
+ }));
3675
+ sessionRelationshipsRelations2 = (0, import_drizzle_orm2.relations)(sessionRelationships2, ({ one }) => ({
3676
+ sourceSession: one(sessions2, {
3677
+ fields: [sessionRelationships2.source_session_id],
3678
+ references: [sessions2.session_id],
3679
+ relationName: "relationshipSource"
3680
+ }),
3681
+ targetSession: one(sessions2, {
3682
+ fields: [sessionRelationships2.target_session_id],
3683
+ references: [sessions2.session_id],
3684
+ relationName: "relationshipTarget"
3685
+ }),
3686
+ callbackSession: one(sessions2, {
3687
+ fields: [sessionRelationships2.callback_session_id],
3688
+ references: [sessions2.session_id]
3207
3689
  })
3208
3690
  }));
3209
3691
  branchesRelations2 = (0, import_drizzle_orm2.relations)(branches2, ({ many }) => ({
@@ -3265,6 +3747,17 @@ var init_schema_factory = __esm({
3265
3747
  }
3266
3748
  });
3267
3749
 
3750
+ // src/db/tenant-context.ts
3751
+ var import_node_async_hooks, tenantDatabaseScope;
3752
+ var init_tenant_context = __esm({
3753
+ "src/db/tenant-context.ts"() {
3754
+ "use strict";
3755
+ init_cjs_shims();
3756
+ import_node_async_hooks = require("async_hooks");
3757
+ tenantDatabaseScope = new import_node_async_hooks.AsyncLocalStorage();
3758
+ }
3759
+ });
3760
+
3268
3761
  // src/db/database-wrapper.ts
3269
3762
  var import_drizzle_orm3;
3270
3763
  var init_database_wrapper = __esm({
@@ -3272,11 +3765,12 @@ var init_database_wrapper = __esm({
3272
3765
  "use strict";
3273
3766
  init_cjs_shims();
3274
3767
  import_drizzle_orm3 = require("drizzle-orm");
3768
+ init_tenant_context();
3275
3769
  }
3276
3770
  });
3277
3771
 
3278
3772
  // src/db/schema.ts
3279
- 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, sessionEnvSelections3, userMcpOauthTokens3, boardComments3, gatewayChannels3, threadSessionMap3, userApiKeys3, serializedSessions3, kbNamespaces3, kbNamespaceAcl3, kbDocuments3, kbDocumentVersions3, kbDocumentUnits3, kbEmbeddingSpaces3, kbGraphNodes3, kbGraphEdges3;
3773
+ var dialect, schema, sessions3, tasks3, messages3, boards3, repos3, branches3, branchOwners3, boardOwners3, groups3, groupMemberships3, branchGroupGrants3, boardGroupGrants3, schedules3, users3, appVariables3, mcpServers3, cardTypes3, cards3, artifacts3, artifactTrustGrants3, boardObjects3, sessionMcpServers3, sessionRelationships3, sessionEnvSelections3, userMcpOauthTokens3, boardComments3, gatewayChannels3, threadSessionMap3, gatewayOutboundMessages3, userApiKeys3, serializedSessions3, kbNamespaces3, kbNamespaceAcl3, kbDocuments3, kbDocumentVersions3, kbDocumentUnits3, kbEmbeddingSpaces3, kbGraphNodes3, kbGraphEdges3;
3280
3774
  var init_schema = __esm({
3281
3775
  "src/db/schema.ts"() {
3282
3776
  "use strict";
@@ -3308,11 +3802,13 @@ var init_schema = __esm({
3308
3802
  artifactTrustGrants3 = schema.artifactTrustGrants;
3309
3803
  boardObjects3 = schema.boardObjects;
3310
3804
  sessionMcpServers3 = schema.sessionMcpServers;
3805
+ sessionRelationships3 = schema.sessionRelationships;
3311
3806
  sessionEnvSelections3 = schema.sessionEnvSelections;
3312
3807
  userMcpOauthTokens3 = schema.userMcpOauthTokens;
3313
3808
  boardComments3 = schema.boardComments;
3314
3809
  gatewayChannels3 = schema.gatewayChannels;
3315
3810
  threadSessionMap3 = schema.threadSessionMap;
3811
+ gatewayOutboundMessages3 = schema.gatewayOutboundMessages;
3316
3812
  userApiKeys3 = schema.userApiKeys;
3317
3813
  serializedSessions3 = schema.serializedSessions;
3318
3814
  kbNamespaces3 = schema.kbNamespaces;
@@ -3326,31 +3822,46 @@ var init_schema = __esm({
3326
3822
  }
3327
3823
  });
3328
3824
 
3825
+ // src/db/tenant-scope.ts
3826
+ var import_drizzle_orm4;
3827
+ var init_tenant_scope = __esm({
3828
+ "src/db/tenant-scope.ts"() {
3829
+ "use strict";
3830
+ init_cjs_shims();
3831
+ import_drizzle_orm4 = require("drizzle-orm");
3832
+ init_tenant_context();
3833
+ init_tenant_context();
3834
+ init_database_wrapper();
3835
+ }
3836
+ });
3837
+
3329
3838
  // src/db/user-utils.ts
3330
- var import_bcryptjs, import_drizzle_orm4;
3839
+ var import_bcryptjs, import_drizzle_orm5;
3331
3840
  var init_user_utils = __esm({
3332
3841
  "src/db/user-utils.ts"() {
3333
3842
  "use strict";
3334
3843
  init_cjs_shims();
3335
3844
  import_bcryptjs = __toESM(require("bcryptjs"), 1);
3336
- import_drizzle_orm4 = require("drizzle-orm");
3845
+ import_drizzle_orm5 = require("drizzle-orm");
3337
3846
  init_ids();
3338
3847
  init_user();
3339
3848
  init_database_wrapper();
3340
3849
  init_schema();
3850
+ init_tenant_scope();
3341
3851
  }
3342
3852
  });
3343
3853
 
3344
3854
  // src/db/first-run-bootstrap.ts
3345
- var import_node_crypto3, import_drizzle_orm5;
3855
+ var import_node_crypto3, import_drizzle_orm6;
3346
3856
  var init_first_run_bootstrap = __esm({
3347
3857
  "src/db/first-run-bootstrap.ts"() {
3348
3858
  "use strict";
3349
3859
  init_cjs_shims();
3350
3860
  import_node_crypto3 = require("crypto");
3351
- import_drizzle_orm5 = require("drizzle-orm");
3861
+ import_drizzle_orm6 = require("drizzle-orm");
3352
3862
  init_database_wrapper();
3353
3863
  init_schema();
3864
+ init_tenant_scope();
3354
3865
  init_user_utils();
3355
3866
  }
3356
3867
  });
@@ -3485,7 +3996,7 @@ init_cjs_shims();
3485
3996
 
3486
3997
  // src/db/index.ts
3487
3998
  init_cjs_shims();
3488
- var import_drizzle_orm33 = require("drizzle-orm");
3999
+ var import_drizzle_orm36 = require("drizzle-orm");
3489
4000
  var import_bcryptjs3 = __toESM(require("bcryptjs"), 1);
3490
4001
  init_ids();
3491
4002
 
@@ -3522,11 +4033,12 @@ init_first_run_bootstrap();
3522
4033
  init_cjs_shims();
3523
4034
  var import_node_path4 = require("path");
3524
4035
  var import_node_url = require("url");
3525
- var import_drizzle_orm6 = require("drizzle-orm");
4036
+ var import_drizzle_orm7 = require("drizzle-orm");
3526
4037
  var import_migrator = require("drizzle-orm/libsql/migrator");
3527
4038
  var import_migrator2 = require("drizzle-orm/postgres-js/migrator");
3528
4039
  init_database_wrapper();
3529
4040
  init_schema();
4041
+ init_tenant_scope();
3530
4042
 
3531
4043
  // src/db/pending-migrations.ts
3532
4044
  init_cjs_shims();
@@ -3536,7 +4048,7 @@ init_cjs_shims();
3536
4048
 
3537
4049
  // src/db/repositories/app-variables.ts
3538
4050
  init_cjs_shims();
3539
- var import_drizzle_orm7 = require("drizzle-orm");
4051
+ var import_drizzle_orm8 = require("drizzle-orm");
3540
4052
  init_ids();
3541
4053
  init_database_wrapper();
3542
4054
  init_schema();
@@ -3545,17 +4057,18 @@ init_schema();
3545
4057
  init_cjs_shims();
3546
4058
  init_ids();
3547
4059
  init_id();
4060
+ init_tenant_context();
3548
4061
 
3549
4062
  // src/db/repositories/artifact-trust.ts
3550
4063
  init_cjs_shims();
3551
- var import_drizzle_orm8 = require("drizzle-orm");
4064
+ var import_drizzle_orm9 = require("drizzle-orm");
3552
4065
  init_ids();
3553
4066
  init_database_wrapper();
3554
4067
  init_schema();
3555
4068
 
3556
4069
  // src/db/repositories/artifacts.ts
3557
4070
  init_cjs_shims();
3558
- var import_drizzle_orm9 = require("drizzle-orm");
4071
+ var import_drizzle_orm11 = require("drizzle-orm");
3559
4072
  init_config_manager();
3560
4073
  init_ids();
3561
4074
 
@@ -3567,16 +4080,26 @@ init_id();
3567
4080
  init_database_wrapper();
3568
4081
  init_schema();
3569
4082
 
3570
- // src/db/repositories/board-comments.ts
4083
+ // src/db/repositories/branch-access.ts
3571
4084
  init_cjs_shims();
4085
+ init_types2();
3572
4086
  var import_drizzle_orm10 = require("drizzle-orm");
4087
+ init_database_wrapper();
4088
+ init_schema();
4089
+ var VISIBLE_BRANCH_PERMISSION_LEVELS = BRANCH_PERMISSION_LEVELS.filter(
4090
+ (level) => level !== "none"
4091
+ );
4092
+
4093
+ // src/db/repositories/board-comments.ts
4094
+ init_cjs_shims();
4095
+ var import_drizzle_orm12 = require("drizzle-orm");
3573
4096
  init_ids();
3574
4097
  init_database_wrapper();
3575
4098
  init_schema();
3576
4099
 
3577
4100
  // src/db/repositories/board-objects.ts
3578
4101
  init_cjs_shims();
3579
- var import_drizzle_orm12 = require("drizzle-orm");
4102
+ var import_drizzle_orm13 = require("drizzle-orm");
3580
4103
  init_ids();
3581
4104
 
3582
4105
  // src/utils/board-placement.ts
@@ -3586,30 +4109,46 @@ init_cjs_shims();
3586
4109
  init_database_wrapper();
3587
4110
  init_schema();
3588
4111
 
3589
- // src/db/repositories/branch-access.ts
3590
- init_cjs_shims();
3591
- init_types2();
3592
- var import_drizzle_orm11 = require("drizzle-orm");
3593
- init_database_wrapper();
3594
- init_schema();
3595
- var VISIBLE_BRANCH_PERMISSION_LEVELS = BRANCH_PERMISSION_LEVELS.filter(
3596
- (level) => level !== "none"
3597
- );
3598
-
3599
4112
  // src/db/repositories/boards.ts
3600
4113
  init_cjs_shims();
3601
4114
  init_types2();
3602
- var import_drizzle_orm15 = require("drizzle-orm");
4115
+ var import_drizzle_orm16 = require("drizzle-orm");
3603
4116
  var yaml2 = __toESM(require("js-yaml"), 1);
3604
4117
  init_config_manager();
3605
4118
  init_ids();
4119
+
4120
+ // src/utils/emoji-shortcodes.ts
4121
+ init_cjs_shims();
4122
+ var import_node_module = require("module");
4123
+ var requireJson = (0, import_node_module.createRequire)(importMetaUrl);
4124
+ var emojiData = requireJson("emojibase-data/en/compact.json");
4125
+ var shortcodes = requireJson(
4126
+ "emojibase-data/en/shortcodes/emojibase.json"
4127
+ );
4128
+ var emojiByHexcode = /* @__PURE__ */ new Map();
4129
+ for (const emoji of emojiData) {
4130
+ if (emoji.unicode) {
4131
+ emojiByHexcode.set(emoji.hexcode, emoji.unicode);
4132
+ }
4133
+ }
4134
+ var emojiByShortcode = /* @__PURE__ */ new Map();
4135
+ for (const [hexcode, codes] of Object.entries(shortcodes)) {
4136
+ const emoji = emojiByHexcode.get(hexcode);
4137
+ if (!emoji) continue;
4138
+ const codeList = Array.isArray(codes) ? codes : [codes];
4139
+ for (const code of codeList) {
4140
+ emojiByShortcode.set(code.toLowerCase(), emoji);
4141
+ }
4142
+ }
4143
+
4144
+ // src/db/repositories/boards.ts
3606
4145
  init_database_wrapper();
3607
4146
  init_schema();
3608
4147
 
3609
4148
  // src/db/repositories/branches.ts
3610
4149
  init_cjs_shims();
3611
4150
  init_types2();
3612
- var import_drizzle_orm14 = require("drizzle-orm");
4151
+ var import_drizzle_orm15 = require("drizzle-orm");
3613
4152
  init_config_manager();
3614
4153
  init_ids();
3615
4154
  init_database_wrapper();
@@ -3617,7 +4156,7 @@ init_schema();
3617
4156
 
3618
4157
  // src/db/repositories/groups.ts
3619
4158
  init_cjs_shims();
3620
- var import_drizzle_orm13 = require("drizzle-orm");
4159
+ var import_drizzle_orm14 = require("drizzle-orm");
3621
4160
  init_ids();
3622
4161
  init_database_wrapper();
3623
4162
  init_schema();
@@ -3632,14 +4171,14 @@ var BRANCH_PERMISSION_RANK = Object.fromEntries(
3632
4171
 
3633
4172
  // src/db/repositories/card-types.ts
3634
4173
  init_cjs_shims();
3635
- var import_drizzle_orm16 = require("drizzle-orm");
4174
+ var import_drizzle_orm17 = require("drizzle-orm");
3636
4175
  init_ids();
3637
4176
  init_database_wrapper();
3638
4177
  init_schema();
3639
4178
 
3640
4179
  // src/db/repositories/cards.ts
3641
4180
  init_cjs_shims();
3642
- var import_drizzle_orm17 = require("drizzle-orm");
4181
+ var import_drizzle_orm18 = require("drizzle-orm");
3643
4182
  init_ids();
3644
4183
  init_database_wrapper();
3645
4184
  init_schema();
@@ -3647,7 +4186,15 @@ init_schema();
3647
4186
  // src/db/repositories/gateway-channels.ts
3648
4187
  init_cjs_shims();
3649
4188
  init_types2();
3650
- var import_drizzle_orm18 = require("drizzle-orm");
4189
+ var import_drizzle_orm19 = require("drizzle-orm");
4190
+ init_ids();
4191
+ init_database_wrapper();
4192
+ init_schema();
4193
+
4194
+ // src/db/repositories/gateway-outbound-messages.ts
4195
+ init_cjs_shims();
4196
+ init_types2();
4197
+ var import_drizzle_orm20 = require("drizzle-orm");
3651
4198
  init_ids();
3652
4199
  init_database_wrapper();
3653
4200
  init_schema();
@@ -3656,7 +4203,7 @@ init_schema();
3656
4203
  init_cjs_shims();
3657
4204
  var import_node_crypto4 = require("crypto");
3658
4205
  init_types2();
3659
- var import_drizzle_orm19 = require("drizzle-orm");
4206
+ var import_drizzle_orm21 = require("drizzle-orm");
3660
4207
  init_config_manager();
3661
4208
  init_ids();
3662
4209
  init_database_wrapper();
@@ -3664,7 +4211,7 @@ init_schema();
3664
4211
 
3665
4212
  // src/db/repositories/mcp-servers.ts
3666
4213
  init_cjs_shims();
3667
- var import_drizzle_orm20 = require("drizzle-orm");
4214
+ var import_drizzle_orm22 = require("drizzle-orm");
3668
4215
  init_ids();
3669
4216
 
3670
4217
  // src/tools/mcp/auth-secrets.ts
@@ -3679,23 +4226,20 @@ init_schema();
3679
4226
 
3680
4227
  // src/db/repositories/messages.ts
3681
4228
  init_cjs_shims();
3682
- var import_drizzle_orm21 = require("drizzle-orm");
4229
+ var import_drizzle_orm23 = require("drizzle-orm");
3683
4230
  init_database_wrapper();
3684
4231
  init_schema();
3685
4232
 
3686
4233
  // src/db/repositories/repos.ts
3687
4234
  init_cjs_shims();
3688
- var import_drizzle_orm22 = require("drizzle-orm");
4235
+ var import_drizzle_orm24 = require("drizzle-orm");
3689
4236
 
3690
4237
  // src/config/variant-resolver.ts
3691
4238
  init_cjs_shims();
3692
4239
 
3693
4240
  // src/yaml/index.ts
3694
4241
  init_cjs_shims();
3695
- var import_js_yaml2 = __toESM(require("js-yaml"), 1);
3696
- var load2 = import_js_yaml2.default.load;
3697
- var dump2 = import_js_yaml2.default.dump;
3698
- var YAMLException = import_js_yaml2.default.YAMLException;
4242
+ var yaml3 = __toESM(require("js-yaml"), 1);
3699
4243
 
3700
4244
  // src/db/repositories/repos.ts
3701
4245
  init_ids();
@@ -3704,43 +4248,50 @@ init_schema();
3704
4248
 
3705
4249
  // src/db/repositories/schedules.ts
3706
4250
  init_cjs_shims();
3707
- var import_drizzle_orm23 = require("drizzle-orm");
4251
+ var import_drizzle_orm25 = require("drizzle-orm");
3708
4252
  init_ids();
3709
4253
  init_database_wrapper();
3710
4254
  init_schema();
3711
4255
 
3712
4256
  // src/db/repositories/serialized-sessions.ts
3713
4257
  init_cjs_shims();
3714
- var import_drizzle_orm24 = require("drizzle-orm");
4258
+ var import_drizzle_orm26 = require("drizzle-orm");
3715
4259
  init_ids();
3716
4260
  init_database_wrapper();
3717
4261
  init_schema();
3718
4262
 
3719
4263
  // src/db/repositories/session-env-selections.ts
3720
4264
  init_cjs_shims();
3721
- var import_drizzle_orm25 = require("drizzle-orm");
4265
+ var import_drizzle_orm27 = require("drizzle-orm");
3722
4266
  init_database_wrapper();
3723
4267
  init_schema();
3724
4268
 
3725
4269
  // src/db/repositories/session-mcp-servers.ts
3726
4270
  init_cjs_shims();
3727
- var import_drizzle_orm27 = require("drizzle-orm");
4271
+ var import_drizzle_orm29 = require("drizzle-orm");
3728
4272
  init_database_wrapper();
3729
4273
  init_schema();
3730
4274
 
3731
4275
  // src/db/repositories/sessions.ts
3732
4276
  init_cjs_shims();
3733
4277
  init_types2();
3734
- var import_drizzle_orm26 = require("drizzle-orm");
4278
+ var import_drizzle_orm28 = require("drizzle-orm");
3735
4279
  init_config_manager();
3736
4280
  init_ids();
3737
4281
  init_database_wrapper();
3738
4282
  init_schema();
3739
4283
 
4284
+ // src/db/repositories/session-relationships.ts
4285
+ init_cjs_shims();
4286
+ var import_drizzle_orm30 = require("drizzle-orm");
4287
+ init_ids();
4288
+ init_database_wrapper();
4289
+ init_schema();
4290
+
3740
4291
  // src/db/repositories/tasks.ts
3741
4292
  init_cjs_shims();
3742
4293
  init_types2();
3743
- var import_drizzle_orm28 = require("drizzle-orm");
4294
+ var import_drizzle_orm31 = require("drizzle-orm");
3744
4295
  init_ids();
3745
4296
  init_database_wrapper();
3746
4297
  init_schema();
@@ -3748,7 +4299,7 @@ init_schema();
3748
4299
  // src/db/repositories/thread-session-map.ts
3749
4300
  init_cjs_shims();
3750
4301
  init_types2();
3751
- var import_drizzle_orm29 = require("drizzle-orm");
4302
+ var import_drizzle_orm32 = require("drizzle-orm");
3752
4303
  init_ids();
3753
4304
  init_database_wrapper();
3754
4305
  init_schema();
@@ -3757,21 +4308,22 @@ init_schema();
3757
4308
  init_cjs_shims();
3758
4309
  var import_node_crypto5 = require("crypto");
3759
4310
  var import_bcryptjs2 = __toESM(require("bcryptjs"), 1);
3760
- var import_drizzle_orm30 = require("drizzle-orm");
4311
+ var import_drizzle_orm33 = require("drizzle-orm");
3761
4312
  init_ids();
3762
4313
  init_database_wrapper();
3763
4314
  init_schema();
4315
+ init_tenant_context();
3764
4316
 
3765
4317
  // src/db/repositories/user-mcp-oauth-tokens.ts
3766
4318
  init_cjs_shims();
3767
- var import_drizzle_orm31 = require("drizzle-orm");
4319
+ var import_drizzle_orm34 = require("drizzle-orm");
3768
4320
  init_database_wrapper();
3769
4321
  init_schema();
3770
4322
 
3771
4323
  // src/db/repositories/users.ts
3772
4324
  init_cjs_shims();
3773
4325
  init_types2();
3774
- var import_drizzle_orm32 = require("drizzle-orm");
4326
+ var import_drizzle_orm35 = require("drizzle-orm");
3775
4327
 
3776
4328
  // src/config/env-vars.ts
3777
4329
  init_cjs_shims();
@@ -3791,6 +4343,7 @@ init_cjs_shims();
3791
4343
  init_ids();
3792
4344
 
3793
4345
  // src/db/index.ts
4346
+ init_tenant_scope();
3794
4347
  init_user_utils();
3795
4348
  var compare = import_bcryptjs3.default.compare;
3796
4349
  var hash = import_bcryptjs3.default.hash;
@@ -3844,8 +4397,8 @@ function extractTasksFromMessages(messages4, sessionId) {
3844
4397
  const userMessage = messages4[startIndex];
3845
4398
  const endIndex = i < userMessageIndices.length - 1 ? userMessageIndices[i + 1] - 1 : messages4.length - 1;
3846
4399
  const messagesInRange = messages4.slice(startIndex, endIndex + 1);
3847
- const toolUseCount = messagesInRange.reduce((count, msg) => {
3848
- return count + (msg.tool_uses?.length ?? 0);
4400
+ const toolUseCount = messagesInRange.reduce((count2, msg) => {
4401
+ return count2 + (msg.tool_uses?.length ?? 0);
3849
4402
  }, 0);
3850
4403
  let fullPrompt = "";
3851
4404
  if (typeof userMessage.content === "string") {