@bevel-software/platform-core-backend 0.34.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 (908) hide show
  1. package/agent-guide/access-control.md +146 -300
  2. package/agent-guide/conventions.md +23 -25
  3. package/agent-guide/directory-structure.md +72 -120
  4. package/agent-guide/drafts-and-change-requests.md +92 -0
  5. package/agent-guide/for-git-users.md +47 -0
  6. package/agent-guide/glossary.md +36 -0
  7. package/agent-guide/how-agents-find-things.md +49 -0
  8. package/agent-guide/html-views.md +16 -11
  9. package/agent-guide/new-knowledge-base.md +9 -8
  10. package/agent-guide/onboarding.md +111 -0
  11. package/agent-guide/skills.md +67 -42
  12. package/agent-guide/start-here.md +66 -0
  13. package/agent-guide/tool-manuals.md +133 -154
  14. package/agent-guide/tools.md +67 -0
  15. package/agent-guide/where-a-new-file-goes.md +45 -28
  16. package/dist/core/catalog-cache-invalidation.d.ts +2 -2
  17. package/dist/core/catalog-cache-invalidation.d.ts.map +1 -1
  18. package/dist/core/compose-embed.d.ts +2 -2
  19. package/dist/core/compose-embed.d.ts.map +1 -1
  20. package/dist/core/compose-embed.js +1 -1
  21. package/dist/core/compose-embed.js.map +1 -1
  22. package/dist/core/core-ports.d.ts +19 -4
  23. package/dist/core/core-ports.d.ts.map +1 -1
  24. package/dist/core/core-ports.js.map +1 -1
  25. package/dist/core/create-core-server.d.ts.map +1 -1
  26. package/dist/core/create-core-server.js +27 -25
  27. package/dist/core/create-core-server.js.map +1 -1
  28. package/dist/core/create-core-services.d.ts +25 -13
  29. package/dist/core/create-core-services.d.ts.map +1 -1
  30. package/dist/core/create-core-services.js +75 -60
  31. package/dist/core/create-core-services.js.map +1 -1
  32. package/dist/core/lifecycle.d.ts +4 -4
  33. package/dist/core/lifecycle.d.ts.map +1 -1
  34. package/dist/core/lifecycle.js +5 -5
  35. package/dist/core/lifecycle.js.map +1 -1
  36. package/dist/core-config.d.ts +2 -2
  37. package/dist/core-config.js +3 -3
  38. package/dist/core-config.js.map +1 -1
  39. package/dist/index.d.ts +4 -4
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +3 -3
  42. package/dist/index.js.map +1 -1
  43. package/dist/modules/access/access-control.interface.d.ts +22 -0
  44. package/dist/modules/access/access-control.interface.d.ts.map +1 -1
  45. package/dist/modules/access/access-control.service.d.ts +3 -1
  46. package/dist/modules/access/access-control.service.d.ts.map +1 -1
  47. package/dist/modules/access/access-control.service.js +76 -1
  48. package/dist/modules/access/access-control.service.js.map +1 -1
  49. package/dist/modules/access/access-declarations.d.ts +2 -2
  50. package/dist/modules/access/access-declarations.d.ts.map +1 -1
  51. package/dist/modules/access/access-declarations.js +2 -2
  52. package/dist/modules/access/access-declarations.js.map +1 -1
  53. package/dist/modules/access/access-mutation.service.d.ts +2 -2
  54. package/dist/modules/access/access-mutation.service.d.ts.map +1 -1
  55. package/dist/modules/access/access-mutation.service.js +2 -2
  56. package/dist/modules/access/access-mutation.service.js.map +1 -1
  57. package/dist/modules/access/access-requests.routes.d.ts +2 -2
  58. package/dist/modules/access/access-requests.routes.d.ts.map +1 -1
  59. package/dist/modules/access/access-requests.routes.js +5 -5
  60. package/dist/modules/access/access-requests.routes.js.map +1 -1
  61. package/dist/modules/access/access-requests.service.d.ts +2 -2
  62. package/dist/modules/access/access-requests.service.d.ts.map +1 -1
  63. package/dist/modules/access/access-requests.service.js +11 -11
  64. package/dist/modules/access/access-requests.service.js.map +1 -1
  65. package/dist/modules/access/access.routes.d.ts +2 -2
  66. package/dist/modules/access/access.routes.d.ts.map +1 -1
  67. package/dist/modules/access/access.routes.js +32 -13
  68. package/dist/modules/access/access.routes.js.map +1 -1
  69. package/dist/modules/access/admin-locked-commit.d.ts +5 -5
  70. package/dist/modules/access/admin-locked-commit.d.ts.map +1 -1
  71. package/dist/modules/access/admin-locked-commit.js +7 -7
  72. package/dist/modules/access/admin-locked-commit.js.map +1 -1
  73. package/dist/modules/access/admin-route-helpers.d.ts +1 -1
  74. package/dist/modules/access/admin-route-helpers.js +5 -5
  75. package/dist/modules/access/admin-route-helpers.js.map +1 -1
  76. package/dist/modules/access/change-read-gate.d.ts +1 -1
  77. package/dist/modules/access/change-read-gate.js +1 -1
  78. package/dist/modules/access/groups-admin.service.d.ts +7 -7
  79. package/dist/modules/access/groups-admin.service.d.ts.map +1 -1
  80. package/dist/modules/access/groups-admin.service.js +6 -6
  81. package/dist/modules/access/groups-admin.service.js.map +1 -1
  82. package/dist/modules/access/index.d.ts +1 -1
  83. package/dist/modules/access/index.d.ts.map +1 -1
  84. package/dist/modules/access/reference-scan.d.ts +1 -1
  85. package/dist/modules/access/roles-admin.service.d.ts +7 -7
  86. package/dist/modules/access/roles-admin.service.d.ts.map +1 -1
  87. package/dist/modules/access/roles-admin.service.js +8 -8
  88. package/dist/modules/access/roles-admin.service.js.map +1 -1
  89. package/dist/modules/access/synced-groups-committer.d.ts +4 -4
  90. package/dist/modules/access/synced-groups-committer.d.ts.map +1 -1
  91. package/dist/modules/access/synced-groups-committer.js +7 -7
  92. package/dist/modules/access/synced-groups-committer.js.map +1 -1
  93. package/dist/modules/access/user-access-removal.service.d.ts +6 -6
  94. package/dist/modules/access/user-access-removal.service.d.ts.map +1 -1
  95. package/dist/modules/access/user-access-removal.service.js +4 -4
  96. package/dist/modules/access/user-access-removal.service.js.map +1 -1
  97. package/dist/modules/access-model/access-errors.d.ts +4 -4
  98. package/dist/modules/access-model/access-errors.d.ts.map +1 -1
  99. package/dist/modules/access-model/access-errors.js +4 -4
  100. package/dist/modules/access-model/access-errors.js.map +1 -1
  101. package/dist/modules/access-model/access-grammar.d.ts +1 -1
  102. package/dist/modules/access-model/access-grammar.js +4 -4
  103. package/dist/modules/access-model/change-gate.d.ts +1 -1
  104. package/dist/modules/access-model/change-gate.js +1 -1
  105. package/dist/modules/access-model/roles-yaml-guard.d.ts +4 -4
  106. package/dist/modules/access-model/roles-yaml-guard.d.ts.map +1 -1
  107. package/dist/modules/access-model/roles-yaml-guard.js +4 -4
  108. package/dist/modules/access-model/roles-yaml-guard.js.map +1 -1
  109. package/dist/modules/agent-guide/agent-guide.d.ts +63 -18
  110. package/dist/modules/agent-guide/agent-guide.d.ts.map +1 -1
  111. package/dist/modules/agent-guide/agent-guide.js +144 -30
  112. package/dist/modules/agent-guide/agent-guide.js.map +1 -1
  113. package/dist/modules/agent-guide/agent-guide.tools.d.ts +6 -2
  114. package/dist/modules/agent-guide/agent-guide.tools.d.ts.map +1 -1
  115. package/dist/modules/agent-guide/agent-guide.tools.js +45 -31
  116. package/dist/modules/agent-guide/agent-guide.tools.js.map +1 -1
  117. package/dist/modules/agent-guide/guide-budget.d.ts +51 -0
  118. package/dist/modules/agent-guide/guide-budget.d.ts.map +1 -0
  119. package/dist/modules/agent-guide/guide-budget.js +71 -0
  120. package/dist/modules/agent-guide/guide-budget.js.map +1 -0
  121. package/dist/modules/agent-guide/index.d.ts +2 -1
  122. package/dist/modules/agent-guide/index.d.ts.map +1 -1
  123. package/dist/modules/agent-guide/index.js +2 -1
  124. package/dist/modules/agent-guide/index.js.map +1 -1
  125. package/dist/modules/agent-instructions/agent-instructions.routes.d.ts +12 -5
  126. package/dist/modules/agent-instructions/agent-instructions.routes.d.ts.map +1 -1
  127. package/dist/modules/agent-instructions/agent-instructions.routes.js +13 -6
  128. package/dist/modules/agent-instructions/agent-instructions.routes.js.map +1 -1
  129. package/dist/modules/agent-instructions/compose.d.ts +15 -8
  130. package/dist/modules/agent-instructions/compose.d.ts.map +1 -1
  131. package/dist/modules/agent-instructions/compose.js +28 -10
  132. package/dist/modules/agent-instructions/compose.js.map +1 -1
  133. package/dist/modules/agent-instructions/shared-file-rules.d.ts +14 -6
  134. package/dist/modules/agent-instructions/shared-file-rules.d.ts.map +1 -1
  135. package/dist/modules/agent-instructions/shared-file-rules.js +60 -18
  136. package/dist/modules/agent-instructions/shared-file-rules.js.map +1 -1
  137. package/dist/modules/auth/account-erasure.service.d.ts +36 -7
  138. package/dist/modules/auth/account-erasure.service.d.ts.map +1 -1
  139. package/dist/modules/auth/account-erasure.service.js +30 -10
  140. package/dist/modules/auth/account-erasure.service.js.map +1 -1
  141. package/dist/modules/auth/account-hooks.d.ts +20 -0
  142. package/dist/modules/auth/account-hooks.d.ts.map +1 -1
  143. package/dist/modules/auth/account-hooks.js +10 -0
  144. package/dist/modules/auth/account-hooks.js.map +1 -1
  145. package/dist/modules/auth/account-switch-lock.js +2 -2
  146. package/dist/modules/auth/account-switch-lock.js.map +1 -1
  147. package/dist/modules/auth/account.routes.d.ts +7 -2
  148. package/dist/modules/auth/account.routes.d.ts.map +1 -1
  149. package/dist/modules/auth/account.routes.js +23 -4
  150. package/dist/modules/auth/account.routes.js.map +1 -1
  151. package/dist/modules/auth/auth.service.d.ts +1 -1
  152. package/dist/modules/auth/auth.service.js +4 -4
  153. package/dist/modules/auth/auth.service.js.map +1 -1
  154. package/dist/modules/auth/index.d.ts +1 -0
  155. package/dist/modules/auth/index.d.ts.map +1 -1
  156. package/dist/modules/code-mode/code-mode.tool.js +2 -2
  157. package/dist/modules/code-mode/code-mode.tool.js.map +1 -1
  158. package/dist/modules/connection-probe/connection-probe.service.d.ts +0 -12
  159. package/dist/modules/connection-probe/connection-probe.service.d.ts.map +1 -1
  160. package/dist/modules/connection-probe/connection-probe.service.js +1 -38
  161. package/dist/modules/connection-probe/connection-probe.service.js.map +1 -1
  162. package/dist/modules/database/core-schema.js +2 -2
  163. package/dist/modules/database/core-schema.js.map +1 -1
  164. package/dist/modules/diff/diff.routes.d.ts +3 -3
  165. package/dist/modules/diff/diff.routes.d.ts.map +1 -1
  166. package/dist/modules/diff/diff.routes.js +7 -7
  167. package/dist/modules/diff/diff.routes.js.map +1 -1
  168. package/dist/modules/embed/embed.routes.js +1 -1
  169. package/dist/modules/embed/embed.routes.js.map +1 -1
  170. package/dist/modules/embed/embed.service.d.ts +4 -4
  171. package/dist/modules/embed/embed.service.d.ts.map +1 -1
  172. package/dist/modules/embed/embed.service.js +18 -18
  173. package/dist/modules/embed/embed.service.js.map +1 -1
  174. package/dist/modules/kb-fs/branch-name.js +8 -8
  175. package/dist/modules/kb-fs/branch-name.js.map +1 -1
  176. package/dist/modules/kb-fs/file-change-notifier.d.ts +2 -2
  177. package/dist/modules/kb-fs/locking-filesystem.d.ts +9 -9
  178. package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
  179. package/dist/modules/kb-fs/locking-filesystem.js +27 -27
  180. package/dist/modules/kb-fs/locking-filesystem.js.map +1 -1
  181. package/dist/modules/kb-fs/repo-path.js +5 -5
  182. package/dist/modules/kb-fs/repo-path.js.map +1 -1
  183. package/dist/modules/kb-fs/tmp-ref.d.ts +2 -2
  184. package/dist/modules/kb-fs/tmp-ref.d.ts.map +1 -1
  185. package/dist/modules/kb-fs/tmp-ref.js +2 -2
  186. package/dist/modules/kb-fs/tmp-ref.js.map +1 -1
  187. package/dist/modules/kb-sync/index.d.ts +1 -1
  188. package/dist/modules/kb-sync/index.d.ts.map +1 -1
  189. package/dist/modules/kb-sync/kb-sync.interface.d.ts +3 -3
  190. package/dist/modules/kb-sync/kb-sync.interface.d.ts.map +1 -1
  191. package/dist/modules/kb-sync/kb-sync.service.d.ts +3 -3
  192. package/dist/modules/kb-sync/kb-sync.service.d.ts.map +1 -1
  193. package/dist/modules/kb-sync/kb-sync.service.js +10 -10
  194. package/dist/modules/kb-sync/kb-sync.service.js.map +1 -1
  195. package/dist/modules/mcp/mcp.service.d.ts +11 -4
  196. package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
  197. package/dist/modules/mcp/mcp.service.js +80 -53
  198. package/dist/modules/mcp/mcp.service.js.map +1 -1
  199. package/dist/modules/onboarding/onboarding.contract.d.ts +1 -1
  200. package/dist/modules/onboarding/onboarding.routes.js +2 -2
  201. package/dist/modules/onboarding/onboarding.routes.js.map +1 -1
  202. package/dist/modules/onboarding/starter-pack.service.d.ts +4 -4
  203. package/dist/modules/onboarding/starter-pack.service.d.ts.map +1 -1
  204. package/dist/modules/onboarding/starter-pack.service.js +4 -4
  205. package/dist/modules/onboarding/starter-pack.service.js.map +1 -1
  206. package/dist/modules/plugins/join-request-jobs.service.d.ts +2 -2
  207. package/dist/modules/plugins/join-request-jobs.service.d.ts.map +1 -1
  208. package/dist/modules/plugins/join-request-jobs.service.js +7 -7
  209. package/dist/modules/plugins/join-request-jobs.service.js.map +1 -1
  210. package/dist/modules/plugins/join-requests.service.d.ts +3 -3
  211. package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
  212. package/dist/modules/plugins/join-requests.service.js +5 -5
  213. package/dist/modules/plugins/join-requests.service.js.map +1 -1
  214. package/dist/modules/plugins/plugin-rename.service.js +1 -1
  215. package/dist/modules/plugins/plugin-rename.service.js.map +1 -1
  216. package/dist/modules/plugins/plugins.routes.d.ts +2 -2
  217. package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
  218. package/dist/modules/plugins/plugins.routes.js +8 -8
  219. package/dist/modules/plugins/plugins.routes.js.map +1 -1
  220. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts +87 -2
  221. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts.map +1 -1
  222. package/dist/modules/secrets-vault/db-secrets-vault.service.js +635 -74
  223. package/dist/modules/secrets-vault/db-secrets-vault.service.js.map +1 -1
  224. package/dist/modules/secrets-vault/index.d.ts +3 -2
  225. package/dist/modules/secrets-vault/index.d.ts.map +1 -1
  226. package/dist/modules/secrets-vault/index.js +2 -1
  227. package/dist/modules/secrets-vault/index.js.map +1 -1
  228. package/dist/modules/secrets-vault/managed-sign-in-erasure.d.ts +36 -0
  229. package/dist/modules/secrets-vault/managed-sign-in-erasure.d.ts.map +1 -0
  230. package/dist/modules/secrets-vault/managed-sign-in-erasure.js +37 -0
  231. package/dist/modules/secrets-vault/managed-sign-in-erasure.js.map +1 -0
  232. package/dist/modules/secrets-vault/secrets-vault.contract.d.ts +205 -11
  233. package/dist/modules/secrets-vault/secrets-vault.contract.d.ts.map +1 -1
  234. package/dist/modules/secrets-vault/secrets-vault.contract.js +27 -0
  235. package/dist/modules/secrets-vault/secrets-vault.contract.js.map +1 -1
  236. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +7 -1
  237. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -1
  238. package/dist/modules/secrets-vault/secrets-vault.routes.js +206 -45
  239. package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
  240. package/dist/modules/settings/connection-check.js +1 -1
  241. package/dist/modules/settings/connection-check.js.map +1 -1
  242. package/dist/modules/settings/deployment-settings.service.js +1 -1
  243. package/dist/modules/settings/git-root-folders.js +1 -1
  244. package/dist/modules/settings/git-root-folders.js.map +1 -1
  245. package/dist/modules/settings/oidc-check.d.ts.map +1 -1
  246. package/dist/modules/settings/oidc-check.js +5 -17
  247. package/dist/modules/settings/oidc-check.js.map +1 -1
  248. package/dist/modules/settings/setup.routes.d.ts +1 -1
  249. package/dist/modules/settings/setup.routes.js +1 -1
  250. package/dist/modules/skills/pending-skills.service.d.ts +3 -3
  251. package/dist/modules/skills/pending-skills.service.d.ts.map +1 -1
  252. package/dist/modules/skills/pending-skills.service.js +4 -4
  253. package/dist/modules/skills/pending-skills.service.js.map +1 -1
  254. package/dist/modules/skills/skill-access-requests.routes.d.ts +2 -2
  255. package/dist/modules/skills/skill-access-requests.routes.d.ts.map +1 -1
  256. package/dist/modules/skills/skill-access-requests.routes.js +5 -5
  257. package/dist/modules/skills/skill-access-requests.routes.js.map +1 -1
  258. package/dist/modules/skills/skills.tools.js +1 -1
  259. package/dist/modules/skills/skills.tools.js.map +1 -1
  260. package/dist/modules/tool-helpers/tool-context.d.ts +4 -4
  261. package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
  262. package/dist/modules/tool-helpers/tool-context.js +2 -2
  263. package/dist/modules/tool-helpers/tool-context.js.map +1 -1
  264. package/dist/modules/tool-helpers/tool-def.js +1 -1
  265. package/dist/modules/tool-helpers/tool-def.js.map +1 -1
  266. package/dist/modules/tool-helpers/tool-handler.js +2 -2
  267. package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
  268. package/dist/modules/tool-helpers/tool.contract.d.ts +4 -4
  269. package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
  270. package/dist/modules/tool-manuals/mcp-json-discovery.d.ts +7 -1
  271. package/dist/modules/tool-manuals/mcp-json-discovery.d.ts.map +1 -1
  272. package/dist/modules/tool-manuals/mcp-json-discovery.js +69 -38
  273. package/dist/modules/tool-manuals/mcp-json-discovery.js.map +1 -1
  274. package/dist/modules/tool-manuals/mcp-server-edit.service.js +1 -1
  275. package/dist/modules/tool-manuals/mcp-server-edit.service.js.map +1 -1
  276. package/dist/modules/tool-manuals/pending-tools.service.d.ts +3 -3
  277. package/dist/modules/tool-manuals/pending-tools.service.d.ts.map +1 -1
  278. package/dist/modules/tool-manuals/pending-tools.service.js +4 -4
  279. package/dist/modules/tool-manuals/pending-tools.service.js.map +1 -1
  280. package/dist/modules/tool-manuals/tool-delete.service.js +1 -1
  281. package/dist/modules/tool-manuals/tool-delete.service.js.map +1 -1
  282. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts +70 -3
  283. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts.map +1 -1
  284. package/dist/modules/tool-manuals/tool-manuals.service.d.ts +18 -8
  285. package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
  286. package/dist/modules/tool-manuals/tool-manuals.service.js +166 -49
  287. package/dist/modules/tool-manuals/tool-manuals.service.js.map +1 -1
  288. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts +11 -2
  289. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
  290. package/dist/modules/tool-manuals/tool-manuals.tools.js +66 -24
  291. package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
  292. package/dist/modules/version-control/agent-tools/change-request-read-shape.d.ts.map +1 -0
  293. package/dist/modules/version-control/agent-tools/change-request-read-shape.js.map +1 -0
  294. package/dist/modules/version-control/agent-tools/change-request-read.tools.d.ts.map +1 -0
  295. package/dist/modules/{workflow → version-control}/agent-tools/change-request-read.tools.js +2 -2
  296. package/dist/modules/version-control/agent-tools/change-request-read.tools.js.map +1 -0
  297. package/dist/modules/version-control/agent-tools/change-request-summary.d.ts.map +1 -0
  298. package/dist/modules/version-control/agent-tools/change-request-summary.js.map +1 -0
  299. package/dist/modules/{workflow/agent-tools/workflow.tools.d.ts → version-control/agent-tools/version-control.tools.d.ts} +4 -4
  300. package/dist/modules/version-control/agent-tools/version-control.tools.d.ts.map +1 -0
  301. package/dist/modules/{workflow/agent-tools/workflow.tools.js → version-control/agent-tools/version-control.tools.js} +53 -49
  302. package/dist/modules/version-control/agent-tools/version-control.tools.js.map +1 -0
  303. package/dist/modules/{workflow → version-control}/change-request-hooks.d.ts +1 -1
  304. package/dist/modules/version-control/change-request-hooks.d.ts.map +1 -0
  305. package/dist/modules/version-control/change-request-hooks.js.map +1 -0
  306. package/dist/modules/version-control/change-request-review/approval-lock.d.ts.map +1 -0
  307. package/dist/modules/version-control/change-request-review/approval-lock.js.map +1 -0
  308. package/dist/modules/{workflow/review-workflow/review-workflow.interface.d.ts → version-control/change-request-review/change-request-review.interface.d.ts} +2 -2
  309. package/dist/modules/version-control/change-request-review/change-request-review.interface.d.ts.map +1 -0
  310. package/dist/modules/version-control/change-request-review/change-request-review.interface.js +2 -0
  311. package/dist/modules/version-control/change-request-review/change-request-review.interface.js.map +1 -0
  312. package/dist/modules/{workflow/review-workflow/review-workflow.service.d.ts → version-control/change-request-review/change-request-review.service.d.ts} +3 -3
  313. package/dist/modules/version-control/change-request-review/change-request-review.service.d.ts.map +1 -0
  314. package/dist/modules/{workflow/review-workflow/review-workflow.service.js → version-control/change-request-review/change-request-review.service.js} +26 -26
  315. package/dist/modules/version-control/change-request-review/change-request-review.service.js.map +1 -0
  316. package/dist/modules/{workflow → version-control}/event-bus.d.ts +8 -8
  317. package/dist/modules/version-control/event-bus.d.ts.map +1 -0
  318. package/dist/modules/{workflow → version-control}/event-bus.js +4 -4
  319. package/dist/modules/version-control/event-bus.js.map +1 -0
  320. package/dist/modules/{workflow → version-control}/events-delivery.d.ts +4 -4
  321. package/dist/modules/version-control/events-delivery.d.ts.map +1 -0
  322. package/dist/modules/version-control/events-delivery.js.map +1 -0
  323. package/dist/modules/{workflow → version-control}/events.routes.d.ts +4 -4
  324. package/dist/modules/version-control/events.routes.d.ts.map +1 -0
  325. package/dist/modules/version-control/events.routes.js.map +1 -0
  326. package/dist/modules/{workflow → version-control}/file-lock.service.d.ts +2 -2
  327. package/dist/modules/version-control/file-lock.service.d.ts.map +1 -0
  328. package/dist/modules/{workflow → version-control}/file-lock.service.js +6 -6
  329. package/dist/modules/version-control/file-lock.service.js.map +1 -0
  330. package/dist/modules/version-control/git/change-request-link.d.ts.map +1 -0
  331. package/dist/modules/version-control/git/change-request-link.js.map +1 -0
  332. package/dist/modules/version-control/git/git-version.d.ts.map +1 -0
  333. package/dist/modules/version-control/git/git-version.js.map +1 -0
  334. package/dist/modules/{workflow → version-control}/git/git.service.d.ts +8 -8
  335. package/dist/modules/version-control/git/git.service.d.ts.map +1 -0
  336. package/dist/modules/{workflow → version-control}/git/git.service.js +53 -53
  337. package/dist/modules/version-control/git/git.service.js.map +1 -0
  338. package/dist/modules/version-control/git/merge-commit.d.ts.map +1 -0
  339. package/dist/modules/version-control/git/merge-commit.js.map +1 -0
  340. package/dist/modules/version-control/git/node-git-runner.d.ts.map +1 -0
  341. package/dist/modules/{workflow → version-control}/git/node-git-runner.js +1 -1
  342. package/dist/modules/version-control/git/node-git-runner.js.map +1 -0
  343. package/dist/modules/{workflow → version-control}/git/pull-request.service.d.ts +5 -5
  344. package/dist/modules/version-control/git/pull-request.service.d.ts.map +1 -0
  345. package/dist/modules/{workflow → version-control}/git/pull-request.service.js +10 -10
  346. package/dist/modules/version-control/git/pull-request.service.js.map +1 -0
  347. package/dist/modules/{workflow → version-control}/index.d.ts +6 -5
  348. package/dist/modules/version-control/index.d.ts.map +1 -0
  349. package/dist/modules/{workflow → version-control}/index.js +3 -2
  350. package/dist/modules/version-control/index.js.map +1 -0
  351. package/dist/modules/{workflow → version-control}/pending-commits.service.d.ts +2 -2
  352. package/dist/modules/version-control/pending-commits.service.d.ts.map +1 -0
  353. package/dist/modules/{workflow → version-control}/pending-commits.service.js +2 -2
  354. package/dist/modules/version-control/pending-commits.service.js.map +1 -0
  355. package/dist/modules/{workflow → version-control}/pending-commits.worker.d.ts +5 -5
  356. package/dist/modules/version-control/pending-commits.worker.d.ts.map +1 -0
  357. package/dist/modules/{workflow → version-control}/pending-commits.worker.js +3 -3
  358. package/dist/modules/version-control/pending-commits.worker.js.map +1 -0
  359. package/dist/modules/{workflow → version-control}/read-on-branch.d.ts +2 -2
  360. package/dist/modules/version-control/read-on-branch.d.ts.map +1 -0
  361. package/dist/modules/{workflow → version-control}/read-on-branch.js +2 -2
  362. package/dist/modules/version-control/read-on-branch.js.map +1 -0
  363. package/dist/modules/version-control/recovery-bot.d.ts.map +1 -0
  364. package/dist/modules/version-control/recovery-bot.js.map +1 -0
  365. package/dist/modules/version-control/sanitize-error.d.ts.map +1 -0
  366. package/dist/modules/version-control/sanitize-error.js.map +1 -0
  367. package/dist/modules/{workflow/workflow-hooks.d.ts → version-control/version-control-hooks.d.ts} +4 -4
  368. package/dist/modules/version-control/version-control-hooks.d.ts.map +1 -0
  369. package/dist/modules/{workflow/workflow-hooks.js → version-control/version-control-hooks.js} +3 -3
  370. package/dist/modules/version-control/version-control-hooks.js.map +1 -0
  371. package/dist/modules/{workflow/workflow.routes.d.ts → version-control/version-control.routes.d.ts} +6 -5
  372. package/dist/modules/version-control/version-control.routes.d.ts.map +1 -0
  373. package/dist/modules/{workflow/workflow.routes.js → version-control/version-control.routes.js} +61 -60
  374. package/dist/modules/version-control/version-control.routes.js.map +1 -0
  375. package/dist/modules/{workflow/workflow.service.d.ts → version-control/version-control.service.d.ts} +26 -31
  376. package/dist/modules/version-control/version-control.service.d.ts.map +1 -0
  377. package/dist/modules/{workflow/workflow.service.js → version-control/version-control.service.js} +89 -94
  378. package/dist/modules/version-control/version-control.service.js.map +1 -0
  379. package/dist/modules/workspace/agent-access.gate.d.ts +6 -6
  380. package/dist/modules/workspace/agent-access.gate.d.ts.map +1 -1
  381. package/dist/modules/workspace/agent-access.gate.js +2 -2
  382. package/dist/modules/workspace/agent-access.gate.js.map +1 -1
  383. package/dist/modules/workspace/git-internals.middleware.d.ts +1 -1
  384. package/dist/modules/workspace/git-internals.middleware.js +2 -2
  385. package/dist/modules/workspace/kb-repository.js +1 -1
  386. package/dist/modules/workspace/kb-repository.js.map +1 -1
  387. package/dist/modules/workspace/startup/kb-git.d.ts +1 -1
  388. package/dist/modules/workspace/startup/kb-git.d.ts.map +1 -1
  389. package/dist/modules/workspace/startup/kb-git.js +1 -1
  390. package/dist/modules/workspace/startup/kb-git.js.map +1 -1
  391. package/dist/modules/workspace/startup/steps/seed-tree.d.ts +2 -2
  392. package/dist/modules/workspace/startup/steps/seed-tree.d.ts.map +1 -1
  393. package/dist/modules/workspace/startup/steps/seed-tree.js +1 -1
  394. package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
  395. package/dist/modules/workspace/startup/steps/template-files.step.d.ts +2 -2
  396. package/dist/modules/workspace/startup/steps/template-files.step.d.ts.map +1 -1
  397. package/dist/modules/workspace/startup/steps/template-files.step.js +2 -2
  398. package/dist/modules/workspace/startup/steps/template-files.step.js.map +1 -1
  399. package/dist/modules/workspace/startup/steps/template-source.d.ts +17 -4
  400. package/dist/modules/workspace/startup/steps/template-source.d.ts.map +1 -1
  401. package/dist/modules/workspace/startup/steps/template-source.js +8 -5
  402. package/dist/modules/workspace/startup/steps/template-source.js.map +1 -1
  403. package/dist/modules/workspace/workspace-tmp.js +3 -3
  404. package/dist/modules/workspace/workspace-tmp.js.map +1 -1
  405. package/dist/modules/workspace/workspace.routes.d.ts +4 -4
  406. package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
  407. package/dist/modules/workspace/workspace.routes.js +22 -22
  408. package/dist/modules/workspace/workspace.routes.js.map +1 -1
  409. package/dist/modules/workspace/workspace.service.d.ts +6 -6
  410. package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
  411. package/dist/modules/workspace/workspace.service.js +11 -11
  412. package/dist/modules/workspace/workspace.service.js.map +1 -1
  413. package/dist/modules/workspace/workspace.tools.d.ts +5 -3
  414. package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
  415. package/dist/modules/workspace/workspace.tools.js +85 -30
  416. package/dist/modules/workspace/workspace.tools.js.map +1 -1
  417. package/dist/shared/canonical-file-identity.d.ts +2 -2
  418. package/dist/shared/canonical-file-identity.js +5 -5
  419. package/dist/shared/canonical-file-identity.js.map +1 -1
  420. package/dist/shared/domain-errors.d.ts +39 -39
  421. package/dist/shared/domain-errors.d.ts.map +1 -1
  422. package/dist/shared/domain-errors.js +44 -44
  423. package/dist/shared/domain-errors.js.map +1 -1
  424. package/dist/shared/git.contract.d.ts +1 -1
  425. package/dist/shared/git.contract.js +1 -1
  426. package/dist/shared/http-errors.d.ts +3 -3
  427. package/dist/shared/http-errors.d.ts.map +1 -1
  428. package/dist/shared/http-errors.js +1 -1
  429. package/dist/shared/http-errors.js.map +1 -1
  430. package/dist/shared/oauth-token-error.d.ts +23 -0
  431. package/dist/shared/oauth-token-error.d.ts.map +1 -0
  432. package/dist/shared/oauth-token-error.js +47 -0
  433. package/dist/shared/oauth-token-error.js.map +1 -0
  434. package/dist/shared/pending-proposals.d.ts +3 -3
  435. package/dist/shared/pending-proposals.d.ts.map +1 -1
  436. package/dist/shared/pending-proposals.js +2 -2
  437. package/dist/shared/pending-proposals.js.map +1 -1
  438. package/dist/shared/read-capped.d.ts +19 -0
  439. package/dist/shared/read-capped.d.ts.map +1 -0
  440. package/dist/shared/read-capped.js +45 -0
  441. package/dist/shared/read-capped.js.map +1 -0
  442. package/dist/tenancy/static-tenant-source.js +1 -1
  443. package/dist/tenancy/static-tenant-source.js.map +1 -1
  444. package/migrations/0012_agent_audit.sql +40 -40
  445. package/migrations/0013_agent_identity_and_key_soft_delete.sql +29 -29
  446. package/migrations/meta/0012_snapshot.json +2246 -2246
  447. package/migrations/meta/0013_snapshot.json +2258 -2258
  448. package/package.json +5 -4
  449. package/src/__tests__/account-admin.ts +27 -0
  450. package/src/__tests__/hexis-catalog.ts +144 -0
  451. package/src/__tests__/kb-context.ts +30 -30
  452. package/src/__tests__/kb-layout-config.test.ts +21 -0
  453. package/src/__tests__/open-change-gate.ts +1 -1
  454. package/src/__tests__/real-disk.ts +21 -0
  455. package/src/__tests__/tokens.ts +19 -0
  456. package/src/__tests__/tool-handler.ts +15 -0
  457. package/src/__tests__/tool-manuals.ts +32 -0
  458. package/src/__tests__/tool-wiring.ts +31 -0
  459. package/src/__tests__/workspace-service.ts +1 -1
  460. package/src/core/__tests__/catalog-cache-invalidation.test.ts +3 -3
  461. package/src/core/__tests__/compose-embed.test.ts +1 -1
  462. package/src/core/__tests__/damaged-document.tools.test.ts +3 -3
  463. package/src/core/__tests__/erasure-slices-wired-once.test.ts +46 -0
  464. package/src/core/__tests__/gated-boot.test.ts +2 -2
  465. package/src/core/__tests__/lifecycle.test.ts +9 -9
  466. package/src/core/__tests__/oauth-sign-in-real-file.test.ts +179 -0
  467. package/src/core/catalog-cache-invalidation.ts +2 -2
  468. package/src/core/compose-embed.ts +3 -3
  469. package/src/core/core-ports.ts +19 -4
  470. package/src/core/create-core-server.ts +40 -26
  471. package/src/core/create-core-services.ts +92 -66
  472. package/src/core/lifecycle.ts +9 -9
  473. package/src/core-config.ts +3 -3
  474. package/src/index.ts +5 -5
  475. package/src/modules/access/__tests__/access-control.admin-root-floor.test.ts +4 -4
  476. package/src/modules/access/__tests__/access-own-read-grant.test.ts +14 -14
  477. package/src/modules/access/__tests__/access-requests.routes.test.ts +20 -20
  478. package/src/modules/access/__tests__/access.routes.admins.test.ts +4 -4
  479. package/src/modules/access/__tests__/access.routes.batch.test.ts +4 -4
  480. package/src/modules/access/__tests__/access.routes.folder-governs.test.ts +6 -6
  481. package/src/modules/access/__tests__/access.routes.group-grant.test.ts +6 -6
  482. package/src/modules/access/__tests__/access.routes.overrides.test.ts +5 -5
  483. package/src/modules/access/__tests__/access.routes.proposal-branch.test.ts +6 -6
  484. package/src/modules/access/__tests__/access.routes.prospective.test.ts +54 -14
  485. package/src/modules/access/__tests__/access.routes.revoke.test.ts +6 -6
  486. package/src/modules/access/__tests__/access.routes.unknown-email.test.ts +6 -6
  487. package/src/modules/access/__tests__/admin-locked-commit.test.ts +6 -6
  488. package/src/modules/access/__tests__/admin-route-helpers.test.ts +5 -5
  489. package/src/modules/access/__tests__/groups-admin.service.test.ts +27 -27
  490. package/src/modules/access/__tests__/holder-changes.test.ts +127 -0
  491. package/src/modules/access/__tests__/roles-admin.security.test.ts +14 -13
  492. package/src/modules/access/__tests__/roles-admin.service.test.ts +27 -27
  493. package/src/modules/access/__tests__/roles-capabilities.test.ts +19 -19
  494. package/src/modules/access/__tests__/roles.routes.test.ts +6 -6
  495. package/src/modules/access/__tests__/synced-groups-committer.test.ts +13 -13
  496. package/src/modules/access/__tests__/user-access-removal.service.test.ts +29 -29
  497. package/src/modules/access/access-control.interface.ts +26 -0
  498. package/src/modules/access/access-control.service.ts +93 -1
  499. package/src/modules/access/access-declarations.ts +2 -2
  500. package/src/modules/access/access-mutation.service.ts +2 -2
  501. package/src/modules/access/access-requests.routes.ts +7 -7
  502. package/src/modules/access/access-requests.service.ts +13 -13
  503. package/src/modules/access/access.routes.ts +34 -15
  504. package/src/modules/access/admin-locked-commit.ts +11 -11
  505. package/src/modules/access/admin-route-helpers.ts +5 -5
  506. package/src/modules/access/change-read-gate.ts +1 -1
  507. package/src/modules/access/groups-admin.service.ts +7 -7
  508. package/src/modules/access/index.ts +1 -1
  509. package/src/modules/access/reference-scan.ts +1 -1
  510. package/src/modules/access/roles-admin.service.ts +9 -9
  511. package/src/modules/access/synced-groups-committer.ts +11 -11
  512. package/src/modules/access/user-access-removal.service.ts +7 -7
  513. package/src/modules/access-model/__tests__/access-grammar.test.ts +2 -2
  514. package/src/modules/access-model/access-errors.ts +4 -4
  515. package/src/modules/access-model/access-grammar.ts +4 -4
  516. package/src/modules/access-model/change-gate.ts +1 -1
  517. package/src/modules/access-model/roles-yaml-guard.ts +4 -4
  518. package/src/modules/agent-guide/__tests__/agent-guide.test.ts +98 -29
  519. package/src/modules/agent-guide/__tests__/agent-guide.tools.test.ts +39 -12
  520. package/src/modules/agent-guide/__tests__/guide-budget.test.ts +95 -0
  521. package/src/modules/agent-guide/__tests__/guide-eval.test.ts +182 -0
  522. package/src/modules/agent-guide/__tests__/guide-matches-code.test.ts +263 -0
  523. package/src/modules/agent-guide/__tests__/tool-surface.json +514 -0
  524. package/src/modules/agent-guide/__tests__/tool-surface.test.ts +75 -0
  525. package/src/modules/agent-guide/agent-guide.tools.ts +49 -31
  526. package/src/modules/agent-guide/agent-guide.ts +165 -32
  527. package/src/modules/agent-guide/guide-budget.ts +77 -0
  528. package/src/modules/agent-guide/index.ts +12 -0
  529. package/src/modules/agent-instructions/__tests__/agent-instructions.route.test.ts +4 -5
  530. package/src/modules/agent-instructions/__tests__/compose.test.ts +1 -1
  531. package/src/modules/agent-instructions/__tests__/shared-file-rules.test.ts +117 -11
  532. package/src/modules/agent-instructions/agent-instructions.routes.ts +12 -5
  533. package/src/modules/agent-instructions/compose.ts +28 -9
  534. package/src/modules/agent-instructions/shared-file-rules.ts +62 -18
  535. package/src/modules/agent-scope/__tests__/agent-surfaces.connect-as.test.ts +1 -1
  536. package/src/modules/audit/__tests__/agent-rest-audit.middleware.test.ts +113 -113
  537. package/src/modules/audit/__tests__/event-classifier.test.ts +121 -121
  538. package/src/modules/audit/event-classifier.ts +155 -155
  539. package/src/modules/auth/__tests__/account-deactivation.test.ts +1 -1
  540. package/src/modules/auth/__tests__/account-erasure.approval-gate.test.ts +4 -4
  541. package/src/modules/auth/__tests__/account-erasure.participants.test.ts +56 -0
  542. package/src/modules/auth/__tests__/account-switch-lock.pg.test.ts +2 -2
  543. package/src/modules/auth/__tests__/account-switch-lock.test.ts +2 -2
  544. package/src/modules/auth/__tests__/account.routes.test.ts +73 -11
  545. package/src/modules/auth/__tests__/auth.service.test.ts +1 -1
  546. package/src/modules/auth/account-erasure.service.ts +27 -9
  547. package/src/modules/auth/account-hooks.ts +34 -0
  548. package/src/modules/auth/account-switch-lock.ts +2 -2
  549. package/src/modules/auth/account.routes.ts +23 -5
  550. package/src/modules/auth/auth.service.ts +4 -4
  551. package/src/modules/auth/index.ts +1 -0
  552. package/src/modules/code-mode/code-mode.tool.ts +2 -2
  553. package/src/modules/connection-probe/__tests__/connection-probe.service.test.ts +5 -24
  554. package/src/modules/connection-probe/connection-probe.service.ts +1 -34
  555. package/src/modules/database/__tests__/advisory-lock.test.ts +169 -169
  556. package/src/modules/database/__tests__/migrations-unqualified.test.ts +32 -32
  557. package/src/modules/database/core-schema.ts +2 -2
  558. package/src/modules/diff/__tests__/diff.routes.read-gate.test.ts +2 -2
  559. package/src/modules/diff/__tests__/diff.routes.rejectPathsLocked.test.ts +12 -12
  560. package/src/modules/diff/diff.routes.ts +8 -8
  561. package/src/modules/embed/__tests__/embed.service.lock.test.ts +7 -7
  562. package/src/modules/embed/__tests__/embed.service.test.ts +42 -42
  563. package/src/modules/embed/__tests__/embed.tools.test.ts +1 -1
  564. package/src/modules/embed/embed.routes.ts +1 -1
  565. package/src/modules/embed/embed.service.ts +17 -17
  566. package/src/modules/kb-fs/__tests__/branch-name.test.ts +2 -2
  567. package/src/modules/kb-fs/__tests__/locking-filesystem.test.ts +260 -260
  568. package/src/modules/kb-fs/__tests__/move-with-edits.test.ts +34 -34
  569. package/src/modules/kb-fs/__tests__/repo-path.test.ts +8 -8
  570. package/src/modules/kb-fs/branch-name.ts +8 -8
  571. package/src/modules/kb-fs/file-change-notifier.ts +2 -2
  572. package/src/modules/kb-fs/locking-filesystem.ts +30 -30
  573. package/src/modules/kb-fs/repo-path.ts +5 -5
  574. package/src/modules/kb-fs/tmp-ref.ts +3 -3
  575. package/src/modules/kb-sync/__tests__/kb-sync.service.test.ts +36 -36
  576. package/src/modules/kb-sync/index.ts +1 -1
  577. package/src/modules/kb-sync/kb-sync.interface.ts +3 -3
  578. package/src/modules/kb-sync/kb-sync.service.ts +9 -9
  579. package/src/modules/marketplace/__tests__/github-facade.test.ts +1 -1
  580. package/src/modules/marketplace/__tests__/marketplace-git.test.ts +1 -1
  581. package/src/modules/mcp/__tests__/mcp-proxy-helpers.test.ts +4 -2
  582. package/src/modules/mcp/__tests__/mcp.e2e.test.ts +69 -8
  583. package/src/modules/mcp/__tests__/mcp.service.test.ts +91 -13
  584. package/src/modules/mcp/__tests__/read-only-hint.pg.test.ts +194 -0
  585. package/src/modules/mcp/mcp.service.ts +93 -62
  586. package/src/modules/onboarding/__tests__/starter-pack.service.test.ts +55 -55
  587. package/src/modules/onboarding/onboarding.contract.ts +1 -1
  588. package/src/modules/onboarding/onboarding.routes.ts +2 -2
  589. package/src/modules/onboarding/starter-pack.service.ts +6 -6
  590. package/src/modules/plugins/__tests__/bundle-dialect.e2e.test.ts +1 -1
  591. package/src/modules/plugins/__tests__/compile-marketplace.test.ts +1 -1
  592. package/src/modules/plugins/__tests__/join-request-jobs.service.test.ts +43 -43
  593. package/src/modules/plugins/__tests__/join-requests.service.test.ts +19 -19
  594. package/src/modules/plugins/__tests__/join-requests.settlement.test.ts +26 -26
  595. package/src/modules/plugins/__tests__/plugins.routes.test.ts +25 -25
  596. package/src/modules/plugins/join-request-jobs.service.ts +10 -10
  597. package/src/modules/plugins/join-requests.service.ts +4 -4
  598. package/src/modules/plugins/plugin-rename.service.ts +1 -1
  599. package/src/modules/plugins/plugins.routes.ts +9 -9
  600. package/src/modules/secrets-vault/__tests__/db-secrets-vault.managed.test.ts +773 -0
  601. package/src/modules/secrets-vault/__tests__/db-secrets-vault.oauth.test.ts +458 -4
  602. package/src/modules/secrets-vault/__tests__/managed-sign-in.route.test.ts +351 -0
  603. package/src/modules/secrets-vault/__tests__/oauth-live-declaration.route.test.ts +218 -0
  604. package/src/modules/secrets-vault/__tests__/oauth-return-to.route.test.ts +39 -6
  605. package/src/modules/secrets-vault/db-secrets-vault.service.ts +728 -118
  606. package/src/modules/secrets-vault/index.ts +8 -1
  607. package/src/modules/secrets-vault/managed-sign-in-erasure.ts +41 -0
  608. package/src/modules/secrets-vault/secrets-variable-loader.ts +134 -134
  609. package/src/modules/secrets-vault/secrets-vault.contract.ts +213 -11
  610. package/src/modules/secrets-vault/secrets-vault.routes.ts +244 -45
  611. package/src/modules/settings/__tests__/repository-source.test.ts +1 -1
  612. package/src/modules/settings/__tests__/setup.routes.layout-phase.test.ts +1 -1
  613. package/src/modules/settings/__tests__/setup.routes.managed-phase.test.ts +1 -1
  614. package/src/modules/settings/connection-check.ts +1 -1
  615. package/src/modules/settings/deployment-settings.service.ts +1 -1
  616. package/src/modules/settings/git-root-folders.ts +1 -1
  617. package/src/modules/settings/oidc-check.ts +5 -18
  618. package/src/modules/settings/setup.routes.ts +1 -1
  619. package/src/modules/skills/__tests__/allowed-tools-warn.tools.test.ts +3 -3
  620. package/src/modules/skills/__tests__/branch-skills.tools.test.ts +1 -1
  621. package/src/modules/skills/__tests__/pending-skills.service.test.ts +8 -8
  622. package/src/modules/skills/__tests__/skill-access-requests.routes.test.ts +18 -18
  623. package/src/modules/skills/__tests__/skills.service.test.ts +3 -3
  624. package/src/modules/skills/pending-skills.service.ts +3 -3
  625. package/src/modules/skills/skill-access-requests.routes.ts +7 -7
  626. package/src/modules/skills/skills.tools.ts +1 -1
  627. package/src/modules/tool-helpers/__tests__/agent-roles-write.test.ts +22 -14
  628. package/src/modules/tool-helpers/__tests__/branch-declaration.test.ts +3 -3
  629. package/src/modules/tool-helpers/__tests__/can-write.tools.test.ts +3 -3
  630. package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +4 -4
  631. package/src/modules/tool-helpers/__tests__/route-tool-schemas.catalog.test.ts +38 -0
  632. package/src/modules/tool-helpers/__tests__/tools-surface.test.ts +3 -3
  633. package/src/modules/tool-helpers/__tests__/validate-token.test.ts +1 -1
  634. package/src/modules/tool-helpers/tool-context.ts +6 -6
  635. package/src/modules/tool-helpers/tool-def.ts +1 -1
  636. package/src/modules/tool-helpers/tool-handler.ts +2 -2
  637. package/src/modules/tool-helpers/tool.contract.ts +4 -4
  638. package/src/modules/tool-manuals/__tests__/pending-tools.service.test.ts +9 -9
  639. package/src/modules/tool-manuals/__tests__/tool-manuals.managed-sign-in.test.ts +89 -0
  640. package/src/modules/tool-manuals/__tests__/tool-manuals.mcp-oauth.test.ts +197 -11
  641. package/src/modules/tool-manuals/__tests__/tool-manuals.restart.test.ts +1 -1
  642. package/src/modules/tool-manuals/__tests__/tool-manuals.tools.test.ts +132 -6
  643. package/src/modules/tool-manuals/mcp-json-discovery.ts +73 -34
  644. package/src/modules/tool-manuals/mcp-server-edit.service.ts +1 -1
  645. package/src/modules/tool-manuals/pending-tools.service.ts +3 -3
  646. package/src/modules/tool-manuals/tool-delete.service.ts +1 -1
  647. package/src/modules/tool-manuals/tool-manuals.contract.ts +63 -3
  648. package/src/modules/tool-manuals/tool-manuals.service.ts +191 -51
  649. package/src/modules/tool-manuals/tool-manuals.tools.ts +93 -28
  650. package/src/modules/tool-registry/__tests__/own-tool-schemas.test.ts +4 -4
  651. package/src/modules/tool-registry/__tests__/read-only-hints.test.ts +3 -3
  652. package/src/modules/tool-registry/__tests__/tool-description-length.test.ts +12 -119
  653. package/src/modules/{workflow → version-control}/__tests__/apply-failure.test.ts +54 -54
  654. package/src/modules/{workflow → version-control}/__tests__/event-bus.test.ts +27 -27
  655. package/src/modules/{workflow → version-control}/__tests__/events-delivery.test.ts +37 -37
  656. package/src/modules/{workflow → version-control}/__tests__/file-lock.service.deletion-gate.test.ts +2 -2
  657. package/src/modules/{workflow → version-control}/__tests__/file-lock.service.path-identity.test.ts +8 -8
  658. package/src/modules/{workflow → version-control}/__tests__/merge-announces-tree.test.ts +11 -11
  659. package/src/modules/{workflow → version-control}/__tests__/pending-commits.worker.concurrency.test.ts +9 -9
  660. package/src/modules/{workflow → version-control}/__tests__/pending-commits.worker.test.ts +25 -25
  661. package/src/modules/{workflow → version-control}/__tests__/preserve-roles-yaml.test.ts +42 -42
  662. package/src/modules/version-control/__tests__/public-surface.test.ts +114 -0
  663. package/src/modules/{workflow/__tests__/workflow.routes.folder-proposals.test.ts → version-control/__tests__/version-control.routes.folder-proposals.test.ts} +18 -18
  664. 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
  665. 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
  666. package/src/modules/{workflow/__tests__/workflow.routes.lock-path.test.ts → version-control/__tests__/version-control.routes.lock-path.test.ts} +18 -18
  667. 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
  668. package/src/modules/{workflow/__tests__/workflow.routes.push-refused.test.ts → version-control/__tests__/version-control.routes.push-refused.test.ts} +14 -14
  669. 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
  670. package/src/modules/{workflow/__tests__/workflow.service.commitFileWhileLocked.test.ts → version-control/__tests__/version-control.service.commitFileWhileLocked.test.ts} +14 -14
  671. package/src/modules/{workflow/__tests__/workflow.service.delete-branch.test.ts → version-control/__tests__/version-control.service.delete-branch.test.ts} +14 -14
  672. 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
  673. package/src/modules/{workflow/__tests__/workflow.service.facade.test.ts → version-control/__tests__/version-control.service.facade.test.ts} +97 -99
  674. package/src/modules/{workflow/__tests__/workflow.service.folder-proposals.test.ts → version-control/__tests__/version-control.service.folder-proposals.test.ts} +7 -7
  675. package/src/modules/{workflow/__tests__/workflow.service.platform-restore.test.ts → version-control/__tests__/version-control.service.platform-restore.test.ts} +6 -6
  676. package/src/modules/{workflow/__tests__/workflow.service.read-gate.test.ts → version-control/__tests__/version-control.service.read-gate.test.ts} +9 -9
  677. package/src/modules/{workflow/__tests__/workflow.service.releaseLock.test.ts → version-control/__tests__/version-control.service.releaseLock.test.ts} +42 -42
  678. package/src/modules/{workflow/__tests__/workflow.service.repository-replaced.test.ts → version-control/__tests__/version-control.service.repository-replaced.test.ts} +4 -4
  679. package/src/modules/{workflow/__tests__/workflow.service.sync.test.ts → version-control/__tests__/version-control.service.sync.test.ts} +17 -17
  680. 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
  681. 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
  682. 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
  683. package/src/modules/{workflow → version-control}/agent-tools/__tests__/change-request-read.tools.test.ts +3 -3
  684. package/src/modules/{workflow → version-control}/agent-tools/__tests__/update-change-request.parity.test.ts +16 -16
  685. package/src/modules/{workflow/agent-tools/__tests__/workflow.tools.test.ts → version-control/agent-tools/__tests__/version-control.tools.test.ts} +9 -9
  686. package/src/modules/{workflow → version-control}/agent-tools/change-request-read.tools.ts +2 -2
  687. package/src/modules/{workflow/agent-tools/workflow.tools.ts → version-control/agent-tools/version-control.tools.ts} +52 -48
  688. package/src/modules/{workflow → version-control}/change-request-hooks.ts +1 -1
  689. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/approval-states.test.ts +5 -5
  690. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/cancel-pr.test.ts +8 -8
  691. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/carry-approvals-forward.test.ts +6 -6
  692. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/erase-approver.test.ts +5 -5
  693. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/merge-gate.test.ts +3 -3
  694. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/merge-records-own-commit.test.ts +3 -3
  695. package/src/modules/{workflow/review-workflow/review-workflow.interface.ts → version-control/change-request-review/change-request-review.interface.ts} +1 -1
  696. package/src/modules/{workflow/review-workflow/review-workflow.service.ts → version-control/change-request-review/change-request-review.service.ts} +28 -28
  697. package/src/modules/{workflow → version-control}/event-bus.ts +14 -14
  698. package/src/modules/{workflow → version-control}/events-delivery.ts +11 -11
  699. package/src/modules/{workflow → version-control}/events.routes.ts +5 -5
  700. package/src/modules/{workflow → version-control}/file-lock.service.ts +6 -6
  701. package/src/modules/{workflow → version-control}/git/__tests__/git-test-helpers.ts +3 -3
  702. package/src/modules/{workflow → version-control}/git/__tests__/git.service.accessGating.test.ts +5 -5
  703. package/src/modules/{workflow → version-control}/git/__tests__/git.service.appliedChange.test.ts +4 -4
  704. package/src/modules/{workflow → version-control}/git/__tests__/git.service.changedFilesForPr.test.ts +16 -16
  705. package/src/modules/{workflow → version-control}/git/__tests__/git.service.changedPathsMemo.test.ts +2 -2
  706. package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitChanges.test.ts +3 -3
  707. package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitFile.strayPath.test.ts +10 -10
  708. package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitFile.test.ts +3 -3
  709. package/src/modules/{workflow → version-control}/git/__tests__/git.service.createBranch.test.ts +3 -3
  710. package/src/modules/{workflow → version-control}/git/__tests__/git.service.deleteBranch.test.ts +7 -7
  711. package/src/modules/{workflow → version-control}/git/__tests__/git.service.diffFileAtCommit.test.ts +9 -9
  712. package/src/modules/{workflow → version-control}/git/__tests__/git.service.diffFileBetweenBranches.test.ts +23 -23
  713. package/src/modules/{workflow → version-control}/git/__tests__/git.service.fileBytesAtCommit.test.ts +7 -7
  714. package/src/modules/{workflow → version-control}/git/__tests__/git.service.fileContentsAtCommit.test.ts +3 -3
  715. package/src/modules/{workflow → version-control}/git/__tests__/git.service.forkPoint.test.ts +2 -2
  716. package/src/modules/{workflow → version-control}/git/__tests__/git.service.history-guards.test.ts +2 -2
  717. package/src/modules/{workflow → version-control}/git/__tests__/git.service.list-branches.test.ts +12 -12
  718. package/src/modules/{workflow → version-control}/git/__tests__/git.service.listTrackedFiles.test.ts +2 -2
  719. package/src/modules/{workflow → version-control}/git/__tests__/git.service.logForFile.test.ts +6 -6
  720. package/src/modules/{workflow → version-control}/git/__tests__/git.service.mergeChangeRequest.test.ts +20 -20
  721. package/src/modules/{workflow → version-control}/git/__tests__/git.service.mergeIntoBranch.test.ts +16 -16
  722. package/src/modules/{workflow → version-control}/git/__tests__/git.service.pendingChanges.test.ts +2 -2
  723. package/src/modules/{workflow → version-control}/git/__tests__/git.service.postMergePull.test.ts +5 -5
  724. package/src/modules/{workflow → version-control}/git/__tests__/git.service.prFetchFailure.test.ts +2 -2
  725. package/src/modules/{workflow → version-control}/git/__tests__/git.service.pull.test.ts +12 -12
  726. package/src/modules/{workflow → version-control}/git/__tests__/git.service.readFileAtRef.test.ts +3 -3
  727. package/src/modules/{workflow → version-control}/git/__tests__/git.service.revertPathsAndPush.test.ts +2 -2
  728. package/src/modules/{workflow → version-control}/git/__tests__/git.service.status.test.ts +4 -4
  729. package/src/modules/{workflow → version-control}/git/__tests__/git.service.syncFromRemote.test.ts +8 -8
  730. package/src/modules/{workflow → version-control}/git/__tests__/git.service.worktrees.test.ts +4 -4
  731. package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.list-fetch.test.ts +2 -2
  732. package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.test.ts +6 -6
  733. package/src/modules/{workflow → version-control}/git/git.service.ts +57 -57
  734. package/src/modules/{workflow → version-control}/git/node-git-runner.ts +1 -1
  735. package/src/modules/{workflow → version-control}/git/pull-request.service.ts +12 -12
  736. package/src/modules/{workflow → version-control}/index.ts +6 -5
  737. package/src/modules/{workflow → version-control}/pending-commits.service.ts +2 -2
  738. package/src/modules/{workflow → version-control}/pending-commits.worker.ts +8 -8
  739. package/src/modules/{workflow → version-control}/read-on-branch.ts +2 -2
  740. package/src/modules/{workflow/workflow-hooks.ts → version-control/version-control-hooks.ts} +3 -3
  741. package/src/modules/{workflow/workflow.routes.ts → version-control/version-control.routes.ts} +64 -63
  742. package/src/modules/{workflow/workflow.service.ts → version-control/version-control.service.ts} +92 -97
  743. package/src/modules/workspace/__tests__/agent-access.gate.test.ts +8 -8
  744. package/src/modules/workspace/__tests__/agent-downloads.test.ts +13 -16
  745. package/src/modules/workspace/__tests__/agent-uploads.test.ts +11 -12
  746. package/src/modules/workspace/__tests__/escape-sequences.routes.test.ts +11 -16
  747. package/src/modules/workspace/__tests__/file-stat-access.test.ts +3 -3
  748. package/src/modules/workspace/__tests__/git-internals.security.test.ts +27 -27
  749. package/src/modules/workspace/__tests__/kb-repository.test.ts +1 -1
  750. package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +3 -3
  751. package/src/modules/workspace/__tests__/start-session.default-branch.test.ts +152 -0
  752. package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +6 -6
  753. package/src/modules/workspace/__tests__/workspace-tmp.tools.test.ts +13 -14
  754. package/src/modules/workspace/__tests__/workspace.routes.at-ref.test.ts +6 -6
  755. package/src/modules/workspace/__tests__/workspace.routes.branch-errors.test.ts +4 -4
  756. package/src/modules/workspace/__tests__/workspace.routes.create-grant.test.ts +6 -6
  757. package/src/modules/workspace/__tests__/workspace.routes.delete.test.ts +8 -8
  758. package/src/modules/workspace/__tests__/workspace.routes.download-implies-read.test.ts +4 -4
  759. package/src/modules/workspace/__tests__/workspace.routes.download.test.ts +6 -6
  760. package/src/modules/workspace/__tests__/workspace.routes.file-writes.test.ts +6 -6
  761. package/src/modules/workspace/__tests__/workspace.routes.folder-zip-access.test.ts +4 -4
  762. package/src/modules/workspace/__tests__/workspace.routes.folders.test.ts +6 -6
  763. package/src/modules/workspace/__tests__/workspace.routes.move-platform-files.test.ts +7 -7
  764. package/src/modules/workspace/__tests__/workspace.routes.read-gate.test.ts +13 -13
  765. package/src/modules/workspace/__tests__/workspace.service.any-workspace-credentials.test.ts +1 -1
  766. package/src/modules/workspace/__tests__/workspace.service.replaced-repository.test.ts +1 -1
  767. package/src/modules/workspace/__tests__/workspace.service.worktrees.test.ts +1 -1
  768. package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +12 -14
  769. package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +5 -5
  770. package/src/modules/workspace/__tests__/workspace.tools.test.ts +182 -75
  771. package/src/modules/workspace/agent-access.gate.ts +6 -6
  772. package/src/modules/workspace/git-internals.middleware.ts +2 -2
  773. package/src/modules/workspace/kb-repository.ts +1 -1
  774. package/src/modules/workspace/startup/__tests__/kb-startup-runner.degraded.test.ts +1 -1
  775. package/src/modules/workspace/startup/__tests__/kb-startup-runner.test.ts +1 -1
  776. package/src/modules/workspace/startup/__tests__/kb-startup-runner.worktrees.test.ts +1 -1
  777. package/src/modules/workspace/startup/kb-git.ts +1 -1
  778. package/src/modules/workspace/startup/steps/__tests__/steps.test.ts +94 -70
  779. package/src/modules/workspace/startup/steps/seed-tree.ts +4 -5
  780. package/src/modules/workspace/startup/steps/template-files.step.ts +4 -5
  781. package/src/modules/workspace/startup/steps/template-source.ts +21 -6
  782. package/src/modules/workspace/workspace-tmp.ts +4 -4
  783. package/src/modules/workspace/workspace.routes.ts +26 -26
  784. package/src/modules/workspace/workspace.service.ts +11 -11
  785. package/src/modules/workspace/workspace.tools.ts +90 -30
  786. package/src/shared/__tests__/canonical-file-identity.test.ts +5 -5
  787. package/src/shared/__tests__/http-errors.test.ts +4 -4
  788. package/src/shared/__tests__/read-capped.test.ts +68 -0
  789. package/src/shared/canonical-file-identity.ts +5 -5
  790. package/src/shared/domain-errors.ts +44 -44
  791. package/src/shared/git.contract.ts +1 -1
  792. package/src/shared/http-errors.ts +3 -3
  793. package/src/shared/kb-context.ts +130 -130
  794. package/src/shared/oauth-token-error.ts +46 -0
  795. package/src/shared/pending-proposals.ts +4 -4
  796. package/src/shared/read-capped.ts +40 -0
  797. package/src/tenancy/__tests__/tenant-host.test.ts +372 -372
  798. package/src/tenancy/__tests__/tenant-runtime.test.ts +221 -221
  799. package/src/tenancy/__tests__/tenant-secrets.test.ts +35 -35
  800. package/src/tenancy/index.ts +35 -35
  801. package/src/tenancy/static-tenant-source.ts +1 -1
  802. package/src/tenancy/tenant-host.ts +261 -261
  803. package/src/tenancy/tenant-runtime.ts +208 -208
  804. package/src/tenancy/tenant-source.contract.ts +59 -59
  805. package/agent-guide/finding-things.md +0 -7
  806. package/agent-guide/introduction.md +0 -27
  807. package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts.map +0 -1
  808. package/dist/modules/workflow/agent-tools/change-request-read-shape.js.map +0 -1
  809. package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts.map +0 -1
  810. package/dist/modules/workflow/agent-tools/change-request-read.tools.js.map +0 -1
  811. package/dist/modules/workflow/agent-tools/change-request-summary.d.ts.map +0 -1
  812. package/dist/modules/workflow/agent-tools/change-request-summary.js.map +0 -1
  813. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +0 -1
  814. package/dist/modules/workflow/agent-tools/workflow.tools.js.map +0 -1
  815. package/dist/modules/workflow/change-request-hooks.d.ts.map +0 -1
  816. package/dist/modules/workflow/change-request-hooks.js.map +0 -1
  817. package/dist/modules/workflow/event-bus.d.ts.map +0 -1
  818. package/dist/modules/workflow/event-bus.js.map +0 -1
  819. package/dist/modules/workflow/events-delivery.d.ts.map +0 -1
  820. package/dist/modules/workflow/events-delivery.js.map +0 -1
  821. package/dist/modules/workflow/events.routes.d.ts.map +0 -1
  822. package/dist/modules/workflow/events.routes.js.map +0 -1
  823. package/dist/modules/workflow/file-lock.service.d.ts.map +0 -1
  824. package/dist/modules/workflow/file-lock.service.js.map +0 -1
  825. package/dist/modules/workflow/git/change-request-link.d.ts.map +0 -1
  826. package/dist/modules/workflow/git/change-request-link.js.map +0 -1
  827. package/dist/modules/workflow/git/git-version.d.ts.map +0 -1
  828. package/dist/modules/workflow/git/git-version.js.map +0 -1
  829. package/dist/modules/workflow/git/git.service.d.ts.map +0 -1
  830. package/dist/modules/workflow/git/git.service.js.map +0 -1
  831. package/dist/modules/workflow/git/merge-commit.d.ts.map +0 -1
  832. package/dist/modules/workflow/git/merge-commit.js.map +0 -1
  833. package/dist/modules/workflow/git/node-git-runner.d.ts.map +0 -1
  834. package/dist/modules/workflow/git/node-git-runner.js.map +0 -1
  835. package/dist/modules/workflow/git/pull-request.service.d.ts.map +0 -1
  836. package/dist/modules/workflow/git/pull-request.service.js.map +0 -1
  837. package/dist/modules/workflow/index.d.ts.map +0 -1
  838. package/dist/modules/workflow/index.js.map +0 -1
  839. package/dist/modules/workflow/pending-commits.service.d.ts.map +0 -1
  840. package/dist/modules/workflow/pending-commits.service.js.map +0 -1
  841. package/dist/modules/workflow/pending-commits.worker.d.ts.map +0 -1
  842. package/dist/modules/workflow/pending-commits.worker.js.map +0 -1
  843. package/dist/modules/workflow/read-on-branch.d.ts.map +0 -1
  844. package/dist/modules/workflow/read-on-branch.js.map +0 -1
  845. package/dist/modules/workflow/recovery-bot.d.ts.map +0 -1
  846. package/dist/modules/workflow/recovery-bot.js.map +0 -1
  847. package/dist/modules/workflow/review-workflow/approval-lock.d.ts.map +0 -1
  848. package/dist/modules/workflow/review-workflow/approval-lock.js.map +0 -1
  849. package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts.map +0 -1
  850. package/dist/modules/workflow/review-workflow/review-workflow.interface.js +0 -2
  851. package/dist/modules/workflow/review-workflow/review-workflow.interface.js.map +0 -1
  852. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +0 -1
  853. package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +0 -1
  854. package/dist/modules/workflow/sanitize-error.d.ts.map +0 -1
  855. package/dist/modules/workflow/sanitize-error.js.map +0 -1
  856. package/dist/modules/workflow/workflow-hooks.d.ts.map +0 -1
  857. package/dist/modules/workflow/workflow-hooks.js.map +0 -1
  858. package/dist/modules/workflow/workflow.routes.d.ts.map +0 -1
  859. package/dist/modules/workflow/workflow.routes.js.map +0 -1
  860. package/dist/modules/workflow/workflow.service.d.ts.map +0 -1
  861. package/dist/modules/workflow/workflow.service.js.map +0 -1
  862. package/src/modules/mcp/__tests__/read-only-hint.e2e.test.ts +0 -213
  863. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read-shape.d.ts +0 -0
  864. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read-shape.js +0 -0
  865. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read.tools.d.ts +0 -0
  866. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-summary.d.ts +0 -0
  867. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-summary.js +0 -0
  868. /package/dist/modules/{workflow → version-control}/change-request-hooks.js +0 -0
  869. /package/dist/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.d.ts +0 -0
  870. /package/dist/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.js +0 -0
  871. /package/dist/modules/{workflow → version-control}/events-delivery.js +0 -0
  872. /package/dist/modules/{workflow → version-control}/events.routes.js +0 -0
  873. /package/dist/modules/{workflow → version-control}/git/change-request-link.d.ts +0 -0
  874. /package/dist/modules/{workflow → version-control}/git/change-request-link.js +0 -0
  875. /package/dist/modules/{workflow → version-control}/git/git-version.d.ts +0 -0
  876. /package/dist/modules/{workflow → version-control}/git/git-version.js +0 -0
  877. /package/dist/modules/{workflow → version-control}/git/merge-commit.d.ts +0 -0
  878. /package/dist/modules/{workflow → version-control}/git/merge-commit.js +0 -0
  879. /package/dist/modules/{workflow → version-control}/git/node-git-runner.d.ts +0 -0
  880. /package/dist/modules/{workflow → version-control}/recovery-bot.d.ts +0 -0
  881. /package/dist/modules/{workflow → version-control}/recovery-bot.js +0 -0
  882. /package/dist/modules/{workflow → version-control}/sanitize-error.d.ts +0 -0
  883. /package/dist/modules/{workflow → version-control}/sanitize-error.js +0 -0
  884. /package/src/modules/{workflow → version-control}/__tests__/change-request-hooks.test.ts +0 -0
  885. /package/src/modules/{workflow → version-control}/__tests__/fake-file-lock-db.ts +0 -0
  886. /package/src/modules/{workflow → version-control}/__tests__/pending-commits.canonical.test.ts +0 -0
  887. /package/src/modules/{workflow → version-control}/__tests__/pending-commits.enqueue-if-absent.test.ts +0 -0
  888. /package/src/modules/{workflow → version-control}/__tests__/pending-commits.repository-replaced.test.ts +0 -0
  889. /package/src/modules/{workflow → version-control}/__tests__/sanitize-error.test.ts +0 -0
  890. /package/src/modules/{workflow → version-control}/agent-tools/__tests__/change-request-read-shape.test.ts +0 -0
  891. /package/src/modules/{workflow → version-control}/agent-tools/change-request-read-shape.ts +0 -0
  892. /package/src/modules/{workflow → version-control}/agent-tools/change-request-summary.ts +0 -0
  893. /package/src/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.ts +0 -0
  894. /package/src/modules/{workflow → version-control}/git/__tests__/branchAuthor.test.ts +0 -0
  895. /package/src/modules/{workflow → version-control}/git/__tests__/change-request-link.test.ts +0 -0
  896. /package/src/modules/{workflow → version-control}/git/__tests__/git-version.failure.test.ts +0 -0
  897. /package/src/modules/{workflow → version-control}/git/__tests__/git-version.test.ts +0 -0
  898. /package/src/modules/{workflow → version-control}/git/__tests__/node-git-runner.test.ts +0 -0
  899. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.getPrDetail.test.ts +0 -0
  900. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.placeholder.test.ts +0 -0
  901. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-cancel.test.ts +0 -0
  902. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-delete.test.ts +0 -0
  903. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-update.test.ts +0 -0
  904. /package/src/modules/{workflow → version-control}/git/change-request-link.ts +0 -0
  905. /package/src/modules/{workflow → version-control}/git/git-version.ts +0 -0
  906. /package/src/modules/{workflow → version-control}/git/merge-commit.ts +0 -0
  907. /package/src/modules/{workflow → version-control}/recovery-bot.ts +0 -0
  908. /package/src/modules/{workflow → version-control}/sanitize-error.ts +0 -0
@@ -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();
@@ -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
  /**
@@ -69,12 +69,12 @@ function stubWorkspaceService(workspaceId: string, workspaceDir: string): Worksp
69
69
  } as unknown as WorkspaceService;
70
70
  }
71
71
 
72
- function makeValidator(): { hooks: WorkflowHooks; runValidation: ReturnType<typeof vi.fn> } {
72
+ function makeValidator(): { hooks: VersionControlHooks; runValidation: ReturnType<typeof vi.fn> } {
73
73
  const report = { ok: true, mustFix: [], warnings: [], rawOutput: '' };
74
74
  const runValidation = vi.fn(async () => report);
75
75
  // Registered as a commit-validation hook — the seam GitService consults
76
76
  // where it used to call the injected validator.
77
- const hooks = new WorkflowHooks();
77
+ const hooks = new VersionControlHooks();
78
78
  hooks.onCommitValidation(() => runValidation());
79
79
  return { hooks, runValidation };
80
80
  }
@@ -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
  const execFileAsync = promisify(execFile);
@@ -90,7 +90,7 @@ describe('GitService.createBranch', () => {
90
90
  const { upstream } = await seedWorkspace(root, workspaceId);
91
91
  const svc = new GitService(
92
92
  stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
93
- new WorkflowHooks(),
93
+ new VersionControlHooks(),
94
94
  testKbContext(),
95
95
  );
96
96
 
@@ -133,7 +133,7 @@ describe('GitService.createBranch', () => {
133
133
  const repo = path.join(root, workspaceId, 'knowledge-base');
134
134
  const svc = new GitService(
135
135
  stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
136
- new WorkflowHooks(),
136
+ new VersionControlHooks(),
137
137
  testKbContext(),
138
138
  );
139
139
 
@@ -7,14 +7,14 @@ 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 type { IAccessControl } from '../../../access/access-control.interface.js';
12
12
  import { GitService } from '../git.service.js';
13
13
  import {
14
14
  BranchAuthorshipError,
15
15
  BranchDeleteRefusedError,
16
16
  ProtectedBranchError,
17
- WorkflowValidationError,
17
+ VersionControlValidationError,
18
18
  } from '../../../../shared/domain-errors.js';
19
19
 
20
20
  const execFileAsync = promisify(execFile);
@@ -160,7 +160,7 @@ describe('GitService.deleteBranch — authorship + remote delete', () => {
160
160
  function makeService(): GitService {
161
161
  return new GitService(
162
162
  stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
163
- new WorkflowHooks(),
163
+ new VersionControlHooks(),
164
164
  testKbContext(),
165
165
  );
166
166
  }
@@ -276,7 +276,7 @@ describe('GitService.deleteBranch — authorship + remote delete', () => {
276
276
  const svc = makeService();
277
277
  await expect(
278
278
  svc.deleteBranch(workspaceId, 'alice/my-draft', ALICE),
279
- ).rejects.toBeInstanceOf(WorkflowValidationError);
279
+ ).rejects.toBeInstanceOf(VersionControlValidationError);
280
280
  });
281
281
 
282
282
  it('onlyIfNoRemote: true bypasses the authorship check (orphan-tidy-up path stays open)', async () => {
@@ -305,7 +305,7 @@ describe('GitService.deleteBranch — authorship + remote delete', () => {
305
305
 
306
306
  await expect(
307
307
  svc.deleteBranch(workspaceId, 'alice/my-draft', ALICE, { onlyIfNoRemote: true }),
308
- ).rejects.toBeInstanceOf(WorkflowValidationError);
308
+ ).rejects.toBeInstanceOf(VersionControlValidationError);
309
309
  });
310
310
 
311
311
  // Admin-can-delete: when the user is in the `Admin` role per `roles.yaml`
@@ -315,7 +315,7 @@ describe('GitService.deleteBranch — authorship + remote delete', () => {
315
315
  function makeServiceWithAccess(ac: IAccessControl): GitService {
316
316
  return new GitService(
317
317
  stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
318
- new WorkflowHooks(),
318
+ new VersionControlHooks(),
319
319
  testKbContext(),
320
320
  undefined,
321
321
  ac,
@@ -391,7 +391,7 @@ describe('GitService — branch state for a checked delete', () => {
391
391
  function makeService(): GitService {
392
392
  return new GitService(
393
393
  stubWorkspaceService(workspaceId, path.join(root, workspaceId)),
394
- new WorkflowHooks(),
394
+ new VersionControlHooks(),
395
395
  testKbContext(),
396
396
  );
397
397
  }
@@ -6,9 +6,9 @@ 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
- import { WorkflowValidationError } from '../../../../shared/domain-errors.js';
11
+ import { VersionControlValidationError } from '../../../../shared/domain-errors.js';
12
12
 
13
13
  const execFileAsync = promisify(execFile);
14
14
  const PROCESS_MAP_DIR = 'knowledge-base';
@@ -108,7 +108,7 @@ describe('GitService.diffFileAtCommit', () => {
108
108
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
109
109
  const svc = new GitService(
110
110
  stubWorkspaceService(workspaceId, workspaceDir),
111
- new WorkflowHooks(),
111
+ new VersionControlHooks(),
112
112
  testKbContext(),
113
113
  );
114
114
 
@@ -125,7 +125,7 @@ describe('GitService.diffFileAtCommit', () => {
125
125
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
126
126
  const svc = new GitService(
127
127
  stubWorkspaceService(workspaceId, workspaceDir),
128
- new WorkflowHooks(),
128
+ new VersionControlHooks(),
129
129
  testKbContext(),
130
130
  );
131
131
 
@@ -141,7 +141,7 @@ describe('GitService.diffFileAtCommit', () => {
141
141
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
142
142
  const svc = new GitService(
143
143
  stubWorkspaceService(workspaceId, workspaceDir),
144
- new WorkflowHooks(),
144
+ new VersionControlHooks(),
145
145
  testKbContext(),
146
146
  );
147
147
 
@@ -157,7 +157,7 @@ describe('GitService.diffFileAtCommit', () => {
157
157
  const { workspaceDir } = await seedWorkspace(root, workspaceId);
158
158
  const svc = new GitService(
159
159
  stubWorkspaceService(workspaceId, workspaceDir),
160
- new WorkflowHooks(),
160
+ new VersionControlHooks(),
161
161
  testKbContext(),
162
162
  );
163
163
 
@@ -170,13 +170,13 @@ describe('GitService.diffFileAtCommit', () => {
170
170
  const { workspaceDir } = await seedWorkspace(root, workspaceId);
171
171
  const svc = new GitService(
172
172
  stubWorkspaceService(workspaceId, workspaceDir),
173
- new WorkflowHooks(),
173
+ new VersionControlHooks(),
174
174
  testKbContext(),
175
175
  );
176
176
 
177
177
  await expect(
178
178
  svc.diffFileAtCommit(workspaceId, '../etc/passwd', 'abcdef1'),
179
- ).rejects.toBeInstanceOf(WorkflowValidationError);
179
+ ).rejects.toBeInstanceOf(VersionControlValidationError);
180
180
  });
181
181
 
182
182
  // Regression: pathspec literal handling. `git show <sha> -- '[New] memo.md'`
@@ -187,7 +187,7 @@ describe('GitService.diffFileAtCommit', () => {
187
187
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
188
188
  const svc = new GitService(
189
189
  stubWorkspaceService(workspaceId, workspaceDir),
190
- new WorkflowHooks(),
190
+ new VersionControlHooks(),
191
191
  testKbContext(),
192
192
  );
193
193
  await runGit(repo, ['commit', '--allow-empty', '-m', 'init']);
@@ -6,9 +6,9 @@ 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
- import { WorkflowValidationError, BranchNameError } from '../../../../shared/domain-errors.js';
11
+ import { VersionControlValidationError, BranchNameError } from '../../../../shared/domain-errors.js';
12
12
  import { GitRunError, type IGitRunner } from '../../../../shared/git.contract.js';
13
13
  import { NodeGitRunner } from '../node-git-runner.js';
14
14
 
@@ -101,7 +101,7 @@ describe('GitService.diffFileBetweenBranches', () => {
101
101
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
102
102
  const svc = new GitService(
103
103
  stubWorkspaceService(workspaceId, workspaceDir),
104
- new WorkflowHooks(),
104
+ new VersionControlHooks(),
105
105
  testKbContext(),
106
106
  );
107
107
 
@@ -121,7 +121,7 @@ describe('GitService.diffFileBetweenBranches', () => {
121
121
 
122
122
  it('asks the caller\'s verdict at the two commits served, before the path is described at either', async () => {
123
123
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
124
- const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext());
124
+ const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new VersionControlHooks(), testKbContext());
125
125
  await commitFile(repo, 'Knowledge/Foo.md', 'line one\n', 'base');
126
126
  await commitFile(repo, 'Docs/a.md', 'a\n', 'a folder');
127
127
  const base = (await execFileAsync('git', ['rev-parse', 'HEAD'], { cwd: repo })).stdout.trim();
@@ -141,7 +141,7 @@ describe('GitService.diffFileBetweenBranches', () => {
141
141
  // A folder the caller may not read is refused as unreadable, never as a folder.
142
142
  const refuse = async (s: unknown): Promise<void> => {
143
143
  asked.push(s);
144
- throw new WorkflowValidationError('not yours to read');
144
+ throw new VersionControlValidationError('not yours to read');
145
145
  };
146
146
  await expect(svc.diffFileBetweenBranches(workspaceId, 'Docs', 'current-company-state', 'alice/edit-foo', refuse)).rejects.toThrow(/not yours to read/);
147
147
  expect(asked).toEqual([sides, sides]);
@@ -165,7 +165,7 @@ describe('GitService.diffFileBetweenBranches', () => {
165
165
  return inner.run(cwd, args, opts as never);
166
166
  },
167
167
  } as unknown as IGitRunner;
168
- const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new WorkflowHooks(), testKbContext(), undefined, null, gitRunner);
168
+ const svc = new GitService(stubWorkspaceService(workspaceId, workspaceDir), new VersionControlHooks(), testKbContext(), undefined, null, gitRunner);
169
169
  const asked: unknown[] = [];
170
170
  const authorize = async (s: unknown): Promise<void> => { asked.push(s); };
171
171
  for (const f of [
@@ -186,7 +186,7 @@ describe('GitService.diffFileBetweenBranches', () => {
186
186
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
187
187
  const svc = new GitService(
188
188
  stubWorkspaceService(workspaceId, workspaceDir),
189
- new WorkflowHooks(),
189
+ new VersionControlHooks(),
190
190
  testKbContext(),
191
191
  );
192
192
 
@@ -208,7 +208,7 @@ describe('GitService.diffFileBetweenBranches', () => {
208
208
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
209
209
  const svc = new GitService(
210
210
  stubWorkspaceService(workspaceId, workspaceDir),
211
- new WorkflowHooks(),
211
+ new VersionControlHooks(),
212
212
  testKbContext(),
213
213
  );
214
214
 
@@ -230,7 +230,7 @@ describe('GitService.diffFileBetweenBranches', () => {
230
230
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
231
231
  const svc = new GitService(
232
232
  stubWorkspaceService(workspaceId, workspaceDir),
233
- new WorkflowHooks(),
233
+ new VersionControlHooks(),
234
234
  testKbContext(),
235
235
  );
236
236
 
@@ -272,7 +272,7 @@ describe('GitService.diffFileBetweenBranches', () => {
272
272
 
273
273
  const svc = new GitService(
274
274
  stubWorkspaceService(workspaceId, workspaceDir),
275
- new WorkflowHooks(),
275
+ new VersionControlHooks(),
276
276
  testKbContext(),
277
277
  );
278
278
 
@@ -297,7 +297,7 @@ describe('GitService.diffFileBetweenBranches', () => {
297
297
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
298
298
  const svc = new GitService(
299
299
  stubWorkspaceService(workspaceId, workspaceDir),
300
- new WorkflowHooks(),
300
+ new VersionControlHooks(),
301
301
  testKbContext(),
302
302
  );
303
303
 
@@ -322,7 +322,7 @@ describe('GitService.diffFileBetweenBranches', () => {
322
322
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
323
323
  const svc = new GitService(
324
324
  stubWorkspaceService(workspaceId, workspaceDir),
325
- new WorkflowHooks(),
325
+ new VersionControlHooks(),
326
326
  testKbContext(),
327
327
  );
328
328
 
@@ -347,7 +347,7 @@ describe('GitService.diffFileBetweenBranches', () => {
347
347
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
348
348
  const svc = new GitService(
349
349
  stubWorkspaceService(workspaceId, workspaceDir),
350
- new WorkflowHooks(),
350
+ new VersionControlHooks(),
351
351
  testKbContext(),
352
352
  );
353
353
 
@@ -370,7 +370,7 @@ describe('GitService.diffFileBetweenBranches', () => {
370
370
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
371
371
  const svc = new GitService(
372
372
  stubWorkspaceService(workspaceId, workspaceDir),
373
- new WorkflowHooks(),
373
+ new VersionControlHooks(),
374
374
  testKbContext(),
375
375
  );
376
376
 
@@ -392,7 +392,7 @@ describe('GitService.diffFileBetweenBranches', () => {
392
392
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
393
393
  const svc = new GitService(
394
394
  stubWorkspaceService(workspaceId, workspaceDir),
395
- new WorkflowHooks(),
395
+ new VersionControlHooks(),
396
396
  testKbContext(),
397
397
  );
398
398
 
@@ -417,7 +417,7 @@ describe('GitService.diffFileBetweenBranches', () => {
417
417
  const { workspaceDir } = await seedWorkspace(root, workspaceId);
418
418
  const svc = new GitService(
419
419
  stubWorkspaceService(workspaceId, workspaceDir),
420
- new WorkflowHooks(),
420
+ new VersionControlHooks(),
421
421
  testKbContext(),
422
422
  );
423
423
 
@@ -428,7 +428,7 @@ describe('GitService.diffFileBetweenBranches', () => {
428
428
  'current-company-state',
429
429
  'current-company-state',
430
430
  ),
431
- ).rejects.toBeInstanceOf(WorkflowValidationError);
431
+ ).rejects.toBeInstanceOf(VersionControlValidationError);
432
432
  });
433
433
 
434
434
  it('rejects an unknown branch', async () => {
@@ -436,7 +436,7 @@ describe('GitService.diffFileBetweenBranches', () => {
436
436
  await commitFile(repo, 'Knowledge/Foo.md', 'base\n', 'base');
437
437
  const svc = new GitService(
438
438
  stubWorkspaceService(workspaceId, workspaceDir),
439
- new WorkflowHooks(),
439
+ new VersionControlHooks(),
440
440
  testKbContext(),
441
441
  );
442
442
 
@@ -447,14 +447,14 @@ describe('GitService.diffFileBetweenBranches', () => {
447
447
  'current-company-state',
448
448
  'does-not-exist',
449
449
  ),
450
- ).rejects.toBeInstanceOf(WorkflowValidationError);
450
+ ).rejects.toBeInstanceOf(VersionControlValidationError);
451
451
  });
452
452
 
453
453
  it('rejects a path-traversal attempt', async () => {
454
454
  const { workspaceDir } = await seedWorkspace(root, workspaceId);
455
455
  const svc = new GitService(
456
456
  stubWorkspaceService(workspaceId, workspaceDir),
457
- new WorkflowHooks(),
457
+ new VersionControlHooks(),
458
458
  testKbContext(),
459
459
  );
460
460
 
@@ -465,14 +465,14 @@ describe('GitService.diffFileBetweenBranches', () => {
465
465
  'current-company-state',
466
466
  'target-company-state',
467
467
  ),
468
- ).rejects.toBeInstanceOf(WorkflowValidationError);
468
+ ).rejects.toBeInstanceOf(VersionControlValidationError);
469
469
  });
470
470
 
471
471
  it('rejects a branch name with shell metacharacters', async () => {
472
472
  const { workspaceDir } = await seedWorkspace(root, workspaceId);
473
473
  const svc = new GitService(
474
474
  stubWorkspaceService(workspaceId, workspaceDir),
475
- new WorkflowHooks(),
475
+ new VersionControlHooks(),
476
476
  testKbContext(),
477
477
  );
478
478
 
@@ -494,7 +494,7 @@ describe('GitService.diffFileBetweenBranches', () => {
494
494
  const { workspaceDir, repo } = await seedWorkspace(root, workspaceId);
495
495
  const svc = new GitService(
496
496
  stubWorkspaceService(workspaceId, workspaceDir),
497
- new WorkflowHooks(),
497
+ new VersionControlHooks(),
498
498
  testKbContext(),
499
499
  );
500
500
  await runGit(repo, ['commit', '--allow-empty', '-m', 'init']);