@bevel-software/platform-core-backend 0.1.0

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 (720) hide show
  1. package/LICENSE +202 -0
  2. package/dist/assets.d.ts +5 -0
  3. package/dist/assets.d.ts.map +1 -0
  4. package/dist/assets.js +23 -0
  5. package/dist/assets.js.map +1 -0
  6. package/dist/core/core-ports.d.ts +83 -0
  7. package/dist/core/core-ports.d.ts.map +1 -0
  8. package/dist/core/core-ports.js +12 -0
  9. package/dist/core/core-ports.js.map +1 -0
  10. package/dist/core/create-core-server.d.ts +62 -0
  11. package/dist/core/create-core-server.d.ts.map +1 -0
  12. package/dist/core/create-core-server.js +204 -0
  13. package/dist/core/create-core-server.js.map +1 -0
  14. package/dist/core/create-core-services.d.ts +95 -0
  15. package/dist/core/create-core-services.d.ts.map +1 -0
  16. package/dist/core/create-core-services.js +352 -0
  17. package/dist/core/create-core-services.js.map +1 -0
  18. package/dist/core-config.d.ts +119 -0
  19. package/dist/core-config.d.ts.map +1 -0
  20. package/dist/core-config.js +240 -0
  21. package/dist/core-config.js.map +1 -0
  22. package/dist/index.d.ts +36 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +36 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/modules/access/access-control.interface.d.ts +348 -0
  27. package/dist/modules/access/access-control.interface.d.ts.map +1 -0
  28. package/dist/modules/access/access-control.interface.js +2 -0
  29. package/dist/modules/access/access-control.interface.js.map +1 -0
  30. package/dist/modules/access/access-control.service.d.ts +323 -0
  31. package/dist/modules/access/access-control.service.d.ts.map +1 -0
  32. package/dist/modules/access/access-control.service.js +1431 -0
  33. package/dist/modules/access/access-control.service.js.map +1 -0
  34. package/dist/modules/access/access-errors.d.ts +34 -0
  35. package/dist/modules/access/access-errors.d.ts.map +1 -0
  36. package/dist/modules/access/access-errors.js +40 -0
  37. package/dist/modules/access/access-errors.js.map +1 -0
  38. package/dist/modules/access/access-mutation.service.d.ts +176 -0
  39. package/dist/modules/access/access-mutation.service.d.ts.map +1 -0
  40. package/dist/modules/access/access-mutation.service.js +307 -0
  41. package/dist/modules/access/access-mutation.service.js.map +1 -0
  42. package/dist/modules/access/access-splice.d.ts +98 -0
  43. package/dist/modules/access/access-splice.d.ts.map +1 -0
  44. package/dist/modules/access/access-splice.js +346 -0
  45. package/dist/modules/access/access-splice.js.map +1 -0
  46. package/dist/modules/access/access.routes.d.ts +10 -0
  47. package/dist/modules/access/access.routes.d.ts.map +1 -0
  48. package/dist/modules/access/access.routes.js +757 -0
  49. package/dist/modules/access/access.routes.js.map +1 -0
  50. package/dist/modules/access/creator-access.d.ts +113 -0
  51. package/dist/modules/access/creator-access.d.ts.map +1 -0
  52. package/dist/modules/access/creator-access.js +212 -0
  53. package/dist/modules/access/creator-access.js.map +1 -0
  54. package/dist/modules/access/kb-read-filter.d.ts +41 -0
  55. package/dist/modules/access/kb-read-filter.d.ts.map +1 -0
  56. package/dist/modules/access/kb-read-filter.js +60 -0
  57. package/dist/modules/access/kb-read-filter.js.map +1 -0
  58. package/dist/modules/access/roles-admin.service.d.ts +240 -0
  59. package/dist/modules/access/roles-admin.service.d.ts.map +1 -0
  60. package/dist/modules/access/roles-admin.service.js +630 -0
  61. package/dist/modules/access/roles-admin.service.js.map +1 -0
  62. package/dist/modules/access/roles-edit.d.ts +91 -0
  63. package/dist/modules/access/roles-edit.d.ts.map +1 -0
  64. package/dist/modules/access/roles-edit.js +232 -0
  65. package/dist/modules/access/roles-edit.js.map +1 -0
  66. package/dist/modules/access/roles-yaml-guard.d.ts +56 -0
  67. package/dist/modules/access/roles-yaml-guard.d.ts.map +1 -0
  68. package/dist/modules/access/roles-yaml-guard.js +79 -0
  69. package/dist/modules/access/roles-yaml-guard.js.map +1 -0
  70. package/dist/modules/admin/admin-access.routes.d.ts +18 -0
  71. package/dist/modules/admin/admin-access.routes.d.ts.map +1 -0
  72. package/dist/modules/admin/admin-access.routes.js +26 -0
  73. package/dist/modules/admin/admin-access.routes.js.map +1 -0
  74. package/dist/modules/admin/admin-access.service.d.ts +24 -0
  75. package/dist/modules/admin/admin-access.service.d.ts.map +1 -0
  76. package/dist/modules/admin/admin-access.service.js +41 -0
  77. package/dist/modules/admin/admin-access.service.js.map +1 -0
  78. package/dist/modules/admin/admin.interface.d.ts +11 -0
  79. package/dist/modules/admin/admin.interface.d.ts.map +1 -0
  80. package/dist/modules/admin/admin.interface.js +2 -0
  81. package/dist/modules/admin/admin.interface.js.map +1 -0
  82. package/dist/modules/auth/account-erasure.service.d.ts +80 -0
  83. package/dist/modules/auth/account-erasure.service.d.ts.map +1 -0
  84. package/dist/modules/auth/account-erasure.service.js +91 -0
  85. package/dist/modules/auth/account-erasure.service.js.map +1 -0
  86. package/dist/modules/auth/auth.middleware.d.ts +23 -0
  87. package/dist/modules/auth/auth.middleware.d.ts.map +1 -0
  88. package/dist/modules/auth/auth.middleware.js +68 -0
  89. package/dist/modules/auth/auth.middleware.js.map +1 -0
  90. package/dist/modules/auth/auth.routes.d.ts +25 -0
  91. package/dist/modules/auth/auth.routes.d.ts.map +1 -0
  92. package/dist/modules/auth/auth.routes.js +72 -0
  93. package/dist/modules/auth/auth.routes.js.map +1 -0
  94. package/dist/modules/auth/auth.service.d.ts +76 -0
  95. package/dist/modules/auth/auth.service.d.ts.map +1 -0
  96. package/dist/modules/auth/auth.service.js +168 -0
  97. package/dist/modules/auth/auth.service.js.map +1 -0
  98. package/dist/modules/code-mode/code-mode-names.d.ts +16 -0
  99. package/dist/modules/code-mode/code-mode-names.d.ts.map +1 -0
  100. package/dist/modules/code-mode/code-mode-names.js +30 -0
  101. package/dist/modules/code-mode/code-mode-names.js.map +1 -0
  102. package/dist/modules/code-mode/code-mode.tool.d.ts +13 -0
  103. package/dist/modules/code-mode/code-mode.tool.d.ts.map +1 -0
  104. package/dist/modules/code-mode/code-mode.tool.js +112 -0
  105. package/dist/modules/code-mode/code-mode.tool.js.map +1 -0
  106. package/dist/modules/code-mode/index.d.ts +3 -0
  107. package/dist/modules/code-mode/index.d.ts.map +1 -0
  108. package/dist/modules/code-mode/index.js +3 -0
  109. package/dist/modules/code-mode/index.js.map +1 -0
  110. package/dist/modules/database/connection.d.ts +6 -0
  111. package/dist/modules/database/connection.d.ts.map +1 -0
  112. package/dist/modules/database/connection.js +12 -0
  113. package/dist/modules/database/connection.js.map +1 -0
  114. package/dist/modules/database/core-schema.d.ts +2273 -0
  115. package/dist/modules/database/core-schema.d.ts.map +1 -0
  116. package/dist/modules/database/core-schema.js +413 -0
  117. package/dist/modules/database/core-schema.js.map +1 -0
  118. package/dist/modules/database/migrate.d.ts +10 -0
  119. package/dist/modules/database/migrate.d.ts.map +1 -0
  120. package/dist/modules/database/migrate.js +40 -0
  121. package/dist/modules/database/migrate.js.map +1 -0
  122. package/dist/modules/database/schema.d.ts +12 -0
  123. package/dist/modules/database/schema.d.ts.map +1 -0
  124. package/dist/modules/database/schema.js +12 -0
  125. package/dist/modules/database/schema.js.map +1 -0
  126. package/dist/modules/diff/diff-paths.d.ts +2 -0
  127. package/dist/modules/diff/diff-paths.d.ts.map +1 -0
  128. package/dist/modules/diff/diff-paths.js +9 -0
  129. package/dist/modules/diff/diff-paths.js.map +1 -0
  130. package/dist/modules/diff/diff.config.d.ts +8 -0
  131. package/dist/modules/diff/diff.config.d.ts.map +1 -0
  132. package/dist/modules/diff/diff.config.js +13 -0
  133. package/dist/modules/diff/diff.config.js.map +1 -0
  134. package/dist/modules/diff/diff.interface.d.ts +73 -0
  135. package/dist/modules/diff/diff.interface.d.ts.map +1 -0
  136. package/dist/modules/diff/diff.interface.js +2 -0
  137. package/dist/modules/diff/diff.interface.js.map +1 -0
  138. package/dist/modules/diff/diff.routes.d.ts +35 -0
  139. package/dist/modules/diff/diff.routes.d.ts.map +1 -0
  140. package/dist/modules/diff/diff.routes.js +228 -0
  141. package/dist/modules/diff/diff.routes.js.map +1 -0
  142. package/dist/modules/diff/diff.service.d.ts +51 -0
  143. package/dist/modules/diff/diff.service.d.ts.map +1 -0
  144. package/dist/modules/diff/diff.service.js +489 -0
  145. package/dist/modules/diff/diff.service.js.map +1 -0
  146. package/dist/modules/diff/line-diff.d.ts +16 -0
  147. package/dist/modules/diff/line-diff.d.ts.map +1 -0
  148. package/dist/modules/diff/line-diff.js +67 -0
  149. package/dist/modules/diff/line-diff.js.map +1 -0
  150. package/dist/modules/mcp/mcp-auth.middleware.d.ts +27 -0
  151. package/dist/modules/mcp/mcp-auth.middleware.d.ts.map +1 -0
  152. package/dist/modules/mcp/mcp-auth.middleware.js +116 -0
  153. package/dist/modules/mcp/mcp-auth.middleware.js.map +1 -0
  154. package/dist/modules/mcp/mcp-session-store.d.ts +74 -0
  155. package/dist/modules/mcp/mcp-session-store.d.ts.map +1 -0
  156. package/dist/modules/mcp/mcp-session-store.js +131 -0
  157. package/dist/modules/mcp/mcp-session-store.js.map +1 -0
  158. package/dist/modules/mcp/mcp.routes.d.ts +24 -0
  159. package/dist/modules/mcp/mcp.routes.d.ts.map +1 -0
  160. package/dist/modules/mcp/mcp.routes.js +229 -0
  161. package/dist/modules/mcp/mcp.routes.js.map +1 -0
  162. package/dist/modules/mcp/mcp.service.d.ts +198 -0
  163. package/dist/modules/mcp/mcp.service.d.ts.map +1 -0
  164. package/dist/modules/mcp/mcp.service.js +840 -0
  165. package/dist/modules/mcp/mcp.service.js.map +1 -0
  166. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts +76 -0
  167. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts.map +1 -0
  168. package/dist/modules/mcp/oauth/bevel-oauth-provider.js +291 -0
  169. package/dist/modules/mcp/oauth/bevel-oauth-provider.js.map +1 -0
  170. package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts +18 -0
  171. package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts.map +1 -0
  172. package/dist/modules/mcp/oauth/oauth-consent.routes.js +52 -0
  173. package/dist/modules/mcp/oauth/oauth-consent.routes.js.map +1 -0
  174. package/dist/modules/mcp/oauth/oauth-state.d.ts +32 -0
  175. package/dist/modules/mcp/oauth/oauth-state.d.ts.map +1 -0
  176. package/dist/modules/mcp/oauth/oauth-state.js +34 -0
  177. package/dist/modules/mcp/oauth/oauth-state.js.map +1 -0
  178. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts +92 -0
  179. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts.map +1 -0
  180. package/dist/modules/secrets-vault/db-secrets-vault.service.js +728 -0
  181. package/dist/modules/secrets-vault/db-secrets-vault.service.js.map +1 -0
  182. package/dist/modules/secrets-vault/index.d.ts +7 -0
  183. package/dist/modules/secrets-vault/index.d.ts.map +1 -0
  184. package/dist/modules/secrets-vault/index.js +6 -0
  185. package/dist/modules/secrets-vault/index.js.map +1 -0
  186. package/dist/modules/secrets-vault/mcp-oauth-discovery.service.d.ts +63 -0
  187. package/dist/modules/secrets-vault/mcp-oauth-discovery.service.d.ts.map +1 -0
  188. package/dist/modules/secrets-vault/mcp-oauth-discovery.service.js +269 -0
  189. package/dist/modules/secrets-vault/mcp-oauth-discovery.service.js.map +1 -0
  190. package/dist/modules/secrets-vault/secrets-variable-loader.d.ts +46 -0
  191. package/dist/modules/secrets-vault/secrets-variable-loader.d.ts.map +1 -0
  192. package/dist/modules/secrets-vault/secrets-variable-loader.js +87 -0
  193. package/dist/modules/secrets-vault/secrets-variable-loader.js.map +1 -0
  194. package/dist/modules/secrets-vault/secrets-vault.contract.d.ts +210 -0
  195. package/dist/modules/secrets-vault/secrets-vault.contract.d.ts.map +1 -0
  196. package/dist/modules/secrets-vault/secrets-vault.contract.js +90 -0
  197. package/dist/modules/secrets-vault/secrets-vault.contract.js.map +1 -0
  198. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +30 -0
  199. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -0
  200. package/dist/modules/secrets-vault/secrets-vault.routes.js +490 -0
  201. package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -0
  202. package/dist/modules/skills/index.d.ts +5 -0
  203. package/dist/modules/skills/index.d.ts.map +1 -0
  204. package/dist/modules/skills/index.js +4 -0
  205. package/dist/modules/skills/index.js.map +1 -0
  206. package/dist/modules/skills/skills.contract.d.ts +58 -0
  207. package/dist/modules/skills/skills.contract.d.ts.map +1 -0
  208. package/dist/modules/skills/skills.contract.js +10 -0
  209. package/dist/modules/skills/skills.contract.js.map +1 -0
  210. package/dist/modules/skills/skills.routes.d.ts +15 -0
  211. package/dist/modules/skills/skills.routes.d.ts.map +1 -0
  212. package/dist/modules/skills/skills.routes.js +34 -0
  213. package/dist/modules/skills/skills.routes.js.map +1 -0
  214. package/dist/modules/skills/skills.service.d.ts +21 -0
  215. package/dist/modules/skills/skills.service.d.ts.map +1 -0
  216. package/dist/modules/skills/skills.service.js +202 -0
  217. package/dist/modules/skills/skills.service.js.map +1 -0
  218. package/dist/modules/skills/skills.tools.d.ts +15 -0
  219. package/dist/modules/skills/skills.tools.d.ts.map +1 -0
  220. package/dist/modules/skills/skills.tools.js +96 -0
  221. package/dist/modules/skills/skills.tools.js.map +1 -0
  222. package/dist/modules/tool-auth/external-api-key.errors.d.ts +14 -0
  223. package/dist/modules/tool-auth/external-api-key.errors.d.ts.map +1 -0
  224. package/dist/modules/tool-auth/external-api-key.errors.js +23 -0
  225. package/dist/modules/tool-auth/external-api-key.errors.js.map +1 -0
  226. package/dist/modules/tool-auth/external-api-key.interface.d.ts +90 -0
  227. package/dist/modules/tool-auth/external-api-key.interface.d.ts.map +1 -0
  228. package/dist/modules/tool-auth/external-api-key.interface.js +2 -0
  229. package/dist/modules/tool-auth/external-api-key.interface.js.map +1 -0
  230. package/dist/modules/tool-auth/external-api-key.service.d.ts +25 -0
  231. package/dist/modules/tool-auth/external-api-key.service.d.ts.map +1 -0
  232. package/dist/modules/tool-auth/external-api-key.service.js +164 -0
  233. package/dist/modules/tool-auth/external-api-key.service.js.map +1 -0
  234. package/dist/modules/tool-auth/internal-token.service.d.ts +62 -0
  235. package/dist/modules/tool-auth/internal-token.service.d.ts.map +1 -0
  236. package/dist/modules/tool-auth/internal-token.service.js +85 -0
  237. package/dist/modules/tool-auth/internal-token.service.js.map +1 -0
  238. package/dist/modules/tool-auth/llm-usage-meter.d.ts +16 -0
  239. package/dist/modules/tool-auth/llm-usage-meter.d.ts.map +1 -0
  240. package/dist/modules/tool-auth/llm-usage-meter.js +6 -0
  241. package/dist/modules/tool-auth/llm-usage-meter.js.map +1 -0
  242. package/dist/modules/tool-auth/tool-auth.middleware.d.ts +101 -0
  243. package/dist/modules/tool-auth/tool-auth.middleware.d.ts.map +1 -0
  244. package/dist/modules/tool-auth/tool-auth.middleware.js +166 -0
  245. package/dist/modules/tool-auth/tool-auth.middleware.js.map +1 -0
  246. package/dist/modules/tool-helpers/index.d.ts +19 -0
  247. package/dist/modules/tool-helpers/index.d.ts.map +1 -0
  248. package/dist/modules/tool-helpers/index.js +18 -0
  249. package/dist/modules/tool-helpers/index.js.map +1 -0
  250. package/dist/modules/tool-helpers/tool-context.d.ts +35 -0
  251. package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -0
  252. package/dist/modules/tool-helpers/tool-context.js +66 -0
  253. package/dist/modules/tool-helpers/tool-context.js.map +1 -0
  254. package/dist/modules/tool-helpers/tool-def.d.ts +33 -0
  255. package/dist/modules/tool-helpers/tool-def.d.ts.map +1 -0
  256. package/dist/modules/tool-helpers/tool-def.js +57 -0
  257. package/dist/modules/tool-helpers/tool-def.js.map +1 -0
  258. package/dist/modules/tool-helpers/tool-handler.d.ts +19 -0
  259. package/dist/modules/tool-helpers/tool-handler.d.ts.map +1 -0
  260. package/dist/modules/tool-helpers/tool-handler.js +84 -0
  261. package/dist/modules/tool-helpers/tool-handler.js.map +1 -0
  262. package/dist/modules/tool-helpers/tool.contract.d.ts +64 -0
  263. package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -0
  264. package/dist/modules/tool-helpers/tool.contract.js +24 -0
  265. package/dist/modules/tool-helpers/tool.contract.js.map +1 -0
  266. package/dist/modules/tool-helpers/validate-token.d.ts +31 -0
  267. package/dist/modules/tool-helpers/validate-token.d.ts.map +1 -0
  268. package/dist/modules/tool-helpers/validate-token.js +20 -0
  269. package/dist/modules/tool-helpers/validate-token.js.map +1 -0
  270. package/dist/modules/tool-manuals/index.d.ts +5 -0
  271. package/dist/modules/tool-manuals/index.d.ts.map +1 -0
  272. package/dist/modules/tool-manuals/index.js +5 -0
  273. package/dist/modules/tool-manuals/index.js.map +1 -0
  274. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts +182 -0
  275. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts.map +1 -0
  276. package/dist/modules/tool-manuals/tool-manuals.contract.js +19 -0
  277. package/dist/modules/tool-manuals/tool-manuals.contract.js.map +1 -0
  278. package/dist/modules/tool-manuals/tool-manuals.routes.d.ts +24 -0
  279. package/dist/modules/tool-manuals/tool-manuals.routes.d.ts.map +1 -0
  280. package/dist/modules/tool-manuals/tool-manuals.routes.js +102 -0
  281. package/dist/modules/tool-manuals/tool-manuals.routes.js.map +1 -0
  282. package/dist/modules/tool-manuals/tool-manuals.service.d.ts +108 -0
  283. package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -0
  284. package/dist/modules/tool-manuals/tool-manuals.service.js +710 -0
  285. package/dist/modules/tool-manuals/tool-manuals.service.js.map +1 -0
  286. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts +35 -0
  287. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -0
  288. package/dist/modules/tool-manuals/tool-manuals.tools.js +157 -0
  289. package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -0
  290. package/dist/modules/tool-registry/manual.routes.d.ts +6 -0
  291. package/dist/modules/tool-registry/manual.routes.d.ts.map +1 -0
  292. package/dist/modules/tool-registry/manual.routes.js +76 -0
  293. package/dist/modules/tool-registry/manual.routes.js.map +1 -0
  294. package/dist/modules/tool-registry/tool-registry.d.ts +23 -0
  295. package/dist/modules/tool-registry/tool-registry.d.ts.map +1 -0
  296. package/dist/modules/tool-registry/tool-registry.js +46 -0
  297. package/dist/modules/tool-registry/tool-registry.js.map +1 -0
  298. package/dist/modules/tool-registry/tool.contract.d.ts +48 -0
  299. package/dist/modules/tool-registry/tool.contract.d.ts.map +1 -0
  300. package/dist/modules/tool-registry/tool.contract.js +2 -0
  301. package/dist/modules/tool-registry/tool.contract.js.map +1 -0
  302. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts +14 -0
  303. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -0
  304. package/dist/modules/workflow/agent-tools/workflow.tools.js +437 -0
  305. package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -0
  306. package/dist/modules/workflow/event-bus.d.ts +107 -0
  307. package/dist/modules/workflow/event-bus.d.ts.map +1 -0
  308. package/dist/modules/workflow/event-bus.js +224 -0
  309. package/dist/modules/workflow/event-bus.js.map +1 -0
  310. package/dist/modules/workflow/events.routes.d.ts +80 -0
  311. package/dist/modules/workflow/events.routes.d.ts.map +1 -0
  312. package/dist/modules/workflow/events.routes.js +216 -0
  313. package/dist/modules/workflow/events.routes.js.map +1 -0
  314. package/dist/modules/workflow/file-change-notifier.d.ts +38 -0
  315. package/dist/modules/workflow/file-change-notifier.d.ts.map +1 -0
  316. package/dist/modules/workflow/file-change-notifier.js +22 -0
  317. package/dist/modules/workflow/file-change-notifier.js.map +1 -0
  318. package/dist/modules/workflow/file-lock.service.d.ts +57 -0
  319. package/dist/modules/workflow/file-lock.service.d.ts.map +1 -0
  320. package/dist/modules/workflow/file-lock.service.js +202 -0
  321. package/dist/modules/workflow/file-lock.service.js.map +1 -0
  322. package/dist/modules/workflow/git/branch-name.d.ts +10 -0
  323. package/dist/modules/workflow/git/branch-name.d.ts.map +1 -0
  324. package/dist/modules/workflow/git/branch-name.js +76 -0
  325. package/dist/modules/workflow/git/branch-name.js.map +1 -0
  326. package/dist/modules/workflow/git/clone-config.d.ts +61 -0
  327. package/dist/modules/workflow/git/clone-config.d.ts.map +1 -0
  328. package/dist/modules/workflow/git/clone-config.js +69 -0
  329. package/dist/modules/workflow/git/clone-config.js.map +1 -0
  330. package/dist/modules/workflow/git/git-version.d.ts +34 -0
  331. package/dist/modules/workflow/git/git-version.d.ts.map +1 -0
  332. package/dist/modules/workflow/git/git-version.js +63 -0
  333. package/dist/modules/workflow/git/git-version.js.map +1 -0
  334. package/dist/modules/workflow/git/git.service.d.ts +427 -0
  335. package/dist/modules/workflow/git/git.service.d.ts.map +1 -0
  336. package/dist/modules/workflow/git/git.service.js +1987 -0
  337. package/dist/modules/workflow/git/git.service.js.map +1 -0
  338. package/dist/modules/workflow/git/mutex.d.ts +11 -0
  339. package/dist/modules/workflow/git/mutex.d.ts.map +1 -0
  340. package/dist/modules/workflow/git/mutex.js +23 -0
  341. package/dist/modules/workflow/git/mutex.js.map +1 -0
  342. package/dist/modules/workflow/git/pull-request.service.d.ts +124 -0
  343. package/dist/modules/workflow/git/pull-request.service.d.ts.map +1 -0
  344. package/dist/modules/workflow/git/pull-request.service.js +328 -0
  345. package/dist/modules/workflow/git/pull-request.service.js.map +1 -0
  346. package/dist/modules/workflow/locking-filesystem.d.ts +133 -0
  347. package/dist/modules/workflow/locking-filesystem.d.ts.map +1 -0
  348. package/dist/modules/workflow/locking-filesystem.js +400 -0
  349. package/dist/modules/workflow/locking-filesystem.js.map +1 -0
  350. package/dist/modules/workflow/pending-commits.service.d.ts +221 -0
  351. package/dist/modules/workflow/pending-commits.service.d.ts.map +1 -0
  352. package/dist/modules/workflow/pending-commits.service.js +364 -0
  353. package/dist/modules/workflow/pending-commits.service.js.map +1 -0
  354. package/dist/modules/workflow/pending-commits.worker.d.ts +148 -0
  355. package/dist/modules/workflow/pending-commits.worker.d.ts.map +1 -0
  356. package/dist/modules/workflow/pending-commits.worker.js +245 -0
  357. package/dist/modules/workflow/pending-commits.worker.js.map +1 -0
  358. package/dist/modules/workflow/read-only-filesystem.d.ts +24 -0
  359. package/dist/modules/workflow/read-only-filesystem.d.ts.map +1 -0
  360. package/dist/modules/workflow/read-only-filesystem.js +39 -0
  361. package/dist/modules/workflow/read-only-filesystem.js.map +1 -0
  362. package/dist/modules/workflow/recovery-bot.d.ts +31 -0
  363. package/dist/modules/workflow/recovery-bot.d.ts.map +1 -0
  364. package/dist/modules/workflow/recovery-bot.js +64 -0
  365. package/dist/modules/workflow/recovery-bot.js.map +1 -0
  366. package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts +137 -0
  367. package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts.map +1 -0
  368. package/dist/modules/workflow/review-workflow/review-workflow.interface.js +2 -0
  369. package/dist/modules/workflow/review-workflow/review-workflow.interface.js.map +1 -0
  370. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts +26 -0
  371. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +1 -0
  372. package/dist/modules/workflow/review-workflow/review-workflow.service.js +636 -0
  373. package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +1 -0
  374. package/dist/modules/workflow/sanitize-error.d.ts +29 -0
  375. package/dist/modules/workflow/sanitize-error.d.ts.map +1 -0
  376. package/dist/modules/workflow/sanitize-error.js +60 -0
  377. package/dist/modules/workflow/sanitize-error.js.map +1 -0
  378. package/dist/modules/workflow/session-ontology.policy.d.ts +52 -0
  379. package/dist/modules/workflow/session-ontology.policy.d.ts.map +1 -0
  380. package/dist/modules/workflow/session-ontology.policy.js +62 -0
  381. package/dist/modules/workflow/session-ontology.policy.js.map +1 -0
  382. package/dist/modules/workflow/session-ontology.service.d.ts +100 -0
  383. package/dist/modules/workflow/session-ontology.service.d.ts.map +1 -0
  384. package/dist/modules/workflow/session-ontology.service.js +143 -0
  385. package/dist/modules/workflow/session-ontology.service.js.map +1 -0
  386. package/dist/modules/workflow/workflow-hooks.d.ts +87 -0
  387. package/dist/modules/workflow/workflow-hooks.d.ts.map +1 -0
  388. package/dist/modules/workflow/workflow-hooks.js +35 -0
  389. package/dist/modules/workflow/workflow-hooks.js.map +1 -0
  390. package/dist/modules/workflow/workflow.errors.d.ts +171 -0
  391. package/dist/modules/workflow/workflow.errors.d.ts.map +1 -0
  392. package/dist/modules/workflow/workflow.errors.js +260 -0
  393. package/dist/modules/workflow/workflow.errors.js.map +1 -0
  394. package/dist/modules/workflow/workflow.routes.d.ts +26 -0
  395. package/dist/modules/workflow/workflow.routes.d.ts.map +1 -0
  396. package/dist/modules/workflow/workflow.routes.js +804 -0
  397. package/dist/modules/workflow/workflow.routes.js.map +1 -0
  398. package/dist/modules/workflow/workflow.service.d.ts +385 -0
  399. package/dist/modules/workflow/workflow.service.d.ts.map +1 -0
  400. package/dist/modules/workflow/workflow.service.js +1155 -0
  401. package/dist/modules/workflow/workflow.service.js.map +1 -0
  402. package/dist/modules/workspace/bevel-ignore.d.ts +25 -0
  403. package/dist/modules/workspace/bevel-ignore.d.ts.map +1 -0
  404. package/dist/modules/workspace/bevel-ignore.js +57 -0
  405. package/dist/modules/workspace/bevel-ignore.js.map +1 -0
  406. package/dist/modules/workspace/kb-seed.interface.d.ts +36 -0
  407. package/dist/modules/workspace/kb-seed.interface.d.ts.map +1 -0
  408. package/dist/modules/workspace/kb-seed.interface.js +2 -0
  409. package/dist/modules/workspace/kb-seed.interface.js.map +1 -0
  410. package/dist/modules/workspace/kb-seed.service.d.ts +70 -0
  411. package/dist/modules/workspace/kb-seed.service.d.ts.map +1 -0
  412. package/dist/modules/workspace/kb-seed.service.js +325 -0
  413. package/dist/modules/workspace/kb-seed.service.js.map +1 -0
  414. package/dist/modules/workspace/routine-write-policy.d.ts +49 -0
  415. package/dist/modules/workspace/routine-write-policy.d.ts.map +1 -0
  416. package/dist/modules/workspace/routine-write-policy.js +46 -0
  417. package/dist/modules/workspace/routine-write-policy.js.map +1 -0
  418. package/dist/modules/workspace/session-ontology.gate.d.ts +112 -0
  419. package/dist/modules/workspace/session-ontology.gate.d.ts.map +1 -0
  420. package/dist/modules/workspace/session-ontology.gate.js +161 -0
  421. package/dist/modules/workspace/session-ontology.gate.js.map +1 -0
  422. package/dist/modules/workspace/session-sink.d.ts +25 -0
  423. package/dist/modules/workspace/session-sink.d.ts.map +1 -0
  424. package/dist/modules/workspace/session-sink.js +8 -0
  425. package/dist/modules/workspace/session-sink.js.map +1 -0
  426. package/dist/modules/workspace/spill-store.d.ts +24 -0
  427. package/dist/modules/workspace/spill-store.d.ts.map +1 -0
  428. package/dist/modules/workspace/spill-store.js +87 -0
  429. package/dist/modules/workspace/spill-store.js.map +1 -0
  430. package/dist/modules/workspace/workspace.routes.d.ts +25 -0
  431. package/dist/modules/workspace/workspace.routes.d.ts.map +1 -0
  432. package/dist/modules/workspace/workspace.routes.js +1046 -0
  433. package/dist/modules/workspace/workspace.routes.js.map +1 -0
  434. package/dist/modules/workspace/workspace.service.d.ts +339 -0
  435. package/dist/modules/workspace/workspace.service.d.ts.map +1 -0
  436. package/dist/modules/workspace/workspace.service.js +1221 -0
  437. package/dist/modules/workspace/workspace.service.js.map +1 -0
  438. package/dist/modules/workspace/workspace.tools.d.ts +19 -0
  439. package/dist/modules/workspace/workspace.tools.d.ts.map +1 -0
  440. package/dist/modules/workspace/workspace.tools.js +767 -0
  441. package/dist/modules/workspace/workspace.tools.js.map +1 -0
  442. package/dist/shared/frontmatter-id.d.ts +35 -0
  443. package/dist/shared/frontmatter-id.d.ts.map +1 -0
  444. package/dist/shared/frontmatter-id.js +68 -0
  445. package/dist/shared/frontmatter-id.js.map +1 -0
  446. package/dist/shared/fs-walk.d.ts +9 -0
  447. package/dist/shared/fs-walk.d.ts.map +1 -0
  448. package/dist/shared/fs-walk.js +34 -0
  449. package/dist/shared/fs-walk.js.map +1 -0
  450. package/dist/shared/hash-email.d.ts +11 -0
  451. package/dist/shared/hash-email.d.ts.map +1 -0
  452. package/dist/shared/hash-email.js +14 -0
  453. package/dist/shared/hash-email.js.map +1 -0
  454. package/dist/shared/kb-layout.d.ts +38 -0
  455. package/dist/shared/kb-layout.d.ts.map +1 -0
  456. package/dist/shared/kb-layout.js +102 -0
  457. package/dist/shared/kb-layout.js.map +1 -0
  458. package/dist/shared/kb-layout.test.d.ts +2 -0
  459. package/dist/shared/kb-layout.test.d.ts.map +1 -0
  460. package/dist/shared/kb-layout.test.js +67 -0
  461. package/dist/shared/kb-layout.test.js.map +1 -0
  462. package/dist/shared/ssrf.d.ts +20 -0
  463. package/dist/shared/ssrf.d.ts.map +1 -0
  464. package/dist/shared/ssrf.js +89 -0
  465. package/dist/shared/ssrf.js.map +1 -0
  466. package/dist/shared/token-crypto.d.ts +16 -0
  467. package/dist/shared/token-crypto.d.ts.map +1 -0
  468. package/dist/shared/token-crypto.js +49 -0
  469. package/dist/shared/token-crypto.js.map +1 -0
  470. package/dist/shared/ttl-cache.d.ts +16 -0
  471. package/dist/shared/ttl-cache.d.ts.map +1 -0
  472. package/dist/shared/ttl-cache.js +27 -0
  473. package/dist/shared/ttl-cache.js.map +1 -0
  474. package/dist/shared/utcp-namespace.d.ts +46 -0
  475. package/dist/shared/utcp-namespace.d.ts.map +1 -0
  476. package/dist/shared/utcp-namespace.js +82 -0
  477. package/dist/shared/utcp-namespace.js.map +1 -0
  478. package/dist/version.d.ts +17 -0
  479. package/dist/version.d.ts.map +1 -0
  480. package/dist/version.js +19 -0
  481. package/dist/version.js.map +1 -0
  482. package/kb-template/.bevelignore +21 -0
  483. package/kb-template/Agents/.gitkeep +0 -0
  484. package/kb-template/Agents/README.md +38 -0
  485. package/kb-template/CLAUDE.md +419 -0
  486. package/kb-template/Data/.gitkeep +0 -0
  487. package/kb-template/Data/README.md +39 -0
  488. package/kb-template/KnowledgeBase/.gitkeep +0 -0
  489. package/kb-template/KnowledgeBase/README.md +37 -0
  490. package/kb-template/Pipelines/.gitkeep +0 -0
  491. package/kb-template/Pipelines/README.md +38 -0
  492. package/kb-template/Skills/.gitkeep +0 -0
  493. package/kb-template/Skills/README.md +32 -0
  494. package/kb-template/Tools/.gitkeep +0 -0
  495. package/kb-template/Tools/README.md +42 -0
  496. package/kb-template/access.md +36 -0
  497. package/migrations/0000_core_init.sql +243 -0
  498. package/migrations/meta/0000_snapshot.json +1480 -0
  499. package/migrations/meta/_journal.json +13 -0
  500. package/package.json +80 -0
  501. package/src/assets.ts +25 -0
  502. package/src/core/core-ports.ts +91 -0
  503. package/src/core/create-core-server.ts +338 -0
  504. package/src/core/create-core-services.ts +501 -0
  505. package/src/core-config.ts +257 -0
  506. package/src/index.ts +69 -0
  507. package/src/modules/access/__tests__/access-control.atref-batch.test.ts +98 -0
  508. package/src/modules/access/__tests__/access-control.read-batch.test.ts +132 -0
  509. package/src/modules/access/__tests__/access-control.service.test.ts +1011 -0
  510. package/src/modules/access/__tests__/access-mutation.service.test.ts +439 -0
  511. package/src/modules/access/__tests__/access-splice.test.ts +247 -0
  512. package/src/modules/access/__tests__/access.routes.revoke.test.ts +407 -0
  513. package/src/modules/access/__tests__/creator-access.test.ts +217 -0
  514. package/src/modules/access/__tests__/grant-sources.test.ts +204 -0
  515. package/src/modules/access/__tests__/kb-read-filter.test.ts +70 -0
  516. package/src/modules/access/__tests__/roles-admin.service.test.ts +469 -0
  517. package/src/modules/access/__tests__/roles-edit.test.ts +138 -0
  518. package/src/modules/access/__tests__/roles-yaml-guard.test.ts +70 -0
  519. package/src/modules/access/__tests__/roles.routes.test.ts +234 -0
  520. package/src/modules/access/access-control.interface.ts +383 -0
  521. package/src/modules/access/access-control.service.ts +1794 -0
  522. package/src/modules/access/access-errors.ts +60 -0
  523. package/src/modules/access/access-mutation.service.ts +369 -0
  524. package/src/modules/access/access-splice.ts +413 -0
  525. package/src/modules/access/access.routes.ts +894 -0
  526. package/src/modules/access/creator-access.ts +270 -0
  527. package/src/modules/access/kb-read-filter.ts +76 -0
  528. package/src/modules/access/roles-admin.service.ts +741 -0
  529. package/src/modules/access/roles-edit.ts +248 -0
  530. package/src/modules/access/roles-yaml-guard.ts +89 -0
  531. package/src/modules/admin/admin-access.routes.ts +29 -0
  532. package/src/modules/admin/admin-access.service.ts +38 -0
  533. package/src/modules/admin/admin.interface.ts +10 -0
  534. package/src/modules/auth/account-erasure.service.ts +183 -0
  535. package/src/modules/auth/auth.middleware.ts +78 -0
  536. package/src/modules/auth/auth.routes.ts +97 -0
  537. package/src/modules/auth/auth.service.ts +199 -0
  538. package/src/modules/code-mode/code-mode-names.ts +38 -0
  539. package/src/modules/code-mode/code-mode.tool.ts +117 -0
  540. package/src/modules/code-mode/index.ts +6 -0
  541. package/src/modules/database/connection.ts +15 -0
  542. package/src/modules/database/core-schema.ts +431 -0
  543. package/src/modules/database/migrate.ts +43 -0
  544. package/src/modules/database/schema.ts +11 -0
  545. package/src/modules/diff/__tests__/diff.routes.read-gate.test.ts +87 -0
  546. package/src/modules/diff/__tests__/diff.routes.rejectPathsLocked.test.ts +150 -0
  547. package/src/modules/diff/__tests__/diff.service.seed-atomicity.test.ts +184 -0
  548. package/src/modules/diff/__tests__/diff.service.test.ts +202 -0
  549. package/src/modules/diff/diff-paths.ts +9 -0
  550. package/src/modules/diff/diff.config.ts +12 -0
  551. package/src/modules/diff/diff.interface.ts +78 -0
  552. package/src/modules/diff/diff.routes.ts +277 -0
  553. package/src/modules/diff/diff.service.ts +508 -0
  554. package/src/modules/diff/line-diff.ts +79 -0
  555. package/src/modules/mcp/__tests__/bevel-oauth-provider.test.ts +287 -0
  556. package/src/modules/mcp/__tests__/mcp-auth.middleware.test.ts +249 -0
  557. package/src/modules/mcp/__tests__/mcp-proxy-helpers.test.ts +253 -0
  558. package/src/modules/mcp/__tests__/mcp-session-store.test.ts +151 -0
  559. package/src/modules/mcp/__tests__/mcp.e2e.test.ts +150 -0
  560. package/src/modules/mcp/__tests__/mcp.routes.delete.test.ts +92 -0
  561. package/src/modules/mcp/__tests__/mcp.service.test.ts +414 -0
  562. package/src/modules/mcp/mcp-auth.middleware.ts +126 -0
  563. package/src/modules/mcp/mcp-session-store.ts +162 -0
  564. package/src/modules/mcp/mcp.routes.ts +263 -0
  565. package/src/modules/mcp/mcp.service.ts +973 -0
  566. package/src/modules/mcp/oauth/bevel-oauth-provider.ts +401 -0
  567. package/src/modules/mcp/oauth/oauth-consent.routes.ts +60 -0
  568. package/src/modules/mcp/oauth/oauth-state.ts +61 -0
  569. package/src/modules/secrets-vault/__tests__/connect-pending.route.test.ts +277 -0
  570. package/src/modules/secrets-vault/__tests__/db-secrets-vault.oauth.test.ts +206 -0
  571. package/src/modules/secrets-vault/__tests__/mcp-oauth-discovery.service.test.ts +178 -0
  572. package/src/modules/secrets-vault/__tests__/scopes-covered.test.ts +101 -0
  573. package/src/modules/secrets-vault/__tests__/secrets-variable-loader.test.ts +54 -0
  574. package/src/modules/secrets-vault/__tests__/tool-owner-gate.route.test.ts +143 -0
  575. package/src/modules/secrets-vault/db-secrets-vault.service.ts +792 -0
  576. package/src/modules/secrets-vault/index.ts +25 -0
  577. package/src/modules/secrets-vault/mcp-oauth-discovery.service.ts +289 -0
  578. package/src/modules/secrets-vault/secrets-variable-loader.ts +104 -0
  579. package/src/modules/secrets-vault/secrets-vault.contract.ts +270 -0
  580. package/src/modules/secrets-vault/secrets-vault.routes.ts +526 -0
  581. package/src/modules/skills/__tests__/skills.service.test.ts +176 -0
  582. package/src/modules/skills/index.ts +10 -0
  583. package/src/modules/skills/skills.contract.ts +54 -0
  584. package/src/modules/skills/skills.routes.ts +38 -0
  585. package/src/modules/skills/skills.service.ts +245 -0
  586. package/src/modules/skills/skills.tools.ts +121 -0
  587. package/src/modules/tool-auth/__tests__/external-api-key.service.test.ts +358 -0
  588. package/src/modules/tool-auth/__tests__/internal-token.service.test.ts +79 -0
  589. package/src/modules/tool-auth/__tests__/manual-auth.middleware.test.ts +88 -0
  590. package/src/modules/tool-auth/external-api-key.errors.ts +25 -0
  591. package/src/modules/tool-auth/external-api-key.interface.ts +99 -0
  592. package/src/modules/tool-auth/external-api-key.service.ts +209 -0
  593. package/src/modules/tool-auth/internal-token.service.ts +124 -0
  594. package/src/modules/tool-auth/llm-usage-meter.ts +19 -0
  595. package/src/modules/tool-auth/tool-auth.middleware.ts +220 -0
  596. package/src/modules/tool-helpers/__tests__/phase0-loopback-spike.test.ts +129 -0
  597. package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +95 -0
  598. package/src/modules/tool-helpers/__tests__/tools-surface.test.ts +146 -0
  599. package/src/modules/tool-helpers/__tests__/validate-token.test.ts +75 -0
  600. package/src/modules/tool-helpers/index.ts +18 -0
  601. package/src/modules/tool-helpers/tool-context.ts +98 -0
  602. package/src/modules/tool-helpers/tool-def.ts +73 -0
  603. package/src/modules/tool-helpers/tool-handler.ts +91 -0
  604. package/src/modules/tool-helpers/tool.contract.ts +85 -0
  605. package/src/modules/tool-helpers/validate-token.ts +50 -0
  606. package/src/modules/tool-manuals/__tests__/tool-manuals.mcp-oauth.test.ts +200 -0
  607. package/src/modules/tool-manuals/__tests__/tool-manuals.service.test.ts +499 -0
  608. package/src/modules/tool-manuals/__tests__/tool-manuals.tools.test.ts +156 -0
  609. package/src/modules/tool-manuals/index.ts +12 -0
  610. package/src/modules/tool-manuals/tool-manuals.contract.ts +183 -0
  611. package/src/modules/tool-manuals/tool-manuals.routes.ts +110 -0
  612. package/src/modules/tool-manuals/tool-manuals.service.ts +781 -0
  613. package/src/modules/tool-manuals/tool-manuals.tools.ts +202 -0
  614. package/src/modules/tool-registry/__tests__/tool-registry.test.ts +64 -0
  615. package/src/modules/tool-registry/manual.routes.ts +87 -0
  616. package/src/modules/tool-registry/tool-registry.ts +55 -0
  617. package/src/modules/tool-registry/tool.contract.ts +52 -0
  618. package/src/modules/workflow/__tests__/event-bus.test.ts +322 -0
  619. package/src/modules/workflow/__tests__/file-change-notifier.test.ts +51 -0
  620. package/src/modules/workflow/__tests__/format-affected-owners.test.ts +67 -0
  621. package/src/modules/workflow/__tests__/locking-filesystem.test.ts +445 -0
  622. package/src/modules/workflow/__tests__/pending-commits.canonical.test.ts +36 -0
  623. package/src/modules/workflow/__tests__/pending-commits.worker.test.ts +243 -0
  624. package/src/modules/workflow/__tests__/preserve-roles-yaml.test.ts +308 -0
  625. package/src/modules/workflow/__tests__/sanitize-error.test.ts +67 -0
  626. package/src/modules/workflow/__tests__/session-ontology.policy.test.ts +62 -0
  627. package/src/modules/workflow/__tests__/session-ontology.service.test.ts +200 -0
  628. package/src/modules/workflow/__tests__/workflow.service.commitFileWhileLocked.test.ts +232 -0
  629. package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +380 -0
  630. package/src/modules/workflow/__tests__/workflow.service.releaseLock.test.ts +340 -0
  631. package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +192 -0
  632. package/src/modules/workflow/agent-tools/workflow.tools.ts +502 -0
  633. package/src/modules/workflow/event-bus.ts +262 -0
  634. package/src/modules/workflow/events.routes.ts +266 -0
  635. package/src/modules/workflow/file-change-notifier.ts +54 -0
  636. package/src/modules/workflow/file-lock.service.ts +269 -0
  637. package/src/modules/workflow/git/__tests__/branch-name.test.ts +86 -0
  638. package/src/modules/workflow/git/__tests__/branchAuthor.test.ts +80 -0
  639. package/src/modules/workflow/git/__tests__/clone-config.test.ts +15 -0
  640. package/src/modules/workflow/git/__tests__/git-test-helpers.ts +47 -0
  641. package/src/modules/workflow/git/__tests__/git-version.failure.test.ts +24 -0
  642. package/src/modules/workflow/git/__tests__/git-version.test.ts +49 -0
  643. package/src/modules/workflow/git/__tests__/git.service.accessGating.test.ts +389 -0
  644. package/src/modules/workflow/git/__tests__/git.service.changedFilesForPr.test.ts +124 -0
  645. package/src/modules/workflow/git/__tests__/git.service.commitChanges.test.ts +105 -0
  646. package/src/modules/workflow/git/__tests__/git.service.commitFile.test.ts +211 -0
  647. package/src/modules/workflow/git/__tests__/git.service.createBranch.test.ts +154 -0
  648. package/src/modules/workflow/git/__tests__/git.service.deleteBranch.test.ts +320 -0
  649. package/src/modules/workflow/git/__tests__/git.service.diffFileAtCommit.test.ts +202 -0
  650. package/src/modules/workflow/git/__tests__/git.service.diffFileBetweenBranches.test.ts +453 -0
  651. package/src/modules/workflow/git/__tests__/git.service.list-branches.test.ts +198 -0
  652. package/src/modules/workflow/git/__tests__/git.service.listTrackedFiles.test.ts +125 -0
  653. package/src/modules/workflow/git/__tests__/git.service.logForFile.test.ts +219 -0
  654. package/src/modules/workflow/git/__tests__/git.service.mergeChangeRequest.test.ts +145 -0
  655. package/src/modules/workflow/git/__tests__/git.service.pendingChanges.test.ts +240 -0
  656. package/src/modules/workflow/git/__tests__/git.service.postMergePull.test.ts +272 -0
  657. package/src/modules/workflow/git/__tests__/git.service.pull.test.ts +232 -0
  658. package/src/modules/workflow/git/__tests__/git.service.readFileAtRef.test.ts +101 -0
  659. package/src/modules/workflow/git/__tests__/git.service.status.test.ts +127 -0
  660. package/src/modules/workflow/git/__tests__/mutex.test.ts +78 -0
  661. package/src/modules/workflow/git/__tests__/pull-request.service.test.ts +225 -0
  662. package/src/modules/workflow/git/__tests__/pull-request.service.viewer-can-cancel.test.ts +101 -0
  663. package/src/modules/workflow/git/branch-name.ts +70 -0
  664. package/src/modules/workflow/git/clone-config.ts +71 -0
  665. package/src/modules/workflow/git/git-version.ts +70 -0
  666. package/src/modules/workflow/git/git.service.ts +2248 -0
  667. package/src/modules/workflow/git/mutex.ts +22 -0
  668. package/src/modules/workflow/git/pull-request.service.ts +447 -0
  669. package/src/modules/workflow/locking-filesystem.ts +489 -0
  670. package/src/modules/workflow/pending-commits.service.ts +444 -0
  671. package/src/modules/workflow/pending-commits.worker.ts +361 -0
  672. package/src/modules/workflow/read-only-filesystem.ts +54 -0
  673. package/src/modules/workflow/recovery-bot.ts +73 -0
  674. package/src/modules/workflow/review-workflow/__tests__/approval-states.test.ts +560 -0
  675. package/src/modules/workflow/review-workflow/__tests__/cancel-pr.test.ts +176 -0
  676. package/src/modules/workflow/review-workflow/__tests__/merge-gate.test.ts +258 -0
  677. package/src/modules/workflow/review-workflow/review-workflow.interface.ts +199 -0
  678. package/src/modules/workflow/review-workflow/review-workflow.service.ts +806 -0
  679. package/src/modules/workflow/sanitize-error.ts +62 -0
  680. package/src/modules/workflow/session-ontology.policy.ts +70 -0
  681. package/src/modules/workflow/session-ontology.service.ts +178 -0
  682. package/src/modules/workflow/workflow-hooks.ts +101 -0
  683. package/src/modules/workflow/workflow.errors.ts +285 -0
  684. package/src/modules/workflow/workflow.routes.ts +858 -0
  685. package/src/modules/workflow/workflow.service.ts +1555 -0
  686. package/src/modules/workspace/__tests__/kb-seed.service.test.ts +213 -0
  687. package/src/modules/workspace/__tests__/routine-write-policy.test.ts +68 -0
  688. package/src/modules/workspace/__tests__/session-ontology.gate.test.ts +237 -0
  689. package/src/modules/workspace/__tests__/spill-store.test.ts +43 -0
  690. package/src/modules/workspace/__tests__/workspace.routes.create-grant.test.ts +233 -0
  691. package/src/modules/workspace/__tests__/workspace.routes.delete.test.ts +176 -0
  692. package/src/modules/workspace/__tests__/workspace.routes.download.test.ts +303 -0
  693. package/src/modules/workspace/__tests__/workspace.routes.read-gate.test.ts +276 -0
  694. package/src/modules/workspace/__tests__/workspace.service.read-filter.test.ts +120 -0
  695. package/src/modules/workspace/__tests__/workspace.service.test.ts +565 -0
  696. package/src/modules/workspace/__tests__/workspace.tools.test.ts +504 -0
  697. package/src/modules/workspace/bevel-ignore.ts +62 -0
  698. package/src/modules/workspace/kb-seed.interface.ts +36 -0
  699. package/src/modules/workspace/kb-seed.service.ts +361 -0
  700. package/src/modules/workspace/routine-write-policy.ts +79 -0
  701. package/src/modules/workspace/session-ontology.gate.ts +189 -0
  702. package/src/modules/workspace/session-sink.ts +25 -0
  703. package/src/modules/workspace/spill-store.ts +87 -0
  704. package/src/modules/workspace/workspace.routes.ts +1114 -0
  705. package/src/modules/workspace/workspace.service.ts +1343 -0
  706. package/src/modules/workspace/workspace.tools.ts +885 -0
  707. package/src/shared/__tests__/frontmatter-id.test.ts +88 -0
  708. package/src/shared/__tests__/fs-walk.test.ts +42 -0
  709. package/src/shared/__tests__/ssrf.test.ts +53 -0
  710. package/src/shared/__tests__/utcp-namespace.test.ts +19 -0
  711. package/src/shared/frontmatter-id.ts +72 -0
  712. package/src/shared/fs-walk.ts +30 -0
  713. package/src/shared/hash-email.ts +14 -0
  714. package/src/shared/kb-layout.test.ts +88 -0
  715. package/src/shared/kb-layout.ts +101 -0
  716. package/src/shared/ssrf.ts +78 -0
  717. package/src/shared/token-crypto.ts +54 -0
  718. package/src/shared/ttl-cache.ts +27 -0
  719. package/src/shared/utcp-namespace.ts +88 -0
  720. package/src/version.ts +19 -0
@@ -0,0 +1,2273 @@
1
+ export declare const users: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "users";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "id";
7
+ tableName: "users";
8
+ dataType: "string";
9
+ columnType: "PgUUID";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: true;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: undefined;
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ email: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "email";
24
+ tableName: "users";
25
+ dataType: "string";
26
+ columnType: "PgText";
27
+ data: string;
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: false;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: [string, ...string[]];
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ name: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "name";
41
+ tableName: "users";
42
+ dataType: "string";
43
+ columnType: "PgText";
44
+ data: string;
45
+ driverParam: string;
46
+ notNull: true;
47
+ hasDefault: false;
48
+ isPrimaryKey: false;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: [string, ...string[]];
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ avatarUrl: import("drizzle-orm/pg-core").PgColumn<{
57
+ name: "avatar_url";
58
+ tableName: "users";
59
+ dataType: "string";
60
+ columnType: "PgText";
61
+ data: string;
62
+ driverParam: string;
63
+ notNull: false;
64
+ hasDefault: false;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: [string, ...string[]];
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {}>;
73
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
74
+ name: "created_at";
75
+ tableName: "users";
76
+ dataType: "date";
77
+ columnType: "PgTimestamp";
78
+ data: Date;
79
+ driverParam: string;
80
+ notNull: true;
81
+ hasDefault: true;
82
+ isPrimaryKey: false;
83
+ isAutoincrement: false;
84
+ hasRuntimeDefault: false;
85
+ enumValues: undefined;
86
+ baseColumn: never;
87
+ identity: undefined;
88
+ generated: undefined;
89
+ }, {}, {}>;
90
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
91
+ name: "updated_at";
92
+ tableName: "users";
93
+ dataType: "date";
94
+ columnType: "PgTimestamp";
95
+ data: Date;
96
+ driverParam: string;
97
+ notNull: true;
98
+ hasDefault: true;
99
+ isPrimaryKey: false;
100
+ isAutoincrement: false;
101
+ hasRuntimeDefault: false;
102
+ enumValues: undefined;
103
+ baseColumn: never;
104
+ identity: undefined;
105
+ generated: undefined;
106
+ }, {}, {}>;
107
+ };
108
+ dialect: "pg";
109
+ }>;
110
+ /**
111
+ * Per-file owner approvals on a PR. A PR is mergeable-in-Bevel when every
112
+ * touched path has a non-stale approval from its owner. Force-pushes invalidate
113
+ * approvals automatically because `head_sha` is part of the uniqueness key —
114
+ * an approval row for a superseded SHA stays in the DB (audit) but doesn't
115
+ * count toward the merge gate.
116
+ *
117
+ * Self-approval (approver == PR author) is allowed and flagged downstream in
118
+ * the assembled `FileApprovalState` — enforcement of "PR-author-can't-self-
119
+ * approve" belongs in the service layer, not the DB.
120
+ */
121
+ export declare const prFileApprovals: import("drizzle-orm/pg-core").PgTableWithColumns<{
122
+ name: "pr_file_approvals";
123
+ schema: undefined;
124
+ columns: {
125
+ id: import("drizzle-orm/pg-core").PgColumn<{
126
+ name: "id";
127
+ tableName: "pr_file_approvals";
128
+ dataType: "string";
129
+ columnType: "PgUUID";
130
+ data: string;
131
+ driverParam: string;
132
+ notNull: true;
133
+ hasDefault: true;
134
+ isPrimaryKey: true;
135
+ isAutoincrement: false;
136
+ hasRuntimeDefault: false;
137
+ enumValues: undefined;
138
+ baseColumn: never;
139
+ identity: undefined;
140
+ generated: undefined;
141
+ }, {}, {}>;
142
+ prNumber: import("drizzle-orm/pg-core").PgColumn<{
143
+ name: "pr_number";
144
+ tableName: "pr_file_approvals";
145
+ dataType: "number";
146
+ columnType: "PgInteger";
147
+ data: number;
148
+ driverParam: string | number;
149
+ notNull: true;
150
+ hasDefault: false;
151
+ isPrimaryKey: false;
152
+ isAutoincrement: false;
153
+ hasRuntimeDefault: false;
154
+ enumValues: undefined;
155
+ baseColumn: never;
156
+ identity: undefined;
157
+ generated: undefined;
158
+ }, {}, {}>;
159
+ path: import("drizzle-orm/pg-core").PgColumn<{
160
+ name: "path";
161
+ tableName: "pr_file_approvals";
162
+ dataType: "string";
163
+ columnType: "PgText";
164
+ data: string;
165
+ driverParam: string;
166
+ notNull: true;
167
+ hasDefault: false;
168
+ isPrimaryKey: false;
169
+ isAutoincrement: false;
170
+ hasRuntimeDefault: false;
171
+ enumValues: [string, ...string[]];
172
+ baseColumn: never;
173
+ identity: undefined;
174
+ generated: undefined;
175
+ }, {}, {}>;
176
+ approverEmail: import("drizzle-orm/pg-core").PgColumn<{
177
+ name: "approver_email";
178
+ tableName: "pr_file_approvals";
179
+ dataType: "string";
180
+ columnType: "PgText";
181
+ data: string;
182
+ driverParam: string;
183
+ notNull: true;
184
+ hasDefault: false;
185
+ isPrimaryKey: false;
186
+ isAutoincrement: false;
187
+ hasRuntimeDefault: false;
188
+ enumValues: [string, ...string[]];
189
+ baseColumn: never;
190
+ identity: undefined;
191
+ generated: undefined;
192
+ }, {}, {}>;
193
+ approverName: import("drizzle-orm/pg-core").PgColumn<{
194
+ name: "approver_name";
195
+ tableName: "pr_file_approvals";
196
+ dataType: "string";
197
+ columnType: "PgText";
198
+ data: string;
199
+ driverParam: string;
200
+ notNull: true;
201
+ hasDefault: false;
202
+ isPrimaryKey: false;
203
+ isAutoincrement: false;
204
+ hasRuntimeDefault: false;
205
+ enumValues: [string, ...string[]];
206
+ baseColumn: never;
207
+ identity: undefined;
208
+ generated: undefined;
209
+ }, {}, {}>;
210
+ headSha: import("drizzle-orm/pg-core").PgColumn<{
211
+ name: "head_sha";
212
+ tableName: "pr_file_approvals";
213
+ dataType: "string";
214
+ columnType: "PgText";
215
+ data: string;
216
+ driverParam: string;
217
+ notNull: true;
218
+ hasDefault: false;
219
+ isPrimaryKey: false;
220
+ isAutoincrement: false;
221
+ hasRuntimeDefault: false;
222
+ enumValues: [string, ...string[]];
223
+ baseColumn: never;
224
+ identity: undefined;
225
+ generated: undefined;
226
+ }, {}, {}>;
227
+ approvedAt: import("drizzle-orm/pg-core").PgColumn<{
228
+ name: "approved_at";
229
+ tableName: "pr_file_approvals";
230
+ dataType: "date";
231
+ columnType: "PgTimestamp";
232
+ data: Date;
233
+ driverParam: string;
234
+ notNull: true;
235
+ hasDefault: true;
236
+ isPrimaryKey: false;
237
+ isAutoincrement: false;
238
+ hasRuntimeDefault: false;
239
+ enumValues: undefined;
240
+ baseColumn: never;
241
+ identity: undefined;
242
+ generated: undefined;
243
+ }, {}, {}>;
244
+ };
245
+ dialect: "pg";
246
+ }>;
247
+ /**
248
+ * Audit log for change-request merges the app executed. Captures the real Bevel
249
+ * user who clicked Merge, the SHA we merged, and whether the local merge+push
250
+ * succeeded. `pr_number` holds the change_requests number. One row per attempt —
251
+ * both success and failure paths insert so crash-loop scenarios are visible
252
+ * after the fact.
253
+ */
254
+ export declare const prMergeLog: import("drizzle-orm/pg-core").PgTableWithColumns<{
255
+ name: "pr_merge_log";
256
+ schema: undefined;
257
+ columns: {
258
+ id: import("drizzle-orm/pg-core").PgColumn<{
259
+ name: "id";
260
+ tableName: "pr_merge_log";
261
+ dataType: "string";
262
+ columnType: "PgUUID";
263
+ data: string;
264
+ driverParam: string;
265
+ notNull: true;
266
+ hasDefault: true;
267
+ isPrimaryKey: true;
268
+ isAutoincrement: false;
269
+ hasRuntimeDefault: false;
270
+ enumValues: undefined;
271
+ baseColumn: never;
272
+ identity: undefined;
273
+ generated: undefined;
274
+ }, {}, {}>;
275
+ prNumber: import("drizzle-orm/pg-core").PgColumn<{
276
+ name: "pr_number";
277
+ tableName: "pr_merge_log";
278
+ dataType: "number";
279
+ columnType: "PgInteger";
280
+ data: number;
281
+ driverParam: string | number;
282
+ notNull: true;
283
+ hasDefault: false;
284
+ isPrimaryKey: false;
285
+ isAutoincrement: false;
286
+ hasRuntimeDefault: false;
287
+ enumValues: undefined;
288
+ baseColumn: never;
289
+ identity: undefined;
290
+ generated: undefined;
291
+ }, {}, {}>;
292
+ triggeredByEmail: import("drizzle-orm/pg-core").PgColumn<{
293
+ name: "triggered_by_email";
294
+ tableName: "pr_merge_log";
295
+ dataType: "string";
296
+ columnType: "PgText";
297
+ data: string;
298
+ driverParam: string;
299
+ notNull: true;
300
+ hasDefault: false;
301
+ isPrimaryKey: false;
302
+ isAutoincrement: false;
303
+ hasRuntimeDefault: false;
304
+ enumValues: [string, ...string[]];
305
+ baseColumn: never;
306
+ identity: undefined;
307
+ generated: undefined;
308
+ }, {}, {}>;
309
+ triggeredByName: import("drizzle-orm/pg-core").PgColumn<{
310
+ name: "triggered_by_name";
311
+ tableName: "pr_merge_log";
312
+ dataType: "string";
313
+ columnType: "PgText";
314
+ data: string;
315
+ driverParam: string;
316
+ notNull: true;
317
+ hasDefault: false;
318
+ isPrimaryKey: false;
319
+ isAutoincrement: false;
320
+ hasRuntimeDefault: false;
321
+ enumValues: [string, ...string[]];
322
+ baseColumn: never;
323
+ identity: undefined;
324
+ generated: undefined;
325
+ }, {}, {}>;
326
+ headShaAtMerge: import("drizzle-orm/pg-core").PgColumn<{
327
+ name: "head_sha_at_merge";
328
+ tableName: "pr_merge_log";
329
+ dataType: "string";
330
+ columnType: "PgText";
331
+ data: string;
332
+ driverParam: string;
333
+ notNull: true;
334
+ hasDefault: false;
335
+ isPrimaryKey: false;
336
+ isAutoincrement: false;
337
+ hasRuntimeDefault: false;
338
+ enumValues: [string, ...string[]];
339
+ baseColumn: never;
340
+ identity: undefined;
341
+ generated: undefined;
342
+ }, {}, {}>;
343
+ mergeMethod: import("drizzle-orm/pg-core").PgColumn<{
344
+ name: "merge_method";
345
+ tableName: "pr_merge_log";
346
+ dataType: "string";
347
+ columnType: "PgText";
348
+ data: string;
349
+ driverParam: string;
350
+ notNull: true;
351
+ hasDefault: false;
352
+ isPrimaryKey: false;
353
+ isAutoincrement: false;
354
+ hasRuntimeDefault: false;
355
+ enumValues: [string, ...string[]];
356
+ baseColumn: never;
357
+ identity: undefined;
358
+ generated: undefined;
359
+ }, {}, {}>;
360
+ succeeded: import("drizzle-orm/pg-core").PgColumn<{
361
+ name: "succeeded";
362
+ tableName: "pr_merge_log";
363
+ dataType: "boolean";
364
+ columnType: "PgBoolean";
365
+ data: boolean;
366
+ driverParam: boolean;
367
+ notNull: true;
368
+ hasDefault: false;
369
+ isPrimaryKey: false;
370
+ isAutoincrement: false;
371
+ hasRuntimeDefault: false;
372
+ enumValues: undefined;
373
+ baseColumn: never;
374
+ identity: undefined;
375
+ generated: undefined;
376
+ }, {}, {}>;
377
+ error: import("drizzle-orm/pg-core").PgColumn<{
378
+ name: "error";
379
+ tableName: "pr_merge_log";
380
+ dataType: "string";
381
+ columnType: "PgText";
382
+ data: string;
383
+ driverParam: string;
384
+ notNull: false;
385
+ hasDefault: false;
386
+ isPrimaryKey: false;
387
+ isAutoincrement: false;
388
+ hasRuntimeDefault: false;
389
+ enumValues: [string, ...string[]];
390
+ baseColumn: never;
391
+ identity: undefined;
392
+ generated: undefined;
393
+ }, {}, {}>;
394
+ startedAt: import("drizzle-orm/pg-core").PgColumn<{
395
+ name: "started_at";
396
+ tableName: "pr_merge_log";
397
+ dataType: "date";
398
+ columnType: "PgTimestamp";
399
+ data: Date;
400
+ driverParam: string;
401
+ notNull: true;
402
+ hasDefault: true;
403
+ isPrimaryKey: false;
404
+ isAutoincrement: false;
405
+ hasRuntimeDefault: false;
406
+ enumValues: undefined;
407
+ baseColumn: never;
408
+ identity: undefined;
409
+ generated: undefined;
410
+ }, {}, {}>;
411
+ completedAt: import("drizzle-orm/pg-core").PgColumn<{
412
+ name: "completed_at";
413
+ tableName: "pr_merge_log";
414
+ dataType: "date";
415
+ columnType: "PgTimestamp";
416
+ data: Date;
417
+ driverParam: string;
418
+ notNull: false;
419
+ hasDefault: false;
420
+ isPrimaryKey: false;
421
+ isAutoincrement: false;
422
+ hasRuntimeDefault: false;
423
+ enumValues: undefined;
424
+ baseColumn: never;
425
+ identity: undefined;
426
+ generated: undefined;
427
+ }, {}, {}>;
428
+ };
429
+ dialect: "pg";
430
+ }>;
431
+ /**
432
+ * In-app PR comments. GitHub is authoritative for the diff + PR metadata;
433
+ * Bevel owns the review conversation. Comments never round-trip to GitHub.
434
+ *
435
+ * Shape encodes three comment kinds:
436
+ * • General PR comment — path null, line null
437
+ * • File-level comment — path set, line null
438
+ * • Inline (line-anchored) — path set, line set
439
+ *
440
+ * Threading: replies point at their root via `parentId`. Root comments have
441
+ * `parentId = null`. We use a self-FK-less column (no DB-side constraint) to
442
+ * keep the parent row independently deletable — the service layer tolerates
443
+ * orphan replies rather than cascading deletes and losing discussion context.
444
+ */
445
+ export declare const prComments: import("drizzle-orm/pg-core").PgTableWithColumns<{
446
+ name: "pr_comments";
447
+ schema: undefined;
448
+ columns: {
449
+ id: import("drizzle-orm/pg-core").PgColumn<{
450
+ name: "id";
451
+ tableName: "pr_comments";
452
+ dataType: "string";
453
+ columnType: "PgUUID";
454
+ data: string;
455
+ driverParam: string;
456
+ notNull: true;
457
+ hasDefault: true;
458
+ isPrimaryKey: true;
459
+ isAutoincrement: false;
460
+ hasRuntimeDefault: false;
461
+ enumValues: undefined;
462
+ baseColumn: never;
463
+ identity: undefined;
464
+ generated: undefined;
465
+ }, {}, {}>;
466
+ prNumber: import("drizzle-orm/pg-core").PgColumn<{
467
+ name: "pr_number";
468
+ tableName: "pr_comments";
469
+ dataType: "number";
470
+ columnType: "PgInteger";
471
+ data: number;
472
+ driverParam: string | number;
473
+ notNull: true;
474
+ hasDefault: false;
475
+ isPrimaryKey: false;
476
+ isAutoincrement: false;
477
+ hasRuntimeDefault: false;
478
+ enumValues: undefined;
479
+ baseColumn: never;
480
+ identity: undefined;
481
+ generated: undefined;
482
+ }, {}, {}>;
483
+ authorEmail: import("drizzle-orm/pg-core").PgColumn<{
484
+ name: "author_email";
485
+ tableName: "pr_comments";
486
+ dataType: "string";
487
+ columnType: "PgText";
488
+ data: string;
489
+ driverParam: string;
490
+ notNull: true;
491
+ hasDefault: false;
492
+ isPrimaryKey: false;
493
+ isAutoincrement: false;
494
+ hasRuntimeDefault: false;
495
+ enumValues: [string, ...string[]];
496
+ baseColumn: never;
497
+ identity: undefined;
498
+ generated: undefined;
499
+ }, {}, {}>;
500
+ authorName: import("drizzle-orm/pg-core").PgColumn<{
501
+ name: "author_name";
502
+ tableName: "pr_comments";
503
+ dataType: "string";
504
+ columnType: "PgText";
505
+ data: string;
506
+ driverParam: string;
507
+ notNull: true;
508
+ hasDefault: false;
509
+ isPrimaryKey: false;
510
+ isAutoincrement: false;
511
+ hasRuntimeDefault: false;
512
+ enumValues: [string, ...string[]];
513
+ baseColumn: never;
514
+ identity: undefined;
515
+ generated: undefined;
516
+ }, {}, {}>;
517
+ path: import("drizzle-orm/pg-core").PgColumn<{
518
+ name: "path";
519
+ tableName: "pr_comments";
520
+ dataType: "string";
521
+ columnType: "PgText";
522
+ data: string;
523
+ driverParam: string;
524
+ notNull: false;
525
+ hasDefault: false;
526
+ isPrimaryKey: false;
527
+ isAutoincrement: false;
528
+ hasRuntimeDefault: false;
529
+ enumValues: [string, ...string[]];
530
+ baseColumn: never;
531
+ identity: undefined;
532
+ generated: undefined;
533
+ }, {}, {}>;
534
+ line: import("drizzle-orm/pg-core").PgColumn<{
535
+ name: "line";
536
+ tableName: "pr_comments";
537
+ dataType: "number";
538
+ columnType: "PgInteger";
539
+ data: number;
540
+ driverParam: string | number;
541
+ notNull: false;
542
+ hasDefault: false;
543
+ isPrimaryKey: false;
544
+ isAutoincrement: false;
545
+ hasRuntimeDefault: false;
546
+ enumValues: undefined;
547
+ baseColumn: never;
548
+ identity: undefined;
549
+ generated: undefined;
550
+ }, {}, {}>;
551
+ headSha: import("drizzle-orm/pg-core").PgColumn<{
552
+ name: "head_sha";
553
+ tableName: "pr_comments";
554
+ dataType: "string";
555
+ columnType: "PgText";
556
+ data: string;
557
+ driverParam: string;
558
+ notNull: true;
559
+ hasDefault: false;
560
+ isPrimaryKey: false;
561
+ isAutoincrement: false;
562
+ hasRuntimeDefault: false;
563
+ enumValues: [string, ...string[]];
564
+ baseColumn: never;
565
+ identity: undefined;
566
+ generated: undefined;
567
+ }, {}, {}>;
568
+ body: import("drizzle-orm/pg-core").PgColumn<{
569
+ name: "body";
570
+ tableName: "pr_comments";
571
+ dataType: "string";
572
+ columnType: "PgText";
573
+ data: string;
574
+ driverParam: string;
575
+ notNull: true;
576
+ hasDefault: false;
577
+ isPrimaryKey: false;
578
+ isAutoincrement: false;
579
+ hasRuntimeDefault: false;
580
+ enumValues: [string, ...string[]];
581
+ baseColumn: never;
582
+ identity: undefined;
583
+ generated: undefined;
584
+ }, {}, {}>;
585
+ parentId: import("drizzle-orm/pg-core").PgColumn<{
586
+ name: "parent_id";
587
+ tableName: "pr_comments";
588
+ dataType: "string";
589
+ columnType: "PgUUID";
590
+ data: string;
591
+ driverParam: string;
592
+ notNull: false;
593
+ hasDefault: false;
594
+ isPrimaryKey: false;
595
+ isAutoincrement: false;
596
+ hasRuntimeDefault: false;
597
+ enumValues: undefined;
598
+ baseColumn: never;
599
+ identity: undefined;
600
+ generated: undefined;
601
+ }, {}, {}>;
602
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
603
+ name: "created_at";
604
+ tableName: "pr_comments";
605
+ dataType: "date";
606
+ columnType: "PgTimestamp";
607
+ data: Date;
608
+ driverParam: string;
609
+ notNull: true;
610
+ hasDefault: true;
611
+ isPrimaryKey: false;
612
+ isAutoincrement: false;
613
+ hasRuntimeDefault: false;
614
+ enumValues: undefined;
615
+ baseColumn: never;
616
+ identity: undefined;
617
+ generated: undefined;
618
+ }, {}, {}>;
619
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
620
+ name: "updated_at";
621
+ tableName: "pr_comments";
622
+ dataType: "date";
623
+ columnType: "PgTimestamp";
624
+ data: Date;
625
+ driverParam: string;
626
+ notNull: false;
627
+ hasDefault: false;
628
+ isPrimaryKey: false;
629
+ isAutoincrement: false;
630
+ hasRuntimeDefault: false;
631
+ enumValues: undefined;
632
+ baseColumn: never;
633
+ identity: undefined;
634
+ generated: undefined;
635
+ }, {}, {}>;
636
+ };
637
+ dialect: "pg";
638
+ }>;
639
+ /**
640
+ * Change requests (the app's own "pull request" model). The app used to lean on
641
+ * GitHub PRs via the `gh` CLI; now a change request is a plain DB row plus git
642
+ * branches, so ANY git host (GitHub, GitLab, Bitbucket, Azure DevOps, self-
643
+ * hosted) works — the remote only stores commits/branches.
644
+ *
645
+ * `number` is the human-facing id and the join key the sibling tables
646
+ * (`pr_file_approvals`, `pr_comments`, `pr_merge_log`) reference in their
647
+ * `pr_number` column — those columns now hold THIS number, not a GitHub PR
648
+ * number. It's a DB-assigned identity so allocation is race-free.
649
+ *
650
+ * The diff, head/base SHAs, and mergeability are computed live from git (not
651
+ * stored) so a force-push or a new commit is always reflected; only durable
652
+ * facts live here — the pairing, title/body, author, lifecycle state.
653
+ */
654
+ export declare const changeRequests: import("drizzle-orm/pg-core").PgTableWithColumns<{
655
+ name: "change_requests";
656
+ schema: undefined;
657
+ columns: {
658
+ id: import("drizzle-orm/pg-core").PgColumn<{
659
+ name: "id";
660
+ tableName: "change_requests";
661
+ dataType: "string";
662
+ columnType: "PgUUID";
663
+ data: string;
664
+ driverParam: string;
665
+ notNull: true;
666
+ hasDefault: true;
667
+ isPrimaryKey: true;
668
+ isAutoincrement: false;
669
+ hasRuntimeDefault: false;
670
+ enumValues: undefined;
671
+ baseColumn: never;
672
+ identity: undefined;
673
+ generated: undefined;
674
+ }, {}, {}>;
675
+ number: import("drizzle-orm/pg-core").PgColumn<{
676
+ name: "number";
677
+ tableName: "change_requests";
678
+ dataType: "number";
679
+ columnType: "PgInteger";
680
+ data: number;
681
+ driverParam: string | number;
682
+ notNull: true;
683
+ hasDefault: true;
684
+ isPrimaryKey: false;
685
+ isAutoincrement: false;
686
+ hasRuntimeDefault: false;
687
+ enumValues: undefined;
688
+ baseColumn: never;
689
+ identity: "always";
690
+ generated: undefined;
691
+ }, {}, {}>;
692
+ sourceBranch: import("drizzle-orm/pg-core").PgColumn<{
693
+ name: "source_branch";
694
+ tableName: "change_requests";
695
+ dataType: "string";
696
+ columnType: "PgText";
697
+ data: string;
698
+ driverParam: string;
699
+ notNull: true;
700
+ hasDefault: false;
701
+ isPrimaryKey: false;
702
+ isAutoincrement: false;
703
+ hasRuntimeDefault: false;
704
+ enumValues: [string, ...string[]];
705
+ baseColumn: never;
706
+ identity: undefined;
707
+ generated: undefined;
708
+ }, {}, {}>;
709
+ targetBranch: import("drizzle-orm/pg-core").PgColumn<{
710
+ name: "target_branch";
711
+ tableName: "change_requests";
712
+ dataType: "string";
713
+ columnType: "PgText";
714
+ data: string;
715
+ driverParam: string;
716
+ notNull: true;
717
+ hasDefault: false;
718
+ isPrimaryKey: false;
719
+ isAutoincrement: false;
720
+ hasRuntimeDefault: false;
721
+ enumValues: [string, ...string[]];
722
+ baseColumn: never;
723
+ identity: undefined;
724
+ generated: undefined;
725
+ }, {}, {}>;
726
+ title: import("drizzle-orm/pg-core").PgColumn<{
727
+ name: "title";
728
+ tableName: "change_requests";
729
+ dataType: "string";
730
+ columnType: "PgText";
731
+ data: string;
732
+ driverParam: string;
733
+ notNull: true;
734
+ hasDefault: false;
735
+ isPrimaryKey: false;
736
+ isAutoincrement: false;
737
+ hasRuntimeDefault: false;
738
+ enumValues: [string, ...string[]];
739
+ baseColumn: never;
740
+ identity: undefined;
741
+ generated: undefined;
742
+ }, {}, {}>;
743
+ body: import("drizzle-orm/pg-core").PgColumn<{
744
+ name: "body";
745
+ tableName: "change_requests";
746
+ dataType: "string";
747
+ columnType: "PgText";
748
+ data: string;
749
+ driverParam: string;
750
+ notNull: true;
751
+ hasDefault: true;
752
+ isPrimaryKey: false;
753
+ isAutoincrement: false;
754
+ hasRuntimeDefault: false;
755
+ enumValues: [string, ...string[]];
756
+ baseColumn: never;
757
+ identity: undefined;
758
+ generated: undefined;
759
+ }, {}, {}>;
760
+ authorEmail: import("drizzle-orm/pg-core").PgColumn<{
761
+ name: "author_email";
762
+ tableName: "change_requests";
763
+ dataType: "string";
764
+ columnType: "PgText";
765
+ data: string;
766
+ driverParam: string;
767
+ notNull: true;
768
+ hasDefault: false;
769
+ isPrimaryKey: false;
770
+ isAutoincrement: false;
771
+ hasRuntimeDefault: false;
772
+ enumValues: [string, ...string[]];
773
+ baseColumn: never;
774
+ identity: undefined;
775
+ generated: undefined;
776
+ }, {}, {}>;
777
+ authorName: import("drizzle-orm/pg-core").PgColumn<{
778
+ name: "author_name";
779
+ tableName: "change_requests";
780
+ dataType: "string";
781
+ columnType: "PgText";
782
+ data: string;
783
+ driverParam: string;
784
+ notNull: true;
785
+ hasDefault: false;
786
+ isPrimaryKey: false;
787
+ isAutoincrement: false;
788
+ hasRuntimeDefault: false;
789
+ enumValues: [string, ...string[]];
790
+ baseColumn: never;
791
+ identity: undefined;
792
+ generated: undefined;
793
+ }, {}, {}>;
794
+ state: import("drizzle-orm/pg-core").PgColumn<{
795
+ name: "state";
796
+ tableName: "change_requests";
797
+ dataType: "string";
798
+ columnType: "PgText";
799
+ data: string;
800
+ driverParam: string;
801
+ notNull: true;
802
+ hasDefault: true;
803
+ isPrimaryKey: false;
804
+ isAutoincrement: false;
805
+ hasRuntimeDefault: false;
806
+ enumValues: [string, ...string[]];
807
+ baseColumn: never;
808
+ identity: undefined;
809
+ generated: undefined;
810
+ }, {}, {}>;
811
+ mergedSha: import("drizzle-orm/pg-core").PgColumn<{
812
+ name: "merged_sha";
813
+ tableName: "change_requests";
814
+ dataType: "string";
815
+ columnType: "PgText";
816
+ data: string;
817
+ driverParam: string;
818
+ notNull: false;
819
+ hasDefault: false;
820
+ isPrimaryKey: false;
821
+ isAutoincrement: false;
822
+ hasRuntimeDefault: false;
823
+ enumValues: [string, ...string[]];
824
+ baseColumn: never;
825
+ identity: undefined;
826
+ generated: undefined;
827
+ }, {}, {}>;
828
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
829
+ name: "created_at";
830
+ tableName: "change_requests";
831
+ dataType: "date";
832
+ columnType: "PgTimestamp";
833
+ data: Date;
834
+ driverParam: string;
835
+ notNull: true;
836
+ hasDefault: true;
837
+ isPrimaryKey: false;
838
+ isAutoincrement: false;
839
+ hasRuntimeDefault: false;
840
+ enumValues: undefined;
841
+ baseColumn: never;
842
+ identity: undefined;
843
+ generated: undefined;
844
+ }, {}, {}>;
845
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
846
+ name: "updated_at";
847
+ tableName: "change_requests";
848
+ dataType: "date";
849
+ columnType: "PgTimestamp";
850
+ data: Date;
851
+ driverParam: string;
852
+ notNull: false;
853
+ hasDefault: false;
854
+ isPrimaryKey: false;
855
+ isAutoincrement: false;
856
+ hasRuntimeDefault: false;
857
+ enumValues: undefined;
858
+ baseColumn: never;
859
+ identity: undefined;
860
+ generated: undefined;
861
+ }, {}, {}>;
862
+ closedAt: import("drizzle-orm/pg-core").PgColumn<{
863
+ name: "closed_at";
864
+ tableName: "change_requests";
865
+ dataType: "date";
866
+ columnType: "PgTimestamp";
867
+ data: Date;
868
+ driverParam: string;
869
+ notNull: false;
870
+ hasDefault: false;
871
+ isPrimaryKey: false;
872
+ isAutoincrement: false;
873
+ hasRuntimeDefault: false;
874
+ enumValues: undefined;
875
+ baseColumn: never;
876
+ identity: undefined;
877
+ generated: undefined;
878
+ }, {}, {}>;
879
+ };
880
+ dialect: "pg";
881
+ }>;
882
+ /**
883
+ * Long-lived API tokens that authenticate remote agents (Claude Code and
884
+ * similar MCP clients) as a specific Bevel user. Plaintext token is shown
885
+ * once at mint time; we store only the SHA-256 hash. Verification is a hash
886
+ * lookup, so the unique index on `token_hash` is what makes lookup O(1)
887
+ * rather than a table scan.
888
+ *
889
+ * Tokens are revoked, not deleted — keeping the row preserves the audit
890
+ * trail for `last_used_at` and lets an operator see when a leaked key was
891
+ * actually used. A revoked row is rejected on verify because the service
892
+ * filters on `revoked_at IS NULL`; the unique index still applies, so a
893
+ * revoked token cannot be re-issued.
894
+ */
895
+ export declare const externalApiKeys: import("drizzle-orm/pg-core").PgTableWithColumns<{
896
+ name: "api_tokens";
897
+ schema: undefined;
898
+ columns: {
899
+ id: import("drizzle-orm/pg-core").PgColumn<{
900
+ name: "id";
901
+ tableName: "api_tokens";
902
+ dataType: "string";
903
+ columnType: "PgUUID";
904
+ data: string;
905
+ driverParam: string;
906
+ notNull: true;
907
+ hasDefault: true;
908
+ isPrimaryKey: true;
909
+ isAutoincrement: false;
910
+ hasRuntimeDefault: false;
911
+ enumValues: undefined;
912
+ baseColumn: never;
913
+ identity: undefined;
914
+ generated: undefined;
915
+ }, {}, {}>;
916
+ userId: import("drizzle-orm/pg-core").PgColumn<{
917
+ name: "user_id";
918
+ tableName: "api_tokens";
919
+ dataType: "string";
920
+ columnType: "PgUUID";
921
+ data: string;
922
+ driverParam: string;
923
+ notNull: true;
924
+ hasDefault: false;
925
+ isPrimaryKey: false;
926
+ isAutoincrement: false;
927
+ hasRuntimeDefault: false;
928
+ enumValues: undefined;
929
+ baseColumn: never;
930
+ identity: undefined;
931
+ generated: undefined;
932
+ }, {}, {}>;
933
+ tokenHash: import("drizzle-orm/pg-core").PgColumn<{
934
+ name: "token_hash";
935
+ tableName: "api_tokens";
936
+ dataType: "string";
937
+ columnType: "PgText";
938
+ data: string;
939
+ driverParam: string;
940
+ notNull: true;
941
+ hasDefault: false;
942
+ isPrimaryKey: false;
943
+ isAutoincrement: false;
944
+ hasRuntimeDefault: false;
945
+ enumValues: [string, ...string[]];
946
+ baseColumn: never;
947
+ identity: undefined;
948
+ generated: undefined;
949
+ }, {}, {}>;
950
+ label: import("drizzle-orm/pg-core").PgColumn<{
951
+ name: "label";
952
+ tableName: "api_tokens";
953
+ dataType: "string";
954
+ columnType: "PgText";
955
+ data: string;
956
+ driverParam: string;
957
+ notNull: true;
958
+ hasDefault: false;
959
+ isPrimaryKey: false;
960
+ isAutoincrement: false;
961
+ hasRuntimeDefault: false;
962
+ enumValues: [string, ...string[]];
963
+ baseColumn: never;
964
+ identity: undefined;
965
+ generated: undefined;
966
+ }, {}, {}>;
967
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
968
+ name: "created_at";
969
+ tableName: "api_tokens";
970
+ dataType: "date";
971
+ columnType: "PgTimestamp";
972
+ data: Date;
973
+ driverParam: string;
974
+ notNull: true;
975
+ hasDefault: true;
976
+ isPrimaryKey: false;
977
+ isAutoincrement: false;
978
+ hasRuntimeDefault: false;
979
+ enumValues: undefined;
980
+ baseColumn: never;
981
+ identity: undefined;
982
+ generated: undefined;
983
+ }, {}, {}>;
984
+ lastUsedAt: import("drizzle-orm/pg-core").PgColumn<{
985
+ name: "last_used_at";
986
+ tableName: "api_tokens";
987
+ dataType: "date";
988
+ columnType: "PgTimestamp";
989
+ data: Date;
990
+ driverParam: string;
991
+ notNull: false;
992
+ hasDefault: false;
993
+ isPrimaryKey: false;
994
+ isAutoincrement: false;
995
+ hasRuntimeDefault: false;
996
+ enumValues: undefined;
997
+ baseColumn: never;
998
+ identity: undefined;
999
+ generated: undefined;
1000
+ }, {}, {}>;
1001
+ revokedAt: import("drizzle-orm/pg-core").PgColumn<{
1002
+ name: "revoked_at";
1003
+ tableName: "api_tokens";
1004
+ dataType: "date";
1005
+ columnType: "PgTimestamp";
1006
+ data: Date;
1007
+ driverParam: string;
1008
+ notNull: false;
1009
+ hasDefault: false;
1010
+ isPrimaryKey: false;
1011
+ isAutoincrement: false;
1012
+ hasRuntimeDefault: false;
1013
+ enumValues: undefined;
1014
+ baseColumn: never;
1015
+ identity: undefined;
1016
+ generated: undefined;
1017
+ }, {}, {}>;
1018
+ };
1019
+ dialect: "pg";
1020
+ }>;
1021
+ /**
1022
+ * Per-(workspace, branch, path) edit locks. While the lock is held by a user,
1023
+ * other users see the file as locked and can't edit it. The client pings
1024
+ * `last_heartbeat_at` periodically; when `expires_at` passes without a
1025
+ * heartbeat the lock is considered stale and may be reclaimed by another
1026
+ * caller — prevents a disconnected client from holding a file hostage.
1027
+ *
1028
+ * Composite primary key on (workspace, branch, path) — one lock per file
1029
+ * per branch. The same physical path on another branch is independently
1030
+ * lockable; the spec calls this out explicitly.
1031
+ *
1032
+ * Holder identity carries both the user id (FK into `users` for referential
1033
+ * integrity) and a denormalised display name so consumers can render
1034
+ * "Locked by Alice" without a JOIN on the hot read path.
1035
+ */
1036
+ export declare const fileLocks: import("drizzle-orm/pg-core").PgTableWithColumns<{
1037
+ name: "file_locks";
1038
+ schema: undefined;
1039
+ columns: {
1040
+ workspaceId: import("drizzle-orm/pg-core").PgColumn<{
1041
+ name: "workspace_id";
1042
+ tableName: "file_locks";
1043
+ dataType: "string";
1044
+ columnType: "PgText";
1045
+ data: string;
1046
+ driverParam: string;
1047
+ notNull: true;
1048
+ hasDefault: false;
1049
+ isPrimaryKey: false;
1050
+ isAutoincrement: false;
1051
+ hasRuntimeDefault: false;
1052
+ enumValues: [string, ...string[]];
1053
+ baseColumn: never;
1054
+ identity: undefined;
1055
+ generated: undefined;
1056
+ }, {}, {}>;
1057
+ branch: import("drizzle-orm/pg-core").PgColumn<{
1058
+ name: "branch";
1059
+ tableName: "file_locks";
1060
+ dataType: "string";
1061
+ columnType: "PgText";
1062
+ data: string;
1063
+ driverParam: string;
1064
+ notNull: true;
1065
+ hasDefault: false;
1066
+ isPrimaryKey: false;
1067
+ isAutoincrement: false;
1068
+ hasRuntimeDefault: false;
1069
+ enumValues: [string, ...string[]];
1070
+ baseColumn: never;
1071
+ identity: undefined;
1072
+ generated: undefined;
1073
+ }, {}, {}>;
1074
+ path: import("drizzle-orm/pg-core").PgColumn<{
1075
+ name: "path";
1076
+ tableName: "file_locks";
1077
+ dataType: "string";
1078
+ columnType: "PgText";
1079
+ data: string;
1080
+ driverParam: string;
1081
+ notNull: true;
1082
+ hasDefault: false;
1083
+ isPrimaryKey: false;
1084
+ isAutoincrement: false;
1085
+ hasRuntimeDefault: false;
1086
+ enumValues: [string, ...string[]];
1087
+ baseColumn: never;
1088
+ identity: undefined;
1089
+ generated: undefined;
1090
+ }, {}, {}>;
1091
+ holderUserId: import("drizzle-orm/pg-core").PgColumn<{
1092
+ name: "holder_user_id";
1093
+ tableName: "file_locks";
1094
+ dataType: "string";
1095
+ columnType: "PgUUID";
1096
+ data: string;
1097
+ driverParam: string;
1098
+ notNull: true;
1099
+ hasDefault: false;
1100
+ isPrimaryKey: false;
1101
+ isAutoincrement: false;
1102
+ hasRuntimeDefault: false;
1103
+ enumValues: undefined;
1104
+ baseColumn: never;
1105
+ identity: undefined;
1106
+ generated: undefined;
1107
+ }, {}, {}>;
1108
+ holderName: import("drizzle-orm/pg-core").PgColumn<{
1109
+ name: "holder_name";
1110
+ tableName: "file_locks";
1111
+ dataType: "string";
1112
+ columnType: "PgText";
1113
+ data: string;
1114
+ driverParam: string;
1115
+ notNull: true;
1116
+ hasDefault: false;
1117
+ isPrimaryKey: false;
1118
+ isAutoincrement: false;
1119
+ hasRuntimeDefault: false;
1120
+ enumValues: [string, ...string[]];
1121
+ baseColumn: never;
1122
+ identity: undefined;
1123
+ generated: undefined;
1124
+ }, {}, {}>;
1125
+ acquiredAt: import("drizzle-orm/pg-core").PgColumn<{
1126
+ name: "acquired_at";
1127
+ tableName: "file_locks";
1128
+ dataType: "date";
1129
+ columnType: "PgTimestamp";
1130
+ data: Date;
1131
+ driverParam: string;
1132
+ notNull: true;
1133
+ hasDefault: true;
1134
+ isPrimaryKey: false;
1135
+ isAutoincrement: false;
1136
+ hasRuntimeDefault: false;
1137
+ enumValues: undefined;
1138
+ baseColumn: never;
1139
+ identity: undefined;
1140
+ generated: undefined;
1141
+ }, {}, {}>;
1142
+ lastHeartbeatAt: import("drizzle-orm/pg-core").PgColumn<{
1143
+ name: "last_heartbeat_at";
1144
+ tableName: "file_locks";
1145
+ dataType: "date";
1146
+ columnType: "PgTimestamp";
1147
+ data: Date;
1148
+ driverParam: string;
1149
+ notNull: true;
1150
+ hasDefault: true;
1151
+ isPrimaryKey: false;
1152
+ isAutoincrement: false;
1153
+ hasRuntimeDefault: false;
1154
+ enumValues: undefined;
1155
+ baseColumn: never;
1156
+ identity: undefined;
1157
+ generated: undefined;
1158
+ }, {}, {}>;
1159
+ expiresAt: import("drizzle-orm/pg-core").PgColumn<{
1160
+ name: "expires_at";
1161
+ tableName: "file_locks";
1162
+ dataType: "date";
1163
+ columnType: "PgTimestamp";
1164
+ data: Date;
1165
+ driverParam: string;
1166
+ notNull: true;
1167
+ hasDefault: false;
1168
+ isPrimaryKey: false;
1169
+ isAutoincrement: false;
1170
+ hasRuntimeDefault: false;
1171
+ enumValues: undefined;
1172
+ baseColumn: never;
1173
+ identity: undefined;
1174
+ generated: undefined;
1175
+ }, {}, {}>;
1176
+ };
1177
+ dialect: "pg";
1178
+ }>;
1179
+ /**
1180
+ * Background commit queue. Every successful lock release enqueues a row
1181
+ * here; the queue worker drains it by running `commitFile` + `pushBranch`
1182
+ * (with the existing `pushWithRecovery` cooperative pull-rebase).
1183
+ *
1184
+ * Why a table and not an in-memory queue: the prior in-line lock-release
1185
+ * commit path stranded files on disk whenever the process died (or git
1186
+ * blipped) between disk-write and commit. A persistent queue means a
1187
+ * process crash leaves the work resumable — the next worker pass picks
1188
+ * it up. Schema choices follow from that:
1189
+ *
1190
+ * - `id` UUID PK so the worker can `UPDATE ... WHERE id = ...` atomically
1191
+ * without locking the queue. Read order is `(workspace_id, queued_at)`
1192
+ * so per-workspace work stays FIFO.
1193
+ * - `(workspace_id, branch, path)` is NOT unique. Two consecutive saves
1194
+ * of the same file produce two rows; the worker collapses them by
1195
+ * committing once and deleting both (commitFile is a no-op on a
1196
+ * clean path, so the duplicate becomes a free deletion).
1197
+ * - Author identity is denormalised (email + name) at enqueue time, like
1198
+ * `file_locks.holder_name`. We don't FK into `users` because the
1199
+ * startup sweep enqueues orphans with synthetic `system-recovery`
1200
+ * attribution and there's no row for that user.
1201
+ * - `attempts` + `last_error` drive the worker's transient-retry budget
1202
+ * (1s/5s/30s backoff before handing off to the recovery agent) and
1203
+ * the agent's own retry ceiling (3 runs before `status = needs_attention`).
1204
+ * - `status` is a small enum (`pending` | `running` | `needs_attention`).
1205
+ * Workers claim a row by flipping `pending → running` in a single
1206
+ * UPDATE; terminal failure flips to `needs_attention` and the row
1207
+ * stays for admin / feedback review.
1208
+ * - `last_attempted_at` gates backoff scheduling so the worker doesn't
1209
+ * re-pop a row that just failed.
1210
+ */
1211
+ export declare const pendingCommits: import("drizzle-orm/pg-core").PgTableWithColumns<{
1212
+ name: "pending_commits";
1213
+ schema: undefined;
1214
+ columns: {
1215
+ id: import("drizzle-orm/pg-core").PgColumn<{
1216
+ name: "id";
1217
+ tableName: "pending_commits";
1218
+ dataType: "string";
1219
+ columnType: "PgUUID";
1220
+ data: string;
1221
+ driverParam: string;
1222
+ notNull: true;
1223
+ hasDefault: true;
1224
+ isPrimaryKey: true;
1225
+ isAutoincrement: false;
1226
+ hasRuntimeDefault: false;
1227
+ enumValues: undefined;
1228
+ baseColumn: never;
1229
+ identity: undefined;
1230
+ generated: undefined;
1231
+ }, {}, {}>;
1232
+ workspaceId: import("drizzle-orm/pg-core").PgColumn<{
1233
+ name: "workspace_id";
1234
+ tableName: "pending_commits";
1235
+ dataType: "string";
1236
+ columnType: "PgText";
1237
+ data: string;
1238
+ driverParam: string;
1239
+ notNull: true;
1240
+ hasDefault: false;
1241
+ isPrimaryKey: false;
1242
+ isAutoincrement: false;
1243
+ hasRuntimeDefault: false;
1244
+ enumValues: [string, ...string[]];
1245
+ baseColumn: never;
1246
+ identity: undefined;
1247
+ generated: undefined;
1248
+ }, {}, {}>;
1249
+ branch: import("drizzle-orm/pg-core").PgColumn<{
1250
+ name: "branch";
1251
+ tableName: "pending_commits";
1252
+ dataType: "string";
1253
+ columnType: "PgText";
1254
+ data: string;
1255
+ driverParam: string;
1256
+ notNull: true;
1257
+ hasDefault: false;
1258
+ isPrimaryKey: false;
1259
+ isAutoincrement: false;
1260
+ hasRuntimeDefault: false;
1261
+ enumValues: [string, ...string[]];
1262
+ baseColumn: never;
1263
+ identity: undefined;
1264
+ generated: undefined;
1265
+ }, {}, {}>;
1266
+ path: import("drizzle-orm/pg-core").PgColumn<{
1267
+ name: "path";
1268
+ tableName: "pending_commits";
1269
+ dataType: "string";
1270
+ columnType: "PgText";
1271
+ data: string;
1272
+ driverParam: string;
1273
+ notNull: true;
1274
+ hasDefault: false;
1275
+ isPrimaryKey: false;
1276
+ isAutoincrement: false;
1277
+ hasRuntimeDefault: false;
1278
+ enumValues: [string, ...string[]];
1279
+ baseColumn: never;
1280
+ identity: undefined;
1281
+ generated: undefined;
1282
+ }, {}, {}>;
1283
+ authorEmail: import("drizzle-orm/pg-core").PgColumn<{
1284
+ name: "author_email";
1285
+ tableName: "pending_commits";
1286
+ dataType: "string";
1287
+ columnType: "PgText";
1288
+ data: string;
1289
+ driverParam: string;
1290
+ notNull: true;
1291
+ hasDefault: false;
1292
+ isPrimaryKey: false;
1293
+ isAutoincrement: false;
1294
+ hasRuntimeDefault: false;
1295
+ enumValues: [string, ...string[]];
1296
+ baseColumn: never;
1297
+ identity: undefined;
1298
+ generated: undefined;
1299
+ }, {}, {}>;
1300
+ authorName: import("drizzle-orm/pg-core").PgColumn<{
1301
+ name: "author_name";
1302
+ tableName: "pending_commits";
1303
+ dataType: "string";
1304
+ columnType: "PgText";
1305
+ data: string;
1306
+ driverParam: string;
1307
+ notNull: true;
1308
+ hasDefault: false;
1309
+ isPrimaryKey: false;
1310
+ isAutoincrement: false;
1311
+ hasRuntimeDefault: false;
1312
+ enumValues: [string, ...string[]];
1313
+ baseColumn: never;
1314
+ identity: undefined;
1315
+ generated: undefined;
1316
+ }, {}, {}>;
1317
+ queuedAt: import("drizzle-orm/pg-core").PgColumn<{
1318
+ name: "queued_at";
1319
+ tableName: "pending_commits";
1320
+ dataType: "date";
1321
+ columnType: "PgTimestamp";
1322
+ data: Date;
1323
+ driverParam: string;
1324
+ notNull: true;
1325
+ hasDefault: true;
1326
+ isPrimaryKey: false;
1327
+ isAutoincrement: false;
1328
+ hasRuntimeDefault: false;
1329
+ enumValues: undefined;
1330
+ baseColumn: never;
1331
+ identity: undefined;
1332
+ generated: undefined;
1333
+ }, {}, {}>;
1334
+ status: import("drizzle-orm/pg-core").PgColumn<{
1335
+ name: "status";
1336
+ tableName: "pending_commits";
1337
+ dataType: "string";
1338
+ columnType: "PgText";
1339
+ data: string;
1340
+ driverParam: string;
1341
+ notNull: true;
1342
+ hasDefault: true;
1343
+ isPrimaryKey: false;
1344
+ isAutoincrement: false;
1345
+ hasRuntimeDefault: false;
1346
+ enumValues: [string, ...string[]];
1347
+ baseColumn: never;
1348
+ identity: undefined;
1349
+ generated: undefined;
1350
+ }, {}, {}>;
1351
+ attempts: import("drizzle-orm/pg-core").PgColumn<{
1352
+ name: "attempts";
1353
+ tableName: "pending_commits";
1354
+ dataType: "number";
1355
+ columnType: "PgInteger";
1356
+ data: number;
1357
+ driverParam: string | number;
1358
+ notNull: true;
1359
+ hasDefault: true;
1360
+ isPrimaryKey: false;
1361
+ isAutoincrement: false;
1362
+ hasRuntimeDefault: false;
1363
+ enumValues: undefined;
1364
+ baseColumn: never;
1365
+ identity: undefined;
1366
+ generated: undefined;
1367
+ }, {}, {}>;
1368
+ recoveryAgentRuns: import("drizzle-orm/pg-core").PgColumn<{
1369
+ name: "recovery_agent_runs";
1370
+ tableName: "pending_commits";
1371
+ dataType: "number";
1372
+ columnType: "PgInteger";
1373
+ data: number;
1374
+ driverParam: string | number;
1375
+ notNull: true;
1376
+ hasDefault: true;
1377
+ isPrimaryKey: false;
1378
+ isAutoincrement: false;
1379
+ hasRuntimeDefault: false;
1380
+ enumValues: undefined;
1381
+ baseColumn: never;
1382
+ identity: undefined;
1383
+ generated: undefined;
1384
+ }, {}, {}>;
1385
+ lastAttemptedAt: import("drizzle-orm/pg-core").PgColumn<{
1386
+ name: "last_attempted_at";
1387
+ tableName: "pending_commits";
1388
+ dataType: "date";
1389
+ columnType: "PgTimestamp";
1390
+ data: Date;
1391
+ driverParam: string;
1392
+ notNull: false;
1393
+ hasDefault: false;
1394
+ isPrimaryKey: false;
1395
+ isAutoincrement: false;
1396
+ hasRuntimeDefault: false;
1397
+ enumValues: undefined;
1398
+ baseColumn: never;
1399
+ identity: undefined;
1400
+ generated: undefined;
1401
+ }, {}, {}>;
1402
+ lastError: import("drizzle-orm/pg-core").PgColumn<{
1403
+ name: "last_error";
1404
+ tableName: "pending_commits";
1405
+ dataType: "string";
1406
+ columnType: "PgText";
1407
+ data: string;
1408
+ driverParam: string;
1409
+ notNull: false;
1410
+ hasDefault: false;
1411
+ isPrimaryKey: false;
1412
+ isAutoincrement: false;
1413
+ hasRuntimeDefault: false;
1414
+ enumValues: [string, ...string[]];
1415
+ baseColumn: never;
1416
+ identity: undefined;
1417
+ generated: undefined;
1418
+ }, {}, {}>;
1419
+ };
1420
+ dialect: "pg";
1421
+ }>;
1422
+ /**
1423
+ * Secrets Vault — the per-user store of credentials that back UTCP tool
1424
+ * variables (`${FOO_API_KEY}`). Distinct from `vault_sources` (which holds
1425
+ * connector+URL POINTERS and no credentials): this table holds the actual
1426
+ * secret values, encrypted at rest.
1427
+ *
1428
+ * Two kinds:
1429
+ * - `static` — a value the user pasted (an API key). `value_encrypted` is the
1430
+ * AES-256-GCM ciphertext of the raw value.
1431
+ * - `oauth` — an authorization-code credential. `value_encrypted` is the
1432
+ * ciphertext of a JSON blob `{ clientSecret?, tokens: { access_token,
1433
+ * refresh_token?, expires_at?, token_type? } }`; the non-secret
1434
+ * provider config (auth/token URLs, client id, scopes) lives in
1435
+ * `oauth_meta`. `resolve()` refreshes the access token on demand.
1436
+ *
1437
+ * `key` is the UTCP variable name a `.tool` manual references (`<manual>_<VAR>`).
1438
+ * Two provisioning tiers share this table:
1439
+ * - `user_id` set — a PER-USER secret (private to that user, cascade-deleted
1440
+ * with them), unique per `(user_id, key)`.
1441
+ * - `user_id NULL` — a SHARED/admin secret, set by a writer of the `.tool` file
1442
+ * and read by every invoker of that tool. Unique per `key`
1443
+ * via the partial index below (a plain `(user_id, key)` index
1444
+ * treats NULLs as distinct, so it can't enforce one shared
1445
+ * row per key on its own).
1446
+ * `kind` is validated in the service, not a DB CHECK.
1447
+ */
1448
+ export declare const secrets: import("drizzle-orm/pg-core").PgTableWithColumns<{
1449
+ name: "secrets";
1450
+ schema: undefined;
1451
+ columns: {
1452
+ id: import("drizzle-orm/pg-core").PgColumn<{
1453
+ name: "id";
1454
+ tableName: "secrets";
1455
+ dataType: "string";
1456
+ columnType: "PgUUID";
1457
+ data: string;
1458
+ driverParam: string;
1459
+ notNull: true;
1460
+ hasDefault: true;
1461
+ isPrimaryKey: true;
1462
+ isAutoincrement: false;
1463
+ hasRuntimeDefault: false;
1464
+ enumValues: undefined;
1465
+ baseColumn: never;
1466
+ identity: undefined;
1467
+ generated: undefined;
1468
+ }, {}, {}>;
1469
+ userId: import("drizzle-orm/pg-core").PgColumn<{
1470
+ name: "user_id";
1471
+ tableName: "secrets";
1472
+ dataType: "string";
1473
+ columnType: "PgUUID";
1474
+ data: string;
1475
+ driverParam: string;
1476
+ notNull: false;
1477
+ hasDefault: false;
1478
+ isPrimaryKey: false;
1479
+ isAutoincrement: false;
1480
+ hasRuntimeDefault: false;
1481
+ enumValues: undefined;
1482
+ baseColumn: never;
1483
+ identity: undefined;
1484
+ generated: undefined;
1485
+ }, {}, {}>;
1486
+ key: import("drizzle-orm/pg-core").PgColumn<{
1487
+ name: "key";
1488
+ tableName: "secrets";
1489
+ dataType: "string";
1490
+ columnType: "PgText";
1491
+ data: string;
1492
+ driverParam: string;
1493
+ notNull: true;
1494
+ hasDefault: false;
1495
+ isPrimaryKey: false;
1496
+ isAutoincrement: false;
1497
+ hasRuntimeDefault: false;
1498
+ enumValues: [string, ...string[]];
1499
+ baseColumn: never;
1500
+ identity: undefined;
1501
+ generated: undefined;
1502
+ }, {}, {}>;
1503
+ kind: import("drizzle-orm/pg-core").PgColumn<{
1504
+ name: "kind";
1505
+ tableName: "secrets";
1506
+ dataType: "string";
1507
+ columnType: "PgText";
1508
+ data: string;
1509
+ driverParam: string;
1510
+ notNull: true;
1511
+ hasDefault: true;
1512
+ isPrimaryKey: false;
1513
+ isAutoincrement: false;
1514
+ hasRuntimeDefault: false;
1515
+ enumValues: [string, ...string[]];
1516
+ baseColumn: never;
1517
+ identity: undefined;
1518
+ generated: undefined;
1519
+ }, {}, {}>;
1520
+ label: import("drizzle-orm/pg-core").PgColumn<{
1521
+ name: "label";
1522
+ tableName: "secrets";
1523
+ dataType: "string";
1524
+ columnType: "PgText";
1525
+ data: string;
1526
+ driverParam: string;
1527
+ notNull: false;
1528
+ hasDefault: false;
1529
+ isPrimaryKey: false;
1530
+ isAutoincrement: false;
1531
+ hasRuntimeDefault: false;
1532
+ enumValues: [string, ...string[]];
1533
+ baseColumn: never;
1534
+ identity: undefined;
1535
+ generated: undefined;
1536
+ }, {}, {}>;
1537
+ valueEncrypted: import("drizzle-orm/pg-core").PgColumn<{
1538
+ name: "value_encrypted";
1539
+ tableName: "secrets";
1540
+ dataType: "string";
1541
+ columnType: "PgText";
1542
+ data: string;
1543
+ driverParam: string;
1544
+ notNull: true;
1545
+ hasDefault: false;
1546
+ isPrimaryKey: false;
1547
+ isAutoincrement: false;
1548
+ hasRuntimeDefault: false;
1549
+ enumValues: [string, ...string[]];
1550
+ baseColumn: never;
1551
+ identity: undefined;
1552
+ generated: undefined;
1553
+ }, {}, {}>;
1554
+ oauthMeta: import("drizzle-orm/pg-core").PgColumn<{
1555
+ name: "oauth_meta";
1556
+ tableName: "secrets";
1557
+ dataType: "json";
1558
+ columnType: "PgJsonb";
1559
+ data: Record<string, unknown>;
1560
+ driverParam: unknown;
1561
+ notNull: false;
1562
+ hasDefault: false;
1563
+ isPrimaryKey: false;
1564
+ isAutoincrement: false;
1565
+ hasRuntimeDefault: false;
1566
+ enumValues: undefined;
1567
+ baseColumn: never;
1568
+ identity: undefined;
1569
+ generated: undefined;
1570
+ }, {}, {
1571
+ $type: Record<string, unknown>;
1572
+ }>;
1573
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
1574
+ name: "created_at";
1575
+ tableName: "secrets";
1576
+ dataType: "date";
1577
+ columnType: "PgTimestamp";
1578
+ data: Date;
1579
+ driverParam: string;
1580
+ notNull: true;
1581
+ hasDefault: true;
1582
+ isPrimaryKey: false;
1583
+ isAutoincrement: false;
1584
+ hasRuntimeDefault: false;
1585
+ enumValues: undefined;
1586
+ baseColumn: never;
1587
+ identity: undefined;
1588
+ generated: undefined;
1589
+ }, {}, {}>;
1590
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
1591
+ name: "updated_at";
1592
+ tableName: "secrets";
1593
+ dataType: "date";
1594
+ columnType: "PgTimestamp";
1595
+ data: Date;
1596
+ driverParam: string;
1597
+ notNull: true;
1598
+ hasDefault: true;
1599
+ isPrimaryKey: false;
1600
+ isAutoincrement: false;
1601
+ hasRuntimeDefault: false;
1602
+ enumValues: undefined;
1603
+ baseColumn: never;
1604
+ identity: undefined;
1605
+ generated: undefined;
1606
+ }, {}, {}>;
1607
+ };
1608
+ dialect: "pg";
1609
+ }>;
1610
+ /**
1611
+ * Ontology-session boundary — the per-session log of which named ontologies a
1612
+ * run has TOUCHED (one row per `(session_id, ontology)`). Each agent operation
1613
+ * that resolves to a named ontology records a row here (idempotent on the PK).
1614
+ *
1615
+ * The rule the gate enforces from this set:
1616
+ * - READS are always allowed; they just record the ontology they touched.
1617
+ * - WRITES are allowed only while the session's touched set is a SINGLE named
1618
+ * ontology equal to the write target. Once a session has touched two or
1619
+ * more ontologies (e.g. by reading across them), every write is blocked —
1620
+ * "read across ontologies → you can't write anymore at all."
1621
+ *
1622
+ * Postgres is the durable source of truth so the boundary holds across a
1623
+ * backend restart (an in-memory set would reset and silently un-poison a run).
1624
+ * A write-through in-process cache fronts this table for the chatty read path;
1625
+ * a cache miss falls back here.
1626
+ *
1627
+ * - PK is `(session_id, ontology)` — a set, idempotent on repeat touches.
1628
+ * - `ontology` is the resolved ontology id (e.g. `KnowledgeBase/Product`).
1629
+ * Neutral touches don't record, so they never write a row.
1630
+ * - `touched_at` drives the abandoned-run `sweepOlderThan` backstop; the
1631
+ * primary reclamation is an explicit delete of all of a session's rows at
1632
+ * run end.
1633
+ */
1634
+ /**
1635
+ * OAuth clients dynamically registered by MCP clients (RFC 7591 DCR). When an
1636
+ * MCP client (claude.ai, Claude Code) connects to `/api/mcp` without a
1637
+ * connection key, it registers itself here via `POST /register`, then runs the
1638
+ * PKCE authorization-code flow against our authorize/token endpoints.
1639
+ *
1640
+ * `client_secret_encrypted` is AES-256-GCM ciphertext (`iv:tag:ct`), NOT a
1641
+ * hash: the MCP SDK's token-endpoint client-auth middleware plaintext-compares
1642
+ * `client.client_secret`, so `getClient` must return the original value. In
1643
+ * practice MCP clients register as PUBLIC clients (`token_endpoint_auth_method
1644
+ * 'none'`, PKCE only) and the column stays NULL. `metadata` snapshots the full
1645
+ * registration object so `getClient` can rebuild it without lossy re-mapping.
1646
+ */
1647
+ export declare const oauthClients: import("drizzle-orm/pg-core").PgTableWithColumns<{
1648
+ name: "oauth_clients";
1649
+ schema: undefined;
1650
+ columns: {
1651
+ clientId: import("drizzle-orm/pg-core").PgColumn<{
1652
+ name: "client_id";
1653
+ tableName: "oauth_clients";
1654
+ dataType: "string";
1655
+ columnType: "PgText";
1656
+ data: string;
1657
+ driverParam: string;
1658
+ notNull: true;
1659
+ hasDefault: false;
1660
+ isPrimaryKey: true;
1661
+ isAutoincrement: false;
1662
+ hasRuntimeDefault: false;
1663
+ enumValues: [string, ...string[]];
1664
+ baseColumn: never;
1665
+ identity: undefined;
1666
+ generated: undefined;
1667
+ }, {}, {}>;
1668
+ clientSecretEncrypted: import("drizzle-orm/pg-core").PgColumn<{
1669
+ name: "client_secret_encrypted";
1670
+ tableName: "oauth_clients";
1671
+ dataType: "string";
1672
+ columnType: "PgText";
1673
+ data: string;
1674
+ driverParam: string;
1675
+ notNull: false;
1676
+ hasDefault: false;
1677
+ isPrimaryKey: false;
1678
+ isAutoincrement: false;
1679
+ hasRuntimeDefault: false;
1680
+ enumValues: [string, ...string[]];
1681
+ baseColumn: never;
1682
+ identity: undefined;
1683
+ generated: undefined;
1684
+ }, {}, {}>;
1685
+ clientSecretExpiresAt: import("drizzle-orm/pg-core").PgColumn<{
1686
+ name: "client_secret_expires_at";
1687
+ tableName: "oauth_clients";
1688
+ dataType: "date";
1689
+ columnType: "PgTimestamp";
1690
+ data: Date;
1691
+ driverParam: string;
1692
+ notNull: false;
1693
+ hasDefault: false;
1694
+ isPrimaryKey: false;
1695
+ isAutoincrement: false;
1696
+ hasRuntimeDefault: false;
1697
+ enumValues: undefined;
1698
+ baseColumn: never;
1699
+ identity: undefined;
1700
+ generated: undefined;
1701
+ }, {}, {}>;
1702
+ redirectUris: import("drizzle-orm/pg-core").PgColumn<{
1703
+ name: "redirect_uris";
1704
+ tableName: "oauth_clients";
1705
+ dataType: "json";
1706
+ columnType: "PgJsonb";
1707
+ data: string[];
1708
+ driverParam: unknown;
1709
+ notNull: true;
1710
+ hasDefault: true;
1711
+ isPrimaryKey: false;
1712
+ isAutoincrement: false;
1713
+ hasRuntimeDefault: false;
1714
+ enumValues: undefined;
1715
+ baseColumn: never;
1716
+ identity: undefined;
1717
+ generated: undefined;
1718
+ }, {}, {
1719
+ $type: string[];
1720
+ }>;
1721
+ tokenEndpointAuthMethod: import("drizzle-orm/pg-core").PgColumn<{
1722
+ name: "token_endpoint_auth_method";
1723
+ tableName: "oauth_clients";
1724
+ dataType: "string";
1725
+ columnType: "PgText";
1726
+ data: string;
1727
+ driverParam: string;
1728
+ notNull: true;
1729
+ hasDefault: true;
1730
+ isPrimaryKey: false;
1731
+ isAutoincrement: false;
1732
+ hasRuntimeDefault: false;
1733
+ enumValues: [string, ...string[]];
1734
+ baseColumn: never;
1735
+ identity: undefined;
1736
+ generated: undefined;
1737
+ }, {}, {}>;
1738
+ clientName: import("drizzle-orm/pg-core").PgColumn<{
1739
+ name: "client_name";
1740
+ tableName: "oauth_clients";
1741
+ dataType: "string";
1742
+ columnType: "PgText";
1743
+ data: string;
1744
+ driverParam: string;
1745
+ notNull: false;
1746
+ hasDefault: false;
1747
+ isPrimaryKey: false;
1748
+ isAutoincrement: false;
1749
+ hasRuntimeDefault: false;
1750
+ enumValues: [string, ...string[]];
1751
+ baseColumn: never;
1752
+ identity: undefined;
1753
+ generated: undefined;
1754
+ }, {}, {}>;
1755
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
1756
+ name: "metadata";
1757
+ tableName: "oauth_clients";
1758
+ dataType: "json";
1759
+ columnType: "PgJsonb";
1760
+ data: Record<string, unknown>;
1761
+ driverParam: unknown;
1762
+ notNull: true;
1763
+ hasDefault: true;
1764
+ isPrimaryKey: false;
1765
+ isAutoincrement: false;
1766
+ hasRuntimeDefault: false;
1767
+ enumValues: undefined;
1768
+ baseColumn: never;
1769
+ identity: undefined;
1770
+ generated: undefined;
1771
+ }, {}, {
1772
+ $type: Record<string, unknown>;
1773
+ }>;
1774
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
1775
+ name: "created_at";
1776
+ tableName: "oauth_clients";
1777
+ dataType: "date";
1778
+ columnType: "PgTimestamp";
1779
+ data: Date;
1780
+ driverParam: string;
1781
+ notNull: true;
1782
+ hasDefault: true;
1783
+ isPrimaryKey: false;
1784
+ isAutoincrement: false;
1785
+ hasRuntimeDefault: false;
1786
+ enumValues: undefined;
1787
+ baseColumn: never;
1788
+ identity: undefined;
1789
+ generated: undefined;
1790
+ }, {}, {}>;
1791
+ };
1792
+ dialect: "pg";
1793
+ }>;
1794
+ /**
1795
+ * One-time OAuth authorization codes, issued when a user clicks Finish on the
1796
+ * `/connect` consent page and exchanged at `/token` within seconds. Stored as
1797
+ * a SHA-256 hash like every other bearer secret here. The row binds the code
1798
+ * to (user, client, redirect_uri, PKCE challenge) so the token exchange can
1799
+ * verify all four; single-use is enforced by the atomic consume
1800
+ * `UPDATE … SET consumed_at = now() WHERE consumed_at IS NULL` (same pattern
1801
+ * as `upload_tokens.used_at`).
1802
+ */
1803
+ export declare const oauthAuthCodes: import("drizzle-orm/pg-core").PgTableWithColumns<{
1804
+ name: "oauth_auth_codes";
1805
+ schema: undefined;
1806
+ columns: {
1807
+ id: import("drizzle-orm/pg-core").PgColumn<{
1808
+ name: "id";
1809
+ tableName: "oauth_auth_codes";
1810
+ dataType: "string";
1811
+ columnType: "PgUUID";
1812
+ data: string;
1813
+ driverParam: string;
1814
+ notNull: true;
1815
+ hasDefault: true;
1816
+ isPrimaryKey: true;
1817
+ isAutoincrement: false;
1818
+ hasRuntimeDefault: false;
1819
+ enumValues: undefined;
1820
+ baseColumn: never;
1821
+ identity: undefined;
1822
+ generated: undefined;
1823
+ }, {}, {}>;
1824
+ codeHash: import("drizzle-orm/pg-core").PgColumn<{
1825
+ name: "code_hash";
1826
+ tableName: "oauth_auth_codes";
1827
+ dataType: "string";
1828
+ columnType: "PgText";
1829
+ data: string;
1830
+ driverParam: string;
1831
+ notNull: true;
1832
+ hasDefault: false;
1833
+ isPrimaryKey: false;
1834
+ isAutoincrement: false;
1835
+ hasRuntimeDefault: false;
1836
+ enumValues: [string, ...string[]];
1837
+ baseColumn: never;
1838
+ identity: undefined;
1839
+ generated: undefined;
1840
+ }, {}, {}>;
1841
+ clientId: import("drizzle-orm/pg-core").PgColumn<{
1842
+ name: "client_id";
1843
+ tableName: "oauth_auth_codes";
1844
+ dataType: "string";
1845
+ columnType: "PgText";
1846
+ data: string;
1847
+ driverParam: string;
1848
+ notNull: true;
1849
+ hasDefault: false;
1850
+ isPrimaryKey: false;
1851
+ isAutoincrement: false;
1852
+ hasRuntimeDefault: false;
1853
+ enumValues: [string, ...string[]];
1854
+ baseColumn: never;
1855
+ identity: undefined;
1856
+ generated: undefined;
1857
+ }, {}, {}>;
1858
+ userId: import("drizzle-orm/pg-core").PgColumn<{
1859
+ name: "user_id";
1860
+ tableName: "oauth_auth_codes";
1861
+ dataType: "string";
1862
+ columnType: "PgUUID";
1863
+ data: string;
1864
+ driverParam: string;
1865
+ notNull: true;
1866
+ hasDefault: false;
1867
+ isPrimaryKey: false;
1868
+ isAutoincrement: false;
1869
+ hasRuntimeDefault: false;
1870
+ enumValues: undefined;
1871
+ baseColumn: never;
1872
+ identity: undefined;
1873
+ generated: undefined;
1874
+ }, {}, {}>;
1875
+ redirectUri: import("drizzle-orm/pg-core").PgColumn<{
1876
+ name: "redirect_uri";
1877
+ tableName: "oauth_auth_codes";
1878
+ dataType: "string";
1879
+ columnType: "PgText";
1880
+ data: string;
1881
+ driverParam: string;
1882
+ notNull: true;
1883
+ hasDefault: false;
1884
+ isPrimaryKey: false;
1885
+ isAutoincrement: false;
1886
+ hasRuntimeDefault: false;
1887
+ enumValues: [string, ...string[]];
1888
+ baseColumn: never;
1889
+ identity: undefined;
1890
+ generated: undefined;
1891
+ }, {}, {}>;
1892
+ codeChallenge: import("drizzle-orm/pg-core").PgColumn<{
1893
+ name: "code_challenge";
1894
+ tableName: "oauth_auth_codes";
1895
+ dataType: "string";
1896
+ columnType: "PgText";
1897
+ data: string;
1898
+ driverParam: string;
1899
+ notNull: true;
1900
+ hasDefault: false;
1901
+ isPrimaryKey: false;
1902
+ isAutoincrement: false;
1903
+ hasRuntimeDefault: false;
1904
+ enumValues: [string, ...string[]];
1905
+ baseColumn: never;
1906
+ identity: undefined;
1907
+ generated: undefined;
1908
+ }, {}, {}>;
1909
+ scope: import("drizzle-orm/pg-core").PgColumn<{
1910
+ name: "scope";
1911
+ tableName: "oauth_auth_codes";
1912
+ dataType: "string";
1913
+ columnType: "PgText";
1914
+ data: string;
1915
+ driverParam: string;
1916
+ notNull: false;
1917
+ hasDefault: false;
1918
+ isPrimaryKey: false;
1919
+ isAutoincrement: false;
1920
+ hasRuntimeDefault: false;
1921
+ enumValues: [string, ...string[]];
1922
+ baseColumn: never;
1923
+ identity: undefined;
1924
+ generated: undefined;
1925
+ }, {}, {}>;
1926
+ resource: import("drizzle-orm/pg-core").PgColumn<{
1927
+ name: "resource";
1928
+ tableName: "oauth_auth_codes";
1929
+ dataType: "string";
1930
+ columnType: "PgText";
1931
+ data: string;
1932
+ driverParam: string;
1933
+ notNull: false;
1934
+ hasDefault: false;
1935
+ isPrimaryKey: false;
1936
+ isAutoincrement: false;
1937
+ hasRuntimeDefault: false;
1938
+ enumValues: [string, ...string[]];
1939
+ baseColumn: never;
1940
+ identity: undefined;
1941
+ generated: undefined;
1942
+ }, {}, {}>;
1943
+ expiresAt: import("drizzle-orm/pg-core").PgColumn<{
1944
+ name: "expires_at";
1945
+ tableName: "oauth_auth_codes";
1946
+ dataType: "date";
1947
+ columnType: "PgTimestamp";
1948
+ data: Date;
1949
+ driverParam: string;
1950
+ notNull: true;
1951
+ hasDefault: false;
1952
+ isPrimaryKey: false;
1953
+ isAutoincrement: false;
1954
+ hasRuntimeDefault: false;
1955
+ enumValues: undefined;
1956
+ baseColumn: never;
1957
+ identity: undefined;
1958
+ generated: undefined;
1959
+ }, {}, {}>;
1960
+ consumedAt: import("drizzle-orm/pg-core").PgColumn<{
1961
+ name: "consumed_at";
1962
+ tableName: "oauth_auth_codes";
1963
+ dataType: "date";
1964
+ columnType: "PgTimestamp";
1965
+ data: Date;
1966
+ driverParam: string;
1967
+ notNull: false;
1968
+ hasDefault: false;
1969
+ isPrimaryKey: false;
1970
+ isAutoincrement: false;
1971
+ hasRuntimeDefault: false;
1972
+ enumValues: undefined;
1973
+ baseColumn: never;
1974
+ identity: undefined;
1975
+ generated: undefined;
1976
+ }, {}, {}>;
1977
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
1978
+ name: "created_at";
1979
+ tableName: "oauth_auth_codes";
1980
+ dataType: "date";
1981
+ columnType: "PgTimestamp";
1982
+ data: Date;
1983
+ driverParam: string;
1984
+ notNull: true;
1985
+ hasDefault: true;
1986
+ isPrimaryKey: false;
1987
+ isAutoincrement: false;
1988
+ hasRuntimeDefault: false;
1989
+ enumValues: undefined;
1990
+ baseColumn: never;
1991
+ identity: undefined;
1992
+ generated: undefined;
1993
+ }, {}, {}>;
1994
+ };
1995
+ dialect: "pg";
1996
+ }>;
1997
+ /**
1998
+ * OAuth access/refresh token pairs minted by the token endpoint. Like
1999
+ * `api_tokens`: plaintext shown only in the token response, SHA-256 hashes
2000
+ * stored, revoked-not-deleted so `last_used_at` keeps its audit value and a
2001
+ * revoked token can't be re-issued. One row per pair; refresh rotation
2002
+ * revokes the old row and inserts a new one.
2003
+ */
2004
+ export declare const oauthTokens: import("drizzle-orm/pg-core").PgTableWithColumns<{
2005
+ name: "oauth_tokens";
2006
+ schema: undefined;
2007
+ columns: {
2008
+ id: import("drizzle-orm/pg-core").PgColumn<{
2009
+ name: "id";
2010
+ tableName: "oauth_tokens";
2011
+ dataType: "string";
2012
+ columnType: "PgUUID";
2013
+ data: string;
2014
+ driverParam: string;
2015
+ notNull: true;
2016
+ hasDefault: true;
2017
+ isPrimaryKey: true;
2018
+ isAutoincrement: false;
2019
+ hasRuntimeDefault: false;
2020
+ enumValues: undefined;
2021
+ baseColumn: never;
2022
+ identity: undefined;
2023
+ generated: undefined;
2024
+ }, {}, {}>;
2025
+ accessTokenHash: import("drizzle-orm/pg-core").PgColumn<{
2026
+ name: "access_token_hash";
2027
+ tableName: "oauth_tokens";
2028
+ dataType: "string";
2029
+ columnType: "PgText";
2030
+ data: string;
2031
+ driverParam: string;
2032
+ notNull: true;
2033
+ hasDefault: false;
2034
+ isPrimaryKey: false;
2035
+ isAutoincrement: false;
2036
+ hasRuntimeDefault: false;
2037
+ enumValues: [string, ...string[]];
2038
+ baseColumn: never;
2039
+ identity: undefined;
2040
+ generated: undefined;
2041
+ }, {}, {}>;
2042
+ refreshTokenHash: import("drizzle-orm/pg-core").PgColumn<{
2043
+ name: "refresh_token_hash";
2044
+ tableName: "oauth_tokens";
2045
+ dataType: "string";
2046
+ columnType: "PgText";
2047
+ data: string;
2048
+ driverParam: string;
2049
+ notNull: false;
2050
+ hasDefault: false;
2051
+ isPrimaryKey: false;
2052
+ isAutoincrement: false;
2053
+ hasRuntimeDefault: false;
2054
+ enumValues: [string, ...string[]];
2055
+ baseColumn: never;
2056
+ identity: undefined;
2057
+ generated: undefined;
2058
+ }, {}, {}>;
2059
+ clientId: import("drizzle-orm/pg-core").PgColumn<{
2060
+ name: "client_id";
2061
+ tableName: "oauth_tokens";
2062
+ dataType: "string";
2063
+ columnType: "PgText";
2064
+ data: string;
2065
+ driverParam: string;
2066
+ notNull: true;
2067
+ hasDefault: false;
2068
+ isPrimaryKey: false;
2069
+ isAutoincrement: false;
2070
+ hasRuntimeDefault: false;
2071
+ enumValues: [string, ...string[]];
2072
+ baseColumn: never;
2073
+ identity: undefined;
2074
+ generated: undefined;
2075
+ }, {}, {}>;
2076
+ userId: import("drizzle-orm/pg-core").PgColumn<{
2077
+ name: "user_id";
2078
+ tableName: "oauth_tokens";
2079
+ dataType: "string";
2080
+ columnType: "PgUUID";
2081
+ data: string;
2082
+ driverParam: string;
2083
+ notNull: true;
2084
+ hasDefault: false;
2085
+ isPrimaryKey: false;
2086
+ isAutoincrement: false;
2087
+ hasRuntimeDefault: false;
2088
+ enumValues: undefined;
2089
+ baseColumn: never;
2090
+ identity: undefined;
2091
+ generated: undefined;
2092
+ }, {}, {}>;
2093
+ scope: import("drizzle-orm/pg-core").PgColumn<{
2094
+ name: "scope";
2095
+ tableName: "oauth_tokens";
2096
+ dataType: "string";
2097
+ columnType: "PgText";
2098
+ data: string;
2099
+ driverParam: string;
2100
+ notNull: false;
2101
+ hasDefault: false;
2102
+ isPrimaryKey: false;
2103
+ isAutoincrement: false;
2104
+ hasRuntimeDefault: false;
2105
+ enumValues: [string, ...string[]];
2106
+ baseColumn: never;
2107
+ identity: undefined;
2108
+ generated: undefined;
2109
+ }, {}, {}>;
2110
+ resource: import("drizzle-orm/pg-core").PgColumn<{
2111
+ name: "resource";
2112
+ tableName: "oauth_tokens";
2113
+ dataType: "string";
2114
+ columnType: "PgText";
2115
+ data: string;
2116
+ driverParam: string;
2117
+ notNull: false;
2118
+ hasDefault: false;
2119
+ isPrimaryKey: false;
2120
+ isAutoincrement: false;
2121
+ hasRuntimeDefault: false;
2122
+ enumValues: [string, ...string[]];
2123
+ baseColumn: never;
2124
+ identity: undefined;
2125
+ generated: undefined;
2126
+ }, {}, {}>;
2127
+ expiresAt: import("drizzle-orm/pg-core").PgColumn<{
2128
+ name: "expires_at";
2129
+ tableName: "oauth_tokens";
2130
+ dataType: "date";
2131
+ columnType: "PgTimestamp";
2132
+ data: Date;
2133
+ driverParam: string;
2134
+ notNull: true;
2135
+ hasDefault: false;
2136
+ isPrimaryKey: false;
2137
+ isAutoincrement: false;
2138
+ hasRuntimeDefault: false;
2139
+ enumValues: undefined;
2140
+ baseColumn: never;
2141
+ identity: undefined;
2142
+ generated: undefined;
2143
+ }, {}, {}>;
2144
+ refreshExpiresAt: import("drizzle-orm/pg-core").PgColumn<{
2145
+ name: "refresh_expires_at";
2146
+ tableName: "oauth_tokens";
2147
+ dataType: "date";
2148
+ columnType: "PgTimestamp";
2149
+ data: Date;
2150
+ driverParam: string;
2151
+ notNull: false;
2152
+ hasDefault: false;
2153
+ isPrimaryKey: false;
2154
+ isAutoincrement: false;
2155
+ hasRuntimeDefault: false;
2156
+ enumValues: undefined;
2157
+ baseColumn: never;
2158
+ identity: undefined;
2159
+ generated: undefined;
2160
+ }, {}, {}>;
2161
+ revokedAt: import("drizzle-orm/pg-core").PgColumn<{
2162
+ name: "revoked_at";
2163
+ tableName: "oauth_tokens";
2164
+ dataType: "date";
2165
+ columnType: "PgTimestamp";
2166
+ data: Date;
2167
+ driverParam: string;
2168
+ notNull: false;
2169
+ hasDefault: false;
2170
+ isPrimaryKey: false;
2171
+ isAutoincrement: false;
2172
+ hasRuntimeDefault: false;
2173
+ enumValues: undefined;
2174
+ baseColumn: never;
2175
+ identity: undefined;
2176
+ generated: undefined;
2177
+ }, {}, {}>;
2178
+ lastUsedAt: import("drizzle-orm/pg-core").PgColumn<{
2179
+ name: "last_used_at";
2180
+ tableName: "oauth_tokens";
2181
+ dataType: "date";
2182
+ columnType: "PgTimestamp";
2183
+ data: Date;
2184
+ driverParam: string;
2185
+ notNull: false;
2186
+ hasDefault: false;
2187
+ isPrimaryKey: false;
2188
+ isAutoincrement: false;
2189
+ hasRuntimeDefault: false;
2190
+ enumValues: undefined;
2191
+ baseColumn: never;
2192
+ identity: undefined;
2193
+ generated: undefined;
2194
+ }, {}, {}>;
2195
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
2196
+ name: "created_at";
2197
+ tableName: "oauth_tokens";
2198
+ dataType: "date";
2199
+ columnType: "PgTimestamp";
2200
+ data: Date;
2201
+ driverParam: string;
2202
+ notNull: true;
2203
+ hasDefault: true;
2204
+ isPrimaryKey: false;
2205
+ isAutoincrement: false;
2206
+ hasRuntimeDefault: false;
2207
+ enumValues: undefined;
2208
+ baseColumn: never;
2209
+ identity: undefined;
2210
+ generated: undefined;
2211
+ }, {}, {}>;
2212
+ };
2213
+ dialect: "pg";
2214
+ }>;
2215
+ export declare const sessionOntologyTouches: import("drizzle-orm/pg-core").PgTableWithColumns<{
2216
+ name: "session_ontology_touches";
2217
+ schema: undefined;
2218
+ columns: {
2219
+ sessionId: import("drizzle-orm/pg-core").PgColumn<{
2220
+ name: "session_id";
2221
+ tableName: "session_ontology_touches";
2222
+ dataType: "string";
2223
+ columnType: "PgText";
2224
+ data: string;
2225
+ driverParam: string;
2226
+ notNull: true;
2227
+ hasDefault: false;
2228
+ isPrimaryKey: false;
2229
+ isAutoincrement: false;
2230
+ hasRuntimeDefault: false;
2231
+ enumValues: [string, ...string[]];
2232
+ baseColumn: never;
2233
+ identity: undefined;
2234
+ generated: undefined;
2235
+ }, {}, {}>;
2236
+ ontology: import("drizzle-orm/pg-core").PgColumn<{
2237
+ name: "ontology";
2238
+ tableName: "session_ontology_touches";
2239
+ dataType: "string";
2240
+ columnType: "PgText";
2241
+ data: string;
2242
+ driverParam: string;
2243
+ notNull: true;
2244
+ hasDefault: false;
2245
+ isPrimaryKey: false;
2246
+ isAutoincrement: false;
2247
+ hasRuntimeDefault: false;
2248
+ enumValues: [string, ...string[]];
2249
+ baseColumn: never;
2250
+ identity: undefined;
2251
+ generated: undefined;
2252
+ }, {}, {}>;
2253
+ touchedAt: import("drizzle-orm/pg-core").PgColumn<{
2254
+ name: "touched_at";
2255
+ tableName: "session_ontology_touches";
2256
+ dataType: "date";
2257
+ columnType: "PgTimestamp";
2258
+ data: Date;
2259
+ driverParam: string;
2260
+ notNull: true;
2261
+ hasDefault: true;
2262
+ isPrimaryKey: false;
2263
+ isAutoincrement: false;
2264
+ hasRuntimeDefault: false;
2265
+ enumValues: undefined;
2266
+ baseColumn: never;
2267
+ identity: undefined;
2268
+ generated: undefined;
2269
+ }, {}, {}>;
2270
+ };
2271
+ dialect: "pg";
2272
+ }>;
2273
+ //# sourceMappingURL=core-schema.d.ts.map