@bevel-software/platform-core-backend 0.35.0 → 0.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (827) hide show
  1. package/agent-guide/directory-structure.md +1 -1
  2. package/agent-guide/onboarding.md +111 -0
  3. package/agent-guide/start-here.md +1 -0
  4. package/agent-guide/tool-manuals.md +1 -0
  5. package/dist/core/catalog-cache-invalidation.d.ts +2 -2
  6. package/dist/core/catalog-cache-invalidation.d.ts.map +1 -1
  7. package/dist/core/compose-embed.d.ts +2 -2
  8. package/dist/core/compose-embed.d.ts.map +1 -1
  9. package/dist/core/compose-embed.js +1 -1
  10. package/dist/core/compose-embed.js.map +1 -1
  11. package/dist/core/core-ports.d.ts +19 -4
  12. package/dist/core/core-ports.d.ts.map +1 -1
  13. package/dist/core/core-ports.js.map +1 -1
  14. package/dist/core/create-core-server.d.ts.map +1 -1
  15. package/dist/core/create-core-server.js +26 -24
  16. package/dist/core/create-core-server.js.map +1 -1
  17. package/dist/core/create-core-services.d.ts +19 -13
  18. package/dist/core/create-core-services.d.ts.map +1 -1
  19. package/dist/core/create-core-services.js +68 -56
  20. package/dist/core/create-core-services.js.map +1 -1
  21. package/dist/core/lifecycle.d.ts +4 -4
  22. package/dist/core/lifecycle.d.ts.map +1 -1
  23. package/dist/core/lifecycle.js +5 -5
  24. package/dist/core/lifecycle.js.map +1 -1
  25. package/dist/core-config.d.ts +2 -2
  26. package/dist/core-config.js +3 -3
  27. package/dist/core-config.js.map +1 -1
  28. package/dist/index.d.ts +4 -4
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -3
  31. package/dist/index.js.map +1 -1
  32. package/dist/modules/access/access-control.service.js +1 -1
  33. package/dist/modules/access/access-control.service.js.map +1 -1
  34. package/dist/modules/access/access-declarations.d.ts +2 -2
  35. package/dist/modules/access/access-declarations.d.ts.map +1 -1
  36. package/dist/modules/access/access-declarations.js +2 -2
  37. package/dist/modules/access/access-declarations.js.map +1 -1
  38. package/dist/modules/access/access-mutation.service.d.ts +2 -2
  39. package/dist/modules/access/access-mutation.service.d.ts.map +1 -1
  40. package/dist/modules/access/access-mutation.service.js +2 -2
  41. package/dist/modules/access/access-mutation.service.js.map +1 -1
  42. package/dist/modules/access/access-requests.routes.d.ts +2 -2
  43. package/dist/modules/access/access-requests.routes.d.ts.map +1 -1
  44. package/dist/modules/access/access-requests.routes.js +5 -5
  45. package/dist/modules/access/access-requests.routes.js.map +1 -1
  46. package/dist/modules/access/access-requests.service.d.ts +2 -2
  47. package/dist/modules/access/access-requests.service.d.ts.map +1 -1
  48. package/dist/modules/access/access-requests.service.js +11 -11
  49. package/dist/modules/access/access-requests.service.js.map +1 -1
  50. package/dist/modules/access/access.routes.d.ts +2 -2
  51. package/dist/modules/access/access.routes.d.ts.map +1 -1
  52. package/dist/modules/access/access.routes.js +9 -9
  53. package/dist/modules/access/access.routes.js.map +1 -1
  54. package/dist/modules/access/admin-locked-commit.d.ts +5 -5
  55. package/dist/modules/access/admin-locked-commit.d.ts.map +1 -1
  56. package/dist/modules/access/admin-locked-commit.js +7 -7
  57. package/dist/modules/access/admin-locked-commit.js.map +1 -1
  58. package/dist/modules/access/admin-route-helpers.d.ts +1 -1
  59. package/dist/modules/access/admin-route-helpers.js +5 -5
  60. package/dist/modules/access/admin-route-helpers.js.map +1 -1
  61. package/dist/modules/access/change-read-gate.d.ts +1 -1
  62. package/dist/modules/access/change-read-gate.js +1 -1
  63. package/dist/modules/access/groups-admin.service.d.ts +7 -7
  64. package/dist/modules/access/groups-admin.service.d.ts.map +1 -1
  65. package/dist/modules/access/groups-admin.service.js +6 -6
  66. package/dist/modules/access/groups-admin.service.js.map +1 -1
  67. package/dist/modules/access/reference-scan.d.ts +1 -1
  68. package/dist/modules/access/roles-admin.service.d.ts +7 -7
  69. package/dist/modules/access/roles-admin.service.d.ts.map +1 -1
  70. package/dist/modules/access/roles-admin.service.js +8 -8
  71. package/dist/modules/access/roles-admin.service.js.map +1 -1
  72. package/dist/modules/access/synced-groups-committer.d.ts +4 -4
  73. package/dist/modules/access/synced-groups-committer.d.ts.map +1 -1
  74. package/dist/modules/access/synced-groups-committer.js +7 -7
  75. package/dist/modules/access/synced-groups-committer.js.map +1 -1
  76. package/dist/modules/access/user-access-removal.service.d.ts +6 -6
  77. package/dist/modules/access/user-access-removal.service.d.ts.map +1 -1
  78. package/dist/modules/access/user-access-removal.service.js +4 -4
  79. package/dist/modules/access/user-access-removal.service.js.map +1 -1
  80. package/dist/modules/access-model/access-errors.d.ts +4 -4
  81. package/dist/modules/access-model/access-errors.d.ts.map +1 -1
  82. package/dist/modules/access-model/access-errors.js +4 -4
  83. package/dist/modules/access-model/access-errors.js.map +1 -1
  84. package/dist/modules/access-model/access-grammar.d.ts +1 -1
  85. package/dist/modules/access-model/access-grammar.js +4 -4
  86. package/dist/modules/access-model/change-gate.d.ts +1 -1
  87. package/dist/modules/access-model/change-gate.js +1 -1
  88. package/dist/modules/access-model/roles-yaml-guard.d.ts +4 -4
  89. package/dist/modules/access-model/roles-yaml-guard.d.ts.map +1 -1
  90. package/dist/modules/access-model/roles-yaml-guard.js +4 -4
  91. package/dist/modules/access-model/roles-yaml-guard.js.map +1 -1
  92. package/dist/modules/agent-guide/agent-guide.d.ts +19 -14
  93. package/dist/modules/agent-guide/agent-guide.d.ts.map +1 -1
  94. package/dist/modules/agent-guide/agent-guide.js +42 -18
  95. package/dist/modules/agent-guide/agent-guide.js.map +1 -1
  96. package/dist/modules/agent-guide/guide-budget.d.ts +5 -2
  97. package/dist/modules/agent-guide/guide-budget.d.ts.map +1 -1
  98. package/dist/modules/agent-guide/guide-budget.js +6 -2
  99. package/dist/modules/agent-guide/guide-budget.js.map +1 -1
  100. package/dist/modules/agent-instructions/agent-instructions.routes.d.ts +12 -5
  101. package/dist/modules/agent-instructions/agent-instructions.routes.d.ts.map +1 -1
  102. package/dist/modules/agent-instructions/agent-instructions.routes.js +13 -6
  103. package/dist/modules/agent-instructions/agent-instructions.routes.js.map +1 -1
  104. package/dist/modules/agent-instructions/compose.d.ts +15 -8
  105. package/dist/modules/agent-instructions/compose.d.ts.map +1 -1
  106. package/dist/modules/agent-instructions/compose.js +24 -10
  107. package/dist/modules/agent-instructions/compose.js.map +1 -1
  108. package/dist/modules/agent-instructions/shared-file-rules.d.ts +14 -6
  109. package/dist/modules/agent-instructions/shared-file-rules.d.ts.map +1 -1
  110. package/dist/modules/agent-instructions/shared-file-rules.js +51 -11
  111. package/dist/modules/agent-instructions/shared-file-rules.js.map +1 -1
  112. package/dist/modules/auth/account-erasure.service.d.ts +36 -7
  113. package/dist/modules/auth/account-erasure.service.d.ts.map +1 -1
  114. package/dist/modules/auth/account-erasure.service.js +30 -10
  115. package/dist/modules/auth/account-erasure.service.js.map +1 -1
  116. package/dist/modules/auth/account-hooks.d.ts +20 -0
  117. package/dist/modules/auth/account-hooks.d.ts.map +1 -1
  118. package/dist/modules/auth/account-hooks.js +10 -0
  119. package/dist/modules/auth/account-hooks.js.map +1 -1
  120. package/dist/modules/auth/account-switch-lock.js +2 -2
  121. package/dist/modules/auth/account-switch-lock.js.map +1 -1
  122. package/dist/modules/auth/account.routes.d.ts +7 -2
  123. package/dist/modules/auth/account.routes.d.ts.map +1 -1
  124. package/dist/modules/auth/account.routes.js +23 -4
  125. package/dist/modules/auth/account.routes.js.map +1 -1
  126. package/dist/modules/auth/auth.service.d.ts +1 -1
  127. package/dist/modules/auth/auth.service.js +4 -4
  128. package/dist/modules/auth/auth.service.js.map +1 -1
  129. package/dist/modules/auth/index.d.ts +1 -0
  130. package/dist/modules/auth/index.d.ts.map +1 -1
  131. package/dist/modules/database/core-schema.js +2 -2
  132. package/dist/modules/database/core-schema.js.map +1 -1
  133. package/dist/modules/diff/diff.routes.d.ts +3 -3
  134. package/dist/modules/diff/diff.routes.d.ts.map +1 -1
  135. package/dist/modules/diff/diff.routes.js +7 -7
  136. package/dist/modules/diff/diff.routes.js.map +1 -1
  137. package/dist/modules/embed/embed.routes.js +1 -1
  138. package/dist/modules/embed/embed.routes.js.map +1 -1
  139. package/dist/modules/embed/embed.service.d.ts +4 -4
  140. package/dist/modules/embed/embed.service.d.ts.map +1 -1
  141. package/dist/modules/embed/embed.service.js +18 -18
  142. package/dist/modules/embed/embed.service.js.map +1 -1
  143. package/dist/modules/kb-fs/branch-name.js +8 -8
  144. package/dist/modules/kb-fs/branch-name.js.map +1 -1
  145. package/dist/modules/kb-fs/file-change-notifier.d.ts +2 -2
  146. package/dist/modules/kb-fs/locking-filesystem.d.ts +9 -9
  147. package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
  148. package/dist/modules/kb-fs/locking-filesystem.js +27 -27
  149. package/dist/modules/kb-fs/locking-filesystem.js.map +1 -1
  150. package/dist/modules/kb-fs/repo-path.js +5 -5
  151. package/dist/modules/kb-fs/repo-path.js.map +1 -1
  152. package/dist/modules/kb-fs/tmp-ref.d.ts +2 -2
  153. package/dist/modules/kb-fs/tmp-ref.d.ts.map +1 -1
  154. package/dist/modules/kb-fs/tmp-ref.js +2 -2
  155. package/dist/modules/kb-fs/tmp-ref.js.map +1 -1
  156. package/dist/modules/kb-sync/index.d.ts +1 -1
  157. package/dist/modules/kb-sync/index.d.ts.map +1 -1
  158. package/dist/modules/kb-sync/kb-sync.interface.d.ts +3 -3
  159. package/dist/modules/kb-sync/kb-sync.interface.d.ts.map +1 -1
  160. package/dist/modules/kb-sync/kb-sync.service.d.ts +3 -3
  161. package/dist/modules/kb-sync/kb-sync.service.d.ts.map +1 -1
  162. package/dist/modules/kb-sync/kb-sync.service.js +10 -10
  163. package/dist/modules/kb-sync/kb-sync.service.js.map +1 -1
  164. package/dist/modules/mcp/mcp.service.d.ts +11 -4
  165. package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
  166. package/dist/modules/mcp/mcp.service.js +75 -19
  167. package/dist/modules/mcp/mcp.service.js.map +1 -1
  168. package/dist/modules/onboarding/onboarding.contract.d.ts +1 -1
  169. package/dist/modules/onboarding/onboarding.routes.js +2 -2
  170. package/dist/modules/onboarding/onboarding.routes.js.map +1 -1
  171. package/dist/modules/onboarding/starter-pack.service.d.ts +4 -4
  172. package/dist/modules/onboarding/starter-pack.service.d.ts.map +1 -1
  173. package/dist/modules/onboarding/starter-pack.service.js +4 -4
  174. package/dist/modules/onboarding/starter-pack.service.js.map +1 -1
  175. package/dist/modules/plugins/join-request-jobs.service.d.ts +2 -2
  176. package/dist/modules/plugins/join-request-jobs.service.d.ts.map +1 -1
  177. package/dist/modules/plugins/join-request-jobs.service.js +7 -7
  178. package/dist/modules/plugins/join-request-jobs.service.js.map +1 -1
  179. package/dist/modules/plugins/join-requests.service.d.ts +3 -3
  180. package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
  181. package/dist/modules/plugins/join-requests.service.js +5 -5
  182. package/dist/modules/plugins/join-requests.service.js.map +1 -1
  183. package/dist/modules/plugins/plugin-rename.service.js +1 -1
  184. package/dist/modules/plugins/plugin-rename.service.js.map +1 -1
  185. package/dist/modules/plugins/plugins.routes.d.ts +2 -2
  186. package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
  187. package/dist/modules/plugins/plugins.routes.js +8 -8
  188. package/dist/modules/plugins/plugins.routes.js.map +1 -1
  189. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts +77 -2
  190. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts.map +1 -1
  191. package/dist/modules/secrets-vault/db-secrets-vault.service.js +479 -53
  192. package/dist/modules/secrets-vault/db-secrets-vault.service.js.map +1 -1
  193. package/dist/modules/secrets-vault/index.d.ts +2 -1
  194. package/dist/modules/secrets-vault/index.d.ts.map +1 -1
  195. package/dist/modules/secrets-vault/index.js +1 -0
  196. package/dist/modules/secrets-vault/index.js.map +1 -1
  197. package/dist/modules/secrets-vault/managed-sign-in-erasure.d.ts +36 -0
  198. package/dist/modules/secrets-vault/managed-sign-in-erasure.d.ts.map +1 -0
  199. package/dist/modules/secrets-vault/managed-sign-in-erasure.js +37 -0
  200. package/dist/modules/secrets-vault/managed-sign-in-erasure.js.map +1 -0
  201. package/dist/modules/secrets-vault/secrets-vault.contract.d.ts +152 -0
  202. package/dist/modules/secrets-vault/secrets-vault.contract.d.ts.map +1 -1
  203. package/dist/modules/secrets-vault/secrets-vault.contract.js.map +1 -1
  204. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +7 -1
  205. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -1
  206. package/dist/modules/secrets-vault/secrets-vault.routes.js +125 -10
  207. package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
  208. package/dist/modules/settings/connection-check.js +1 -1
  209. package/dist/modules/settings/connection-check.js.map +1 -1
  210. package/dist/modules/settings/deployment-settings.service.js +1 -1
  211. package/dist/modules/settings/git-root-folders.js +1 -1
  212. package/dist/modules/settings/git-root-folders.js.map +1 -1
  213. package/dist/modules/settings/setup.routes.d.ts +1 -1
  214. package/dist/modules/settings/setup.routes.js +1 -1
  215. package/dist/modules/skills/pending-skills.service.d.ts +3 -3
  216. package/dist/modules/skills/pending-skills.service.d.ts.map +1 -1
  217. package/dist/modules/skills/pending-skills.service.js +4 -4
  218. package/dist/modules/skills/pending-skills.service.js.map +1 -1
  219. package/dist/modules/skills/skill-access-requests.routes.d.ts +2 -2
  220. package/dist/modules/skills/skill-access-requests.routes.d.ts.map +1 -1
  221. package/dist/modules/skills/skill-access-requests.routes.js +5 -5
  222. package/dist/modules/skills/skill-access-requests.routes.js.map +1 -1
  223. package/dist/modules/tool-helpers/tool-context.d.ts +4 -4
  224. package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
  225. package/dist/modules/tool-helpers/tool-context.js +2 -2
  226. package/dist/modules/tool-helpers/tool-context.js.map +1 -1
  227. package/dist/modules/tool-helpers/tool-handler.js +2 -2
  228. package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
  229. package/dist/modules/tool-helpers/tool.contract.d.ts +4 -4
  230. package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
  231. package/dist/modules/tool-manuals/mcp-server-edit.service.js +1 -1
  232. package/dist/modules/tool-manuals/mcp-server-edit.service.js.map +1 -1
  233. package/dist/modules/tool-manuals/pending-tools.service.d.ts +3 -3
  234. package/dist/modules/tool-manuals/pending-tools.service.d.ts.map +1 -1
  235. package/dist/modules/tool-manuals/pending-tools.service.js +4 -4
  236. package/dist/modules/tool-manuals/pending-tools.service.js.map +1 -1
  237. package/dist/modules/tool-manuals/tool-delete.service.js +1 -1
  238. package/dist/modules/tool-manuals/tool-delete.service.js.map +1 -1
  239. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts +43 -3
  240. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts.map +1 -1
  241. package/dist/modules/tool-manuals/tool-manuals.service.d.ts +6 -0
  242. package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
  243. package/dist/modules/tool-manuals/tool-manuals.service.js +51 -5
  244. package/dist/modules/tool-manuals/tool-manuals.service.js.map +1 -1
  245. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts +3 -0
  246. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
  247. package/dist/modules/tool-manuals/tool-manuals.tools.js +36 -15
  248. package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
  249. package/dist/modules/version-control/agent-tools/change-request-read-shape.d.ts.map +1 -0
  250. package/dist/modules/version-control/agent-tools/change-request-read-shape.js.map +1 -0
  251. package/dist/modules/version-control/agent-tools/change-request-read.tools.d.ts.map +1 -0
  252. package/dist/modules/{workflow → version-control}/agent-tools/change-request-read.tools.js +2 -2
  253. package/dist/modules/version-control/agent-tools/change-request-read.tools.js.map +1 -0
  254. package/dist/modules/version-control/agent-tools/change-request-summary.d.ts.map +1 -0
  255. package/dist/modules/version-control/agent-tools/change-request-summary.js.map +1 -0
  256. package/dist/modules/{workflow/agent-tools/workflow.tools.d.ts → version-control/agent-tools/version-control.tools.d.ts} +4 -4
  257. package/dist/modules/version-control/agent-tools/version-control.tools.d.ts.map +1 -0
  258. package/dist/modules/{workflow/agent-tools/workflow.tools.js → version-control/agent-tools/version-control.tools.js} +31 -31
  259. package/dist/modules/version-control/agent-tools/version-control.tools.js.map +1 -0
  260. package/dist/modules/{workflow → version-control}/change-request-hooks.d.ts +1 -1
  261. package/dist/modules/version-control/change-request-hooks.d.ts.map +1 -0
  262. package/dist/modules/version-control/change-request-hooks.js.map +1 -0
  263. package/dist/modules/version-control/change-request-review/approval-lock.d.ts.map +1 -0
  264. package/dist/modules/version-control/change-request-review/approval-lock.js.map +1 -0
  265. package/dist/modules/{workflow/review-workflow/review-workflow.interface.d.ts → version-control/change-request-review/change-request-review.interface.d.ts} +2 -2
  266. package/dist/modules/version-control/change-request-review/change-request-review.interface.d.ts.map +1 -0
  267. package/dist/modules/version-control/change-request-review/change-request-review.interface.js +2 -0
  268. package/dist/modules/version-control/change-request-review/change-request-review.interface.js.map +1 -0
  269. package/dist/modules/{workflow/review-workflow/review-workflow.service.d.ts → version-control/change-request-review/change-request-review.service.d.ts} +3 -3
  270. package/dist/modules/version-control/change-request-review/change-request-review.service.d.ts.map +1 -0
  271. package/dist/modules/{workflow/review-workflow/review-workflow.service.js → version-control/change-request-review/change-request-review.service.js} +26 -26
  272. package/dist/modules/version-control/change-request-review/change-request-review.service.js.map +1 -0
  273. package/dist/modules/{workflow → version-control}/event-bus.d.ts +8 -8
  274. package/dist/modules/version-control/event-bus.d.ts.map +1 -0
  275. package/dist/modules/{workflow → version-control}/event-bus.js +4 -4
  276. package/dist/modules/version-control/event-bus.js.map +1 -0
  277. package/dist/modules/{workflow → version-control}/events-delivery.d.ts +4 -4
  278. package/dist/modules/version-control/events-delivery.d.ts.map +1 -0
  279. package/dist/modules/version-control/events-delivery.js.map +1 -0
  280. package/dist/modules/{workflow → version-control}/events.routes.d.ts +4 -4
  281. package/dist/modules/version-control/events.routes.d.ts.map +1 -0
  282. package/dist/modules/version-control/events.routes.js.map +1 -0
  283. package/dist/modules/{workflow → version-control}/file-lock.service.d.ts +2 -2
  284. package/dist/modules/version-control/file-lock.service.d.ts.map +1 -0
  285. package/dist/modules/{workflow → version-control}/file-lock.service.js +6 -6
  286. package/dist/modules/version-control/file-lock.service.js.map +1 -0
  287. package/dist/modules/version-control/git/change-request-link.d.ts.map +1 -0
  288. package/dist/modules/version-control/git/change-request-link.js.map +1 -0
  289. package/dist/modules/version-control/git/git-version.d.ts.map +1 -0
  290. package/dist/modules/version-control/git/git-version.js.map +1 -0
  291. package/dist/modules/{workflow → version-control}/git/git.service.d.ts +8 -8
  292. package/dist/modules/version-control/git/git.service.d.ts.map +1 -0
  293. package/dist/modules/{workflow → version-control}/git/git.service.js +53 -53
  294. package/dist/modules/version-control/git/git.service.js.map +1 -0
  295. package/dist/modules/version-control/git/merge-commit.d.ts.map +1 -0
  296. package/dist/modules/version-control/git/merge-commit.js.map +1 -0
  297. package/dist/modules/version-control/git/node-git-runner.d.ts.map +1 -0
  298. package/dist/modules/{workflow → version-control}/git/node-git-runner.js +1 -1
  299. package/dist/modules/version-control/git/node-git-runner.js.map +1 -0
  300. package/dist/modules/{workflow → version-control}/git/pull-request.service.d.ts +5 -5
  301. package/dist/modules/version-control/git/pull-request.service.d.ts.map +1 -0
  302. package/dist/modules/{workflow → version-control}/git/pull-request.service.js +10 -10
  303. package/dist/modules/version-control/git/pull-request.service.js.map +1 -0
  304. package/dist/modules/{workflow → version-control}/index.d.ts +6 -5
  305. package/dist/modules/version-control/index.d.ts.map +1 -0
  306. package/dist/modules/{workflow → version-control}/index.js +3 -2
  307. package/dist/modules/version-control/index.js.map +1 -0
  308. package/dist/modules/{workflow → version-control}/pending-commits.service.d.ts +2 -2
  309. package/dist/modules/version-control/pending-commits.service.d.ts.map +1 -0
  310. package/dist/modules/{workflow → version-control}/pending-commits.service.js +2 -2
  311. package/dist/modules/version-control/pending-commits.service.js.map +1 -0
  312. package/dist/modules/{workflow → version-control}/pending-commits.worker.d.ts +5 -5
  313. package/dist/modules/version-control/pending-commits.worker.d.ts.map +1 -0
  314. package/dist/modules/{workflow → version-control}/pending-commits.worker.js +3 -3
  315. package/dist/modules/version-control/pending-commits.worker.js.map +1 -0
  316. package/dist/modules/{workflow → version-control}/read-on-branch.d.ts +2 -2
  317. package/dist/modules/version-control/read-on-branch.d.ts.map +1 -0
  318. package/dist/modules/{workflow → version-control}/read-on-branch.js +2 -2
  319. package/dist/modules/version-control/read-on-branch.js.map +1 -0
  320. package/dist/modules/version-control/recovery-bot.d.ts.map +1 -0
  321. package/dist/modules/version-control/recovery-bot.js.map +1 -0
  322. package/dist/modules/version-control/sanitize-error.d.ts.map +1 -0
  323. package/dist/modules/version-control/sanitize-error.js.map +1 -0
  324. package/dist/modules/{workflow/workflow-hooks.d.ts → version-control/version-control-hooks.d.ts} +4 -4
  325. package/dist/modules/version-control/version-control-hooks.d.ts.map +1 -0
  326. package/dist/modules/{workflow/workflow-hooks.js → version-control/version-control-hooks.js} +3 -3
  327. package/dist/modules/version-control/version-control-hooks.js.map +1 -0
  328. package/dist/modules/{workflow/workflow.routes.d.ts → version-control/version-control.routes.d.ts} +6 -5
  329. package/dist/modules/version-control/version-control.routes.d.ts.map +1 -0
  330. package/dist/modules/{workflow/workflow.routes.js → version-control/version-control.routes.js} +61 -60
  331. package/dist/modules/version-control/version-control.routes.js.map +1 -0
  332. package/dist/modules/{workflow/workflow.service.d.ts → version-control/version-control.service.d.ts} +26 -31
  333. package/dist/modules/version-control/version-control.service.d.ts.map +1 -0
  334. package/dist/modules/{workflow/workflow.service.js → version-control/version-control.service.js} +89 -94
  335. package/dist/modules/version-control/version-control.service.js.map +1 -0
  336. package/dist/modules/workspace/agent-access.gate.d.ts +5 -5
  337. package/dist/modules/workspace/agent-access.gate.d.ts.map +1 -1
  338. package/dist/modules/workspace/agent-access.gate.js +1 -1
  339. package/dist/modules/workspace/git-internals.middleware.d.ts +1 -1
  340. package/dist/modules/workspace/git-internals.middleware.js +2 -2
  341. package/dist/modules/workspace/kb-repository.js +1 -1
  342. package/dist/modules/workspace/kb-repository.js.map +1 -1
  343. package/dist/modules/workspace/startup/kb-git.d.ts +1 -1
  344. package/dist/modules/workspace/startup/kb-git.d.ts.map +1 -1
  345. package/dist/modules/workspace/startup/kb-git.js +1 -1
  346. package/dist/modules/workspace/startup/kb-git.js.map +1 -1
  347. package/dist/modules/workspace/startup/steps/seed-tree.d.ts +2 -2
  348. package/dist/modules/workspace/startup/steps/seed-tree.d.ts.map +1 -1
  349. package/dist/modules/workspace/startup/steps/seed-tree.js +1 -1
  350. package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
  351. package/dist/modules/workspace/startup/steps/template-files.step.d.ts +2 -2
  352. package/dist/modules/workspace/startup/steps/template-files.step.d.ts.map +1 -1
  353. package/dist/modules/workspace/startup/steps/template-files.step.js +2 -2
  354. package/dist/modules/workspace/startup/steps/template-files.step.js.map +1 -1
  355. package/dist/modules/workspace/startup/steps/template-source.d.ts +17 -4
  356. package/dist/modules/workspace/startup/steps/template-source.d.ts.map +1 -1
  357. package/dist/modules/workspace/startup/steps/template-source.js +8 -5
  358. package/dist/modules/workspace/startup/steps/template-source.js.map +1 -1
  359. package/dist/modules/workspace/workspace-tmp.js +3 -3
  360. package/dist/modules/workspace/workspace-tmp.js.map +1 -1
  361. package/dist/modules/workspace/workspace.routes.d.ts +4 -4
  362. package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
  363. package/dist/modules/workspace/workspace.routes.js +22 -22
  364. package/dist/modules/workspace/workspace.routes.js.map +1 -1
  365. package/dist/modules/workspace/workspace.service.d.ts +6 -6
  366. package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
  367. package/dist/modules/workspace/workspace.service.js +11 -11
  368. package/dist/modules/workspace/workspace.service.js.map +1 -1
  369. package/dist/modules/workspace/workspace.tools.d.ts +2 -1
  370. package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
  371. package/dist/modules/workspace/workspace.tools.js +15 -10
  372. package/dist/modules/workspace/workspace.tools.js.map +1 -1
  373. package/dist/shared/canonical-file-identity.d.ts +2 -2
  374. package/dist/shared/canonical-file-identity.js +5 -5
  375. package/dist/shared/canonical-file-identity.js.map +1 -1
  376. package/dist/shared/domain-errors.d.ts +39 -39
  377. package/dist/shared/domain-errors.d.ts.map +1 -1
  378. package/dist/shared/domain-errors.js +44 -44
  379. package/dist/shared/domain-errors.js.map +1 -1
  380. package/dist/shared/git.contract.d.ts +1 -1
  381. package/dist/shared/git.contract.js +1 -1
  382. package/dist/shared/http-errors.d.ts +3 -3
  383. package/dist/shared/http-errors.d.ts.map +1 -1
  384. package/dist/shared/http-errors.js +1 -1
  385. package/dist/shared/http-errors.js.map +1 -1
  386. package/dist/shared/pending-proposals.d.ts +3 -3
  387. package/dist/shared/pending-proposals.d.ts.map +1 -1
  388. package/dist/shared/pending-proposals.js +2 -2
  389. package/dist/shared/pending-proposals.js.map +1 -1
  390. package/dist/tenancy/static-tenant-source.js +1 -1
  391. package/dist/tenancy/static-tenant-source.js.map +1 -1
  392. package/migrations/0012_agent_audit.sql +40 -40
  393. package/migrations/0013_agent_identity_and_key_soft_delete.sql +29 -29
  394. package/migrations/meta/0012_snapshot.json +2246 -2246
  395. package/migrations/meta/0013_snapshot.json +2258 -2258
  396. package/package.json +4 -4
  397. package/src/__tests__/account-admin.ts +27 -0
  398. package/src/__tests__/hexis-catalog.ts +4 -4
  399. package/src/__tests__/kb-context.ts +30 -30
  400. package/src/__tests__/kb-layout-config.test.ts +21 -0
  401. package/src/__tests__/open-change-gate.ts +1 -1
  402. package/src/__tests__/tool-handler.ts +15 -0
  403. package/src/__tests__/tool-wiring.ts +10 -4
  404. package/src/__tests__/workspace-service.ts +1 -1
  405. package/src/core/__tests__/catalog-cache-invalidation.test.ts +3 -3
  406. package/src/core/__tests__/compose-embed.test.ts +1 -1
  407. package/src/core/__tests__/damaged-document.tools.test.ts +3 -3
  408. package/src/core/__tests__/erasure-slices-wired-once.test.ts +46 -0
  409. package/src/core/__tests__/gated-boot.test.ts +2 -2
  410. package/src/core/__tests__/lifecycle.test.ts +9 -9
  411. package/src/core/catalog-cache-invalidation.ts +2 -2
  412. package/src/core/compose-embed.ts +3 -3
  413. package/src/core/core-ports.ts +19 -4
  414. package/src/core/create-core-server.ts +39 -25
  415. package/src/core/create-core-services.ts +79 -63
  416. package/src/core/lifecycle.ts +9 -9
  417. package/src/core-config.ts +3 -3
  418. package/src/index.ts +5 -5
  419. package/src/modules/access/__tests__/access-control.admin-root-floor.test.ts +4 -4
  420. package/src/modules/access/__tests__/access-own-read-grant.test.ts +14 -14
  421. package/src/modules/access/__tests__/access-requests.routes.test.ts +20 -20
  422. package/src/modules/access/__tests__/access.routes.admins.test.ts +4 -4
  423. package/src/modules/access/__tests__/access.routes.batch.test.ts +4 -4
  424. package/src/modules/access/__tests__/access.routes.folder-governs.test.ts +6 -6
  425. package/src/modules/access/__tests__/access.routes.group-grant.test.ts +6 -6
  426. package/src/modules/access/__tests__/access.routes.overrides.test.ts +5 -5
  427. package/src/modules/access/__tests__/access.routes.proposal-branch.test.ts +6 -6
  428. package/src/modules/access/__tests__/access.routes.prospective.test.ts +3 -3
  429. package/src/modules/access/__tests__/access.routes.revoke.test.ts +6 -6
  430. package/src/modules/access/__tests__/access.routes.unknown-email.test.ts +6 -6
  431. package/src/modules/access/__tests__/admin-locked-commit.test.ts +6 -6
  432. package/src/modules/access/__tests__/admin-route-helpers.test.ts +5 -5
  433. package/src/modules/access/__tests__/groups-admin.service.test.ts +27 -27
  434. package/src/modules/access/__tests__/roles-admin.security.test.ts +14 -13
  435. package/src/modules/access/__tests__/roles-admin.service.test.ts +27 -27
  436. package/src/modules/access/__tests__/roles-capabilities.test.ts +19 -19
  437. package/src/modules/access/__tests__/roles.routes.test.ts +6 -6
  438. package/src/modules/access/__tests__/synced-groups-committer.test.ts +13 -13
  439. package/src/modules/access/__tests__/user-access-removal.service.test.ts +29 -29
  440. package/src/modules/access/access-control.service.ts +1 -1
  441. package/src/modules/access/access-declarations.ts +2 -2
  442. package/src/modules/access/access-mutation.service.ts +2 -2
  443. package/src/modules/access/access-requests.routes.ts +7 -7
  444. package/src/modules/access/access-requests.service.ts +13 -13
  445. package/src/modules/access/access.routes.ts +11 -11
  446. package/src/modules/access/admin-locked-commit.ts +11 -11
  447. package/src/modules/access/admin-route-helpers.ts +5 -5
  448. package/src/modules/access/change-read-gate.ts +1 -1
  449. package/src/modules/access/groups-admin.service.ts +7 -7
  450. package/src/modules/access/reference-scan.ts +1 -1
  451. package/src/modules/access/roles-admin.service.ts +9 -9
  452. package/src/modules/access/synced-groups-committer.ts +11 -11
  453. package/src/modules/access/user-access-removal.service.ts +7 -7
  454. package/src/modules/access-model/__tests__/access-grammar.test.ts +2 -2
  455. package/src/modules/access-model/access-errors.ts +4 -4
  456. package/src/modules/access-model/access-grammar.ts +4 -4
  457. package/src/modules/access-model/change-gate.ts +1 -1
  458. package/src/modules/access-model/roles-yaml-guard.ts +4 -4
  459. package/src/modules/agent-guide/__tests__/agent-guide.test.ts +19 -4
  460. package/src/modules/agent-guide/__tests__/agent-guide.tools.test.ts +1 -1
  461. package/src/modules/agent-guide/__tests__/guide-matches-code.test.ts +2 -2
  462. package/src/modules/agent-guide/agent-guide.ts +48 -22
  463. package/src/modules/agent-guide/guide-budget.ts +6 -2
  464. package/src/modules/agent-instructions/__tests__/agent-instructions.route.test.ts +4 -5
  465. package/src/modules/agent-instructions/__tests__/compose.test.ts +1 -1
  466. package/src/modules/agent-instructions/__tests__/shared-file-rules.test.ts +113 -7
  467. package/src/modules/agent-instructions/agent-instructions.routes.ts +12 -5
  468. package/src/modules/agent-instructions/compose.ts +24 -9
  469. package/src/modules/agent-instructions/shared-file-rules.ts +53 -11
  470. package/src/modules/agent-scope/__tests__/agent-surfaces.connect-as.test.ts +1 -1
  471. package/src/modules/audit/__tests__/agent-rest-audit.middleware.test.ts +113 -113
  472. package/src/modules/audit/__tests__/event-classifier.test.ts +121 -121
  473. package/src/modules/audit/event-classifier.ts +155 -155
  474. package/src/modules/auth/__tests__/account-deactivation.test.ts +1 -1
  475. package/src/modules/auth/__tests__/account-erasure.approval-gate.test.ts +4 -4
  476. package/src/modules/auth/__tests__/account-erasure.participants.test.ts +56 -0
  477. package/src/modules/auth/__tests__/account-switch-lock.pg.test.ts +2 -2
  478. package/src/modules/auth/__tests__/account-switch-lock.test.ts +2 -2
  479. package/src/modules/auth/__tests__/account.routes.test.ts +73 -11
  480. package/src/modules/auth/__tests__/auth.service.test.ts +1 -1
  481. package/src/modules/auth/account-erasure.service.ts +27 -9
  482. package/src/modules/auth/account-hooks.ts +34 -0
  483. package/src/modules/auth/account-switch-lock.ts +2 -2
  484. package/src/modules/auth/account.routes.ts +23 -5
  485. package/src/modules/auth/auth.service.ts +4 -4
  486. package/src/modules/auth/index.ts +1 -0
  487. package/src/modules/database/__tests__/advisory-lock.test.ts +169 -169
  488. package/src/modules/database/__tests__/migrations-unqualified.test.ts +32 -32
  489. package/src/modules/database/core-schema.ts +2 -2
  490. package/src/modules/diff/__tests__/diff.routes.read-gate.test.ts +2 -2
  491. package/src/modules/diff/__tests__/diff.routes.rejectPathsLocked.test.ts +12 -12
  492. package/src/modules/diff/diff.routes.ts +8 -8
  493. package/src/modules/embed/__tests__/embed.service.lock.test.ts +7 -7
  494. package/src/modules/embed/__tests__/embed.service.test.ts +42 -42
  495. package/src/modules/embed/__tests__/embed.tools.test.ts +1 -1
  496. package/src/modules/embed/embed.routes.ts +1 -1
  497. package/src/modules/embed/embed.service.ts +17 -17
  498. package/src/modules/kb-fs/__tests__/branch-name.test.ts +2 -2
  499. package/src/modules/kb-fs/__tests__/locking-filesystem.test.ts +260 -260
  500. package/src/modules/kb-fs/__tests__/move-with-edits.test.ts +34 -34
  501. package/src/modules/kb-fs/__tests__/repo-path.test.ts +8 -8
  502. package/src/modules/kb-fs/branch-name.ts +8 -8
  503. package/src/modules/kb-fs/file-change-notifier.ts +2 -2
  504. package/src/modules/kb-fs/locking-filesystem.ts +30 -30
  505. package/src/modules/kb-fs/repo-path.ts +5 -5
  506. package/src/modules/kb-fs/tmp-ref.ts +3 -3
  507. package/src/modules/kb-sync/__tests__/kb-sync.service.test.ts +36 -36
  508. package/src/modules/kb-sync/index.ts +1 -1
  509. package/src/modules/kb-sync/kb-sync.interface.ts +3 -3
  510. package/src/modules/kb-sync/kb-sync.service.ts +9 -9
  511. package/src/modules/marketplace/__tests__/github-facade.test.ts +1 -1
  512. package/src/modules/marketplace/__tests__/marketplace-git.test.ts +1 -1
  513. package/src/modules/mcp/__tests__/mcp-proxy-helpers.test.ts +4 -2
  514. package/src/modules/mcp/__tests__/mcp.e2e.test.ts +69 -8
  515. package/src/modules/mcp/__tests__/mcp.service.test.ts +91 -13
  516. package/src/modules/mcp/__tests__/read-only-hint.pg.test.ts +194 -0
  517. package/src/modules/mcp/mcp.service.ts +89 -28
  518. package/src/modules/onboarding/__tests__/starter-pack.service.test.ts +55 -55
  519. package/src/modules/onboarding/onboarding.contract.ts +1 -1
  520. package/src/modules/onboarding/onboarding.routes.ts +2 -2
  521. package/src/modules/onboarding/starter-pack.service.ts +6 -6
  522. package/src/modules/plugins/__tests__/bundle-dialect.e2e.test.ts +1 -1
  523. package/src/modules/plugins/__tests__/compile-marketplace.test.ts +1 -1
  524. package/src/modules/plugins/__tests__/join-request-jobs.service.test.ts +43 -43
  525. package/src/modules/plugins/__tests__/join-requests.service.test.ts +19 -19
  526. package/src/modules/plugins/__tests__/join-requests.settlement.test.ts +26 -26
  527. package/src/modules/plugins/__tests__/plugins.routes.test.ts +25 -25
  528. package/src/modules/plugins/join-request-jobs.service.ts +10 -10
  529. package/src/modules/plugins/join-requests.service.ts +4 -4
  530. package/src/modules/plugins/plugin-rename.service.ts +1 -1
  531. package/src/modules/plugins/plugins.routes.ts +9 -9
  532. package/src/modules/secrets-vault/__tests__/db-secrets-vault.managed.test.ts +773 -0
  533. package/src/modules/secrets-vault/__tests__/db-secrets-vault.oauth.test.ts +28 -1
  534. package/src/modules/secrets-vault/__tests__/managed-sign-in.route.test.ts +351 -0
  535. package/src/modules/secrets-vault/db-secrets-vault.service.ts +562 -95
  536. package/src/modules/secrets-vault/index.ts +7 -0
  537. package/src/modules/secrets-vault/managed-sign-in-erasure.ts +41 -0
  538. package/src/modules/secrets-vault/secrets-variable-loader.ts +134 -134
  539. package/src/modules/secrets-vault/secrets-vault.contract.ts +152 -0
  540. package/src/modules/secrets-vault/secrets-vault.routes.ts +157 -10
  541. package/src/modules/settings/__tests__/repository-source.test.ts +1 -1
  542. package/src/modules/settings/__tests__/setup.routes.layout-phase.test.ts +1 -1
  543. package/src/modules/settings/__tests__/setup.routes.managed-phase.test.ts +1 -1
  544. package/src/modules/settings/connection-check.ts +1 -1
  545. package/src/modules/settings/deployment-settings.service.ts +1 -1
  546. package/src/modules/settings/git-root-folders.ts +1 -1
  547. package/src/modules/settings/setup.routes.ts +1 -1
  548. package/src/modules/skills/__tests__/allowed-tools-warn.tools.test.ts +3 -3
  549. package/src/modules/skills/__tests__/branch-skills.tools.test.ts +1 -1
  550. package/src/modules/skills/__tests__/pending-skills.service.test.ts +8 -8
  551. package/src/modules/skills/__tests__/skill-access-requests.routes.test.ts +18 -18
  552. package/src/modules/skills/__tests__/skills.service.test.ts +3 -3
  553. package/src/modules/skills/pending-skills.service.ts +3 -3
  554. package/src/modules/skills/skill-access-requests.routes.ts +7 -7
  555. package/src/modules/tool-helpers/__tests__/agent-roles-write.test.ts +4 -4
  556. package/src/modules/tool-helpers/__tests__/branch-declaration.test.ts +3 -3
  557. package/src/modules/tool-helpers/__tests__/can-write.tools.test.ts +3 -3
  558. package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +4 -4
  559. package/src/modules/tool-helpers/__tests__/tools-surface.test.ts +3 -3
  560. package/src/modules/tool-helpers/__tests__/validate-token.test.ts +1 -1
  561. package/src/modules/tool-helpers/tool-context.ts +6 -6
  562. package/src/modules/tool-helpers/tool-handler.ts +2 -2
  563. package/src/modules/tool-helpers/tool.contract.ts +4 -4
  564. package/src/modules/tool-manuals/__tests__/pending-tools.service.test.ts +9 -9
  565. package/src/modules/tool-manuals/__tests__/tool-manuals.managed-sign-in.test.ts +89 -0
  566. package/src/modules/tool-manuals/__tests__/tool-manuals.restart.test.ts +1 -1
  567. package/src/modules/tool-manuals/__tests__/tool-manuals.tools.test.ts +36 -1
  568. package/src/modules/tool-manuals/mcp-server-edit.service.ts +1 -1
  569. package/src/modules/tool-manuals/pending-tools.service.ts +3 -3
  570. package/src/modules/tool-manuals/tool-delete.service.ts +1 -1
  571. package/src/modules/tool-manuals/tool-manuals.contract.ts +41 -3
  572. package/src/modules/tool-manuals/tool-manuals.service.ts +53 -5
  573. package/src/modules/tool-manuals/tool-manuals.tools.ts +41 -15
  574. package/src/modules/tool-registry/__tests__/own-tool-schemas.test.ts +4 -4
  575. package/src/modules/tool-registry/__tests__/read-only-hints.test.ts +3 -3
  576. package/src/modules/tool-registry/__tests__/tool-description-length.test.ts +6 -6
  577. package/src/modules/{workflow → version-control}/__tests__/apply-failure.test.ts +54 -54
  578. package/src/modules/{workflow → version-control}/__tests__/event-bus.test.ts +27 -27
  579. package/src/modules/{workflow → version-control}/__tests__/events-delivery.test.ts +37 -37
  580. package/src/modules/{workflow → version-control}/__tests__/file-lock.service.deletion-gate.test.ts +2 -2
  581. package/src/modules/{workflow → version-control}/__tests__/file-lock.service.path-identity.test.ts +8 -8
  582. package/src/modules/{workflow → version-control}/__tests__/merge-announces-tree.test.ts +11 -11
  583. package/src/modules/{workflow → version-control}/__tests__/pending-commits.worker.concurrency.test.ts +9 -9
  584. package/src/modules/{workflow → version-control}/__tests__/pending-commits.worker.test.ts +25 -25
  585. package/src/modules/{workflow → version-control}/__tests__/preserve-roles-yaml.test.ts +42 -42
  586. package/src/modules/version-control/__tests__/public-surface.test.ts +114 -0
  587. package/src/modules/{workflow/__tests__/workflow.routes.folder-proposals.test.ts → version-control/__tests__/version-control.routes.folder-proposals.test.ts} +18 -18
  588. package/src/modules/{workflow/__tests__/workflow.routes.fork-point-file.test.ts → version-control/__tests__/version-control.routes.fork-point-file.test.ts} +19 -19
  589. package/src/modules/{workflow/__tests__/workflow.routes.history-read-gate.test.ts → version-control/__tests__/version-control.routes.history-read-gate.test.ts} +13 -13
  590. package/src/modules/{workflow/__tests__/workflow.routes.lock-path.test.ts → version-control/__tests__/version-control.routes.lock-path.test.ts} +18 -18
  591. package/src/modules/{workflow/__tests__/workflow.routes.open-change-request.test.ts → version-control/__tests__/version-control.routes.open-change-request.test.ts} +7 -7
  592. package/src/modules/{workflow/__tests__/workflow.routes.push-refused.test.ts → version-control/__tests__/version-control.routes.push-refused.test.ts} +14 -14
  593. package/src/modules/{workflow/__tests__/workflow.service.branch-in-use.test.ts → version-control/__tests__/version-control.service.branch-in-use.test.ts} +6 -6
  594. package/src/modules/{workflow/__tests__/workflow.service.commitFileWhileLocked.test.ts → version-control/__tests__/version-control.service.commitFileWhileLocked.test.ts} +14 -14
  595. package/src/modules/{workflow/__tests__/workflow.service.delete-branch.test.ts → version-control/__tests__/version-control.service.delete-branch.test.ts} +14 -14
  596. package/src/modules/{workflow/__tests__/workflow.service.deleted-branch-sweep.test.ts → version-control/__tests__/version-control.service.deleted-branch-sweep.test.ts} +4 -4
  597. package/src/modules/{workflow/__tests__/workflow.service.facade.test.ts → version-control/__tests__/version-control.service.facade.test.ts} +97 -99
  598. package/src/modules/{workflow/__tests__/workflow.service.folder-proposals.test.ts → version-control/__tests__/version-control.service.folder-proposals.test.ts} +7 -7
  599. package/src/modules/{workflow/__tests__/workflow.service.platform-restore.test.ts → version-control/__tests__/version-control.service.platform-restore.test.ts} +6 -6
  600. package/src/modules/{workflow/__tests__/workflow.service.read-gate.test.ts → version-control/__tests__/version-control.service.read-gate.test.ts} +9 -9
  601. package/src/modules/{workflow/__tests__/workflow.service.releaseLock.test.ts → version-control/__tests__/version-control.service.releaseLock.test.ts} +42 -42
  602. package/src/modules/{workflow/__tests__/workflow.service.repository-replaced.test.ts → version-control/__tests__/version-control.service.repository-replaced.test.ts} +4 -4
  603. package/src/modules/{workflow/__tests__/workflow.service.sync.test.ts → version-control/__tests__/version-control.service.sync.test.ts} +17 -17
  604. package/src/modules/{workflow/__tests__/workflow.service.update-change-request.pg.test.ts → version-control/__tests__/version-control.service.update-change-request.pg.test.ts} +6 -6
  605. package/src/modules/{workflow/__tests__/workflow.service.update-change-request.test.ts → version-control/__tests__/version-control.service.update-change-request.test.ts} +11 -11
  606. package/src/modules/{workflow/__tests__/workflow.service.update-from-target.test.ts → version-control/__tests__/version-control.service.update-from-target.test.ts} +22 -22
  607. package/src/modules/{workflow → version-control}/agent-tools/__tests__/change-request-read.tools.test.ts +3 -3
  608. package/src/modules/{workflow → version-control}/agent-tools/__tests__/update-change-request.parity.test.ts +16 -16
  609. package/src/modules/{workflow/agent-tools/__tests__/workflow.tools.test.ts → version-control/agent-tools/__tests__/version-control.tools.test.ts} +9 -9
  610. package/src/modules/{workflow → version-control}/agent-tools/change-request-read.tools.ts +2 -2
  611. package/src/modules/{workflow/agent-tools/workflow.tools.ts → version-control/agent-tools/version-control.tools.ts} +30 -30
  612. package/src/modules/{workflow → version-control}/change-request-hooks.ts +1 -1
  613. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/approval-states.test.ts +5 -5
  614. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/cancel-pr.test.ts +8 -8
  615. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/carry-approvals-forward.test.ts +6 -6
  616. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/erase-approver.test.ts +5 -5
  617. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/merge-gate.test.ts +3 -3
  618. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/merge-records-own-commit.test.ts +3 -3
  619. package/src/modules/{workflow/review-workflow/review-workflow.interface.ts → version-control/change-request-review/change-request-review.interface.ts} +1 -1
  620. package/src/modules/{workflow/review-workflow/review-workflow.service.ts → version-control/change-request-review/change-request-review.service.ts} +28 -28
  621. package/src/modules/{workflow → version-control}/event-bus.ts +14 -14
  622. package/src/modules/{workflow → version-control}/events-delivery.ts +11 -11
  623. package/src/modules/{workflow → version-control}/events.routes.ts +5 -5
  624. package/src/modules/{workflow → version-control}/file-lock.service.ts +6 -6
  625. package/src/modules/{workflow → version-control}/git/__tests__/git-test-helpers.ts +3 -3
  626. package/src/modules/{workflow → version-control}/git/__tests__/git.service.accessGating.test.ts +5 -5
  627. package/src/modules/{workflow → version-control}/git/__tests__/git.service.appliedChange.test.ts +4 -4
  628. package/src/modules/{workflow → version-control}/git/__tests__/git.service.changedFilesForPr.test.ts +16 -16
  629. package/src/modules/{workflow → version-control}/git/__tests__/git.service.changedPathsMemo.test.ts +2 -2
  630. package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitChanges.test.ts +3 -3
  631. package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitFile.strayPath.test.ts +10 -10
  632. package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitFile.test.ts +3 -3
  633. package/src/modules/{workflow → version-control}/git/__tests__/git.service.createBranch.test.ts +3 -3
  634. package/src/modules/{workflow → version-control}/git/__tests__/git.service.deleteBranch.test.ts +7 -7
  635. package/src/modules/{workflow → version-control}/git/__tests__/git.service.diffFileAtCommit.test.ts +9 -9
  636. package/src/modules/{workflow → version-control}/git/__tests__/git.service.diffFileBetweenBranches.test.ts +23 -23
  637. package/src/modules/{workflow → version-control}/git/__tests__/git.service.fileBytesAtCommit.test.ts +7 -7
  638. package/src/modules/{workflow → version-control}/git/__tests__/git.service.fileContentsAtCommit.test.ts +3 -3
  639. package/src/modules/{workflow → version-control}/git/__tests__/git.service.forkPoint.test.ts +2 -2
  640. package/src/modules/{workflow → version-control}/git/__tests__/git.service.history-guards.test.ts +2 -2
  641. package/src/modules/{workflow → version-control}/git/__tests__/git.service.list-branches.test.ts +12 -12
  642. package/src/modules/{workflow → version-control}/git/__tests__/git.service.listTrackedFiles.test.ts +2 -2
  643. package/src/modules/{workflow → version-control}/git/__tests__/git.service.logForFile.test.ts +6 -6
  644. package/src/modules/{workflow → version-control}/git/__tests__/git.service.mergeChangeRequest.test.ts +20 -20
  645. package/src/modules/{workflow → version-control}/git/__tests__/git.service.mergeIntoBranch.test.ts +16 -16
  646. package/src/modules/{workflow → version-control}/git/__tests__/git.service.pendingChanges.test.ts +2 -2
  647. package/src/modules/{workflow → version-control}/git/__tests__/git.service.postMergePull.test.ts +5 -5
  648. package/src/modules/{workflow → version-control}/git/__tests__/git.service.prFetchFailure.test.ts +2 -2
  649. package/src/modules/{workflow → version-control}/git/__tests__/git.service.pull.test.ts +12 -12
  650. package/src/modules/{workflow → version-control}/git/__tests__/git.service.readFileAtRef.test.ts +3 -3
  651. package/src/modules/{workflow → version-control}/git/__tests__/git.service.revertPathsAndPush.test.ts +2 -2
  652. package/src/modules/{workflow → version-control}/git/__tests__/git.service.status.test.ts +4 -4
  653. package/src/modules/{workflow → version-control}/git/__tests__/git.service.syncFromRemote.test.ts +8 -8
  654. package/src/modules/{workflow → version-control}/git/__tests__/git.service.worktrees.test.ts +4 -4
  655. package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.list-fetch.test.ts +2 -2
  656. package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.test.ts +6 -6
  657. package/src/modules/{workflow → version-control}/git/git.service.ts +57 -57
  658. package/src/modules/{workflow → version-control}/git/node-git-runner.ts +1 -1
  659. package/src/modules/{workflow → version-control}/git/pull-request.service.ts +12 -12
  660. package/src/modules/{workflow → version-control}/index.ts +6 -5
  661. package/src/modules/{workflow → version-control}/pending-commits.service.ts +2 -2
  662. package/src/modules/{workflow → version-control}/pending-commits.worker.ts +8 -8
  663. package/src/modules/{workflow → version-control}/read-on-branch.ts +2 -2
  664. package/src/modules/{workflow/workflow-hooks.ts → version-control/version-control-hooks.ts} +3 -3
  665. package/src/modules/{workflow/workflow.routes.ts → version-control/version-control.routes.ts} +64 -63
  666. package/src/modules/{workflow/workflow.service.ts → version-control/version-control.service.ts} +92 -97
  667. package/src/modules/workspace/__tests__/agent-access.gate.test.ts +8 -8
  668. package/src/modules/workspace/__tests__/agent-downloads.test.ts +13 -16
  669. package/src/modules/workspace/__tests__/agent-uploads.test.ts +11 -12
  670. package/src/modules/workspace/__tests__/escape-sequences.routes.test.ts +11 -16
  671. package/src/modules/workspace/__tests__/file-stat-access.test.ts +3 -3
  672. package/src/modules/workspace/__tests__/git-internals.security.test.ts +27 -27
  673. package/src/modules/workspace/__tests__/kb-repository.test.ts +1 -1
  674. package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +3 -3
  675. package/src/modules/workspace/__tests__/start-session.default-branch.test.ts +152 -0
  676. package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +6 -6
  677. package/src/modules/workspace/__tests__/workspace-tmp.tools.test.ts +13 -14
  678. package/src/modules/workspace/__tests__/workspace.routes.at-ref.test.ts +6 -6
  679. package/src/modules/workspace/__tests__/workspace.routes.branch-errors.test.ts +4 -4
  680. package/src/modules/workspace/__tests__/workspace.routes.create-grant.test.ts +6 -6
  681. package/src/modules/workspace/__tests__/workspace.routes.delete.test.ts +8 -8
  682. package/src/modules/workspace/__tests__/workspace.routes.download-implies-read.test.ts +4 -4
  683. package/src/modules/workspace/__tests__/workspace.routes.download.test.ts +6 -6
  684. package/src/modules/workspace/__tests__/workspace.routes.file-writes.test.ts +6 -6
  685. package/src/modules/workspace/__tests__/workspace.routes.folder-zip-access.test.ts +4 -4
  686. package/src/modules/workspace/__tests__/workspace.routes.folders.test.ts +6 -6
  687. package/src/modules/workspace/__tests__/workspace.routes.move-platform-files.test.ts +7 -7
  688. package/src/modules/workspace/__tests__/workspace.routes.read-gate.test.ts +13 -13
  689. package/src/modules/workspace/__tests__/workspace.service.any-workspace-credentials.test.ts +1 -1
  690. package/src/modules/workspace/__tests__/workspace.service.replaced-repository.test.ts +1 -1
  691. package/src/modules/workspace/__tests__/workspace.service.worktrees.test.ts +1 -1
  692. package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +5 -5
  693. package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +5 -5
  694. package/src/modules/workspace/__tests__/workspace.tools.test.ts +27 -27
  695. package/src/modules/workspace/agent-access.gate.ts +5 -5
  696. package/src/modules/workspace/git-internals.middleware.ts +2 -2
  697. package/src/modules/workspace/kb-repository.ts +1 -1
  698. package/src/modules/workspace/startup/__tests__/kb-startup-runner.degraded.test.ts +1 -1
  699. package/src/modules/workspace/startup/__tests__/kb-startup-runner.test.ts +1 -1
  700. package/src/modules/workspace/startup/__tests__/kb-startup-runner.worktrees.test.ts +1 -1
  701. package/src/modules/workspace/startup/kb-git.ts +1 -1
  702. package/src/modules/workspace/startup/steps/__tests__/steps.test.ts +94 -70
  703. package/src/modules/workspace/startup/steps/seed-tree.ts +4 -5
  704. package/src/modules/workspace/startup/steps/template-files.step.ts +4 -5
  705. package/src/modules/workspace/startup/steps/template-source.ts +21 -6
  706. package/src/modules/workspace/workspace-tmp.ts +4 -4
  707. package/src/modules/workspace/workspace.routes.ts +26 -26
  708. package/src/modules/workspace/workspace.service.ts +11 -11
  709. package/src/modules/workspace/workspace.tools.ts +17 -10
  710. package/src/shared/__tests__/canonical-file-identity.test.ts +5 -5
  711. package/src/shared/__tests__/http-errors.test.ts +4 -4
  712. package/src/shared/canonical-file-identity.ts +5 -5
  713. package/src/shared/domain-errors.ts +44 -44
  714. package/src/shared/git.contract.ts +1 -1
  715. package/src/shared/http-errors.ts +3 -3
  716. package/src/shared/kb-context.ts +130 -130
  717. package/src/shared/pending-proposals.ts +4 -4
  718. package/src/tenancy/__tests__/tenant-host.test.ts +372 -372
  719. package/src/tenancy/__tests__/tenant-runtime.test.ts +221 -221
  720. package/src/tenancy/__tests__/tenant-secrets.test.ts +35 -35
  721. package/src/tenancy/index.ts +35 -35
  722. package/src/tenancy/static-tenant-source.ts +1 -1
  723. package/src/tenancy/tenant-host.ts +261 -261
  724. package/src/tenancy/tenant-runtime.ts +208 -208
  725. package/src/tenancy/tenant-source.contract.ts +59 -59
  726. package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts.map +0 -1
  727. package/dist/modules/workflow/agent-tools/change-request-read-shape.js.map +0 -1
  728. package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts.map +0 -1
  729. package/dist/modules/workflow/agent-tools/change-request-read.tools.js.map +0 -1
  730. package/dist/modules/workflow/agent-tools/change-request-summary.d.ts.map +0 -1
  731. package/dist/modules/workflow/agent-tools/change-request-summary.js.map +0 -1
  732. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +0 -1
  733. package/dist/modules/workflow/agent-tools/workflow.tools.js.map +0 -1
  734. package/dist/modules/workflow/change-request-hooks.d.ts.map +0 -1
  735. package/dist/modules/workflow/change-request-hooks.js.map +0 -1
  736. package/dist/modules/workflow/event-bus.d.ts.map +0 -1
  737. package/dist/modules/workflow/event-bus.js.map +0 -1
  738. package/dist/modules/workflow/events-delivery.d.ts.map +0 -1
  739. package/dist/modules/workflow/events-delivery.js.map +0 -1
  740. package/dist/modules/workflow/events.routes.d.ts.map +0 -1
  741. package/dist/modules/workflow/events.routes.js.map +0 -1
  742. package/dist/modules/workflow/file-lock.service.d.ts.map +0 -1
  743. package/dist/modules/workflow/file-lock.service.js.map +0 -1
  744. package/dist/modules/workflow/git/change-request-link.d.ts.map +0 -1
  745. package/dist/modules/workflow/git/change-request-link.js.map +0 -1
  746. package/dist/modules/workflow/git/git-version.d.ts.map +0 -1
  747. package/dist/modules/workflow/git/git-version.js.map +0 -1
  748. package/dist/modules/workflow/git/git.service.d.ts.map +0 -1
  749. package/dist/modules/workflow/git/git.service.js.map +0 -1
  750. package/dist/modules/workflow/git/merge-commit.d.ts.map +0 -1
  751. package/dist/modules/workflow/git/merge-commit.js.map +0 -1
  752. package/dist/modules/workflow/git/node-git-runner.d.ts.map +0 -1
  753. package/dist/modules/workflow/git/node-git-runner.js.map +0 -1
  754. package/dist/modules/workflow/git/pull-request.service.d.ts.map +0 -1
  755. package/dist/modules/workflow/git/pull-request.service.js.map +0 -1
  756. package/dist/modules/workflow/index.d.ts.map +0 -1
  757. package/dist/modules/workflow/index.js.map +0 -1
  758. package/dist/modules/workflow/pending-commits.service.d.ts.map +0 -1
  759. package/dist/modules/workflow/pending-commits.service.js.map +0 -1
  760. package/dist/modules/workflow/pending-commits.worker.d.ts.map +0 -1
  761. package/dist/modules/workflow/pending-commits.worker.js.map +0 -1
  762. package/dist/modules/workflow/read-on-branch.d.ts.map +0 -1
  763. package/dist/modules/workflow/read-on-branch.js.map +0 -1
  764. package/dist/modules/workflow/recovery-bot.d.ts.map +0 -1
  765. package/dist/modules/workflow/recovery-bot.js.map +0 -1
  766. package/dist/modules/workflow/review-workflow/approval-lock.d.ts.map +0 -1
  767. package/dist/modules/workflow/review-workflow/approval-lock.js.map +0 -1
  768. package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts.map +0 -1
  769. package/dist/modules/workflow/review-workflow/review-workflow.interface.js +0 -2
  770. package/dist/modules/workflow/review-workflow/review-workflow.interface.js.map +0 -1
  771. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +0 -1
  772. package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +0 -1
  773. package/dist/modules/workflow/sanitize-error.d.ts.map +0 -1
  774. package/dist/modules/workflow/sanitize-error.js.map +0 -1
  775. package/dist/modules/workflow/workflow-hooks.d.ts.map +0 -1
  776. package/dist/modules/workflow/workflow-hooks.js.map +0 -1
  777. package/dist/modules/workflow/workflow.routes.d.ts.map +0 -1
  778. package/dist/modules/workflow/workflow.routes.js.map +0 -1
  779. package/dist/modules/workflow/workflow.service.d.ts.map +0 -1
  780. package/dist/modules/workflow/workflow.service.js.map +0 -1
  781. package/src/modules/mcp/__tests__/read-only-hint.e2e.test.ts +0 -213
  782. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read-shape.d.ts +0 -0
  783. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read-shape.js +0 -0
  784. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read.tools.d.ts +0 -0
  785. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-summary.d.ts +0 -0
  786. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-summary.js +0 -0
  787. /package/dist/modules/{workflow → version-control}/change-request-hooks.js +0 -0
  788. /package/dist/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.d.ts +0 -0
  789. /package/dist/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.js +0 -0
  790. /package/dist/modules/{workflow → version-control}/events-delivery.js +0 -0
  791. /package/dist/modules/{workflow → version-control}/events.routes.js +0 -0
  792. /package/dist/modules/{workflow → version-control}/git/change-request-link.d.ts +0 -0
  793. /package/dist/modules/{workflow → version-control}/git/change-request-link.js +0 -0
  794. /package/dist/modules/{workflow → version-control}/git/git-version.d.ts +0 -0
  795. /package/dist/modules/{workflow → version-control}/git/git-version.js +0 -0
  796. /package/dist/modules/{workflow → version-control}/git/merge-commit.d.ts +0 -0
  797. /package/dist/modules/{workflow → version-control}/git/merge-commit.js +0 -0
  798. /package/dist/modules/{workflow → version-control}/git/node-git-runner.d.ts +0 -0
  799. /package/dist/modules/{workflow → version-control}/recovery-bot.d.ts +0 -0
  800. /package/dist/modules/{workflow → version-control}/recovery-bot.js +0 -0
  801. /package/dist/modules/{workflow → version-control}/sanitize-error.d.ts +0 -0
  802. /package/dist/modules/{workflow → version-control}/sanitize-error.js +0 -0
  803. /package/src/modules/{workflow → version-control}/__tests__/change-request-hooks.test.ts +0 -0
  804. /package/src/modules/{workflow → version-control}/__tests__/fake-file-lock-db.ts +0 -0
  805. /package/src/modules/{workflow → version-control}/__tests__/pending-commits.canonical.test.ts +0 -0
  806. /package/src/modules/{workflow → version-control}/__tests__/pending-commits.enqueue-if-absent.test.ts +0 -0
  807. /package/src/modules/{workflow → version-control}/__tests__/pending-commits.repository-replaced.test.ts +0 -0
  808. /package/src/modules/{workflow → version-control}/__tests__/sanitize-error.test.ts +0 -0
  809. /package/src/modules/{workflow → version-control}/agent-tools/__tests__/change-request-read-shape.test.ts +0 -0
  810. /package/src/modules/{workflow → version-control}/agent-tools/change-request-read-shape.ts +0 -0
  811. /package/src/modules/{workflow → version-control}/agent-tools/change-request-summary.ts +0 -0
  812. /package/src/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.ts +0 -0
  813. /package/src/modules/{workflow → version-control}/git/__tests__/branchAuthor.test.ts +0 -0
  814. /package/src/modules/{workflow → version-control}/git/__tests__/change-request-link.test.ts +0 -0
  815. /package/src/modules/{workflow → version-control}/git/__tests__/git-version.failure.test.ts +0 -0
  816. /package/src/modules/{workflow → version-control}/git/__tests__/git-version.test.ts +0 -0
  817. /package/src/modules/{workflow → version-control}/git/__tests__/node-git-runner.test.ts +0 -0
  818. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.getPrDetail.test.ts +0 -0
  819. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.placeholder.test.ts +0 -0
  820. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-cancel.test.ts +0 -0
  821. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-delete.test.ts +0 -0
  822. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-update.test.ts +0 -0
  823. /package/src/modules/{workflow → version-control}/git/change-request-link.ts +0 -0
  824. /package/src/modules/{workflow → version-control}/git/git-version.ts +0 -0
  825. /package/src/modules/{workflow → version-control}/git/merge-commit.ts +0 -0
  826. /package/src/modules/{workflow → version-control}/recovery-bot.ts +0 -0
  827. /package/src/modules/{workflow → version-control}/sanitize-error.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect, vi } from 'vitest';
2
- import type { WorkflowEvent } from '@bevel-software/platform-shared';
3
- import { WorkflowEventBus } from '../index.js';
2
+ import type { VersionControlEvent } from '@bevel-software/platform-shared';
3
+ import { VersionControlEventBus } from '../index.js';
4
4
 
5
5
  /**
6
6
  * Make a `Subscriber`-compatible spy. Returns the spy + a getter for
@@ -21,10 +21,10 @@ function makeSubscriber(sessionId: string, userId: string, initialFocus: string
21
21
  };
22
22
  }
23
23
 
24
- describe('WorkflowEventBus', () => {
24
+ describe('VersionControlEventBus', () => {
25
25
  describe('scope filtering', () => {
26
26
  it('delivers workspace-scoped events only to sessions focused on that workspace', () => {
27
- const bus = new WorkflowEventBus();
27
+ const bus = new VersionControlEventBus();
28
28
  const onA = makeSubscriber('s-a', 'u-1', 'ws-feat');
29
29
  const onB = makeSubscriber('s-b', 'u-2', 'ws-other');
30
30
  bus.subscribe(onA);
@@ -51,7 +51,7 @@ describe('WorkflowEventBus', () => {
51
51
  // branch reached nobody who wasn't standing there, and every such page
52
52
  // showed the old picture until a reload.
53
53
  it('delivers to a session watching a second workspace alongside its focus', () => {
54
- const bus = new WorkflowEventBus();
54
+ const bus = new VersionControlEventBus();
55
55
  const onBranch = makeSubscriber('s-a', 'u-1', 'alice%2Fdraft');
56
56
  onBranch.alsoWatch('main');
57
57
  const elsewhere = makeSubscriber('s-b', 'u-2', 'bob%2Fdraft');
@@ -73,7 +73,7 @@ describe('WorkflowEventBus', () => {
73
73
  });
74
74
 
75
75
  it('still delivers the focused workspace to a session that also watches another', () => {
76
- const bus = new WorkflowEventBus();
76
+ const bus = new VersionControlEventBus();
77
77
  const sub = makeSubscriber('s-a', 'u-1', 'alice%2Fdraft');
78
78
  sub.alsoWatch('main');
79
79
  bus.subscribe(sub);
@@ -98,14 +98,14 @@ describe('WorkflowEventBus', () => {
98
98
  // canonicalisation, workspace-scoped events for any branch with a `/`
99
99
  // never reach the receiver — the silent bug we hit on
100
100
  // `razvan-radulescu/sc`.
101
- const bus = new WorkflowEventBus();
101
+ const bus = new VersionControlEventBus();
102
102
  const encodedFocus = makeSubscriber('s-enc', 'u-1', 'razvan-radulescu%2Fsc');
103
103
  const decodedFocus = makeSubscriber('s-dec', 'u-2', 'razvan-radulescu/sc');
104
104
  bus.subscribe(encodedFocus);
105
105
  bus.subscribe(decodedFocus);
106
106
 
107
107
  // Event fired with the DECODED form (mirrors what Express's
108
- // req.params.id passes into workflow methods).
108
+ // req.params.id passes into version-control methods).
109
109
  bus.emit({
110
110
  kind: 'lock-released',
111
111
  workspaceId: 'razvan-radulescu/sc',
@@ -128,7 +128,7 @@ describe('WorkflowEventBus', () => {
128
128
  });
129
129
 
130
130
  it('delivers user-scoped events only to sessions belonging to that user', () => {
131
- const bus = new WorkflowEventBus();
131
+ const bus = new VersionControlEventBus();
132
132
  const onAlice = makeSubscriber('s-alice', 'u-alice');
133
133
  const onBob = makeSubscriber('s-bob', 'u-bob');
134
134
  bus.subscribe(onAlice);
@@ -141,7 +141,7 @@ describe('WorkflowEventBus', () => {
141
141
  });
142
142
 
143
143
  it("delivers an agent's tool call only to the person whose agent made it", () => {
144
- const bus = new WorkflowEventBus();
144
+ const bus = new VersionControlEventBus();
145
145
  const onAlice = makeSubscriber('s-alice', 'u-alice');
146
146
  const onBob = makeSubscriber('s-bob', 'u-bob');
147
147
  bus.subscribe(onAlice);
@@ -160,7 +160,7 @@ describe('WorkflowEventBus', () => {
160
160
  });
161
161
 
162
162
  it('delivers change-request-merge-failed only to the user who triggered the merge', () => {
163
- const bus = new WorkflowEventBus();
163
+ const bus = new VersionControlEventBus();
164
164
  const onAlice = makeSubscriber('s-alice', 'u-alice');
165
165
  const onBob = makeSubscriber('s-bob', 'u-bob');
166
166
  bus.subscribe(onAlice);
@@ -179,7 +179,7 @@ describe('WorkflowEventBus', () => {
179
179
  });
180
180
 
181
181
  it("delivers global events (e.g. change-request-opened) to every subscriber regardless of focus or user", () => {
182
- const bus = new WorkflowEventBus();
182
+ const bus = new VersionControlEventBus();
183
183
  const onA = makeSubscriber('s-a', 'u-1', null); // no focus at all
184
184
  const onB = makeSubscriber('s-b', 'u-2', 'ws-other');
185
185
  bus.subscribe(onA);
@@ -198,7 +198,7 @@ describe('WorkflowEventBus', () => {
198
198
  });
199
199
 
200
200
  it("skips workspace events for sessions that haven't set a focus yet", () => {
201
- const bus = new WorkflowEventBus();
201
+ const bus = new VersionControlEventBus();
202
202
  const unfocused = makeSubscriber('s-x', 'u-1', null);
203
203
  bus.subscribe(unfocused);
204
204
 
@@ -215,7 +215,7 @@ describe('WorkflowEventBus', () => {
215
215
  });
216
216
 
217
217
  it('honours a mid-stream focus change without re-subscribing', () => {
218
- const bus = new WorkflowEventBus();
218
+ const bus = new VersionControlEventBus();
219
219
  const sub = makeSubscriber('s-1', 'u-1', 'ws-a');
220
220
  bus.subscribe(sub);
221
221
 
@@ -234,7 +234,7 @@ describe('WorkflowEventBus', () => {
234
234
 
235
235
  describe('envelope', () => {
236
236
  it('stamps each event with a monotonic id and an ISO timestamp', () => {
237
- const bus = new WorkflowEventBus();
237
+ const bus = new VersionControlEventBus();
238
238
  const e1 = bus.emit({ kind: 'change-request-merged', number: 1 });
239
239
  const e2 = bus.emit({ kind: 'change-request-merged', number: 2 });
240
240
  expect(e1.id).toBe(1);
@@ -246,7 +246,7 @@ describe('WorkflowEventBus', () => {
246
246
 
247
247
  describe('replay', () => {
248
248
  it('returns events strictly after the last-seen id', () => {
249
- const bus = new WorkflowEventBus();
249
+ const bus = new VersionControlEventBus();
250
250
  const sub = { userId: 'u-1', getFocusedWorkspaceIds: () => ['ws-a'] };
251
251
  bus.emit({ kind: 'lock-released', workspaceId: 'ws-a', branch: 'a', path: '1.md' });
252
252
  bus.emit({ kind: 'lock-released', workspaceId: 'ws-a', branch: 'a', path: '2.md' });
@@ -254,11 +254,11 @@ describe('WorkflowEventBus', () => {
254
254
 
255
255
  const tail = bus.replayAfter(1, sub);
256
256
  expect(tail).not.toBeNull();
257
- expect(tail!.map((e) => (e as WorkflowEvent & { path?: string }).path)).toEqual(['2.md', '3.md']);
257
+ expect(tail!.map((e) => (e as VersionControlEvent & { path?: string }).path)).toEqual(['2.md', '3.md']);
258
258
  });
259
259
 
260
260
  it('respects scope filtering on replay (no leak of other workspaces)', () => {
261
- const bus = new WorkflowEventBus();
261
+ const bus = new VersionControlEventBus();
262
262
  const sub = { userId: 'u-1', getFocusedWorkspaceIds: () => ['ws-a'] };
263
263
  bus.emit({ kind: 'lock-released', workspaceId: 'ws-a', branch: 'a', path: 'a.md' });
264
264
  bus.emit({ kind: 'lock-released', workspaceId: 'ws-b', branch: 'b', path: 'b.md' });
@@ -276,7 +276,7 @@ describe('WorkflowEventBus', () => {
276
276
  // The bus's BUFFER_CAPACITY is 500 — emit one more than that to
277
277
  // force eviction of id 1, then ask to replay after id 0 (which
278
278
  // sits BEFORE the now-evicted id 1).
279
- const bus = new WorkflowEventBus();
279
+ const bus = new VersionControlEventBus();
280
280
  for (let i = 0; i < 501; i++) {
281
281
  bus.emit({ kind: 'change-request-merged', number: i + 1 });
282
282
  }
@@ -298,7 +298,7 @@ describe('WorkflowEventBus', () => {
298
298
  // entirely different events. Returning `[]` would silently lie.
299
299
  // The bus must return `null` so the route emits a `resync` and the
300
300
  // client refetches state from scratch.
301
- const bus = new WorkflowEventBus();
301
+ const bus = new VersionControlEventBus();
302
302
  const sub = { userId: 'u-1', getFocusedWorkspaceIds: () => [] };
303
303
  expect(bus.replayAfter(42, sub)).toBeNull();
304
304
  // First-time client (Last-Event-ID === 0) on an empty buffer is
@@ -313,7 +313,7 @@ describe('WorkflowEventBus', () => {
313
313
  // the linear `id > lastSeenId` filter would return empty — but the
314
314
  // client has actually missed everything in the new id space too.
315
315
  // Force a resync so they refetch.
316
- const bus = new WorkflowEventBus();
316
+ const bus = new VersionControlEventBus();
317
317
  for (let i = 0; i < 5; i++) {
318
318
  bus.emit({ kind: 'change-request-merged', number: i + 1 });
319
319
  }
@@ -329,7 +329,7 @@ describe('WorkflowEventBus', () => {
329
329
 
330
330
  describe('subscriber lifecycle', () => {
331
331
  it('unsubscribe removes the subscriber from future fan-out', () => {
332
- const bus = new WorkflowEventBus();
332
+ const bus = new VersionControlEventBus();
333
333
  const sub = makeSubscriber('s-1', 'u-1', 'ws-a');
334
334
  const off = bus.subscribe(sub);
335
335
  bus.emit({ kind: 'lock-released', workspaceId: 'ws-a', branch: 'a', path: 'x.md' });
@@ -340,7 +340,7 @@ describe('WorkflowEventBus', () => {
340
340
  });
341
341
 
342
342
  it('does not double-emit when a subscriber re-registers with the same sessionId', () => {
343
- const bus = new WorkflowEventBus();
343
+ const bus = new VersionControlEventBus();
344
344
  const first = makeSubscriber('s-1', 'u-1', 'ws-a');
345
345
  const second = makeSubscriber('s-1', 'u-1', 'ws-a'); // same id
346
346
  bus.subscribe(first);
@@ -355,7 +355,7 @@ describe('WorkflowEventBus', () => {
355
355
  });
356
356
 
357
357
  it('absorbs handler exceptions so one bad subscriber does not break the fan-out', () => {
358
- const bus = new WorkflowEventBus();
358
+ const bus = new VersionControlEventBus();
359
359
  const exploder = makeSubscriber('s-bad', 'u-1', 'ws-a');
360
360
  exploder.push.mockImplementation(() => { throw new Error('boom'); });
361
361
  const healthy = makeSubscriber('s-good', 'u-2', 'ws-a');
@@ -369,7 +369,7 @@ describe('WorkflowEventBus', () => {
369
369
  });
370
370
 
371
371
  it('size() reflects active subscribers', () => {
372
- const bus = new WorkflowEventBus();
372
+ const bus = new VersionControlEventBus();
373
373
  expect(bus.size()).toBe(0);
374
374
  const off1 = bus.subscribe(makeSubscriber('s-1', 'u-1'));
375
375
  const off2 = bus.subscribe(makeSubscriber('s-2', 'u-2'));
@@ -383,7 +383,7 @@ describe('WorkflowEventBus', () => {
383
383
 
384
384
  describe('onEmit — the server-side tap', () => {
385
385
  it('sees every event, unfiltered by SSE scope, and unsubscribes cleanly', () => {
386
- const bus = new WorkflowEventBus();
386
+ const bus = new VersionControlEventBus();
387
387
  const seen: string[] = [];
388
388
  const off = bus.onEmit((e) => seen.push(e.kind));
389
389
  // A workspace-scoped event with NO matching SSE session still reaches
@@ -397,7 +397,7 @@ describe('WorkflowEventBus', () => {
397
397
  });
398
398
 
399
399
  it('a throwing listener is contained — emit never propagates it', () => {
400
- const bus = new WorkflowEventBus();
400
+ const bus = new VersionControlEventBus();
401
401
  const warn = vi.spyOn(console, 'warn').mockImplementation(() => {});
402
402
  bus.onEmit(() => {
403
403
  throw new Error('bad listener');
@@ -2,9 +2,9 @@ import type { Server as HttpServer } from 'node:http';
2
2
  import type { AddressInfo } from 'node:net';
3
3
  import express from 'express';
4
4
  import { afterEach, describe, expect, it } from 'vitest';
5
- import type { WorkflowEvent, WorkflowEventPayload } from '@bevel-software/platform-shared';
5
+ import type { VersionControlEvent, VersionControlEventPayload } from '@bevel-software/platform-shared';
6
6
  import {
7
- WorkflowEventBus,
7
+ VersionControlEventBus,
8
8
  createEventsRoutes,
9
9
  EventDelivery,
10
10
  createEventAccess,
@@ -80,7 +80,7 @@ afterEach(() => {
80
80
  for (const s of servers.splice(0)) s.close();
81
81
  });
82
82
 
83
- function listen(bus: WorkflowEventBus, access: EventAccess): string {
83
+ function listen(bus: VersionControlEventBus, access: EventAccess): string {
84
84
  const app = express();
85
85
  const auth: express.RequestHandler = (req, res, next) => {
86
86
  const user = USERS[String(req.headers['x-test-user'])];
@@ -99,9 +99,9 @@ function listen(bus: WorkflowEventBus, access: EventAccess): string {
99
99
  }
100
100
 
101
101
  interface Stream {
102
- events: WorkflowEvent[];
102
+ events: VersionControlEvent[];
103
103
  /** Resolves once an event matching `pred` has arrived. */
104
- until: (pred: (e: WorkflowEvent) => boolean) => Promise<void>;
104
+ until: (pred: (e: VersionControlEvent) => boolean) => Promise<void>;
105
105
  }
106
106
 
107
107
  async function open(base: string, user: string, sessionId: string, lastEventId?: number): Promise<Stream> {
@@ -112,8 +112,8 @@ async function open(base: string, user: string, sessionId: string, lastEventId?:
112
112
  signal: abort.signal,
113
113
  });
114
114
  expect(res.status).toBe(200);
115
- const events: WorkflowEvent[] = [];
116
- const waiters: Array<{ pred: (e: WorkflowEvent) => boolean; resolve: () => void }> = [];
115
+ const events: VersionControlEvent[] = [];
116
+ const waiters: Array<{ pred: (e: VersionControlEvent) => boolean; resolve: () => void }> = [];
117
117
  void (async () => {
118
118
  const decoder = new TextDecoder();
119
119
  let buf = '';
@@ -126,7 +126,7 @@ async function open(base: string, user: string, sessionId: string, lastEventId?:
126
126
  buf = buf.slice(end + 2);
127
127
  const data = frame.split('\n').find((l) => l.startsWith('data: '));
128
128
  if (!data) continue;
129
- const event = JSON.parse(data.slice('data: '.length)) as WorkflowEvent;
129
+ const event = JSON.parse(data.slice('data: '.length)) as VersionControlEvent;
130
130
  events.push(event);
131
131
  for (const w of [...waiters]) {
132
132
  if (w.pred(event)) {
@@ -156,7 +156,7 @@ async function focus(base: string, user: string, sessionId: string): Promise<voi
156
156
  expect(res.status).toBe(200);
157
157
  }
158
158
 
159
- const fileChanged = (path: string): WorkflowEventPayload => ({
159
+ const fileChanged = (path: string): VersionControlEventPayload => ({
160
160
  kind: 'file-changed',
161
161
  workspaceId: WS,
162
162
  branch: WS,
@@ -165,7 +165,7 @@ const fileChanged = (path: string): WorkflowEventPayload => ({
165
165
  byUserId: 'alice',
166
166
  byUserName: 'Alice',
167
167
  });
168
- const lockAcquired = (path: string): WorkflowEventPayload => ({
168
+ const lockAcquired = (path: string): VersionControlEventPayload => ({
169
169
  kind: 'lock-acquired',
170
170
  workspaceId: WS,
171
171
  branch: WS,
@@ -173,8 +173,8 @@ const lockAcquired = (path: string): WorkflowEventPayload => ({
173
173
  holderUserId: 'alice',
174
174
  holderName: 'Alice',
175
175
  });
176
- const lockReleased = (path: string): WorkflowEventPayload => ({ kind: 'lock-released', workspaceId: WS, branch: WS, path });
177
- const approval = (number: number, path: string): WorkflowEventPayload => ({
176
+ const lockReleased = (path: string): VersionControlEventPayload => ({ kind: 'lock-released', workspaceId: WS, branch: WS, path });
177
+ const approval = (number: number, path: string): VersionControlEventPayload => ({
178
178
  kind: 'approval-changed',
179
179
  number,
180
180
  path,
@@ -182,25 +182,25 @@ const approval = (number: number, path: string): WorkflowEventPayload => ({
182
182
  approverUserId: 'alice',
183
183
  change: 'added',
184
184
  });
185
- const opened = (number: number): WorkflowEventPayload => ({
185
+ const opened = (number: number): VersionControlEventPayload => ({
186
186
  kind: 'change-request-opened',
187
187
  number,
188
188
  source: 'alice/draft',
189
189
  target: 'main',
190
190
  authorIdHash: null,
191
191
  });
192
- const documentUnreadable = (path: string): WorkflowEventPayload => ({
192
+ const documentUnreadable = (path: string): VersionControlEventPayload => ({
193
193
  kind: 'document-unreadable',
194
194
  workspaceId: WS,
195
195
  path,
196
196
  reason: 'could not be parsed as a PDF (Invalid XRef stream header)',
197
197
  });
198
198
  /** Something everybody on the workspace may have; once it arrives, everything emitted before it was judged. */
199
- const SENTINEL: WorkflowEventPayload = { kind: 'fs-tree-changed', workspaceId: WS, branch: WS };
200
- const isSentinel = (e: WorkflowEvent) => e.kind === 'fs-tree-changed';
199
+ const SENTINEL: VersionControlEventPayload = { kind: 'fs-tree-changed', workspaceId: WS, branch: WS };
200
+ const isSentinel = (e: VersionControlEvent) => e.kind === 'fs-tree-changed';
201
201
 
202
202
  /** Emit `payloads`, then the sentinel, and wait for it on every stream. */
203
- async function emitAndSettle(bus: WorkflowEventBus, payloads: WorkflowEventPayload[], ...on: Stream[]) {
203
+ async function emitAndSettle(bus: VersionControlEventBus, payloads: VersionControlEventPayload[], ...on: Stream[]) {
204
204
  for (const p of payloads) bus.emit(p);
205
205
  const sentinel = bus.emit(SENTINEL);
206
206
  await Promise.all(on.map((s) => s.until((e) => e.id === sentinel.id)));
@@ -210,7 +210,7 @@ const kinds = (s: Stream) => s.events.filter((e) => !isSentinel(e)).map((e) => `
210
210
 
211
211
  describe('events route — delivery rule', () => {
212
212
  it('a write, a lock and an approval in a folder reach the reader of the folder, not the other person', async () => {
213
- const bus = new WorkflowEventBus();
213
+ const bus = new VersionControlEventBus();
214
214
  const base = listen(bus, fakeAccess());
215
215
  const alice = await open(base, 'alice', 's-alice');
216
216
  const bob = await open(base, 'bob', 's-bob');
@@ -237,7 +237,7 @@ describe('events route — delivery rule', () => {
237
237
  // The kind names a path on a workspace, so the structural rule judges it
238
238
  // as it judges a write: the same gate the file routes apply, and nothing
239
239
  // the rule has to be taught per kind.
240
- const bus = new WorkflowEventBus();
240
+ const bus = new VersionControlEventBus();
241
241
  const base = listen(bus, fakeAccess());
242
242
  const alice = await open(base, 'alice', 's-alice');
243
243
  const bob = await open(base, 'bob', 's-bob');
@@ -253,7 +253,7 @@ describe('events route — delivery rule', () => {
253
253
  });
254
254
 
255
255
  it('a person keeps every event for what they may read, unchanged and in order', async () => {
256
- const bus = new WorkflowEventBus();
256
+ const bus = new VersionControlEventBus();
257
257
  const base = listen(bus, fakeAccess());
258
258
  const bob = await open(base, 'bob', 's-bob');
259
259
  await focus(base, 'bob', 's-bob');
@@ -265,7 +265,7 @@ describe('events route — delivery rule', () => {
265
265
  });
266
266
 
267
267
  it('a request the person may not see produces no change-request-opened for them; its author always hears of it', async () => {
268
- const bus = new WorkflowEventBus();
268
+ const bus = new VersionControlEventBus();
269
269
  const base = listen(bus, fakeAccess());
270
270
  const alice = await open(base, 'alice', 's-alice');
271
271
  const bob = await open(base, 'bob', 's-bob');
@@ -289,7 +289,7 @@ describe('events route — delivery rule', () => {
289
289
  });
290
290
 
291
291
  it('replay after a reconnect obeys the same rule', async () => {
292
- const bus = new WorkflowEventBus();
292
+ const bus = new VersionControlEventBus();
293
293
  const base = listen(bus, fakeAccess());
294
294
  const before = bus.emit(SENTINEL);
295
295
  bus.emit(opened(FINANCE_REQUEST));
@@ -312,19 +312,19 @@ describe('events route — delivery rule', () => {
312
312
  });
313
313
 
314
314
  it('the focus list still decides which workspaces a session hears about', async () => {
315
- const bus = new WorkflowEventBus();
315
+ const bus = new VersionControlEventBus();
316
316
  const base = listen(bus, fakeAccess());
317
317
  const alice = await open(base, 'alice', 's-alice');
318
318
  await focus(base, 'alice', 's-alice');
319
319
 
320
- bus.emit({ ...fileChanged(PUBLIC), workspaceId: 'elsewhere' } as WorkflowEventPayload);
320
+ bus.emit({ ...fileChanged(PUBLIC), workspaceId: 'elsewhere' } as VersionControlEventPayload);
321
321
  await emitAndSettle(bus, [], alice);
322
322
 
323
323
  expect(kinds(alice)).toEqual([]);
324
324
  });
325
325
 
326
326
  it('a grant shows on the next event, without a reconnect', async () => {
327
- const bus = new WorkflowEventBus();
327
+ const bus = new VersionControlEventBus();
328
328
  const access = fakeAccess();
329
329
  const base = listen(bus, access);
330
330
  const bob = await open(base, 'bob', 's-bob');
@@ -338,7 +338,7 @@ describe('events route — delivery rule', () => {
338
338
  });
339
339
 
340
340
  it('replay after a reconnect asks again: a revocation since the event was first delivered withholds it', async () => {
341
- const bus = new WorkflowEventBus();
341
+ const bus = new VersionControlEventBus();
342
342
  const access = fakeAccess();
343
343
  access.grantBob();
344
344
  const base = listen(bus, access);
@@ -367,7 +367,7 @@ describe('events route — delivery rule', () => {
367
367
  });
368
368
 
369
369
  it("keeps a session's stream in emission order when a later verdict settles first, live and on replay", async () => {
370
- const bus = new WorkflowEventBus();
370
+ const bus = new VersionControlEventBus();
371
371
  const base0 = fakeAccess();
372
372
  // The verdict on the Finance file takes a while; every other one is immediate.
373
373
  const access: EventAccess = {
@@ -401,7 +401,7 @@ describe('events route — delivery rule', () => {
401
401
  });
402
402
 
403
403
  it('a request check that fails withholds that approval and that announcement, and nothing after them', async () => {
404
- const bus = new WorkflowEventBus();
404
+ const bus = new VersionControlEventBus();
405
405
  const unreadable = () => Promise.reject(new Error('access tree unreadable'));
406
406
  const access: EventAccess = { ...fakeAccess(), readableAtTarget: unreadable, readableAtBase: unreadable };
407
407
  const base = listen(bus, access);
@@ -416,7 +416,7 @@ describe('events route — delivery rule', () => {
416
416
 
417
417
  it('a lock whose path lacks the knowledge-base/ prefix is judged as the repository path it names', async () => {
418
418
  // The real access wiring over a fake access service: Bob may not read `Finance/`.
419
- const bus = new WorkflowEventBus();
419
+ const bus = new VersionControlEventBus();
420
420
  const access = createEventAccess({
421
421
  accessControl: {
422
422
  canRead: async (_ws, email, rel) => email !== USERS.bob!.email || !rel.startsWith('Finance/'),
@@ -452,7 +452,7 @@ describe('events route — delivery rule', () => {
452
452
  });
453
453
 
454
454
  it("an agent's tool call reaches its own person through the route, nobody else — an admin included", async () => {
455
- const bus = new WorkflowEventBus();
455
+ const bus = new VersionControlEventBus();
456
456
  const base = listen(bus, fakeAccess());
457
457
  const alice = await open(base, 'alice', 's-alice');
458
458
  const bob = await open(base, 'bob', 's-bob');
@@ -474,7 +474,7 @@ describe('events route — delivery rule', () => {
474
474
  });
475
475
 
476
476
  it('fans one event out to 100 sessions through the route, each getting what it may read', async () => {
477
- const bus = new WorkflowEventBus();
477
+ const bus = new VersionControlEventBus();
478
478
  const base = listen(bus, fakeAccess());
479
479
  const sessions = await Promise.all(
480
480
  Array.from({ length: 100 }, async (_, i) => {
@@ -502,7 +502,7 @@ describe('events route — delivery rule', () => {
502
502
  });
503
503
 
504
504
  it("git-sync-failed carries git's words only to who may read the root and every conflicted file", async () => {
505
- const bus = new WorkflowEventBus();
505
+ const bus = new VersionControlEventBus();
506
506
  const base = listen(bus, fakeAccess());
507
507
  const people = ['alice', 'bob', 'carol'] as const;
508
508
  const [alice, bob, carol] = await Promise.all(people.map((u) => open(base, u, `s-${u}`)));
@@ -532,7 +532,7 @@ describe('events route — delivery rule', () => {
532
532
  });
533
533
 
534
534
  it('git-sync-failed with no conflict keeps its sentence for a root reader and redacts it for the rest', async () => {
535
- const bus = new WorkflowEventBus();
535
+ const bus = new VersionControlEventBus();
536
536
  const base = listen(bus, fakeAccess());
537
537
  const carol = await open(base, 'carol', 's-carol');
538
538
  const bob = await open(base, 'bob', 's-bob');
@@ -549,8 +549,8 @@ describe('events route — delivery rule', () => {
549
549
  });
550
550
 
551
551
  describe('EventDelivery', () => {
552
- const judge = (event: WorkflowEvent, viewer: EventViewer, access: EventAccess) => new EventDelivery(access).judge(event, viewer);
553
- const stamp = (p: WorkflowEventPayload, id = 1): WorkflowEvent => ({ id, ts: '2026-10-19T00:00:00.000Z', ...p }) as WorkflowEvent;
552
+ const judge = (event: VersionControlEvent, viewer: EventViewer, access: EventAccess) => new EventDelivery(access).judge(event, viewer);
553
+ const stamp = (p: VersionControlEventPayload, id = 1): VersionControlEvent => ({ id, ts: '2026-10-19T00:00:00.000Z', ...p }) as VersionControlEvent;
554
554
  const toolCall = stamp({ kind: 'agent-tool-call', forUserId: 'alice', threadId: 't', tool: 'write_file', summary: `writing ${FINANCE}` });
555
555
 
556
556
  it('agent-tool-call reaches the person whose agent made the call, nobody else', async () => {
@@ -736,7 +736,7 @@ describe('createEventAccess', () => {
736
736
  it("reads a request once for one event's whole fan-out, and again for the next", async () => {
737
737
  requestReads.length = 0;
738
738
  const delivery = new EventDelivery(access);
739
- const event = { id: 1, ts: '2026-10-21T00:00:00.000Z', ...opened(FINANCE_REQUEST) } as WorkflowEvent;
739
+ const event = { id: 1, ts: '2026-10-21T00:00:00.000Z', ...opened(FINANCE_REQUEST) } as VersionControlEvent;
740
740
  const viewers = Array.from({ length: 100 }, (_, i) => ({ userId: `u${i}`, email: `u${i}@example.com` }));
741
741
  // Nobody here reads `Finance/` and nobody wrote #7: hidden from all of them.
742
742
  expect((await Promise.all(viewers.map((v) => delivery.judge(event, v)))).filter(Boolean)).toHaveLength(0);
@@ -764,7 +764,7 @@ describe('createEventAccess', () => {
764
764
  });
765
765
  const delivery = new EventDelivery(moved);
766
766
  const bob = { userId: 'bob', email: USERS.bob!.email };
767
- const stampOpened = (n: number) => ({ id: n, ts: '2026-10-21T00:00:00.000Z', ...opened(n) }) as WorkflowEvent;
767
+ const stampOpened = (n: number) => ({ id: n, ts: '2026-10-21T00:00:00.000Z', ...opened(n) }) as VersionControlEvent;
768
768
  expect(await delivery.judge(stampOpened(1), bob)).toBeNull();
769
769
  expect(await delivery.judge(stampOpened(2), bob)).toBeNull();
770
770
  // The control: the same file, not moved, is readable at the base and shows the request.
@@ -2,7 +2,7 @@ import { describe, it, expect, beforeEach } from 'vitest';
2
2
  import type { AuthUser } from '@bevel-software/platform-shared';
3
3
  import type { Database } from '../../database/connection.js';
4
4
  import { FileLockService } from '../file-lock.service.js';
5
- import { WorkflowValidationError } from '../../../shared/domain-errors.js';
5
+ import { VersionControlValidationError } from '../../../shared/domain-errors.js';
6
6
  import { makeFakeLockDb, type FakeLockDb } from './fake-file-lock-db.js';
7
7
 
8
8
  /**
@@ -82,7 +82,7 @@ describe('FileLockService deletion gate', () => {
82
82
  await locks.whileNoneAcquired(BRANCH, async () => {
83
83
  refused = await locks.acquire(WS, BRANCH, PATH, ALICE).catch((err: unknown) => err);
84
84
  });
85
- expect(refused).toBeInstanceOf(WorkflowValidationError);
85
+ expect(refused).toBeInstanceOf(VersionControlValidationError);
86
86
  expect(fake.rows()).toHaveLength(0);
87
87
  // And grants it again once the deletion is over.
88
88
  await expect(locks.acquire(WS, BRANCH, PATH, ALICE)).resolves.toMatchObject({ acquired: true });
@@ -1,7 +1,7 @@
1
1
  import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
2
  import type { AuthUser } from '@bevel-software/platform-shared';
3
3
  import { FileLockService } from '../file-lock.service.js';
4
- import { PathTraversalError, WorkflowValidationError } from '../../../shared/domain-errors.js';
4
+ import { PathTraversalError, VersionControlValidationError } from '../../../shared/domain-errors.js';
5
5
  import { makeFakeLockDb, type FakeLockDb, type LockRow } from './fake-file-lock-db.js';
6
6
 
7
7
  /**
@@ -127,12 +127,12 @@ describe('FileLockService coordinates on one canonical path', () => {
127
127
  */
128
128
  describe('refuses a path the file verbs would refuse', () => {
129
129
  const REFUSED: [string, string, new () => Error][] = [
130
- ['climbs out of the workspace', '../etc/passwd', WorkflowValidationError],
131
- ['climbs out from inside', 'knowledge-base/../../etc/passwd', WorkflowValidationError],
132
- ['launders back inside', 'knowledge-base/x/../y.md', WorkflowValidationError],
133
- ['is a bare parent', '..', WorkflowValidationError],
134
- ['is the current directory', '.', WorkflowValidationError],
135
- ['uses backslashes', 'knowledge-base\\x\\a.md', WorkflowValidationError],
130
+ ['climbs out of the workspace', '../etc/passwd', VersionControlValidationError],
131
+ ['climbs out from inside', 'knowledge-base/../../etc/passwd', VersionControlValidationError],
132
+ ['launders back inside', 'knowledge-base/x/../y.md', VersionControlValidationError],
133
+ ['is a bare parent', '..', VersionControlValidationError],
134
+ ['is the current directory', '.', VersionControlValidationError],
135
+ ['uses backslashes', 'knowledge-base\\x\\a.md', VersionControlValidationError],
136
136
  ['is absolute', '/etc/passwd', PathTraversalError],
137
137
  ];
138
138
 
@@ -209,7 +209,7 @@ describe('FileLockService coordinates on one canonical path', () => {
209
209
 
210
210
  it('is not migrated or extended: its holder cannot heartbeat it by its old name', async () => {
211
211
  await expect(locks.heartbeat(WS, BRANCH, RAW, ALICE)).rejects.toBeInstanceOf(
212
- WorkflowValidationError,
212
+ VersionControlValidationError,
213
213
  );
214
214
 
215
215
  // Not rewritten to the canonical key, and the TTL is its own.
@@ -1,17 +1,17 @@
1
1
  import { describe, it, expect, vi } from 'vitest';
2
2
  import { testKbContext } from '../../../__tests__/kb-context.js';
3
- import type { WorkflowEvent } from '@bevel-software/platform-shared';
3
+ import type { VersionControlEvent } from '@bevel-software/platform-shared';
4
4
 
5
5
  import type { GitService } from '../git/git.service.js';
6
6
  import type { PullRequestService } from '../git/pull-request.service.js';
7
- import type { IReviewWorkflowService } from '../review-workflow/review-workflow.interface.js';
7
+ import type { IChangeRequestReviewService } from '../change-request-review/change-request-review.interface.js';
8
8
  import type { WorkspaceService } from '../../workspace/workspace.service.js';
9
9
  import type { IAccessControl } from '../../access/access-control.interface.js';
10
10
  import type { FileLockService } from '../file-lock.service.js';
11
11
  import type { PendingCommitsService } from '../pending-commits.service.js';
12
- import type { WorkflowEventBus } from '../event-bus.js';
12
+ import type { VersionControlEventBus } from '../event-bus.js';
13
13
  import type { Database } from '../../database/connection.js';
14
- import { WorkflowService } from '../workflow.service.js';
14
+ import { VersionControlService } from '../version-control.service.js';
15
15
  import { openChangeGate } from '../../../__tests__/open-change-gate.js';
16
16
 
17
17
  /**
@@ -62,19 +62,19 @@ function makeSvc(
62
62
  opts: { base?: string; pullTreeChanged?: boolean; mergeThrows?: Error; pullThrows?: Error } = {},
63
63
  ) {
64
64
  const base = opts.base ?? TRUNK;
65
- const events: WorkflowEvent[] = [];
65
+ const events: VersionControlEvent[] = [];
66
66
  const bus = {
67
- emit: vi.fn((payload: WorkflowEvent) => {
67
+ emit: vi.fn((payload: VersionControlEvent) => {
68
68
  events.push(payload);
69
69
  return payload;
70
70
  }),
71
- } as unknown as WorkflowEventBus;
71
+ } as unknown as VersionControlEventBus;
72
72
 
73
- const reviewWorkflow = {
73
+ const changeRequestReview = {
74
74
  mergePr: opts.mergeThrows
75
75
  ? vi.fn().mockRejectedValue(opts.mergeThrows)
76
76
  : vi.fn().mockResolvedValue({ prNumber: 1, sha: 'merged-sha', mergedAt: 't' }),
77
- } as unknown as IReviewWorkflowService;
77
+ } as unknown as IChangeRequestReviewService;
78
78
 
79
79
  const git = {
80
80
  fetch: vi.fn().mockResolvedValue(undefined),
@@ -99,11 +99,11 @@ function makeSvc(
99
99
  getWorkspacePath: vi.fn(async (id: string) => `/tmp/${id}`),
100
100
  } as unknown as WorkspaceService;
101
101
 
102
- const svc = new WorkflowService(
102
+ const svc = new VersionControlService(
103
103
  {} as unknown as Database,
104
104
  git,
105
105
  prs,
106
- reviewWorkflow,
106
+ changeRequestReview,
107
107
  workspaceService,
108
108
  noopAccessControl(),
109
109
  { acquire: vi.fn(), release: vi.fn() } as unknown as FileLockService,