@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,7 +1,7 @@
1
1
  /**
2
- * In-process event bus that fans workflow state-change events out to
2
+ * In-process event bus that fans version-control state-change events out to
3
3
  * subscribed SSE sessions. The shape and scope rules live in
4
- * `@bevel-software/platform-shared/workflow/events.ts` — this module is the runtime that
4
+ * `@bevel-software/platform-shared/version-control/events.ts` — this module is the runtime that
5
5
  * makes them deliverable.
6
6
  *
7
7
  * **What this owns**
@@ -39,8 +39,8 @@
39
39
  import {
40
40
  isUserScoped,
41
41
  isWorkspaceScoped,
42
- type WorkflowEvent,
43
- type WorkflowEventPayload,
42
+ type VersionControlEvent,
43
+ type VersionControlEventPayload,
44
44
  } from '@bevel-software/platform-shared';
45
45
  import { logger } from '../../shared/logging.js';
46
46
 
@@ -60,7 +60,7 @@ const BUFFER_CAPACITY = 500;
60
60
  * stamped envelope + payload and SHOULD NOT throw — exceptions are caught
61
61
  * and logged so one misbehaving subscriber never blocks fan-out to the rest.
62
62
  */
63
- export type SubscriberPush = (event: WorkflowEvent) => void;
63
+ export type SubscriberPush = (event: VersionControlEvent) => void;
64
64
 
65
65
  /**
66
66
  * Per-session subscription bookkeeping. `getFocusedWorkspaceIds` is a getter
@@ -96,11 +96,11 @@ function canonicalize(workspaceId: string): string {
96
96
  }
97
97
  }
98
98
 
99
- export class WorkflowEventBus {
99
+ export class VersionControlEventBus {
100
100
  private nextId = 1;
101
- private readonly buffer: WorkflowEvent[] = [];
101
+ private readonly buffer: VersionControlEvent[] = [];
102
102
  private readonly subscribers = new Map<string, Subscriber>();
103
- private readonly emitListeners = new Set<(event: WorkflowEvent) => void>();
103
+ private readonly emitListeners = new Set<(event: VersionControlEvent) => void>();
104
104
 
105
105
  /**
106
106
  * Server-side tap: called for EVERY emitted event, before the per-session
@@ -111,7 +111,7 @@ export class WorkflowEventBus {
111
111
  * Best-effort like SSE dispatch: a throwing listener is logged, never
112
112
  * propagated to the emitter. Returns the unsubscribe.
113
113
  */
114
- onEmit(listener: (event: WorkflowEvent) => void): () => void {
114
+ onEmit(listener: (event: VersionControlEvent) => void): () => void {
115
115
  this.emitListeners.add(listener);
116
116
  return () => this.emitListeners.delete(listener);
117
117
  }
@@ -122,8 +122,8 @@ export class WorkflowEventBus {
122
122
  * event so callers (e.g. tests, debug logs) can see what was actually
123
123
  * delivered.
124
124
  */
125
- emit(payload: WorkflowEventPayload): WorkflowEvent {
126
- const event: WorkflowEvent = {
125
+ emit(payload: VersionControlEventPayload): VersionControlEvent {
126
+ const event: VersionControlEvent = {
127
127
  id: this.nextId++,
128
128
  ts: new Date().toISOString(),
129
129
  ...payload,
@@ -165,7 +165,7 @@ export class WorkflowEventBus {
165
165
  // try/catch covers both the scope check (`matches` reaches into
166
166
  // `sub.getFocusedWorkspaceIds()`, which could throw if a bizarre
167
167
  // subscriber holds buggy state) and the dispatch itself, so
168
- // workflow mutations stay successful even if a listener throws.
168
+ // version-control mutations stay successful even if a listener throws.
169
169
  // Callers can rely on `emit` never throwing, so they don't need
170
170
  // to wrap every emit call site in their own try/catch.
171
171
  try {
@@ -220,7 +220,7 @@ export class WorkflowEventBus {
220
220
  * is greater than `lastSeenId + 1` (i.e. we evicted events the client
221
221
  * needs to see).
222
222
  */
223
- replayAfter(lastSeenId: number, sub: Pick<Subscriber, 'userId' | 'getFocusedWorkspaceIds'>): WorkflowEvent[] | null {
223
+ replayAfter(lastSeenId: number, sub: Pick<Subscriber, 'userId' | 'getFocusedWorkspaceIds'>): VersionControlEvent[] | null {
224
224
  // Empty buffer: a client that never saw anything (lastSeenId === 0) has
225
225
  // nothing to replay and the empty array is correct. A client that DID
226
226
  // see events (lastSeenId > 0) but reached an empty buffer means the
@@ -262,7 +262,7 @@ export class WorkflowEventBus {
262
262
  * that hasn't yet POSTed its focus gets no workspace events (correct —
263
263
  * we don't know what it cares about).
264
264
  */
265
- private matches(event: WorkflowEvent, sub: Pick<Subscriber, 'userId' | 'getFocusedWorkspaceIds'>): boolean {
265
+ private matches(event: VersionControlEvent, sub: Pick<Subscriber, 'userId' | 'getFocusedWorkspaceIds'>): boolean {
266
266
  if (isWorkspaceScoped(event)) {
267
267
  const watched = sub.getFocusedWorkspaceIds();
268
268
  if (watched.length === 0) return false;
@@ -49,7 +49,7 @@
49
49
  * Nothing here changes what publishers emit; the rule only reads the event.
50
50
  */
51
51
 
52
- import type { ChangeRequest, WorkflowEvent } from '@bevel-software/platform-shared';
52
+ import type { ChangeRequest, VersionControlEvent } from '@bevel-software/platform-shared';
53
53
  import { logger } from '../../shared/logging.js';
54
54
  import { workspaceIdForBranch } from '../../shared/workspace-id.js';
55
55
  import type { IAccessControl } from '../access/index.js';
@@ -100,14 +100,14 @@ export type ChangeRequestFacts = Pick<ChangeRequest, 'base' | 'authorId' | 'touc
100
100
  */
101
101
  export interface IEventDelivery {
102
102
  /** The event as `viewer` may receive it: itself, a redacted copy, or null. Never rejects. */
103
- judge(event: WorkflowEvent, viewer: EventViewer): Promise<WorkflowEvent | null>;
103
+ judge(event: VersionControlEvent, viewer: EventViewer): Promise<VersionControlEvent | null>;
104
104
  }
105
105
 
106
106
  /** The deployment's `EventAccess`: the access service the file routes use, read in the server's own checkouts. */
107
107
  export function createEventAccess(deps: {
108
108
  accessControl: Pick<IAccessControl, 'canRead' | 'canReadBatch' | 'canReadBatchAtRef'>;
109
109
  kbDirName: string;
110
- /** `IWorkflowService.getChangeRequest`: the summary the request list judges, files included. */
110
+ /** `IVersionControlService.getChangeRequest`: the summary the request list judges, files included. */
111
111
  getChangeRequest(number: number): Promise<ChangeRequestFacts | null>;
112
112
  workspaces: {
113
113
  /** Whether the server holds a checkout for `workspaceId` (the branch's own workspace). */
@@ -172,10 +172,10 @@ export function createEventAccess(deps: {
172
172
  * null for nothing at all.
173
173
  */
174
174
  async function deliveryFor(
175
- event: WorkflowEvent,
175
+ event: VersionControlEvent,
176
176
  viewer: EventViewer,
177
177
  access: EventAccess,
178
- ): Promise<WorkflowEvent | null> {
178
+ ): Promise<VersionControlEvent | null> {
179
179
  const email = viewer.email;
180
180
  try {
181
181
  switch (event.kind) {
@@ -217,7 +217,7 @@ async function maySeeRequest(number: number, email: string, access: EventAccess)
217
217
  return maySeeChangeRequest({ readableFiles, isAuthor: false });
218
218
  }
219
219
 
220
- type GitSyncFailed = Extract<WorkflowEvent, { kind: 'git-sync-failed' }>;
220
+ type GitSyncFailed = Extract<VersionControlEvent, { kind: 'git-sync-failed' }>;
221
221
 
222
222
  /**
223
223
  * Every path the event names is judged: the root, which git's words are about,
@@ -225,7 +225,7 @@ type GitSyncFailed = Extract<WorkflowEvent, { kind: 'git-sync-failed' }>;
225
225
  * words go out only when every one of them is readable; otherwise the person
226
226
  * keeps the conflicted files they may read and a fixed sentence.
227
227
  */
228
- async function gitSyncFailedFor(event: GitSyncFailed, email: string, access: EventAccess): Promise<WorkflowEvent> {
228
+ async function gitSyncFailedFor(event: GitSyncFailed, email: string, access: EventAccess): Promise<VersionControlEvent> {
229
229
  const conflicted = event.conflictedPaths ?? [];
230
230
  const [root, ...each] = await Promise.all([
231
231
  access.mayReadRepoPath(event.workspaceId, email, ''),
@@ -235,7 +235,7 @@ async function gitSyncFailedFor(event: GitSyncFailed, email: string, access: Eve
235
235
  return root && readable.length === conflicted.length ? event : redactGitSyncFailed(event, readable);
236
236
  }
237
237
 
238
- function pathOnWorkspace(event: WorkflowEvent): { workspaceId: string; path: string } | null {
238
+ function pathOnWorkspace(event: VersionControlEvent): { workspaceId: string; path: string } | null {
239
239
  const e = event as { workspaceId?: unknown; path?: unknown };
240
240
  return typeof e.workspaceId === 'string' && typeof e.path === 'string'
241
241
  ? { workspaceId: e.workspaceId, path: e.path }
@@ -246,7 +246,7 @@ function pathOnWorkspace(event: WorkflowEvent): { workspaceId: string; path: str
246
246
  * Same shape, so a client parses it as before: git's words are gone, and of
247
247
  * the conflicted files only `readable` remain (none, the key absent).
248
248
  */
249
- function redactGitSyncFailed(event: GitSyncFailed, readable: string[]): WorkflowEvent {
249
+ function redactGitSyncFailed(event: GitSyncFailed, readable: string[]): VersionControlEvent {
250
250
  const redacted: GitSyncFailed = { ...event, reason: GIT_SYNC_FAILED_REDACTED_REASON };
251
251
  if (readable.length > 0) redacted.conflictedPaths = readable;
252
252
  else delete redacted.conflictedPaths;
@@ -261,11 +261,11 @@ function redactGitSyncFailed(event: GitSyncFailed, readable: string[]): Workflow
261
261
  * delivered decides what the replay carries.
262
262
  */
263
263
  export class EventDelivery implements IEventDelivery {
264
- private readonly inFlight = new Map<string, Promise<WorkflowEvent | null>>();
264
+ private readonly inFlight = new Map<string, Promise<VersionControlEvent | null>>();
265
265
 
266
266
  constructor(private readonly access: EventAccess) {}
267
267
 
268
- judge(event: WorkflowEvent, viewer: EventViewer): Promise<WorkflowEvent | null> {
268
+ judge(event: VersionControlEvent, viewer: EventViewer): Promise<VersionControlEvent | null> {
269
269
  const key = `${event.id}\u0000${event.ts}\u0000${viewer.userId}`;
270
270
  const pending = this.inFlight.get(key);
271
271
  if (pending) return pending;
@@ -44,8 +44,8 @@ import { logger } from '../../shared/logging.js';
44
44
 
45
45
  const log = logger('events');
46
46
  import express from 'express';
47
- import { type WorkflowEvent } from '@bevel-software/platform-shared';
48
- import type { WorkflowEventBus } from './event-bus.js';
47
+ import { type VersionControlEvent } from '@bevel-software/platform-shared';
48
+ import type { VersionControlEventBus } from './event-bus.js';
49
49
  import type { IEventDelivery } from './events-delivery.js';
50
50
  import '../auth/index.js'; // Express Request augmentation
51
51
 
@@ -104,7 +104,7 @@ interface ActiveSession {
104
104
  }
105
105
 
106
106
  export function createEventsRoutes(
107
- bus: WorkflowEventBus,
107
+ bus: VersionControlEventBus,
108
108
  authMiddleware: express.RequestHandler,
109
109
  delivery: IEventDelivery,
110
110
  ): express.Router {
@@ -178,7 +178,7 @@ export function createEventsRoutes(
178
178
 
179
179
  // Every event this session hears goes through the delivery rule, in the
180
180
  // order it arrived: the verdict is async, the stream must not reorder.
181
- const push = (event: WorkflowEvent): void => {
181
+ const push = (event: VersionControlEvent): void => {
182
182
  if (session.closed) return;
183
183
  const verdict = delivery.judge(event, viewer);
184
184
  session.queue = session.queue.then(async () => {
@@ -312,7 +312,7 @@ export function createEventsRoutes(
312
312
  * Data is a single line of JSON — never embedded newlines, which would
313
313
  * break the SSE parser. JSON.stringify guarantees that.
314
314
  */
315
- function writeSseEvent(res: Response, event: WorkflowEvent): void {
315
+ function writeSseEvent(res: Response, event: VersionControlEvent): void {
316
316
  res.write(`id: ${event.id}\n`);
317
317
  res.write(`data: ${JSON.stringify(event)}\n\n`);
318
318
  }
@@ -42,7 +42,7 @@
42
42
  * writing: a previous-version process never looks at a canonical row, so no
43
43
  * check here could make the two contend while both run. They never do — one
44
44
  * server process owns the workspaces directory (see `branchLifecycle` in the
45
- * workflow service; this service's deletion gate is in-process for the same
45
+ * version-control service; this service's deletion gate is in-process for the same
46
46
  * reason), and an upgrade stops the old process before the new one starts.
47
47
  *
48
48
  * There is no transition handling for rows written under a raw spelling
@@ -61,7 +61,7 @@ import { and, eq, gt, inArray, lte } from 'drizzle-orm';
61
61
  import type { Database } from '../database/index.js';
62
62
  import { fileLocks } from '../database/index.js';
63
63
  import type { AcquireLockResult, AuthUser, FileLock } from '@bevel-software/platform-shared';
64
- import { WorkflowValidationError } from '../../shared/domain-errors.js';
64
+ import { VersionControlValidationError } from '../../shared/domain-errors.js';
65
65
  import { canonicalFileIdentity } from '../../shared/canonical-file-identity.js';
66
66
  import { branchForWorkspaceId, canonicalWorkspaceId } from '../../shared/workspace-id.js';
67
67
 
@@ -152,7 +152,7 @@ export class FileLockService {
152
152
  *
153
153
  * `opts.coordination` stamps the row's `mode` as `'coordination'` — a
154
154
  * pure-mutex hold that grants no write authority (see
155
- * `IWorkflowService.acquireLock`). The mode is persisted so the workflow
155
+ * `IVersionControlService.acquireLock`). The mode is persisted so the version-control
156
156
  * service's write paths can refuse to treat the hold as write possession
157
157
  * for the row's whole lifetime; a takeover of an expired row re-stamps the
158
158
  * mode, so a stale coordination row can't launder a later edit acquire
@@ -168,7 +168,7 @@ export class FileLockService {
168
168
  const targetPath = canonicalFileIdentity(rawPath);
169
169
  const workspaceId = canonicalWorkspaceId(rawWorkspaceId);
170
170
  if (this.closing.has(branch)) {
171
- throw new WorkflowValidationError(`"${branch}" is being deleted, so "${targetPath}" cannot be held for editing.`, {
171
+ throw new VersionControlValidationError(`"${branch}" is being deleted, so "${targetPath}" cannot be held for editing.`, {
172
172
  kind: 'branch-being-deleted',
173
173
  branch,
174
174
  path: targetPath,
@@ -294,7 +294,7 @@ export class FileLockService {
294
294
  )
295
295
  .limit(1);
296
296
  if (!holder) {
297
- throw new WorkflowValidationError(
297
+ throw new VersionControlValidationError(
298
298
  `Lock contention race on "${targetPath}" — please retry.`,
299
299
  { kind: 'lock-contention-race', branch, path: targetPath },
300
300
  );
@@ -343,7 +343,7 @@ export class FileLockService {
343
343
  )
344
344
  .returning();
345
345
  if (!updated) {
346
- throw new WorkflowValidationError(
346
+ throw new VersionControlValidationError(
347
347
  `Cannot heartbeat lock on "${targetPath}": not held by you (or no longer exists).`,
348
348
  { kind: 'lock-not-held', branch, path: targetPath },
349
349
  );
@@ -1,7 +1,7 @@
1
1
  import { execFile } from 'node:child_process';
2
2
  import { promisify } from 'node:util';
3
3
  import type { WorkspaceService } from '../../../workspace/workspace.service.js';
4
- import { WorkflowHooks } from '../../workflow-hooks.js';
4
+ import { VersionControlHooks } from '../../version-control-hooks.js';
5
5
 
6
6
  /**
7
7
  * Helpers shared by the GitService integration suites that drive a real git
@@ -31,8 +31,8 @@ export async function gitOut(cwd: string, args: string[]): Promise<string> {
31
31
  }
32
32
 
33
33
  /** An empty hooks registry — no commit-time validation, so pulls/merges never block. */
34
- export function stubWorkflowHooks(): WorkflowHooks {
35
- return new WorkflowHooks();
34
+ export function stubVersionControlHooks(): VersionControlHooks {
35
+ return new VersionControlHooks();
36
36
  }
37
37
 
38
38
  /** Resolves each workspace id to its directory, like the real service does. */
@@ -7,7 +7,7 @@ import path from 'node:path';
7
7
  import os from 'node:os';
8
8
 
9
9
  import type { WorkspaceService } from '../../../workspace/workspace.service.js';
10
- import { WorkflowHooks } from '../../workflow-hooks.js';
10
+ import { VersionControlHooks } from '../../version-control-hooks.js';
11
11
  import type { IAccessControl } from '../../../access/access-control.interface.js';
12
12
  import { GitService } from '../git.service.js';
13
13
  import { AccessDeniedError } from '../../../access-model/access-errors.js';
@@ -140,7 +140,7 @@ async function makeSvc(
140
140
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
141
141
  const svc = new GitService(
142
142
  stubWorkspaceService(workspaceId, workspaceDir),
143
- new WorkflowHooks(),
143
+ new VersionControlHooks(),
144
144
  testKbContext(),
145
145
  undefined,
146
146
  ac ?? null,
@@ -262,7 +262,7 @@ describe('GitService — push gate uses origin/<branch> (not HEAD or working tre
262
262
  const { ac, calls } = recordingAccessControl();
263
263
  const svc = new GitService(
264
264
  stubWorkspaceService(workspaceId, workspaceDir),
265
- new WorkflowHooks(),
265
+ new VersionControlHooks(),
266
266
  testKbContext(),
267
267
  undefined,
268
268
  ac,
@@ -306,7 +306,7 @@ describe('GitService — push gate uses origin/<branch> (not HEAD or working tre
306
306
  });
307
307
  const svc = new GitService(
308
308
  stubWorkspaceService(workspaceId, workspaceDir),
309
- new WorkflowHooks(),
309
+ new VersionControlHooks(),
310
310
  testKbContext(),
311
311
  undefined,
312
312
  ac,
@@ -337,7 +337,7 @@ describe('GitService — push gate uses origin/<branch> (not HEAD or working tre
337
337
  });
338
338
  const svc = new GitService(
339
339
  stubWorkspaceService(workspaceId, workspaceDir),
340
- new WorkflowHooks(),
340
+ new VersionControlHooks(),
341
341
  testKbContext(),
342
342
  undefined,
343
343
  ac,
@@ -3,9 +3,9 @@ import fs from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import os from 'node:os';
5
5
  import { testKbContext } from '../../../../__tests__/kb-context.js';
6
- import { WorkflowHooks } from '../../workflow-hooks.js';
6
+ import { VersionControlHooks } from '../../version-control-hooks.js';
7
7
  import { GitService } from '../git.service.js';
8
- import { WorkflowValidationError } from '../../../../shared/domain-errors.js';
8
+ import { VersionControlValidationError } from '../../../../shared/domain-errors.js';
9
9
  import { mergeCommitSubject } from '../merge-commit.js';
10
10
  import { runGit, gitOut, stubWorkspaceService } from './git-test-helpers.js';
11
11
 
@@ -78,7 +78,7 @@ describe('GitService reading an applied change from its merge commit', () => {
78
78
 
79
79
  git = new GitService(
80
80
  stubWorkspaceService({ [workspaceId]: path.dirname(repo) }),
81
- new WorkflowHooks(),
81
+ new VersionControlHooks(),
82
82
  testKbContext(),
83
83
  );
84
84
  return { mergeSha, targetBefore, sourceTip };
@@ -234,7 +234,7 @@ describe('GitService reading an applied change from its merge commit', () => {
234
234
  () => git.changedPathsAndPairsOfAppliedChange(workspaceId, ref(absent)),
235
235
  () => git.appliedChangeShas(workspaceId, ref(absent)),
236
236
  ]) {
237
- await expect(call()).rejects.toThrow(WorkflowValidationError);
237
+ await expect(call()).rejects.toThrow(VersionControlValidationError);
238
238
  }
239
239
  });
240
240
 
@@ -6,7 +6,7 @@ import fs from 'node:fs/promises';
6
6
  import path from 'node:path';
7
7
  import os from 'node:os';
8
8
  import type { WorkspaceService } from '../../../workspace/workspace.service.js';
9
- import { WorkflowHooks } from '../../workflow-hooks.js';
9
+ import { VersionControlHooks } from '../../version-control-hooks.js';
10
10
  import { GitService, parseNameStatusZ, parseNumstatZ, withoutPlaceholderRename } from '../git.service.js';
11
11
  import { WorkspaceMutex } from '../../../kb-fs/mutex.js';
12
12
 
@@ -127,7 +127,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
127
127
 
128
128
  const git = new GitService(
129
129
  stubWorkspaceService(workspaceId, repo),
130
- new WorkflowHooks(),
130
+ new VersionControlHooks(),
131
131
  testKbContext(),
132
132
  );
133
133
 
@@ -174,7 +174,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
174
174
 
175
175
  const git = new GitService(
176
176
  stubWorkspaceService(workspaceId, repo),
177
- new WorkflowHooks(),
177
+ new VersionControlHooks(),
178
178
  testKbContext(),
179
179
  );
180
180
  // What the detail does first: resolve (and fetch) the two SHAs.
@@ -226,7 +226,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
226
226
 
227
227
  const git = new GitService(
228
228
  stubWorkspaceService(workspaceId, repo),
229
- new WorkflowHooks(),
229
+ new VersionControlHooks(),
230
230
  testKbContext(),
231
231
  );
232
232
 
@@ -264,7 +264,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
264
264
  await runGit(repo, ['commit', '-m', 'folders']);
265
265
  await runGit(repo, ['push', '-u', 'origin', 'alice/new-folders']);
266
266
 
267
- const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(), testKbContext());
267
+ const git = new GitService(stubWorkspaceService(workspaceId, repo), new VersionControlHooks(), testKbContext());
268
268
 
269
269
  const files = await git.changedFilesForPr(workspaceId, 'current-company-state', 'alice/new-folders');
270
270
  expect(files.map((f) => f.path)).toEqual(['Reports/q3.md']);
@@ -293,7 +293,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
293
293
  await runGit(repo, ['commit', '-m', 'emptied']);
294
294
  await runGit(repo, ['push', '-u', 'origin', 'alice/emptied']);
295
295
 
296
- const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(), testKbContext());
296
+ const git = new GitService(stubWorkspaceService(workspaceId, repo), new VersionControlHooks(), testKbContext());
297
297
 
298
298
  const files = await git.changedFilesForPr(workspaceId, 'current-company-state', 'alice/emptied');
299
299
  expect(files.map((f) => ({ path: f.path, status: f.status, previousPath: f.previousPath }))).toEqual([
@@ -306,7 +306,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
306
306
 
307
307
  it('pathExistsAtRef answers for files and folders at a ref, and false for what is not there', async () => {
308
308
  const { repo } = await seedWorkspace(root, workspaceId);
309
- const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(), testKbContext());
309
+ const git = new GitService(stubWorkspaceService(workspaceId, repo), new VersionControlHooks(), testKbContext());
310
310
  await fs.mkdir(path.join(repo, 'Docs'));
311
311
  await fs.writeFile(path.join(repo, 'Docs/.gitkeep'), '');
312
312
  await runGit(repo, ['add', '-A']);
@@ -336,7 +336,7 @@ describe('GitService.changedFilesForPr / resolvePrShas', () => {
336
336
 
337
337
  const git = new GitService(
338
338
  stubWorkspaceService(workspaceId, repo),
339
- new WorkflowHooks(),
339
+ new VersionControlHooks(),
340
340
  testKbContext(),
341
341
  );
342
342
 
@@ -417,7 +417,7 @@ describe('GitService.changedPathsForPr: who pays for the fetch', () => {
417
417
  await pushedElsewhere(upstream, 'brief.pdf');
418
418
  const git = new GitService(
419
419
  stubWorkspaceService(workspaceId, repo),
420
- new WorkflowHooks(),
420
+ new VersionControlHooks(),
421
421
  testKbContext(),
422
422
  );
423
423
  expect(
@@ -430,7 +430,7 @@ describe('GitService.changedPathsForPr: who pays for the fetch', () => {
430
430
  const other = await pushedElsewhere(upstream, 'brief.pdf');
431
431
  const git = new GitService(
432
432
  stubWorkspaceService(workspaceId, repo),
433
- new WorkflowHooks(),
433
+ new VersionControlHooks(),
434
434
  testKbContext(),
435
435
  );
436
436
  // The clone now knows the branch — this stands in for the one fetch a
@@ -467,7 +467,7 @@ describe('GitService.changedPathsForPr: who pays for the fetch', () => {
467
467
  await pushedElsewhere(upstream, 'brief.pdf');
468
468
  const git = new GitService(
469
469
  stubWorkspaceService(workspaceId, repo),
470
- new WorkflowHooks(),
470
+ new VersionControlHooks(),
471
471
  testKbContext(),
472
472
  );
473
473
  // Nothing has refreshed this clone since the branch was pushed.
@@ -505,7 +505,7 @@ describe('GitService.changedPathsForPr: who pays for the fetch', () => {
505
505
  }
506
506
  const git = new GitService(
507
507
  stubWorkspaceService(workspaceId, repo),
508
- new WorkflowHooks(),
508
+ new VersionControlHooks(),
509
509
  testKbContext(),
510
510
  new PrunedMidCall(),
511
511
  );
@@ -567,7 +567,7 @@ describe('GitService.changedPathsAndPairsForPr agrees with changedFilesForPr', (
567
567
  await runGit(repo, ['commit', '-m', 'move it']);
568
568
  await runGit(repo, ['push', '-u', 'origin', 'alice/moved']);
569
569
 
570
- const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(), testKbContext());
570
+ const git = new GitService(stubWorkspaceService(workspaceId, repo), new VersionControlHooks(), testKbContext());
571
571
  const { detail, summary, paths } = await bothViews(git, 'alice/moved');
572
572
 
573
573
  expect(summary).toEqual(['GTM/note.md<=Engineering/note.md']);
@@ -593,7 +593,7 @@ describe('GitService.changedPathsAndPairsForPr agrees with changedFilesForPr', (
593
593
  await runGit(repo, ['commit', '-m', 'mixed']);
594
594
  await runGit(repo, ['push', '-u', 'origin', 'alice/mixed']);
595
595
 
596
- const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(), testKbContext());
596
+ const git = new GitService(stubWorkspaceService(workspaceId, repo), new VersionControlHooks(), testKbContext());
597
597
  const { detail, summary } = await bothViews(git, 'alice/mixed');
598
598
  expect(summary).toEqual(detail);
599
599
  expect(summary).toContain('new-home.md<=old-home.md');
@@ -610,7 +610,7 @@ describe('GitService.changedPathsAndPairsForPr agrees with changedFilesForPr', (
610
610
  await runGit(repo, ['commit', '-m', 'config + folder']);
611
611
  await runGit(repo, ['push', '-u', 'origin', 'alice/config']);
612
612
 
613
- const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(), testKbContext());
613
+ const git = new GitService(stubWorkspaceService(workspaceId, repo), new VersionControlHooks(), testKbContext());
614
614
  const { detail, summary, paths } = await bothViews(git, 'alice/config');
615
615
  expect(summary).toEqual(['Reports/q3.md<=']);
616
616
  expect(summary).toEqual(detail);
@@ -633,7 +633,7 @@ describe('GitService.changedPathsAndPairsForPr agrees with changedFilesForPr', (
633
633
  await runGit(repo, ['commit', '-m', 'emptied']);
634
634
  await runGit(repo, ['push', '-u', 'origin', 'alice/emptied']);
635
635
 
636
- const git = new GitService(stubWorkspaceService(workspaceId, repo), new WorkflowHooks(), testKbContext());
636
+ const git = new GitService(stubWorkspaceService(workspaceId, repo), new VersionControlHooks(), testKbContext());
637
637
  const { detail, summary } = await bothViews(git, 'alice/emptied');
638
638
  // `withoutPlaceholderRename` runs on both sides, so neither reports a
639
639
  // rename onto `.gitkeep` and neither loses the removed file.
@@ -6,7 +6,7 @@ import fs from 'node:fs/promises';
6
6
  import path from 'node:path';
7
7
  import os from 'node:os';
8
8
  import type { WorkspaceService } from '../../../workspace/workspace.service.js';
9
- import { WorkflowHooks } from '../../workflow-hooks.js';
9
+ import { VersionControlHooks } from '../../version-control-hooks.js';
10
10
  import { GitService } from '../git.service.js';
11
11
  import { WorkspaceMutex } from '../../../kb-fs/mutex.js';
12
12
 
@@ -93,7 +93,7 @@ describe('a change request is diffed once per pair of commits', () => {
93
93
  } as unknown as WorkspaceService;
94
94
  svc = new GitService(
95
95
  workspace,
96
- new WorkflowHooks(),
96
+ new VersionControlHooks(),
97
97
  testKbContext({ branchModel: { defaultBranch: 'main', protectedBranches: ['main'] } }),
98
98
  new WorkspaceMutex(),
99
99
  );
@@ -6,7 +6,7 @@ import fs from 'node:fs/promises';
6
6
  import path from 'node:path';
7
7
  import os from 'node:os';
8
8
  import type { WorkspaceService } from '../../../workspace/workspace.service.js';
9
- import { WorkflowHooks } from '../../workflow-hooks.js';
9
+ import { VersionControlHooks } from '../../version-control-hooks.js';
10
10
  import { GitService } from '../git.service.js';
11
11
 
12
12
  /**
@@ -49,11 +49,11 @@ function stubWorkspaceService(workspaceId: string, workspaceDir: string): Worksp
49
49
  } as unknown as WorkspaceService;
50
50
  }
51
51
 
52
- function makeValidator(): WorkflowHooks {
52
+ function makeValidator(): VersionControlHooks {
53
53
  const report = { ok: true, mustFix: [], warnings: [], rawOutput: '' };
54
54
  // A clean-report commit-validation hook — the seam GitService consults
55
55
  // where it used to call the injected validator.
56
- const hooks = new WorkflowHooks();
56
+ const hooks = new VersionControlHooks();
57
57
  hooks.onCommitValidation(vi.fn(async () => report));
58
58
  return hooks;
59
59
  }
@@ -7,9 +7,9 @@ import path from 'node:path';
7
7
  import os from 'node:os';
8
8
  import type { AuthUser } from '@bevel-software/platform-shared';
9
9
  import type { WorkspaceService } from '../../../workspace/workspace.service.js';
10
- import { WorkflowHooks } from '../../workflow-hooks.js';
10
+ import { VersionControlHooks } from '../../version-control-hooks.js';
11
11
  import { GitService } from '../git.service.js';
12
- import { WorkflowValidationError } from '../../../../shared/domain-errors.js';
12
+ import { VersionControlValidationError } from '../../../../shared/domain-errors.js';
13
13
 
14
14
  /**
15
15
  * `commitFile` on a path whose bytes sit BESIDE the repository.
@@ -87,14 +87,14 @@ describe('GitService.commitFile with bytes beside the repository', () => {
87
87
 
88
88
  it('throws instead of returning null when the file exists at the workspace root and not in the clone', async () => {
89
89
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
90
- const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
90
+ const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new VersionControlHooks(), testKbContext({ kbDirName: KB }));
91
91
  // The prefix-less write the agent made: beside the clone, not inside it.
92
92
  await fs.mkdir(path.join(workspaceDir, 'KnowledgeBase/Reviews'), { recursive: true });
93
93
  await fs.writeFile(path.join(workspaceDir, 'KnowledgeBase/Reviews/PR-12.html'), '<p>review</p>');
94
94
  const headBefore = await runGit(repo, ['rev-parse', 'HEAD']);
95
95
 
96
96
  const attempt = svc.commitFile(workspaceId, USER, 'KnowledgeBase/Reviews/PR-12.html');
97
- await expect(attempt).rejects.toBeInstanceOf(WorkflowValidationError);
97
+ await expect(attempt).rejects.toBeInstanceOf(VersionControlValidationError);
98
98
  await expect(attempt).rejects.toThrow('"knowledge-base/KnowledgeBase/Reviews/PR-12.html"');
99
99
 
100
100
  // Nothing landed, and the stray is left where it is for someone to recover.
@@ -104,19 +104,19 @@ describe('GitService.commitFile with bytes beside the repository', () => {
104
104
 
105
105
  it('still returns null for a clean, committed path (the honest no-op)', async () => {
106
106
  const { workspaceDir } = await seedWorkspace(root, workspaceId);
107
- const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
107
+ const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new VersionControlHooks(), testKbContext({ kbDirName: KB }));
108
108
  expect(await svc.commitFile(workspaceId, USER, `${KB}/Knowledge/A.md`)).toBeNull();
109
109
  });
110
110
 
111
111
  it('still returns null for a path that exists nowhere (a queued re-apply of a committed deletion)', async () => {
112
112
  const { workspaceDir } = await seedWorkspace(root, workspaceId);
113
- const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
113
+ const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new VersionControlHooks(), testKbContext({ kbDirName: KB }));
114
114
  expect(await svc.commitFile(workspaceId, USER, `${KB}/Knowledge/Gone.md`)).toBeNull();
115
115
  });
116
116
 
117
117
  it('still returns null for a repo-relative path that is clean inside the clone (the form internal callers pass)', async () => {
118
118
  const { workspaceDir } = await seedWorkspace(root, workspaceId);
119
- const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
119
+ const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new VersionControlHooks(), testKbContext({ kbDirName: KB }));
120
120
  expect(await svc.commitFile(workspaceId, USER, 'Knowledge/A.md')).toBeNull();
121
121
  });
122
122
 
@@ -125,7 +125,7 @@ describe('GitService.commitFile with bytes beside the repository', () => {
125
125
  // a repo-relative caller's no-op stays honest whatever else sits beside
126
126
  // the clone under the same name.
127
127
  const { workspaceDir } = await seedWorkspace(root, workspaceId);
128
- const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
128
+ const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new VersionControlHooks(), testKbContext({ kbDirName: KB }));
129
129
  await fs.mkdir(path.join(workspaceDir, 'Knowledge'), { recursive: true });
130
130
  await fs.writeFile(path.join(workspaceDir, 'Knowledge/A.md'), 'a copy beside the clone\n');
131
131
  expect(await svc.commitFile(workspaceId, USER, 'Knowledge/A.md')).toBeNull();
@@ -138,7 +138,7 @@ describe('GitService.commitFile with bytes beside the repository', () => {
138
138
  // toggles read-only, so the stat below still succeeds): nothing to prove.
139
139
  if (process.getuid?.() === 0 || process.platform === 'win32') return;
140
140
  const { workspaceDir } = await seedWorkspace(root, workspaceId);
141
- const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
141
+ const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new VersionControlHooks(), testKbContext({ kbDirName: KB }));
142
142
  const strayDir = path.join(workspaceDir, 'KnowledgeBase');
143
143
  await fs.mkdir(strayDir, { recursive: true });
144
144
  await fs.writeFile(path.join(strayDir, 'PR-12.html'), 'x');
@@ -153,7 +153,7 @@ describe('GitService.commitFile with bytes beside the repository', () => {
153
153
 
154
154
  it('still commits a prefixed path inside the clone', async () => {
155
155
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
156
- const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext({ kbDirName: KB }));
156
+ const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new VersionControlHooks(), testKbContext({ kbDirName: KB }));
157
157
  await fs.writeFile(path.join(repo, 'Knowledge/B.md'), 'b\n');
158
158
  const committed = await svc.commitFile(workspaceId, USER, `${KB}/Knowledge/B.md`);
159
159
  expect(committed).not.toBeNull();