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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (827) hide show
  1. package/agent-guide/directory-structure.md +1 -1
  2. package/agent-guide/onboarding.md +111 -0
  3. package/agent-guide/start-here.md +1 -0
  4. package/agent-guide/tool-manuals.md +1 -0
  5. package/dist/core/catalog-cache-invalidation.d.ts +2 -2
  6. package/dist/core/catalog-cache-invalidation.d.ts.map +1 -1
  7. package/dist/core/compose-embed.d.ts +2 -2
  8. package/dist/core/compose-embed.d.ts.map +1 -1
  9. package/dist/core/compose-embed.js +1 -1
  10. package/dist/core/compose-embed.js.map +1 -1
  11. package/dist/core/core-ports.d.ts +19 -4
  12. package/dist/core/core-ports.d.ts.map +1 -1
  13. package/dist/core/core-ports.js.map +1 -1
  14. package/dist/core/create-core-server.d.ts.map +1 -1
  15. package/dist/core/create-core-server.js +26 -24
  16. package/dist/core/create-core-server.js.map +1 -1
  17. package/dist/core/create-core-services.d.ts +19 -13
  18. package/dist/core/create-core-services.d.ts.map +1 -1
  19. package/dist/core/create-core-services.js +68 -56
  20. package/dist/core/create-core-services.js.map +1 -1
  21. package/dist/core/lifecycle.d.ts +4 -4
  22. package/dist/core/lifecycle.d.ts.map +1 -1
  23. package/dist/core/lifecycle.js +5 -5
  24. package/dist/core/lifecycle.js.map +1 -1
  25. package/dist/core-config.d.ts +2 -2
  26. package/dist/core-config.js +3 -3
  27. package/dist/core-config.js.map +1 -1
  28. package/dist/index.d.ts +4 -4
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -3
  31. package/dist/index.js.map +1 -1
  32. package/dist/modules/access/access-control.service.js +1 -1
  33. package/dist/modules/access/access-control.service.js.map +1 -1
  34. package/dist/modules/access/access-declarations.d.ts +2 -2
  35. package/dist/modules/access/access-declarations.d.ts.map +1 -1
  36. package/dist/modules/access/access-declarations.js +2 -2
  37. package/dist/modules/access/access-declarations.js.map +1 -1
  38. package/dist/modules/access/access-mutation.service.d.ts +2 -2
  39. package/dist/modules/access/access-mutation.service.d.ts.map +1 -1
  40. package/dist/modules/access/access-mutation.service.js +2 -2
  41. package/dist/modules/access/access-mutation.service.js.map +1 -1
  42. package/dist/modules/access/access-requests.routes.d.ts +2 -2
  43. package/dist/modules/access/access-requests.routes.d.ts.map +1 -1
  44. package/dist/modules/access/access-requests.routes.js +5 -5
  45. package/dist/modules/access/access-requests.routes.js.map +1 -1
  46. package/dist/modules/access/access-requests.service.d.ts +2 -2
  47. package/dist/modules/access/access-requests.service.d.ts.map +1 -1
  48. package/dist/modules/access/access-requests.service.js +11 -11
  49. package/dist/modules/access/access-requests.service.js.map +1 -1
  50. package/dist/modules/access/access.routes.d.ts +2 -2
  51. package/dist/modules/access/access.routes.d.ts.map +1 -1
  52. package/dist/modules/access/access.routes.js +9 -9
  53. package/dist/modules/access/access.routes.js.map +1 -1
  54. package/dist/modules/access/admin-locked-commit.d.ts +5 -5
  55. package/dist/modules/access/admin-locked-commit.d.ts.map +1 -1
  56. package/dist/modules/access/admin-locked-commit.js +7 -7
  57. package/dist/modules/access/admin-locked-commit.js.map +1 -1
  58. package/dist/modules/access/admin-route-helpers.d.ts +1 -1
  59. package/dist/modules/access/admin-route-helpers.js +5 -5
  60. package/dist/modules/access/admin-route-helpers.js.map +1 -1
  61. package/dist/modules/access/change-read-gate.d.ts +1 -1
  62. package/dist/modules/access/change-read-gate.js +1 -1
  63. package/dist/modules/access/groups-admin.service.d.ts +7 -7
  64. package/dist/modules/access/groups-admin.service.d.ts.map +1 -1
  65. package/dist/modules/access/groups-admin.service.js +6 -6
  66. package/dist/modules/access/groups-admin.service.js.map +1 -1
  67. package/dist/modules/access/reference-scan.d.ts +1 -1
  68. package/dist/modules/access/roles-admin.service.d.ts +7 -7
  69. package/dist/modules/access/roles-admin.service.d.ts.map +1 -1
  70. package/dist/modules/access/roles-admin.service.js +8 -8
  71. package/dist/modules/access/roles-admin.service.js.map +1 -1
  72. package/dist/modules/access/synced-groups-committer.d.ts +4 -4
  73. package/dist/modules/access/synced-groups-committer.d.ts.map +1 -1
  74. package/dist/modules/access/synced-groups-committer.js +7 -7
  75. package/dist/modules/access/synced-groups-committer.js.map +1 -1
  76. package/dist/modules/access/user-access-removal.service.d.ts +6 -6
  77. package/dist/modules/access/user-access-removal.service.d.ts.map +1 -1
  78. package/dist/modules/access/user-access-removal.service.js +4 -4
  79. package/dist/modules/access/user-access-removal.service.js.map +1 -1
  80. package/dist/modules/access-model/access-errors.d.ts +4 -4
  81. package/dist/modules/access-model/access-errors.d.ts.map +1 -1
  82. package/dist/modules/access-model/access-errors.js +4 -4
  83. package/dist/modules/access-model/access-errors.js.map +1 -1
  84. package/dist/modules/access-model/access-grammar.d.ts +1 -1
  85. package/dist/modules/access-model/access-grammar.js +4 -4
  86. package/dist/modules/access-model/change-gate.d.ts +1 -1
  87. package/dist/modules/access-model/change-gate.js +1 -1
  88. package/dist/modules/access-model/roles-yaml-guard.d.ts +4 -4
  89. package/dist/modules/access-model/roles-yaml-guard.d.ts.map +1 -1
  90. package/dist/modules/access-model/roles-yaml-guard.js +4 -4
  91. package/dist/modules/access-model/roles-yaml-guard.js.map +1 -1
  92. package/dist/modules/agent-guide/agent-guide.d.ts +19 -14
  93. package/dist/modules/agent-guide/agent-guide.d.ts.map +1 -1
  94. package/dist/modules/agent-guide/agent-guide.js +42 -18
  95. package/dist/modules/agent-guide/agent-guide.js.map +1 -1
  96. package/dist/modules/agent-guide/guide-budget.d.ts +5 -2
  97. package/dist/modules/agent-guide/guide-budget.d.ts.map +1 -1
  98. package/dist/modules/agent-guide/guide-budget.js +6 -2
  99. package/dist/modules/agent-guide/guide-budget.js.map +1 -1
  100. package/dist/modules/agent-instructions/agent-instructions.routes.d.ts +12 -5
  101. package/dist/modules/agent-instructions/agent-instructions.routes.d.ts.map +1 -1
  102. package/dist/modules/agent-instructions/agent-instructions.routes.js +13 -6
  103. package/dist/modules/agent-instructions/agent-instructions.routes.js.map +1 -1
  104. package/dist/modules/agent-instructions/compose.d.ts +15 -8
  105. package/dist/modules/agent-instructions/compose.d.ts.map +1 -1
  106. package/dist/modules/agent-instructions/compose.js +24 -10
  107. package/dist/modules/agent-instructions/compose.js.map +1 -1
  108. package/dist/modules/agent-instructions/shared-file-rules.d.ts +14 -6
  109. package/dist/modules/agent-instructions/shared-file-rules.d.ts.map +1 -1
  110. package/dist/modules/agent-instructions/shared-file-rules.js +51 -11
  111. package/dist/modules/agent-instructions/shared-file-rules.js.map +1 -1
  112. package/dist/modules/auth/account-erasure.service.d.ts +36 -7
  113. package/dist/modules/auth/account-erasure.service.d.ts.map +1 -1
  114. package/dist/modules/auth/account-erasure.service.js +30 -10
  115. package/dist/modules/auth/account-erasure.service.js.map +1 -1
  116. package/dist/modules/auth/account-hooks.d.ts +20 -0
  117. package/dist/modules/auth/account-hooks.d.ts.map +1 -1
  118. package/dist/modules/auth/account-hooks.js +10 -0
  119. package/dist/modules/auth/account-hooks.js.map +1 -1
  120. package/dist/modules/auth/account-switch-lock.js +2 -2
  121. package/dist/modules/auth/account-switch-lock.js.map +1 -1
  122. package/dist/modules/auth/account.routes.d.ts +7 -2
  123. package/dist/modules/auth/account.routes.d.ts.map +1 -1
  124. package/dist/modules/auth/account.routes.js +23 -4
  125. package/dist/modules/auth/account.routes.js.map +1 -1
  126. package/dist/modules/auth/auth.service.d.ts +1 -1
  127. package/dist/modules/auth/auth.service.js +4 -4
  128. package/dist/modules/auth/auth.service.js.map +1 -1
  129. package/dist/modules/auth/index.d.ts +1 -0
  130. package/dist/modules/auth/index.d.ts.map +1 -1
  131. package/dist/modules/database/core-schema.js +2 -2
  132. package/dist/modules/database/core-schema.js.map +1 -1
  133. package/dist/modules/diff/diff.routes.d.ts +3 -3
  134. package/dist/modules/diff/diff.routes.d.ts.map +1 -1
  135. package/dist/modules/diff/diff.routes.js +7 -7
  136. package/dist/modules/diff/diff.routes.js.map +1 -1
  137. package/dist/modules/embed/embed.routes.js +1 -1
  138. package/dist/modules/embed/embed.routes.js.map +1 -1
  139. package/dist/modules/embed/embed.service.d.ts +4 -4
  140. package/dist/modules/embed/embed.service.d.ts.map +1 -1
  141. package/dist/modules/embed/embed.service.js +18 -18
  142. package/dist/modules/embed/embed.service.js.map +1 -1
  143. package/dist/modules/kb-fs/branch-name.js +8 -8
  144. package/dist/modules/kb-fs/branch-name.js.map +1 -1
  145. package/dist/modules/kb-fs/file-change-notifier.d.ts +2 -2
  146. package/dist/modules/kb-fs/locking-filesystem.d.ts +9 -9
  147. package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
  148. package/dist/modules/kb-fs/locking-filesystem.js +27 -27
  149. package/dist/modules/kb-fs/locking-filesystem.js.map +1 -1
  150. package/dist/modules/kb-fs/repo-path.js +5 -5
  151. package/dist/modules/kb-fs/repo-path.js.map +1 -1
  152. package/dist/modules/kb-fs/tmp-ref.d.ts +2 -2
  153. package/dist/modules/kb-fs/tmp-ref.d.ts.map +1 -1
  154. package/dist/modules/kb-fs/tmp-ref.js +2 -2
  155. package/dist/modules/kb-fs/tmp-ref.js.map +1 -1
  156. package/dist/modules/kb-sync/index.d.ts +1 -1
  157. package/dist/modules/kb-sync/index.d.ts.map +1 -1
  158. package/dist/modules/kb-sync/kb-sync.interface.d.ts +3 -3
  159. package/dist/modules/kb-sync/kb-sync.interface.d.ts.map +1 -1
  160. package/dist/modules/kb-sync/kb-sync.service.d.ts +3 -3
  161. package/dist/modules/kb-sync/kb-sync.service.d.ts.map +1 -1
  162. package/dist/modules/kb-sync/kb-sync.service.js +10 -10
  163. package/dist/modules/kb-sync/kb-sync.service.js.map +1 -1
  164. package/dist/modules/mcp/mcp.service.d.ts +11 -4
  165. package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
  166. package/dist/modules/mcp/mcp.service.js +75 -19
  167. package/dist/modules/mcp/mcp.service.js.map +1 -1
  168. package/dist/modules/onboarding/onboarding.contract.d.ts +1 -1
  169. package/dist/modules/onboarding/onboarding.routes.js +2 -2
  170. package/dist/modules/onboarding/onboarding.routes.js.map +1 -1
  171. package/dist/modules/onboarding/starter-pack.service.d.ts +4 -4
  172. package/dist/modules/onboarding/starter-pack.service.d.ts.map +1 -1
  173. package/dist/modules/onboarding/starter-pack.service.js +4 -4
  174. package/dist/modules/onboarding/starter-pack.service.js.map +1 -1
  175. package/dist/modules/plugins/join-request-jobs.service.d.ts +2 -2
  176. package/dist/modules/plugins/join-request-jobs.service.d.ts.map +1 -1
  177. package/dist/modules/plugins/join-request-jobs.service.js +7 -7
  178. package/dist/modules/plugins/join-request-jobs.service.js.map +1 -1
  179. package/dist/modules/plugins/join-requests.service.d.ts +3 -3
  180. package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
  181. package/dist/modules/plugins/join-requests.service.js +5 -5
  182. package/dist/modules/plugins/join-requests.service.js.map +1 -1
  183. package/dist/modules/plugins/plugin-rename.service.js +1 -1
  184. package/dist/modules/plugins/plugin-rename.service.js.map +1 -1
  185. package/dist/modules/plugins/plugins.routes.d.ts +2 -2
  186. package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
  187. package/dist/modules/plugins/plugins.routes.js +8 -8
  188. package/dist/modules/plugins/plugins.routes.js.map +1 -1
  189. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts +77 -2
  190. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts.map +1 -1
  191. package/dist/modules/secrets-vault/db-secrets-vault.service.js +479 -53
  192. package/dist/modules/secrets-vault/db-secrets-vault.service.js.map +1 -1
  193. package/dist/modules/secrets-vault/index.d.ts +2 -1
  194. package/dist/modules/secrets-vault/index.d.ts.map +1 -1
  195. package/dist/modules/secrets-vault/index.js +1 -0
  196. package/dist/modules/secrets-vault/index.js.map +1 -1
  197. package/dist/modules/secrets-vault/managed-sign-in-erasure.d.ts +36 -0
  198. package/dist/modules/secrets-vault/managed-sign-in-erasure.d.ts.map +1 -0
  199. package/dist/modules/secrets-vault/managed-sign-in-erasure.js +37 -0
  200. package/dist/modules/secrets-vault/managed-sign-in-erasure.js.map +1 -0
  201. package/dist/modules/secrets-vault/secrets-vault.contract.d.ts +152 -0
  202. package/dist/modules/secrets-vault/secrets-vault.contract.d.ts.map +1 -1
  203. package/dist/modules/secrets-vault/secrets-vault.contract.js.map +1 -1
  204. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +7 -1
  205. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -1
  206. package/dist/modules/secrets-vault/secrets-vault.routes.js +125 -10
  207. package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
  208. package/dist/modules/settings/connection-check.js +1 -1
  209. package/dist/modules/settings/connection-check.js.map +1 -1
  210. package/dist/modules/settings/deployment-settings.service.js +1 -1
  211. package/dist/modules/settings/git-root-folders.js +1 -1
  212. package/dist/modules/settings/git-root-folders.js.map +1 -1
  213. package/dist/modules/settings/setup.routes.d.ts +1 -1
  214. package/dist/modules/settings/setup.routes.js +1 -1
  215. package/dist/modules/skills/pending-skills.service.d.ts +3 -3
  216. package/dist/modules/skills/pending-skills.service.d.ts.map +1 -1
  217. package/dist/modules/skills/pending-skills.service.js +4 -4
  218. package/dist/modules/skills/pending-skills.service.js.map +1 -1
  219. package/dist/modules/skills/skill-access-requests.routes.d.ts +2 -2
  220. package/dist/modules/skills/skill-access-requests.routes.d.ts.map +1 -1
  221. package/dist/modules/skills/skill-access-requests.routes.js +5 -5
  222. package/dist/modules/skills/skill-access-requests.routes.js.map +1 -1
  223. package/dist/modules/tool-helpers/tool-context.d.ts +4 -4
  224. package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
  225. package/dist/modules/tool-helpers/tool-context.js +2 -2
  226. package/dist/modules/tool-helpers/tool-context.js.map +1 -1
  227. package/dist/modules/tool-helpers/tool-handler.js +2 -2
  228. package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
  229. package/dist/modules/tool-helpers/tool.contract.d.ts +4 -4
  230. package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
  231. package/dist/modules/tool-manuals/mcp-server-edit.service.js +1 -1
  232. package/dist/modules/tool-manuals/mcp-server-edit.service.js.map +1 -1
  233. package/dist/modules/tool-manuals/pending-tools.service.d.ts +3 -3
  234. package/dist/modules/tool-manuals/pending-tools.service.d.ts.map +1 -1
  235. package/dist/modules/tool-manuals/pending-tools.service.js +4 -4
  236. package/dist/modules/tool-manuals/pending-tools.service.js.map +1 -1
  237. package/dist/modules/tool-manuals/tool-delete.service.js +1 -1
  238. package/dist/modules/tool-manuals/tool-delete.service.js.map +1 -1
  239. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts +43 -3
  240. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts.map +1 -1
  241. package/dist/modules/tool-manuals/tool-manuals.service.d.ts +6 -0
  242. package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
  243. package/dist/modules/tool-manuals/tool-manuals.service.js +51 -5
  244. package/dist/modules/tool-manuals/tool-manuals.service.js.map +1 -1
  245. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts +3 -0
  246. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
  247. package/dist/modules/tool-manuals/tool-manuals.tools.js +36 -15
  248. package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
  249. package/dist/modules/version-control/agent-tools/change-request-read-shape.d.ts.map +1 -0
  250. package/dist/modules/version-control/agent-tools/change-request-read-shape.js.map +1 -0
  251. package/dist/modules/version-control/agent-tools/change-request-read.tools.d.ts.map +1 -0
  252. package/dist/modules/{workflow → version-control}/agent-tools/change-request-read.tools.js +2 -2
  253. package/dist/modules/version-control/agent-tools/change-request-read.tools.js.map +1 -0
  254. package/dist/modules/version-control/agent-tools/change-request-summary.d.ts.map +1 -0
  255. package/dist/modules/version-control/agent-tools/change-request-summary.js.map +1 -0
  256. package/dist/modules/{workflow/agent-tools/workflow.tools.d.ts → version-control/agent-tools/version-control.tools.d.ts} +4 -4
  257. package/dist/modules/version-control/agent-tools/version-control.tools.d.ts.map +1 -0
  258. package/dist/modules/{workflow/agent-tools/workflow.tools.js → version-control/agent-tools/version-control.tools.js} +31 -31
  259. package/dist/modules/version-control/agent-tools/version-control.tools.js.map +1 -0
  260. package/dist/modules/{workflow → version-control}/change-request-hooks.d.ts +1 -1
  261. package/dist/modules/version-control/change-request-hooks.d.ts.map +1 -0
  262. package/dist/modules/version-control/change-request-hooks.js.map +1 -0
  263. package/dist/modules/version-control/change-request-review/approval-lock.d.ts.map +1 -0
  264. package/dist/modules/version-control/change-request-review/approval-lock.js.map +1 -0
  265. package/dist/modules/{workflow/review-workflow/review-workflow.interface.d.ts → version-control/change-request-review/change-request-review.interface.d.ts} +2 -2
  266. package/dist/modules/version-control/change-request-review/change-request-review.interface.d.ts.map +1 -0
  267. package/dist/modules/version-control/change-request-review/change-request-review.interface.js +2 -0
  268. package/dist/modules/version-control/change-request-review/change-request-review.interface.js.map +1 -0
  269. package/dist/modules/{workflow/review-workflow/review-workflow.service.d.ts → version-control/change-request-review/change-request-review.service.d.ts} +3 -3
  270. package/dist/modules/version-control/change-request-review/change-request-review.service.d.ts.map +1 -0
  271. package/dist/modules/{workflow/review-workflow/review-workflow.service.js → version-control/change-request-review/change-request-review.service.js} +26 -26
  272. package/dist/modules/version-control/change-request-review/change-request-review.service.js.map +1 -0
  273. package/dist/modules/{workflow → version-control}/event-bus.d.ts +8 -8
  274. package/dist/modules/version-control/event-bus.d.ts.map +1 -0
  275. package/dist/modules/{workflow → version-control}/event-bus.js +4 -4
  276. package/dist/modules/version-control/event-bus.js.map +1 -0
  277. package/dist/modules/{workflow → version-control}/events-delivery.d.ts +4 -4
  278. package/dist/modules/version-control/events-delivery.d.ts.map +1 -0
  279. package/dist/modules/version-control/events-delivery.js.map +1 -0
  280. package/dist/modules/{workflow → version-control}/events.routes.d.ts +4 -4
  281. package/dist/modules/version-control/events.routes.d.ts.map +1 -0
  282. package/dist/modules/version-control/events.routes.js.map +1 -0
  283. package/dist/modules/{workflow → version-control}/file-lock.service.d.ts +2 -2
  284. package/dist/modules/version-control/file-lock.service.d.ts.map +1 -0
  285. package/dist/modules/{workflow → version-control}/file-lock.service.js +6 -6
  286. package/dist/modules/version-control/file-lock.service.js.map +1 -0
  287. package/dist/modules/version-control/git/change-request-link.d.ts.map +1 -0
  288. package/dist/modules/version-control/git/change-request-link.js.map +1 -0
  289. package/dist/modules/version-control/git/git-version.d.ts.map +1 -0
  290. package/dist/modules/version-control/git/git-version.js.map +1 -0
  291. package/dist/modules/{workflow → version-control}/git/git.service.d.ts +8 -8
  292. package/dist/modules/version-control/git/git.service.d.ts.map +1 -0
  293. package/dist/modules/{workflow → version-control}/git/git.service.js +53 -53
  294. package/dist/modules/version-control/git/git.service.js.map +1 -0
  295. package/dist/modules/version-control/git/merge-commit.d.ts.map +1 -0
  296. package/dist/modules/version-control/git/merge-commit.js.map +1 -0
  297. package/dist/modules/version-control/git/node-git-runner.d.ts.map +1 -0
  298. package/dist/modules/{workflow → version-control}/git/node-git-runner.js +1 -1
  299. package/dist/modules/version-control/git/node-git-runner.js.map +1 -0
  300. package/dist/modules/{workflow → version-control}/git/pull-request.service.d.ts +5 -5
  301. package/dist/modules/version-control/git/pull-request.service.d.ts.map +1 -0
  302. package/dist/modules/{workflow → version-control}/git/pull-request.service.js +10 -10
  303. package/dist/modules/version-control/git/pull-request.service.js.map +1 -0
  304. package/dist/modules/{workflow → version-control}/index.d.ts +6 -5
  305. package/dist/modules/version-control/index.d.ts.map +1 -0
  306. package/dist/modules/{workflow → version-control}/index.js +3 -2
  307. package/dist/modules/version-control/index.js.map +1 -0
  308. package/dist/modules/{workflow → version-control}/pending-commits.service.d.ts +2 -2
  309. package/dist/modules/version-control/pending-commits.service.d.ts.map +1 -0
  310. package/dist/modules/{workflow → version-control}/pending-commits.service.js +2 -2
  311. package/dist/modules/version-control/pending-commits.service.js.map +1 -0
  312. package/dist/modules/{workflow → version-control}/pending-commits.worker.d.ts +5 -5
  313. package/dist/modules/version-control/pending-commits.worker.d.ts.map +1 -0
  314. package/dist/modules/{workflow → version-control}/pending-commits.worker.js +3 -3
  315. package/dist/modules/version-control/pending-commits.worker.js.map +1 -0
  316. package/dist/modules/{workflow → version-control}/read-on-branch.d.ts +2 -2
  317. package/dist/modules/version-control/read-on-branch.d.ts.map +1 -0
  318. package/dist/modules/{workflow → version-control}/read-on-branch.js +2 -2
  319. package/dist/modules/version-control/read-on-branch.js.map +1 -0
  320. package/dist/modules/version-control/recovery-bot.d.ts.map +1 -0
  321. package/dist/modules/version-control/recovery-bot.js.map +1 -0
  322. package/dist/modules/version-control/sanitize-error.d.ts.map +1 -0
  323. package/dist/modules/version-control/sanitize-error.js.map +1 -0
  324. package/dist/modules/{workflow/workflow-hooks.d.ts → version-control/version-control-hooks.d.ts} +4 -4
  325. package/dist/modules/version-control/version-control-hooks.d.ts.map +1 -0
  326. package/dist/modules/{workflow/workflow-hooks.js → version-control/version-control-hooks.js} +3 -3
  327. package/dist/modules/version-control/version-control-hooks.js.map +1 -0
  328. package/dist/modules/{workflow/workflow.routes.d.ts → version-control/version-control.routes.d.ts} +6 -5
  329. package/dist/modules/version-control/version-control.routes.d.ts.map +1 -0
  330. package/dist/modules/{workflow/workflow.routes.js → version-control/version-control.routes.js} +61 -60
  331. package/dist/modules/version-control/version-control.routes.js.map +1 -0
  332. package/dist/modules/{workflow/workflow.service.d.ts → version-control/version-control.service.d.ts} +26 -31
  333. package/dist/modules/version-control/version-control.service.d.ts.map +1 -0
  334. package/dist/modules/{workflow/workflow.service.js → version-control/version-control.service.js} +89 -94
  335. package/dist/modules/version-control/version-control.service.js.map +1 -0
  336. package/dist/modules/workspace/agent-access.gate.d.ts +5 -5
  337. package/dist/modules/workspace/agent-access.gate.d.ts.map +1 -1
  338. package/dist/modules/workspace/agent-access.gate.js +1 -1
  339. package/dist/modules/workspace/git-internals.middleware.d.ts +1 -1
  340. package/dist/modules/workspace/git-internals.middleware.js +2 -2
  341. package/dist/modules/workspace/kb-repository.js +1 -1
  342. package/dist/modules/workspace/kb-repository.js.map +1 -1
  343. package/dist/modules/workspace/startup/kb-git.d.ts +1 -1
  344. package/dist/modules/workspace/startup/kb-git.d.ts.map +1 -1
  345. package/dist/modules/workspace/startup/kb-git.js +1 -1
  346. package/dist/modules/workspace/startup/kb-git.js.map +1 -1
  347. package/dist/modules/workspace/startup/steps/seed-tree.d.ts +2 -2
  348. package/dist/modules/workspace/startup/steps/seed-tree.d.ts.map +1 -1
  349. package/dist/modules/workspace/startup/steps/seed-tree.js +1 -1
  350. package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
  351. package/dist/modules/workspace/startup/steps/template-files.step.d.ts +2 -2
  352. package/dist/modules/workspace/startup/steps/template-files.step.d.ts.map +1 -1
  353. package/dist/modules/workspace/startup/steps/template-files.step.js +2 -2
  354. package/dist/modules/workspace/startup/steps/template-files.step.js.map +1 -1
  355. package/dist/modules/workspace/startup/steps/template-source.d.ts +17 -4
  356. package/dist/modules/workspace/startup/steps/template-source.d.ts.map +1 -1
  357. package/dist/modules/workspace/startup/steps/template-source.js +8 -5
  358. package/dist/modules/workspace/startup/steps/template-source.js.map +1 -1
  359. package/dist/modules/workspace/workspace-tmp.js +3 -3
  360. package/dist/modules/workspace/workspace-tmp.js.map +1 -1
  361. package/dist/modules/workspace/workspace.routes.d.ts +4 -4
  362. package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
  363. package/dist/modules/workspace/workspace.routes.js +22 -22
  364. package/dist/modules/workspace/workspace.routes.js.map +1 -1
  365. package/dist/modules/workspace/workspace.service.d.ts +6 -6
  366. package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
  367. package/dist/modules/workspace/workspace.service.js +11 -11
  368. package/dist/modules/workspace/workspace.service.js.map +1 -1
  369. package/dist/modules/workspace/workspace.tools.d.ts +2 -1
  370. package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
  371. package/dist/modules/workspace/workspace.tools.js +15 -10
  372. package/dist/modules/workspace/workspace.tools.js.map +1 -1
  373. package/dist/shared/canonical-file-identity.d.ts +2 -2
  374. package/dist/shared/canonical-file-identity.js +5 -5
  375. package/dist/shared/canonical-file-identity.js.map +1 -1
  376. package/dist/shared/domain-errors.d.ts +39 -39
  377. package/dist/shared/domain-errors.d.ts.map +1 -1
  378. package/dist/shared/domain-errors.js +44 -44
  379. package/dist/shared/domain-errors.js.map +1 -1
  380. package/dist/shared/git.contract.d.ts +1 -1
  381. package/dist/shared/git.contract.js +1 -1
  382. package/dist/shared/http-errors.d.ts +3 -3
  383. package/dist/shared/http-errors.d.ts.map +1 -1
  384. package/dist/shared/http-errors.js +1 -1
  385. package/dist/shared/http-errors.js.map +1 -1
  386. package/dist/shared/pending-proposals.d.ts +3 -3
  387. package/dist/shared/pending-proposals.d.ts.map +1 -1
  388. package/dist/shared/pending-proposals.js +2 -2
  389. package/dist/shared/pending-proposals.js.map +1 -1
  390. package/dist/tenancy/static-tenant-source.js +1 -1
  391. package/dist/tenancy/static-tenant-source.js.map +1 -1
  392. package/migrations/0012_agent_audit.sql +40 -40
  393. package/migrations/0013_agent_identity_and_key_soft_delete.sql +29 -29
  394. package/migrations/meta/0012_snapshot.json +2246 -2246
  395. package/migrations/meta/0013_snapshot.json +2258 -2258
  396. package/package.json +4 -4
  397. package/src/__tests__/account-admin.ts +27 -0
  398. package/src/__tests__/hexis-catalog.ts +4 -4
  399. package/src/__tests__/kb-context.ts +30 -30
  400. package/src/__tests__/kb-layout-config.test.ts +21 -0
  401. package/src/__tests__/open-change-gate.ts +1 -1
  402. package/src/__tests__/tool-handler.ts +15 -0
  403. package/src/__tests__/tool-wiring.ts +10 -4
  404. package/src/__tests__/workspace-service.ts +1 -1
  405. package/src/core/__tests__/catalog-cache-invalidation.test.ts +3 -3
  406. package/src/core/__tests__/compose-embed.test.ts +1 -1
  407. package/src/core/__tests__/damaged-document.tools.test.ts +3 -3
  408. package/src/core/__tests__/erasure-slices-wired-once.test.ts +46 -0
  409. package/src/core/__tests__/gated-boot.test.ts +2 -2
  410. package/src/core/__tests__/lifecycle.test.ts +9 -9
  411. package/src/core/catalog-cache-invalidation.ts +2 -2
  412. package/src/core/compose-embed.ts +3 -3
  413. package/src/core/core-ports.ts +19 -4
  414. package/src/core/create-core-server.ts +39 -25
  415. package/src/core/create-core-services.ts +79 -63
  416. package/src/core/lifecycle.ts +9 -9
  417. package/src/core-config.ts +3 -3
  418. package/src/index.ts +5 -5
  419. package/src/modules/access/__tests__/access-control.admin-root-floor.test.ts +4 -4
  420. package/src/modules/access/__tests__/access-own-read-grant.test.ts +14 -14
  421. package/src/modules/access/__tests__/access-requests.routes.test.ts +20 -20
  422. package/src/modules/access/__tests__/access.routes.admins.test.ts +4 -4
  423. package/src/modules/access/__tests__/access.routes.batch.test.ts +4 -4
  424. package/src/modules/access/__tests__/access.routes.folder-governs.test.ts +6 -6
  425. package/src/modules/access/__tests__/access.routes.group-grant.test.ts +6 -6
  426. package/src/modules/access/__tests__/access.routes.overrides.test.ts +5 -5
  427. package/src/modules/access/__tests__/access.routes.proposal-branch.test.ts +6 -6
  428. package/src/modules/access/__tests__/access.routes.prospective.test.ts +3 -3
  429. package/src/modules/access/__tests__/access.routes.revoke.test.ts +6 -6
  430. package/src/modules/access/__tests__/access.routes.unknown-email.test.ts +6 -6
  431. package/src/modules/access/__tests__/admin-locked-commit.test.ts +6 -6
  432. package/src/modules/access/__tests__/admin-route-helpers.test.ts +5 -5
  433. package/src/modules/access/__tests__/groups-admin.service.test.ts +27 -27
  434. package/src/modules/access/__tests__/roles-admin.security.test.ts +14 -13
  435. package/src/modules/access/__tests__/roles-admin.service.test.ts +27 -27
  436. package/src/modules/access/__tests__/roles-capabilities.test.ts +19 -19
  437. package/src/modules/access/__tests__/roles.routes.test.ts +6 -6
  438. package/src/modules/access/__tests__/synced-groups-committer.test.ts +13 -13
  439. package/src/modules/access/__tests__/user-access-removal.service.test.ts +29 -29
  440. package/src/modules/access/access-control.service.ts +1 -1
  441. package/src/modules/access/access-declarations.ts +2 -2
  442. package/src/modules/access/access-mutation.service.ts +2 -2
  443. package/src/modules/access/access-requests.routes.ts +7 -7
  444. package/src/modules/access/access-requests.service.ts +13 -13
  445. package/src/modules/access/access.routes.ts +11 -11
  446. package/src/modules/access/admin-locked-commit.ts +11 -11
  447. package/src/modules/access/admin-route-helpers.ts +5 -5
  448. package/src/modules/access/change-read-gate.ts +1 -1
  449. package/src/modules/access/groups-admin.service.ts +7 -7
  450. package/src/modules/access/reference-scan.ts +1 -1
  451. package/src/modules/access/roles-admin.service.ts +9 -9
  452. package/src/modules/access/synced-groups-committer.ts +11 -11
  453. package/src/modules/access/user-access-removal.service.ts +7 -7
  454. package/src/modules/access-model/__tests__/access-grammar.test.ts +2 -2
  455. package/src/modules/access-model/access-errors.ts +4 -4
  456. package/src/modules/access-model/access-grammar.ts +4 -4
  457. package/src/modules/access-model/change-gate.ts +1 -1
  458. package/src/modules/access-model/roles-yaml-guard.ts +4 -4
  459. package/src/modules/agent-guide/__tests__/agent-guide.test.ts +19 -4
  460. package/src/modules/agent-guide/__tests__/agent-guide.tools.test.ts +1 -1
  461. package/src/modules/agent-guide/__tests__/guide-matches-code.test.ts +2 -2
  462. package/src/modules/agent-guide/agent-guide.ts +48 -22
  463. package/src/modules/agent-guide/guide-budget.ts +6 -2
  464. package/src/modules/agent-instructions/__tests__/agent-instructions.route.test.ts +4 -5
  465. package/src/modules/agent-instructions/__tests__/compose.test.ts +1 -1
  466. package/src/modules/agent-instructions/__tests__/shared-file-rules.test.ts +113 -7
  467. package/src/modules/agent-instructions/agent-instructions.routes.ts +12 -5
  468. package/src/modules/agent-instructions/compose.ts +24 -9
  469. package/src/modules/agent-instructions/shared-file-rules.ts +53 -11
  470. package/src/modules/agent-scope/__tests__/agent-surfaces.connect-as.test.ts +1 -1
  471. package/src/modules/audit/__tests__/agent-rest-audit.middleware.test.ts +113 -113
  472. package/src/modules/audit/__tests__/event-classifier.test.ts +121 -121
  473. package/src/modules/audit/event-classifier.ts +155 -155
  474. package/src/modules/auth/__tests__/account-deactivation.test.ts +1 -1
  475. package/src/modules/auth/__tests__/account-erasure.approval-gate.test.ts +4 -4
  476. package/src/modules/auth/__tests__/account-erasure.participants.test.ts +56 -0
  477. package/src/modules/auth/__tests__/account-switch-lock.pg.test.ts +2 -2
  478. package/src/modules/auth/__tests__/account-switch-lock.test.ts +2 -2
  479. package/src/modules/auth/__tests__/account.routes.test.ts +73 -11
  480. package/src/modules/auth/__tests__/auth.service.test.ts +1 -1
  481. package/src/modules/auth/account-erasure.service.ts +27 -9
  482. package/src/modules/auth/account-hooks.ts +34 -0
  483. package/src/modules/auth/account-switch-lock.ts +2 -2
  484. package/src/modules/auth/account.routes.ts +23 -5
  485. package/src/modules/auth/auth.service.ts +4 -4
  486. package/src/modules/auth/index.ts +1 -0
  487. package/src/modules/database/__tests__/advisory-lock.test.ts +169 -169
  488. package/src/modules/database/__tests__/migrations-unqualified.test.ts +32 -32
  489. package/src/modules/database/core-schema.ts +2 -2
  490. package/src/modules/diff/__tests__/diff.routes.read-gate.test.ts +2 -2
  491. package/src/modules/diff/__tests__/diff.routes.rejectPathsLocked.test.ts +12 -12
  492. package/src/modules/diff/diff.routes.ts +8 -8
  493. package/src/modules/embed/__tests__/embed.service.lock.test.ts +7 -7
  494. package/src/modules/embed/__tests__/embed.service.test.ts +42 -42
  495. package/src/modules/embed/__tests__/embed.tools.test.ts +1 -1
  496. package/src/modules/embed/embed.routes.ts +1 -1
  497. package/src/modules/embed/embed.service.ts +17 -17
  498. package/src/modules/kb-fs/__tests__/branch-name.test.ts +2 -2
  499. package/src/modules/kb-fs/__tests__/locking-filesystem.test.ts +260 -260
  500. package/src/modules/kb-fs/__tests__/move-with-edits.test.ts +34 -34
  501. package/src/modules/kb-fs/__tests__/repo-path.test.ts +8 -8
  502. package/src/modules/kb-fs/branch-name.ts +8 -8
  503. package/src/modules/kb-fs/file-change-notifier.ts +2 -2
  504. package/src/modules/kb-fs/locking-filesystem.ts +30 -30
  505. package/src/modules/kb-fs/repo-path.ts +5 -5
  506. package/src/modules/kb-fs/tmp-ref.ts +3 -3
  507. package/src/modules/kb-sync/__tests__/kb-sync.service.test.ts +36 -36
  508. package/src/modules/kb-sync/index.ts +1 -1
  509. package/src/modules/kb-sync/kb-sync.interface.ts +3 -3
  510. package/src/modules/kb-sync/kb-sync.service.ts +9 -9
  511. package/src/modules/marketplace/__tests__/github-facade.test.ts +1 -1
  512. package/src/modules/marketplace/__tests__/marketplace-git.test.ts +1 -1
  513. package/src/modules/mcp/__tests__/mcp-proxy-helpers.test.ts +4 -2
  514. package/src/modules/mcp/__tests__/mcp.e2e.test.ts +69 -8
  515. package/src/modules/mcp/__tests__/mcp.service.test.ts +91 -13
  516. package/src/modules/mcp/__tests__/read-only-hint.pg.test.ts +194 -0
  517. package/src/modules/mcp/mcp.service.ts +89 -28
  518. package/src/modules/onboarding/__tests__/starter-pack.service.test.ts +55 -55
  519. package/src/modules/onboarding/onboarding.contract.ts +1 -1
  520. package/src/modules/onboarding/onboarding.routes.ts +2 -2
  521. package/src/modules/onboarding/starter-pack.service.ts +6 -6
  522. package/src/modules/plugins/__tests__/bundle-dialect.e2e.test.ts +1 -1
  523. package/src/modules/plugins/__tests__/compile-marketplace.test.ts +1 -1
  524. package/src/modules/plugins/__tests__/join-request-jobs.service.test.ts +43 -43
  525. package/src/modules/plugins/__tests__/join-requests.service.test.ts +19 -19
  526. package/src/modules/plugins/__tests__/join-requests.settlement.test.ts +26 -26
  527. package/src/modules/plugins/__tests__/plugins.routes.test.ts +25 -25
  528. package/src/modules/plugins/join-request-jobs.service.ts +10 -10
  529. package/src/modules/plugins/join-requests.service.ts +4 -4
  530. package/src/modules/plugins/plugin-rename.service.ts +1 -1
  531. package/src/modules/plugins/plugins.routes.ts +9 -9
  532. package/src/modules/secrets-vault/__tests__/db-secrets-vault.managed.test.ts +773 -0
  533. package/src/modules/secrets-vault/__tests__/db-secrets-vault.oauth.test.ts +28 -1
  534. package/src/modules/secrets-vault/__tests__/managed-sign-in.route.test.ts +351 -0
  535. package/src/modules/secrets-vault/db-secrets-vault.service.ts +562 -95
  536. package/src/modules/secrets-vault/index.ts +7 -0
  537. package/src/modules/secrets-vault/managed-sign-in-erasure.ts +41 -0
  538. package/src/modules/secrets-vault/secrets-variable-loader.ts +134 -134
  539. package/src/modules/secrets-vault/secrets-vault.contract.ts +152 -0
  540. package/src/modules/secrets-vault/secrets-vault.routes.ts +157 -10
  541. package/src/modules/settings/__tests__/repository-source.test.ts +1 -1
  542. package/src/modules/settings/__tests__/setup.routes.layout-phase.test.ts +1 -1
  543. package/src/modules/settings/__tests__/setup.routes.managed-phase.test.ts +1 -1
  544. package/src/modules/settings/connection-check.ts +1 -1
  545. package/src/modules/settings/deployment-settings.service.ts +1 -1
  546. package/src/modules/settings/git-root-folders.ts +1 -1
  547. package/src/modules/settings/setup.routes.ts +1 -1
  548. package/src/modules/skills/__tests__/allowed-tools-warn.tools.test.ts +3 -3
  549. package/src/modules/skills/__tests__/branch-skills.tools.test.ts +1 -1
  550. package/src/modules/skills/__tests__/pending-skills.service.test.ts +8 -8
  551. package/src/modules/skills/__tests__/skill-access-requests.routes.test.ts +18 -18
  552. package/src/modules/skills/__tests__/skills.service.test.ts +3 -3
  553. package/src/modules/skills/pending-skills.service.ts +3 -3
  554. package/src/modules/skills/skill-access-requests.routes.ts +7 -7
  555. package/src/modules/tool-helpers/__tests__/agent-roles-write.test.ts +4 -4
  556. package/src/modules/tool-helpers/__tests__/branch-declaration.test.ts +3 -3
  557. package/src/modules/tool-helpers/__tests__/can-write.tools.test.ts +3 -3
  558. package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +4 -4
  559. package/src/modules/tool-helpers/__tests__/tools-surface.test.ts +3 -3
  560. package/src/modules/tool-helpers/__tests__/validate-token.test.ts +1 -1
  561. package/src/modules/tool-helpers/tool-context.ts +6 -6
  562. package/src/modules/tool-helpers/tool-handler.ts +2 -2
  563. package/src/modules/tool-helpers/tool.contract.ts +4 -4
  564. package/src/modules/tool-manuals/__tests__/pending-tools.service.test.ts +9 -9
  565. package/src/modules/tool-manuals/__tests__/tool-manuals.managed-sign-in.test.ts +89 -0
  566. package/src/modules/tool-manuals/__tests__/tool-manuals.restart.test.ts +1 -1
  567. package/src/modules/tool-manuals/__tests__/tool-manuals.tools.test.ts +36 -1
  568. package/src/modules/tool-manuals/mcp-server-edit.service.ts +1 -1
  569. package/src/modules/tool-manuals/pending-tools.service.ts +3 -3
  570. package/src/modules/tool-manuals/tool-delete.service.ts +1 -1
  571. package/src/modules/tool-manuals/tool-manuals.contract.ts +41 -3
  572. package/src/modules/tool-manuals/tool-manuals.service.ts +53 -5
  573. package/src/modules/tool-manuals/tool-manuals.tools.ts +41 -15
  574. package/src/modules/tool-registry/__tests__/own-tool-schemas.test.ts +4 -4
  575. package/src/modules/tool-registry/__tests__/read-only-hints.test.ts +3 -3
  576. package/src/modules/tool-registry/__tests__/tool-description-length.test.ts +6 -6
  577. package/src/modules/{workflow → version-control}/__tests__/apply-failure.test.ts +54 -54
  578. package/src/modules/{workflow → version-control}/__tests__/event-bus.test.ts +27 -27
  579. package/src/modules/{workflow → version-control}/__tests__/events-delivery.test.ts +37 -37
  580. package/src/modules/{workflow → version-control}/__tests__/file-lock.service.deletion-gate.test.ts +2 -2
  581. package/src/modules/{workflow → version-control}/__tests__/file-lock.service.path-identity.test.ts +8 -8
  582. package/src/modules/{workflow → version-control}/__tests__/merge-announces-tree.test.ts +11 -11
  583. package/src/modules/{workflow → version-control}/__tests__/pending-commits.worker.concurrency.test.ts +9 -9
  584. package/src/modules/{workflow → version-control}/__tests__/pending-commits.worker.test.ts +25 -25
  585. package/src/modules/{workflow → version-control}/__tests__/preserve-roles-yaml.test.ts +42 -42
  586. package/src/modules/version-control/__tests__/public-surface.test.ts +114 -0
  587. package/src/modules/{workflow/__tests__/workflow.routes.folder-proposals.test.ts → version-control/__tests__/version-control.routes.folder-proposals.test.ts} +18 -18
  588. package/src/modules/{workflow/__tests__/workflow.routes.fork-point-file.test.ts → version-control/__tests__/version-control.routes.fork-point-file.test.ts} +19 -19
  589. package/src/modules/{workflow/__tests__/workflow.routes.history-read-gate.test.ts → version-control/__tests__/version-control.routes.history-read-gate.test.ts} +13 -13
  590. package/src/modules/{workflow/__tests__/workflow.routes.lock-path.test.ts → version-control/__tests__/version-control.routes.lock-path.test.ts} +18 -18
  591. package/src/modules/{workflow/__tests__/workflow.routes.open-change-request.test.ts → version-control/__tests__/version-control.routes.open-change-request.test.ts} +7 -7
  592. package/src/modules/{workflow/__tests__/workflow.routes.push-refused.test.ts → version-control/__tests__/version-control.routes.push-refused.test.ts} +14 -14
  593. package/src/modules/{workflow/__tests__/workflow.service.branch-in-use.test.ts → version-control/__tests__/version-control.service.branch-in-use.test.ts} +6 -6
  594. package/src/modules/{workflow/__tests__/workflow.service.commitFileWhileLocked.test.ts → version-control/__tests__/version-control.service.commitFileWhileLocked.test.ts} +14 -14
  595. package/src/modules/{workflow/__tests__/workflow.service.delete-branch.test.ts → version-control/__tests__/version-control.service.delete-branch.test.ts} +14 -14
  596. package/src/modules/{workflow/__tests__/workflow.service.deleted-branch-sweep.test.ts → version-control/__tests__/version-control.service.deleted-branch-sweep.test.ts} +4 -4
  597. package/src/modules/{workflow/__tests__/workflow.service.facade.test.ts → version-control/__tests__/version-control.service.facade.test.ts} +97 -99
  598. package/src/modules/{workflow/__tests__/workflow.service.folder-proposals.test.ts → version-control/__tests__/version-control.service.folder-proposals.test.ts} +7 -7
  599. package/src/modules/{workflow/__tests__/workflow.service.platform-restore.test.ts → version-control/__tests__/version-control.service.platform-restore.test.ts} +6 -6
  600. package/src/modules/{workflow/__tests__/workflow.service.read-gate.test.ts → version-control/__tests__/version-control.service.read-gate.test.ts} +9 -9
  601. package/src/modules/{workflow/__tests__/workflow.service.releaseLock.test.ts → version-control/__tests__/version-control.service.releaseLock.test.ts} +42 -42
  602. package/src/modules/{workflow/__tests__/workflow.service.repository-replaced.test.ts → version-control/__tests__/version-control.service.repository-replaced.test.ts} +4 -4
  603. package/src/modules/{workflow/__tests__/workflow.service.sync.test.ts → version-control/__tests__/version-control.service.sync.test.ts} +17 -17
  604. package/src/modules/{workflow/__tests__/workflow.service.update-change-request.pg.test.ts → version-control/__tests__/version-control.service.update-change-request.pg.test.ts} +6 -6
  605. package/src/modules/{workflow/__tests__/workflow.service.update-change-request.test.ts → version-control/__tests__/version-control.service.update-change-request.test.ts} +11 -11
  606. package/src/modules/{workflow/__tests__/workflow.service.update-from-target.test.ts → version-control/__tests__/version-control.service.update-from-target.test.ts} +22 -22
  607. package/src/modules/{workflow → version-control}/agent-tools/__tests__/change-request-read.tools.test.ts +3 -3
  608. package/src/modules/{workflow → version-control}/agent-tools/__tests__/update-change-request.parity.test.ts +16 -16
  609. package/src/modules/{workflow/agent-tools/__tests__/workflow.tools.test.ts → version-control/agent-tools/__tests__/version-control.tools.test.ts} +9 -9
  610. package/src/modules/{workflow → version-control}/agent-tools/change-request-read.tools.ts +2 -2
  611. package/src/modules/{workflow/agent-tools/workflow.tools.ts → version-control/agent-tools/version-control.tools.ts} +30 -30
  612. package/src/modules/{workflow → version-control}/change-request-hooks.ts +1 -1
  613. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/approval-states.test.ts +5 -5
  614. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/cancel-pr.test.ts +8 -8
  615. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/carry-approvals-forward.test.ts +6 -6
  616. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/erase-approver.test.ts +5 -5
  617. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/merge-gate.test.ts +3 -3
  618. package/src/modules/{workflow/review-workflow → version-control/change-request-review}/__tests__/merge-records-own-commit.test.ts +3 -3
  619. package/src/modules/{workflow/review-workflow/review-workflow.interface.ts → version-control/change-request-review/change-request-review.interface.ts} +1 -1
  620. package/src/modules/{workflow/review-workflow/review-workflow.service.ts → version-control/change-request-review/change-request-review.service.ts} +28 -28
  621. package/src/modules/{workflow → version-control}/event-bus.ts +14 -14
  622. package/src/modules/{workflow → version-control}/events-delivery.ts +11 -11
  623. package/src/modules/{workflow → version-control}/events.routes.ts +5 -5
  624. package/src/modules/{workflow → version-control}/file-lock.service.ts +6 -6
  625. package/src/modules/{workflow → version-control}/git/__tests__/git-test-helpers.ts +3 -3
  626. package/src/modules/{workflow → version-control}/git/__tests__/git.service.accessGating.test.ts +5 -5
  627. package/src/modules/{workflow → version-control}/git/__tests__/git.service.appliedChange.test.ts +4 -4
  628. package/src/modules/{workflow → version-control}/git/__tests__/git.service.changedFilesForPr.test.ts +16 -16
  629. package/src/modules/{workflow → version-control}/git/__tests__/git.service.changedPathsMemo.test.ts +2 -2
  630. package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitChanges.test.ts +3 -3
  631. package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitFile.strayPath.test.ts +10 -10
  632. package/src/modules/{workflow → version-control}/git/__tests__/git.service.commitFile.test.ts +3 -3
  633. package/src/modules/{workflow → version-control}/git/__tests__/git.service.createBranch.test.ts +3 -3
  634. package/src/modules/{workflow → version-control}/git/__tests__/git.service.deleteBranch.test.ts +7 -7
  635. package/src/modules/{workflow → version-control}/git/__tests__/git.service.diffFileAtCommit.test.ts +9 -9
  636. package/src/modules/{workflow → version-control}/git/__tests__/git.service.diffFileBetweenBranches.test.ts +23 -23
  637. package/src/modules/{workflow → version-control}/git/__tests__/git.service.fileBytesAtCommit.test.ts +7 -7
  638. package/src/modules/{workflow → version-control}/git/__tests__/git.service.fileContentsAtCommit.test.ts +3 -3
  639. package/src/modules/{workflow → version-control}/git/__tests__/git.service.forkPoint.test.ts +2 -2
  640. package/src/modules/{workflow → version-control}/git/__tests__/git.service.history-guards.test.ts +2 -2
  641. package/src/modules/{workflow → version-control}/git/__tests__/git.service.list-branches.test.ts +12 -12
  642. package/src/modules/{workflow → version-control}/git/__tests__/git.service.listTrackedFiles.test.ts +2 -2
  643. package/src/modules/{workflow → version-control}/git/__tests__/git.service.logForFile.test.ts +6 -6
  644. package/src/modules/{workflow → version-control}/git/__tests__/git.service.mergeChangeRequest.test.ts +20 -20
  645. package/src/modules/{workflow → version-control}/git/__tests__/git.service.mergeIntoBranch.test.ts +16 -16
  646. package/src/modules/{workflow → version-control}/git/__tests__/git.service.pendingChanges.test.ts +2 -2
  647. package/src/modules/{workflow → version-control}/git/__tests__/git.service.postMergePull.test.ts +5 -5
  648. package/src/modules/{workflow → version-control}/git/__tests__/git.service.prFetchFailure.test.ts +2 -2
  649. package/src/modules/{workflow → version-control}/git/__tests__/git.service.pull.test.ts +12 -12
  650. package/src/modules/{workflow → version-control}/git/__tests__/git.service.readFileAtRef.test.ts +3 -3
  651. package/src/modules/{workflow → version-control}/git/__tests__/git.service.revertPathsAndPush.test.ts +2 -2
  652. package/src/modules/{workflow → version-control}/git/__tests__/git.service.status.test.ts +4 -4
  653. package/src/modules/{workflow → version-control}/git/__tests__/git.service.syncFromRemote.test.ts +8 -8
  654. package/src/modules/{workflow → version-control}/git/__tests__/git.service.worktrees.test.ts +4 -4
  655. package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.list-fetch.test.ts +2 -2
  656. package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.test.ts +6 -6
  657. package/src/modules/{workflow → version-control}/git/git.service.ts +57 -57
  658. package/src/modules/{workflow → version-control}/git/node-git-runner.ts +1 -1
  659. package/src/modules/{workflow → version-control}/git/pull-request.service.ts +12 -12
  660. package/src/modules/{workflow → version-control}/index.ts +6 -5
  661. package/src/modules/{workflow → version-control}/pending-commits.service.ts +2 -2
  662. package/src/modules/{workflow → version-control}/pending-commits.worker.ts +8 -8
  663. package/src/modules/{workflow → version-control}/read-on-branch.ts +2 -2
  664. package/src/modules/{workflow/workflow-hooks.ts → version-control/version-control-hooks.ts} +3 -3
  665. package/src/modules/{workflow/workflow.routes.ts → version-control/version-control.routes.ts} +64 -63
  666. package/src/modules/{workflow/workflow.service.ts → version-control/version-control.service.ts} +92 -97
  667. package/src/modules/workspace/__tests__/agent-access.gate.test.ts +8 -8
  668. package/src/modules/workspace/__tests__/agent-downloads.test.ts +13 -16
  669. package/src/modules/workspace/__tests__/agent-uploads.test.ts +11 -12
  670. package/src/modules/workspace/__tests__/escape-sequences.routes.test.ts +11 -16
  671. package/src/modules/workspace/__tests__/file-stat-access.test.ts +3 -3
  672. package/src/modules/workspace/__tests__/git-internals.security.test.ts +27 -27
  673. package/src/modules/workspace/__tests__/kb-repository.test.ts +1 -1
  674. package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +3 -3
  675. package/src/modules/workspace/__tests__/start-session.default-branch.test.ts +152 -0
  676. package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +6 -6
  677. package/src/modules/workspace/__tests__/workspace-tmp.tools.test.ts +13 -14
  678. package/src/modules/workspace/__tests__/workspace.routes.at-ref.test.ts +6 -6
  679. package/src/modules/workspace/__tests__/workspace.routes.branch-errors.test.ts +4 -4
  680. package/src/modules/workspace/__tests__/workspace.routes.create-grant.test.ts +6 -6
  681. package/src/modules/workspace/__tests__/workspace.routes.delete.test.ts +8 -8
  682. package/src/modules/workspace/__tests__/workspace.routes.download-implies-read.test.ts +4 -4
  683. package/src/modules/workspace/__tests__/workspace.routes.download.test.ts +6 -6
  684. package/src/modules/workspace/__tests__/workspace.routes.file-writes.test.ts +6 -6
  685. package/src/modules/workspace/__tests__/workspace.routes.folder-zip-access.test.ts +4 -4
  686. package/src/modules/workspace/__tests__/workspace.routes.folders.test.ts +6 -6
  687. package/src/modules/workspace/__tests__/workspace.routes.move-platform-files.test.ts +7 -7
  688. package/src/modules/workspace/__tests__/workspace.routes.read-gate.test.ts +13 -13
  689. package/src/modules/workspace/__tests__/workspace.service.any-workspace-credentials.test.ts +1 -1
  690. package/src/modules/workspace/__tests__/workspace.service.replaced-repository.test.ts +1 -1
  691. package/src/modules/workspace/__tests__/workspace.service.worktrees.test.ts +1 -1
  692. package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +5 -5
  693. package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +5 -5
  694. package/src/modules/workspace/__tests__/workspace.tools.test.ts +27 -27
  695. package/src/modules/workspace/agent-access.gate.ts +5 -5
  696. package/src/modules/workspace/git-internals.middleware.ts +2 -2
  697. package/src/modules/workspace/kb-repository.ts +1 -1
  698. package/src/modules/workspace/startup/__tests__/kb-startup-runner.degraded.test.ts +1 -1
  699. package/src/modules/workspace/startup/__tests__/kb-startup-runner.test.ts +1 -1
  700. package/src/modules/workspace/startup/__tests__/kb-startup-runner.worktrees.test.ts +1 -1
  701. package/src/modules/workspace/startup/kb-git.ts +1 -1
  702. package/src/modules/workspace/startup/steps/__tests__/steps.test.ts +94 -70
  703. package/src/modules/workspace/startup/steps/seed-tree.ts +4 -5
  704. package/src/modules/workspace/startup/steps/template-files.step.ts +4 -5
  705. package/src/modules/workspace/startup/steps/template-source.ts +21 -6
  706. package/src/modules/workspace/workspace-tmp.ts +4 -4
  707. package/src/modules/workspace/workspace.routes.ts +26 -26
  708. package/src/modules/workspace/workspace.service.ts +11 -11
  709. package/src/modules/workspace/workspace.tools.ts +17 -10
  710. package/src/shared/__tests__/canonical-file-identity.test.ts +5 -5
  711. package/src/shared/__tests__/http-errors.test.ts +4 -4
  712. package/src/shared/canonical-file-identity.ts +5 -5
  713. package/src/shared/domain-errors.ts +44 -44
  714. package/src/shared/git.contract.ts +1 -1
  715. package/src/shared/http-errors.ts +3 -3
  716. package/src/shared/kb-context.ts +130 -130
  717. package/src/shared/pending-proposals.ts +4 -4
  718. package/src/tenancy/__tests__/tenant-host.test.ts +372 -372
  719. package/src/tenancy/__tests__/tenant-runtime.test.ts +221 -221
  720. package/src/tenancy/__tests__/tenant-secrets.test.ts +35 -35
  721. package/src/tenancy/index.ts +35 -35
  722. package/src/tenancy/static-tenant-source.ts +1 -1
  723. package/src/tenancy/tenant-host.ts +261 -261
  724. package/src/tenancy/tenant-runtime.ts +208 -208
  725. package/src/tenancy/tenant-source.contract.ts +59 -59
  726. package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts.map +0 -1
  727. package/dist/modules/workflow/agent-tools/change-request-read-shape.js.map +0 -1
  728. package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts.map +0 -1
  729. package/dist/modules/workflow/agent-tools/change-request-read.tools.js.map +0 -1
  730. package/dist/modules/workflow/agent-tools/change-request-summary.d.ts.map +0 -1
  731. package/dist/modules/workflow/agent-tools/change-request-summary.js.map +0 -1
  732. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +0 -1
  733. package/dist/modules/workflow/agent-tools/workflow.tools.js.map +0 -1
  734. package/dist/modules/workflow/change-request-hooks.d.ts.map +0 -1
  735. package/dist/modules/workflow/change-request-hooks.js.map +0 -1
  736. package/dist/modules/workflow/event-bus.d.ts.map +0 -1
  737. package/dist/modules/workflow/event-bus.js.map +0 -1
  738. package/dist/modules/workflow/events-delivery.d.ts.map +0 -1
  739. package/dist/modules/workflow/events-delivery.js.map +0 -1
  740. package/dist/modules/workflow/events.routes.d.ts.map +0 -1
  741. package/dist/modules/workflow/events.routes.js.map +0 -1
  742. package/dist/modules/workflow/file-lock.service.d.ts.map +0 -1
  743. package/dist/modules/workflow/file-lock.service.js.map +0 -1
  744. package/dist/modules/workflow/git/change-request-link.d.ts.map +0 -1
  745. package/dist/modules/workflow/git/change-request-link.js.map +0 -1
  746. package/dist/modules/workflow/git/git-version.d.ts.map +0 -1
  747. package/dist/modules/workflow/git/git-version.js.map +0 -1
  748. package/dist/modules/workflow/git/git.service.d.ts.map +0 -1
  749. package/dist/modules/workflow/git/git.service.js.map +0 -1
  750. package/dist/modules/workflow/git/merge-commit.d.ts.map +0 -1
  751. package/dist/modules/workflow/git/merge-commit.js.map +0 -1
  752. package/dist/modules/workflow/git/node-git-runner.d.ts.map +0 -1
  753. package/dist/modules/workflow/git/node-git-runner.js.map +0 -1
  754. package/dist/modules/workflow/git/pull-request.service.d.ts.map +0 -1
  755. package/dist/modules/workflow/git/pull-request.service.js.map +0 -1
  756. package/dist/modules/workflow/index.d.ts.map +0 -1
  757. package/dist/modules/workflow/index.js.map +0 -1
  758. package/dist/modules/workflow/pending-commits.service.d.ts.map +0 -1
  759. package/dist/modules/workflow/pending-commits.service.js.map +0 -1
  760. package/dist/modules/workflow/pending-commits.worker.d.ts.map +0 -1
  761. package/dist/modules/workflow/pending-commits.worker.js.map +0 -1
  762. package/dist/modules/workflow/read-on-branch.d.ts.map +0 -1
  763. package/dist/modules/workflow/read-on-branch.js.map +0 -1
  764. package/dist/modules/workflow/recovery-bot.d.ts.map +0 -1
  765. package/dist/modules/workflow/recovery-bot.js.map +0 -1
  766. package/dist/modules/workflow/review-workflow/approval-lock.d.ts.map +0 -1
  767. package/dist/modules/workflow/review-workflow/approval-lock.js.map +0 -1
  768. package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts.map +0 -1
  769. package/dist/modules/workflow/review-workflow/review-workflow.interface.js +0 -2
  770. package/dist/modules/workflow/review-workflow/review-workflow.interface.js.map +0 -1
  771. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +0 -1
  772. package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +0 -1
  773. package/dist/modules/workflow/sanitize-error.d.ts.map +0 -1
  774. package/dist/modules/workflow/sanitize-error.js.map +0 -1
  775. package/dist/modules/workflow/workflow-hooks.d.ts.map +0 -1
  776. package/dist/modules/workflow/workflow-hooks.js.map +0 -1
  777. package/dist/modules/workflow/workflow.routes.d.ts.map +0 -1
  778. package/dist/modules/workflow/workflow.routes.js.map +0 -1
  779. package/dist/modules/workflow/workflow.service.d.ts.map +0 -1
  780. package/dist/modules/workflow/workflow.service.js.map +0 -1
  781. package/src/modules/mcp/__tests__/read-only-hint.e2e.test.ts +0 -213
  782. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read-shape.d.ts +0 -0
  783. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read-shape.js +0 -0
  784. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-read.tools.d.ts +0 -0
  785. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-summary.d.ts +0 -0
  786. /package/dist/modules/{workflow → version-control}/agent-tools/change-request-summary.js +0 -0
  787. /package/dist/modules/{workflow → version-control}/change-request-hooks.js +0 -0
  788. /package/dist/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.d.ts +0 -0
  789. /package/dist/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.js +0 -0
  790. /package/dist/modules/{workflow → version-control}/events-delivery.js +0 -0
  791. /package/dist/modules/{workflow → version-control}/events.routes.js +0 -0
  792. /package/dist/modules/{workflow → version-control}/git/change-request-link.d.ts +0 -0
  793. /package/dist/modules/{workflow → version-control}/git/change-request-link.js +0 -0
  794. /package/dist/modules/{workflow → version-control}/git/git-version.d.ts +0 -0
  795. /package/dist/modules/{workflow → version-control}/git/git-version.js +0 -0
  796. /package/dist/modules/{workflow → version-control}/git/merge-commit.d.ts +0 -0
  797. /package/dist/modules/{workflow → version-control}/git/merge-commit.js +0 -0
  798. /package/dist/modules/{workflow → version-control}/git/node-git-runner.d.ts +0 -0
  799. /package/dist/modules/{workflow → version-control}/recovery-bot.d.ts +0 -0
  800. /package/dist/modules/{workflow → version-control}/recovery-bot.js +0 -0
  801. /package/dist/modules/{workflow → version-control}/sanitize-error.d.ts +0 -0
  802. /package/dist/modules/{workflow → version-control}/sanitize-error.js +0 -0
  803. /package/src/modules/{workflow → version-control}/__tests__/change-request-hooks.test.ts +0 -0
  804. /package/src/modules/{workflow → version-control}/__tests__/fake-file-lock-db.ts +0 -0
  805. /package/src/modules/{workflow → version-control}/__tests__/pending-commits.canonical.test.ts +0 -0
  806. /package/src/modules/{workflow → version-control}/__tests__/pending-commits.enqueue-if-absent.test.ts +0 -0
  807. /package/src/modules/{workflow → version-control}/__tests__/pending-commits.repository-replaced.test.ts +0 -0
  808. /package/src/modules/{workflow → version-control}/__tests__/sanitize-error.test.ts +0 -0
  809. /package/src/modules/{workflow → version-control}/agent-tools/__tests__/change-request-read-shape.test.ts +0 -0
  810. /package/src/modules/{workflow → version-control}/agent-tools/change-request-read-shape.ts +0 -0
  811. /package/src/modules/{workflow → version-control}/agent-tools/change-request-summary.ts +0 -0
  812. /package/src/modules/{workflow/review-workflow → version-control/change-request-review}/approval-lock.ts +0 -0
  813. /package/src/modules/{workflow → version-control}/git/__tests__/branchAuthor.test.ts +0 -0
  814. /package/src/modules/{workflow → version-control}/git/__tests__/change-request-link.test.ts +0 -0
  815. /package/src/modules/{workflow → version-control}/git/__tests__/git-version.failure.test.ts +0 -0
  816. /package/src/modules/{workflow → version-control}/git/__tests__/git-version.test.ts +0 -0
  817. /package/src/modules/{workflow → version-control}/git/__tests__/node-git-runner.test.ts +0 -0
  818. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.getPrDetail.test.ts +0 -0
  819. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.placeholder.test.ts +0 -0
  820. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-cancel.test.ts +0 -0
  821. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-delete.test.ts +0 -0
  822. /package/src/modules/{workflow → version-control}/git/__tests__/pull-request.service.viewer-can-update.test.ts +0 -0
  823. /package/src/modules/{workflow → version-control}/git/change-request-link.ts +0 -0
  824. /package/src/modules/{workflow → version-control}/git/git-version.ts +0 -0
  825. /package/src/modules/{workflow → version-control}/git/merge-commit.ts +0 -0
  826. /package/src/modules/{workflow → version-control}/recovery-bot.ts +0 -0
  827. /package/src/modules/{workflow → version-control}/sanitize-error.ts +0 -0
@@ -0,0 +1,152 @@
1
+ import type { Server as HttpServer } from 'node:http';
2
+ import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import express from 'express';
6
+ import { afterEach, describe, expect, it } from 'vitest';
7
+ import { testKbContext } from '../../../__tests__/kb-context.js';
8
+ import { realDisk } from '../../../__tests__/real-disk.js';
9
+ import { toolHandlerFactory } from '../../../__tests__/tool-handler.js';
10
+ import type { KbContext } from '../../../shared/kb-context.js';
11
+ import type { IAccessControl } from '../../access/index.js';
12
+ import type { ToolAuth } from '../../tool-auth/index.js';
13
+ import type { ToolContext } from '../../tool-helpers/index.js';
14
+ import { ToolRegistry } from '../../tool-registry/index.js';
15
+ import { ToolDescriptionNotes } from '../agent-access.gate.js';
16
+ import { DocExtractService } from '../file-readers/doc-extract.service.js';
17
+ import { WorkerDocumentExtractor } from '../file-readers/extract-in-worker.js';
18
+ import { STARTER_GUIDE_FILE, firstRunNote } from '../first-run.js';
19
+ import { RoutineWritePolicyService } from '../routine-write-policy.js';
20
+ import { SpillStore } from '../spill-store.js';
21
+ import { registerWorkspaceTools } from '../workspace.tools.js';
22
+
23
+ /**
24
+ * The guide's start names the deployment's default branch, but only to an
25
+ * agent that calls `get_agent_guide`; every file tool asks for "the branch you
26
+ * are working on", and an agent left to guess guesses `main`. `start_session`, the call every agent is told to make
27
+ * first, answers it beside the id: this deployment's, which here is not `main`
28
+ * (`testKbContext`'s default branch is `target-company-state`).
29
+ */
30
+
31
+ const KB_DIR = 'knowledge-base';
32
+
33
+ /** Every read allowed: the `firstRun` note is gated like a read, and these tests are not about the gate. */
34
+ const allowAll = {
35
+ canRead: async () => true,
36
+ canReadBatch: async (_w: string, _u: string, paths: string[]) => new Map(paths.map((p) => [p, true])),
37
+ } as unknown as IAccessControl;
38
+
39
+ let server: HttpServer | undefined;
40
+ let extractor: WorkerDocumentExtractor | undefined;
41
+ let wsDir: string | undefined;
42
+
43
+ /**
44
+ * `start_session` mounted as the root mounts it, for an external caller.
45
+ * `defaultWorkspaceDir` is the default branch's checkout, for the `firstRun`
46
+ * note; without one the note's check has no workspace and the answer carries
47
+ * none.
48
+ */
49
+ async function startSession(kb: KbContext, defaultWorkspaceDir?: string): Promise<{ base: string; registry: ToolRegistry }> {
50
+ const registry = new ToolRegistry();
51
+ const resolve = async (auth: ToolAuth, signal: AbortSignal): Promise<ToolContext> => ({
52
+ user: { id: 'user-42', email: 'e@x', name: 'N' },
53
+ scope: auth.scope,
54
+ source: auth.source,
55
+ abortSignal: signal,
56
+ workspaceService: (defaultWorkspaceDir
57
+ ? { hasBootstrappedWorkspace: async () => true, getWorkspacePath: async () => defaultWorkspaceDir }
58
+ : {}) as never,
59
+ versionControlService: {} as never,
60
+ events: {} as never,
61
+ getFilesystem: async () => ({}) as never,
62
+ getWriteValidator: async () => ({}) as never,
63
+ });
64
+ const auth = (req: express.Request, _res: express.Response, next: express.NextFunction) => {
65
+ req.toolAuth = { source: 'external', userId: 'user-42', scope: 'write' };
66
+ next();
67
+ };
68
+ extractor = new WorkerDocumentExtractor();
69
+ const router = express.Router();
70
+ registerWorkspaceTools(
71
+ registry,
72
+ router,
73
+ auth,
74
+ toolHandlerFactory(resolve),
75
+ new SpillStore(join(tmpdir(), 'bevel-test-spills')),
76
+ new DocExtractService(join(tmpdir(), 'bevel-test-doc-extract'), extractor),
77
+ allowAll,
78
+ kb,
79
+ // No hook runs: `start_session` reads and writes no file.
80
+ { recoveryBotEmail: 'recovery-bot@bevel.local', hooks: {} as never, notes: new ToolDescriptionNotes() },
81
+ new RoutineWritePolicyService(),
82
+ { createSession: async () => ({ sessionId: 'thread-xyz' }) },
83
+ undefined,
84
+ undefined,
85
+ undefined,
86
+ undefined,
87
+ undefined /* downloads */,
88
+ undefined /* starter packs */,
89
+ realDisk(),
90
+ );
91
+ const app = express();
92
+ app.use(express.json());
93
+ app.use('/api', router);
94
+ server = await new Promise<HttpServer>((r) => {
95
+ const s = app.listen(0, () => r(s));
96
+ });
97
+ return { base: `http://127.0.0.1:${(server.address() as { port: number }).port}`, registry };
98
+ }
99
+
100
+ const call = async (base: string): Promise<Record<string, unknown>> =>
101
+ (await (
102
+ await fetch(`${base}/api/agent/tools/start_session`, {
103
+ method: 'POST',
104
+ headers: { 'content-type': 'application/json', authorization: 'Bearer x' },
105
+ body: '{}',
106
+ })
107
+ ).json()) as Record<string, unknown>;
108
+
109
+ afterEach(async () => {
110
+ if (server) await new Promise<void>((r) => server!.close(() => r()));
111
+ server = undefined;
112
+ await extractor?.close();
113
+ extractor = undefined;
114
+ if (wsDir) await rm(wsDir, { recursive: true, force: true });
115
+ wsDir = undefined;
116
+ });
117
+
118
+ describe('start_session names the default branch', () => {
119
+ it('answers { sessionId, defaultBranch }, the branch being the deployment\'s', async () => {
120
+ const { base } = await startSession(testKbContext({ kbDirName: KB_DIR }));
121
+ expect(await call(base)).toEqual({ sessionId: 'thread-xyz', defaultBranch: 'target-company-state' });
122
+ });
123
+
124
+ it('answers firstRun beside them while the knowledge base is empty', async () => {
125
+ wsDir = await mkdtemp(join(tmpdir(), 'bevel-start-session-'));
126
+ await mkdir(join(wsDir, KB_DIR, 'KnowledgeBase'), { recursive: true });
127
+ await writeFile(join(wsDir, KB_DIR, 'KnowledgeBase', STARTER_GUIDE_FILE), '# How to get started\n');
128
+ const { base } = await startSession(testKbContext({ kbDirName: KB_DIR }), wsDir);
129
+ expect(await call(base)).toEqual({
130
+ sessionId: 'thread-xyz',
131
+ defaultBranch: 'target-company-state',
132
+ firstRun: firstRunNote(`${KB_DIR}/KnowledgeBase`),
133
+ });
134
+ });
135
+
136
+ it('names the branch in effect when called, not the one in effect when the tool was registered', async () => {
137
+ const kb = testKbContext({ kbDirName: KB_DIR });
138
+ const { base } = await startSession(kb);
139
+ kb.applyBranchModel({ defaultBranch: 'company-state', protectedBranches: ['company-state'] });
140
+ expect(await call(base)).toEqual({ sessionId: 'thread-xyz', defaultBranch: 'company-state' });
141
+ });
142
+
143
+ it('says so in its description and declares the field, required, in its output schema', async () => {
144
+ const { registry } = await startSession(testKbContext({ kbDirName: KB_DIR }));
145
+ const def = (await registry.listExternal()).find((t) => t.name === 'start_session')!;
146
+ expect(def.description).toContain('Returns `{ sessionId, defaultBranch }`, plus `firstRun` while the knowledge base is empty');
147
+ const outputs = def.outputs as { properties: Record<string, { description?: string }>; required: string[] };
148
+ expect(Object.keys(outputs.properties)).toEqual(['sessionId', 'defaultBranch', 'firstRun']);
149
+ expect(outputs.properties.defaultBranch.description).toContain('the branch people read');
150
+ expect(outputs.required).toEqual(['sessionId', 'defaultBranch']);
151
+ });
152
+ });
@@ -8,10 +8,10 @@ import AdmZip from 'adm-zip';
8
8
  import express from 'express';
9
9
  import { describe, it, expect, afterEach, vi } from 'vitest';
10
10
  import { testKbContext } from '../../../__tests__/kb-context.js';
11
- import type { IWorkflowService } from '@bevel-software/platform-shared';
11
+ import type { IVersionControlService } from '@bevel-software/platform-shared';
12
12
  import { NodeFs } from '../../kb-fs/node-fs.js';
13
13
  import type { IAccessControl } from '../../access/access-control.interface.js';
14
- import type { WorkflowEventBus } from '../../workflow/event-bus.js';
14
+ import type { VersionControlEventBus } from '../../version-control/event-bus.js';
15
15
  import type { AuthService } from '../../auth/auth.service.js';
16
16
  import type { IAdminAccessService } from '../../admin/admin.interface.js';
17
17
  import type { ICreatorAccess } from '../../access-model/creator.js';
@@ -76,7 +76,7 @@ async function makeHarness(): Promise<Harness> {
76
76
  } as unknown as IAccessControl;
77
77
 
78
78
  const locked: string[] = [];
79
- const workflowService = {
79
+ const versionControlService = {
80
80
  getLock: vi.fn(async () => null),
81
81
  acquireLock: vi.fn(async (_w: string, _b: string, p: string) => {
82
82
  locked.push(p);
@@ -85,7 +85,7 @@ async function makeHarness(): Promise<Harness> {
85
85
  releaseLock: vi.fn(async () => undefined as never),
86
86
  releaseLockNoCommit: vi.fn(async () => undefined as never),
87
87
  releaseLockUntouched: vi.fn(async () => undefined as never),
88
- } as unknown as IWorkflowService;
88
+ } as unknown as IVersionControlService;
89
89
 
90
90
  const stubCreatorAccess: ICreatorAccess = {
91
91
  planForCreate: async () => null,
@@ -103,8 +103,8 @@ async function makeHarness(): Promise<Harness> {
103
103
  createWorkspaceRoutes(
104
104
  workspaceService,
105
105
  { getUserById: vi.fn(async () => USER) } as unknown as AuthService,
106
- workflowService,
107
- { emit: vi.fn() } as unknown as WorkflowEventBus,
106
+ versionControlService,
107
+ { emit: vi.fn() } as unknown as VersionControlEventBus,
108
108
  accessControl,
109
109
  testKbContext({ kbDirName: KB }),
110
110
  stubCreatorAccess,
@@ -10,19 +10,18 @@ import { LocalFilesystem } from '@mastra/core/workspace';
10
10
  import { DEFAULT_KB_LAYOUT } from '@bevel-software/platform-shared';
11
11
  import { testKbContext, TEST_BRANCH_MODEL } from '../../../__tests__/kb-context.js';
12
12
  import { newWorkspaceService } from '../../../__tests__/workspace-service.js';
13
- import { ToolRegistry } from '../../tool-registry/tool-registry.js';
14
- import { createToolHandlerFactory } from '../../tool-helpers/tool-handler.js';
15
- import type { ToolContext } from '../../tool-helpers/tool.contract.js';
16
- import type { ToolAuth } from '../../tool-auth/tool-auth.middleware.js';
17
- import type { IAccessControl } from '../../access/access-control.interface.js';
18
- import { NodeFs } from '../../kb-fs/node-fs.js';
19
- import { sharedFileRules, sharedFileRulesSection } from '../../agent-instructions/shared-file-rules.js';
20
- import { agentGuideSections, WORKING_WITH_FILES_SECTION_ID } from '../../agent-guide/agent-guide.js';
13
+ import { ToolRegistry } from '../../tool-registry/index.js';
14
+ import { createToolHandlerFactory, VersionControlHooks } from '../../../__tests__/tool-wiring.js';
15
+ import type { ToolContext } from '../../tool-helpers/index.js';
16
+ import type { ToolAuth } from '../../tool-auth/index.js';
17
+ import type { IAccessControl } from '../../access/index.js';
18
+ import { realDisk } from '../../../__tests__/real-disk.js';
19
+ import { sharedFileRules, sharedFileRulesSection } from '../../agent-instructions/index.js';
20
+ import { agentGuideSections, WORKING_WITH_FILES_SECTION_ID } from '../../agent-guide/index.js';
21
21
  import { PathNotFoundError } from '../../../shared/domain-errors.js';
22
22
  import { registerWorkspaceTools } from '../workspace.tools.js';
23
23
  import { RipgrepPatternMatcher } from '../ripgrep-search.js';
24
24
  import { RoutineWritePolicyService } from '../routine-write-policy.js';
25
- import { WorkflowHooks } from '../../workflow/workflow-hooks.js';
26
25
  import { ToolDescriptionNotes } from '../agent-access.gate.js';
27
26
  import { SpillStore } from '../spill-store.js';
28
27
  import { DocExtractService } from '../file-readers/doc-extract.service.js';
@@ -191,7 +190,7 @@ async function start(): Promise<string> {
191
190
  root = await mkdtemp(join(tmpdir(), 'ws-tmp-ref-'));
192
191
  docCacheDir = await mkdtemp(join(tmpdir(), 'ws-tmp-ref-cache-'));
193
192
  for (const branch of [DRAFT, PROTECTED]) await mkdir(join(workspaceDir(branch), KB_DIR), { recursive: true });
194
- service = newWorkspaceService(root, 'https://example.invalid/kb.git', testKbContext(), new NodeFs());
193
+ service = newWorkspaceService(root, 'https://example.invalid/kb.git', testKbContext(), realDisk());
195
194
  matcher = new RipgrepPatternMatcher();
196
195
  extractor = new WorkerDocumentExtractor();
197
196
  const filesystems = new Map<string, LocalFilesystem>();
@@ -210,7 +209,7 @@ async function start(): Promise<string> {
210
209
  getWorkspacePath: async (id: string) => join(root, id),
211
210
  hasBootstrappedWorkspace: async () => false,
212
211
  } as never,
213
- workflowService: {} as never,
212
+ versionControlService: {} as never,
214
213
  events: {} as never,
215
214
  getFilesystem: async (branch: string) => {
216
215
  let fs = filesystems.get(branch);
@@ -237,7 +236,7 @@ async function start(): Promise<string> {
237
236
  new DocExtractService(docCacheDir, extractor),
238
237
  access,
239
238
  testKbContext({ kbDirName: KB_DIR }),
240
- { recoveryBotEmail: 'bot@x', hooks: new WorkflowHooks(), notes: new ToolDescriptionNotes() },
239
+ { recoveryBotEmail: 'bot@x', hooks: new VersionControlHooks(), notes: new ToolDescriptionNotes() },
241
240
  new RoutineWritePolicyService(),
242
241
  {} as never,
243
242
  undefined,
@@ -911,7 +910,7 @@ describe('the periodic sweep of every workspace\'s tmp folder', () => {
911
910
 
912
911
  describe('the agent guide\'s file-tools section describes the ref', () => {
913
912
  it("states the ref, that it reaches the caller's own files, that it is read-only, copy_file to keep, and up to seven days", async () => {
914
- const rule = sharedFileRules(DEFAULT_KB_LAYOUT).find((r) => r.id === 'workspace-tmp')!.body;
913
+ const rule = sharedFileRules(DEFAULT_KB_LAYOUT, '').find((r) => r.id === 'workspace-tmp')!.body;
915
914
  expect(rule).toContain('`__tmp__/<path>`');
916
915
  expect(rule).toContain('`tmp/` folder');
917
916
  expect(rule).toContain('YOU staged');
@@ -920,7 +919,7 @@ describe('the agent guide\'s file-tools section describes the ref', () => {
920
919
  expect(rule).toContain('copy_file it to a repository path');
921
920
  expect(rule).toContain('up to seven days');
922
921
  for (const tool of ['read_file', 'file_stat', 'grep', 'copy_file']) expect(rule).toContain(tool);
923
- expect(sharedFileRulesSection(DEFAULT_KB_LAYOUT)).toContain(rule);
922
+ expect(sharedFileRulesSection(DEFAULT_KB_LAYOUT, '')).toContain(rule);
924
923
  const sections = await agentGuideSections(DEFAULT_KB_LAYOUT);
925
924
  const files = sections.find((s) => s.id === WORKING_WITH_FILES_SECTION_ID)!;
926
925
  expect(files.body).toContain(rule);
@@ -2,14 +2,14 @@ import { get as httpGet, type Server } from 'node:http';
2
2
  import type { AddressInfo } from 'node:net';
3
3
  import express from 'express';
4
4
  import { describe, it, expect, afterEach, vi } from 'vitest';
5
- import type { IWorkflowService } from '@bevel-software/platform-shared';
5
+ import type { IVersionControlService } from '@bevel-software/platform-shared';
6
6
  import { testKbContext } from '../../../__tests__/kb-context.js';
7
7
  import { NodeFs } from '../../kb-fs/node-fs.js';
8
8
  import { VersionNotOnBranchError, VERSION_NOT_ON_BRANCH_MESSAGE } from '../../../shared/domain-errors.js';
9
9
  import type { IAccessControl } from '../../access/access-control.interface.js';
10
10
  import type { ICreatorAccess } from '../../access-model/creator.js';
11
11
  import type { IAdminAccessService } from '../../admin/admin.interface.js';
12
- import type { WorkflowEventBus } from '../../workflow/event-bus.js';
12
+ import type { VersionControlEventBus } from '../../version-control/event-bus.js';
13
13
  import type { AuthService } from '../../auth/auth.service.js';
14
14
  import { createWorkspaceRoutes } from '../workspace.routes.js';
15
15
  import type { WorkspaceService } from '../workspace.service.js';
@@ -53,7 +53,7 @@ async function makeHarness(
53
53
  opts: {
54
54
  canRead?: boolean;
55
55
  canDownload?: boolean;
56
- /** What the workflow service answers; default is the past bytes. */
56
+ /** What the version-control service answers; default is the past bytes. */
57
57
  atRef?: () => Promise<{ bytes: Uint8Array; blobId: string } | null>;
58
58
  } = {},
59
59
  ): Promise<Harness> {
@@ -73,7 +73,7 @@ async function makeHarness(
73
73
  const fileBytesAtChange = vi.fn(
74
74
  opts.atRef ?? (async () => ({ bytes: PAST_BYTES, blobId: 'deadbeef'.repeat(5) })),
75
75
  );
76
- const workflowService = { fileBytesAtChange } as unknown as IWorkflowService;
76
+ const versionControlService = { fileBytesAtChange } as unknown as IVersionControlService;
77
77
 
78
78
  const authService = { getUserById: vi.fn(async () => USER) } as unknown as AuthService;
79
79
 
@@ -88,8 +88,8 @@ async function makeHarness(
88
88
  createWorkspaceRoutes(
89
89
  workspaceService,
90
90
  authService,
91
- workflowService,
92
- {} as unknown as WorkflowEventBus,
91
+ versionControlService,
92
+ {} as unknown as VersionControlEventBus,
93
93
  accessControl,
94
94
  testKbContext({ kbDirName: KB }),
95
95
  stubCreatorAccess,
@@ -4,9 +4,9 @@ import express from 'express';
4
4
  import { describe, it, expect, afterEach, vi } from 'vitest';
5
5
  import { testKbContext } from '../../../__tests__/kb-context.js';
6
6
  import { NodeFs } from '../../kb-fs/node-fs.js';
7
- import type { FileTreeEntry, IWorkflowService } from '@bevel-software/platform-shared';
7
+ import type { FileTreeEntry, IVersionControlService } from '@bevel-software/platform-shared';
8
8
  import type { IAccessControl } from '../../access/access-control.interface.js';
9
- import type { WorkflowEventBus } from '../../workflow/event-bus.js';
9
+ import type { VersionControlEventBus } from '../../version-control/event-bus.js';
10
10
  import type { AuthService } from '../../auth/auth.service.js';
11
11
  import type { IAdminAccessService } from '../../admin/admin.interface.js';
12
12
  import type { ICreatorAccess } from '../../access-model/creator.js';
@@ -53,8 +53,8 @@ async function makeHarness(
53
53
  app.use('/api', createWorkspaceRoutes(
54
54
  workspaceService,
55
55
  { getUserById: vi.fn(async () => USER) } as unknown as AuthService,
56
- {} as unknown as IWorkflowService,
57
- { emit: vi.fn() } as unknown as WorkflowEventBus,
56
+ {} as unknown as IVersionControlService,
57
+ { emit: vi.fn() } as unknown as VersionControlEventBus,
58
58
  accessControl,
59
59
  testKbContext(),
60
60
  stubCreatorAccess,
@@ -4,12 +4,12 @@ import express from 'express';
4
4
  import { describe, it, expect, afterEach, vi } from 'vitest';
5
5
  import { testKbContext } from '../../../__tests__/kb-context.js';
6
6
  import { NodeFs } from '../../kb-fs/node-fs.js';
7
- import type { IWorkflowService } from '@bevel-software/platform-shared';
7
+ import type { IVersionControlService } from '@bevel-software/platform-shared';
8
8
  import type { IAccessControl } from '../../access/access-control.interface.js';
9
9
  import type { ICreatorAccess } from '../../access-model/creator.js';
10
10
  import type { ChangeReadVerdict, IChangeReadGate } from '../../access-model/change-gate.js';
11
11
  import { AccessDeniedError } from '../../access-model/access-errors.js';
12
- import type { WorkflowEventBus } from '../../workflow/event-bus.js';
12
+ import type { VersionControlEventBus } from '../../version-control/event-bus.js';
13
13
  import type { AuthService } from '../../auth/auth.service.js';
14
14
  import type { IAdminAccessService } from '../../admin/admin.interface.js';
15
15
  import { createWorkspaceRoutes } from '../workspace.routes.js';
@@ -68,7 +68,7 @@ async function makeHarness(opts: { extracted?: string[]; changeGate?: IChangeRea
68
68
  withPathTurn: vi.fn(async (_id: string, _p: string, op: () => Promise<unknown>) => op()),
69
69
  } as unknown as WorkspaceService;
70
70
 
71
- const workflowService = {
71
+ const versionControlService = {
72
72
  getLock: vi.fn(async () => null),
73
73
  acquireLock: vi.fn(async (_w: string, _b: string, p: string) => {
74
74
  lockedPaths.push(p);
@@ -76,7 +76,7 @@ async function makeHarness(opts: { extracted?: string[]; changeGate?: IChangeRea
76
76
  }),
77
77
  releaseLock: vi.fn(async () => null),
78
78
  releaseLockNoCommit: vi.fn(async () => undefined),
79
- } as unknown as IWorkflowService;
79
+ } as unknown as IVersionControlService;
80
80
 
81
81
  const creatorAccess = {
82
82
  planForCreate: vi.fn(async () => null),
@@ -84,7 +84,7 @@ async function makeHarness(opts: { extracted?: string[]; changeGate?: IChangeRea
84
84
  };
85
85
 
86
86
  const authService = { getUserById: vi.fn(async () => USER) } as unknown as AuthService;
87
- const eventBus = { emit: vi.fn() } as unknown as WorkflowEventBus;
87
+ const eventBus = { emit: vi.fn() } as unknown as VersionControlEventBus;
88
88
 
89
89
  const app = express();
90
90
  app.use(express.json());
@@ -97,7 +97,7 @@ async function makeHarness(opts: { extracted?: string[]; changeGate?: IChangeRea
97
97
  createWorkspaceRoutes(
98
98
  workspaceService,
99
99
  authService,
100
- workflowService,
100
+ versionControlService,
101
101
  eventBus,
102
102
  {} as unknown as IAccessControl,
103
103
  testKbContext({ kbDirName: KB }),
@@ -7,9 +7,9 @@ import express from 'express';
7
7
  import { describe, it, expect, afterEach, vi } from 'vitest';
8
8
  import { testKbContext } from '../../../__tests__/kb-context.js';
9
9
  import { NodeFs } from '../../kb-fs/node-fs.js';
10
- import type { IWorkflowService } from '@bevel-software/platform-shared';
10
+ import type { IVersionControlService } from '@bevel-software/platform-shared';
11
11
  import type { IAccessControl } from '../../access/access-control.interface.js';
12
- import type { WorkflowEventBus } from '../../workflow/event-bus.js';
12
+ import type { VersionControlEventBus } from '../../version-control/event-bus.js';
13
13
  import type { AuthService } from '../../auth/auth.service.js';
14
14
  import type { IAdminAccessService } from '../../admin/admin.interface.js';
15
15
  import { createWorkspaceRoutes } from '../workspace.routes.js';
@@ -80,20 +80,20 @@ async function makeHarness(): Promise<Harness> {
80
80
  };
81
81
  const workspaceService = workspaceServiceMock as WorkspaceService;
82
82
 
83
- const workflowServiceMock: Partial<IWorkflowService> = {
83
+ const versionControlServiceMock: Partial<IVersionControlService> = {
84
84
  getLock: vi.fn(async () => null),
85
85
  acquireLock: vi.fn(async () => ({ acquired: true, lock: {} as never })),
86
86
  releaseLock: vi.fn(async () => undefined as never),
87
87
  releaseLockNoCommit: vi.fn(async () => undefined as never),
88
88
  };
89
- const workflowService = workflowServiceMock as unknown as IWorkflowService;
89
+ const versionControlService = versionControlServiceMock as unknown as IVersionControlService;
90
90
 
91
91
  const authServiceMock: Partial<AuthService> = {
92
92
  getUserById: vi.fn(async () => USER),
93
93
  };
94
94
  const authService = authServiceMock as AuthService;
95
95
 
96
- const eventBus = { emit: vi.fn() } as unknown as WorkflowEventBus;
96
+ const eventBus = { emit: vi.fn() } as unknown as VersionControlEventBus;
97
97
 
98
98
  const app = express();
99
99
  app.use(express.json());
@@ -104,7 +104,7 @@ async function makeHarness(): Promise<Harness> {
104
104
  app.use('/api', createWorkspaceRoutes(
105
105
  workspaceService,
106
106
  authService,
107
- workflowService,
107
+ versionControlService,
108
108
  eventBus,
109
109
  accessControl,
110
110
  testKbContext({ kbDirName: KB }),
@@ -128,7 +128,7 @@ async function makeHarness(): Promise<Harness> {
128
128
  workspaceDir,
129
129
  repoDir: path.join(workspaceDir, KB),
130
130
  deleteFileMock: workspaceServiceMock.deleteFile as unknown as ReturnType<typeof vi.fn>,
131
- acquireLockMock: workflowServiceMock.acquireLock as unknown as ReturnType<typeof vi.fn>,
131
+ acquireLockMock: versionControlServiceMock.acquireLock as unknown as ReturnType<typeof vi.fn>,
132
132
  };
133
133
  }
134
134
 
@@ -199,7 +199,7 @@ describe('DELETE /workspace/:id/file — recursive folder delete (BEVA-132)', ()
199
199
 
200
200
  describe('DELETE /workspace/:id/file — one file identity', () => {
201
201
  it('deletes the canonical path, whichever accepted spelling was sent', async () => {
202
- // The workflow lock row is keyed by this path, so a delete spelled
202
+ // The version-control lock row is keyed by this path, so a delete spelled
203
203
  // `.//note.md` must not coordinate separately from a save on `note.md`.
204
204
  const h = await makeHarness();
205
205
  try {
@@ -8,10 +8,10 @@ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
8
8
  import { testKbContext } from '../../../__tests__/kb-context.js';
9
9
 
10
10
  import { NodeFs } from '../../kb-fs/node-fs.js';
11
- import type { IWorkflowService } from '@bevel-software/platform-shared';
11
+ import type { IVersionControlService } from '@bevel-software/platform-shared';
12
12
  import type { ICreatorAccess } from '../../access-model/creator.js';
13
13
  import type { IAdminAccessService } from '../../admin/admin.interface.js';
14
- import type { WorkflowEventBus } from '../../workflow/event-bus.js';
14
+ import type { VersionControlEventBus } from '../../version-control/event-bus.js';
15
15
  import type { AuthService } from '../../auth/auth.service.js';
16
16
  import { AccessControlService } from '../../access/access-control.service.js';
17
17
  import { createWorkspaceRoutes } from '../workspace.routes.js';
@@ -101,8 +101,8 @@ describe('GET /file/raw on a download-only path (real resolver)', () => {
101
101
  createWorkspaceRoutes(
102
102
  workspaceService,
103
103
  authService,
104
- {} as unknown as IWorkflowService,
105
- {} as unknown as WorkflowEventBus,
104
+ {} as unknown as IVersionControlService,
105
+ {} as unknown as VersionControlEventBus,
106
106
  accessControl,
107
107
  testKbContext({ kbDirName: KB }),
108
108
  stubCreatorAccess,
@@ -5,9 +5,9 @@ import { describe, it, expect, afterEach, vi } from 'vitest';
5
5
  import { testKbContext } from '../../../__tests__/kb-context.js';
6
6
  import { NodeFs } from '../../kb-fs/node-fs.js';
7
7
  import { PathTraversalError } from '../../../shared/domain-errors.js';
8
- import type { IWorkflowService } from '@bevel-software/platform-shared';
8
+ import type { IVersionControlService } from '@bevel-software/platform-shared';
9
9
  import type { IAccessControl } from '../../access/access-control.interface.js';
10
- import type { WorkflowEventBus } from '../../workflow/event-bus.js';
10
+ import type { VersionControlEventBus } from '../../version-control/event-bus.js';
11
11
  import type { AuthService } from '../../auth/auth.service.js';
12
12
  import { AccessConfigError } from '../../access-model/access-errors.js';
13
13
  import type { IAdminAccessService } from '../../admin/admin.interface.js';
@@ -122,8 +122,8 @@ async function makeHarness(opts: {
122
122
  authServiceMock.resolveSession = vi.fn(async (token: string) => authServiceMock.verifyToken!(token));
123
123
  const authService = authServiceMock as AuthService;
124
124
 
125
- const workflowService = {} as unknown as IWorkflowService;
126
- const eventBus = {} as unknown as WorkflowEventBus;
125
+ const versionControlService = {} as unknown as IVersionControlService;
126
+ const eventBus = {} as unknown as VersionControlEventBus;
127
127
 
128
128
  const app = express();
129
129
  app.use(express.json());
@@ -138,7 +138,7 @@ async function makeHarness(opts: {
138
138
  app.use('/api', createWorkspaceRoutes(
139
139
  workspaceService,
140
140
  authService,
141
- workflowService,
141
+ versionControlService,
142
142
  eventBus,
143
143
  accessControl,
144
144
  testKbContext({ kbDirName: KB }),
@@ -226,7 +226,7 @@ describe('GET /workspace/:id/file/raw — ?download=1 gated on Download role', (
226
226
  // malformed) and we don't catch it, the async rejection bubbles past
227
227
  // Express and the request hangs (or 500s without the helpful
228
228
  // config-error payload). The route should surface the
229
- // WorkflowDomainError shape — same JSON the per-path /access endpoint
229
+ // VersionControlDomainError shape — same JSON the per-path /access endpoint
230
230
  // returns when it hits the same exception — so the operator can see
231
231
  // which access.md file is broken.
232
232
  const configErr = new AccessConfigError([
@@ -6,11 +6,11 @@ import { testKbContext } from '../../../__tests__/kb-context.js';
6
6
  import { NodeFs } from '../../kb-fs/node-fs.js';
7
7
  import { PathTraversalError } from '../../../shared/domain-errors.js';
8
8
  import { EntryExistsError } from '../workspace.service.js';
9
- import type { IWorkflowService } from '@bevel-software/platform-shared';
9
+ import type { IVersionControlService } from '@bevel-software/platform-shared';
10
10
  import type { IAccessControl } from '../../access/access-control.interface.js';
11
11
  import type { ICreatorAccess } from '../../access-model/creator.js';
12
12
  import type { IAdminAccessService } from '../../admin/admin.interface.js';
13
- import type { WorkflowEventBus } from '../../workflow/event-bus.js';
13
+ import type { VersionControlEventBus } from '../../version-control/event-bus.js';
14
14
  import type { AuthService } from '../../auth/auth.service.js';
15
15
  import { createWorkspaceRoutes } from '../workspace.routes.js';
16
16
  import type { SkillSaveCheck } from '../workspace.tools.js';
@@ -112,7 +112,7 @@ async function makeHarness(opts: { canRead?: boolean; skillSaveCheck?: SkillSave
112
112
  noteAccessFileWritten: () => {},
113
113
  } as unknown as ICreatorAccess;
114
114
 
115
- const workflowService = {
115
+ const versionControlService = {
116
116
  getLock: vi.fn(async () => null),
117
117
  acquireLock: vi.fn(async (_w: string, _b: string, p: string) => {
118
118
  lockedPaths.push(p);
@@ -125,7 +125,7 @@ async function makeHarness(opts: { canRead?: boolean; skillSaveCheck?: SkillSave
125
125
  releaseLockUntouched: vi.fn(async (_w: string, _b: string, p: string) => {
126
126
  untouchedPaths.push(p);
127
127
  }),
128
- } as unknown as IWorkflowService;
128
+ } as unknown as IVersionControlService;
129
129
 
130
130
  const authService = { getUserById: vi.fn(async () => USER) } as unknown as AuthService;
131
131
  const readable = opts.canRead !== false;
@@ -147,8 +147,8 @@ async function makeHarness(opts: { canRead?: boolean; skillSaveCheck?: SkillSave
147
147
  createWorkspaceRoutes(
148
148
  workspaceService,
149
149
  authService,
150
- workflowService,
151
- { emit: vi.fn() } as unknown as WorkflowEventBus,
150
+ versionControlService,
151
+ { emit: vi.fn() } as unknown as VersionControlEventBus,
152
152
  accessControl,
153
153
  testKbContext({ kbDirName: KB }),
154
154
  stubCreatorAccess,
@@ -8,10 +8,10 @@ import AdmZip from 'adm-zip';
8
8
  import { describe, it, expect, beforeEach, afterEach } from 'vitest';
9
9
  import { testKbContext } from '../../../__tests__/kb-context.js';
10
10
  import { NodeFs } from '../../kb-fs/node-fs.js';
11
- import type { IWorkflowService } from '@bevel-software/platform-shared';
11
+ import type { IVersionControlService } from '@bevel-software/platform-shared';
12
12
  import type { ICreatorAccess } from '../../access-model/creator.js';
13
13
  import type { IAdminAccessService } from '../../admin/admin.interface.js';
14
- import type { WorkflowEventBus } from '../../workflow/event-bus.js';
14
+ import type { VersionControlEventBus } from '../../version-control/event-bus.js';
15
15
  import type { AuthService } from '../../auth/auth.service.js';
16
16
  import { AccessControlService } from '../../access/access-control.service.js';
17
17
  import { createWorkspaceRoutes } from '../workspace.routes.js';
@@ -109,8 +109,8 @@ describe('GET /folder/zip judges every file it packs (real resolver, real zip)',
109
109
  createWorkspaceRoutes(
110
110
  workspaceService,
111
111
  authService,
112
- {} as unknown as IWorkflowService,
113
- {} as unknown as WorkflowEventBus,
112
+ {} as unknown as IVersionControlService,
113
+ {} as unknown as VersionControlEventBus,
114
114
  accessControl,
115
115
  testKbContext({ kbDirName: KB }),
116
116
  stubCreatorAccess,
@@ -6,10 +6,10 @@ import os from 'node:os';
6
6
  import express from 'express';
7
7
  import { describe, it, expect, afterEach, vi } from 'vitest';
8
8
  import { testKbContext } from '../../../__tests__/kb-context.js';
9
- import type { FileTreeEntry, IWorkflowService } from '@bevel-software/platform-shared';
9
+ import type { FileTreeEntry, IVersionControlService } from '@bevel-software/platform-shared';
10
10
  import { NodeFs } from '../../kb-fs/node-fs.js';
11
11
  import type { IAccessControl } from '../../access/access-control.interface.js';
12
- import type { WorkflowEventBus } from '../../workflow/event-bus.js';
12
+ import type { VersionControlEventBus } from '../../version-control/event-bus.js';
13
13
  import type { AuthService } from '../../auth/auth.service.js';
14
14
  import type { IAdminAccessService } from '../../admin/admin.interface.js';
15
15
  import type { ICreatorAccess } from '../../access-model/creator.js';
@@ -65,12 +65,12 @@ async function makeHarness(): Promise<Harness> {
65
65
  acquired: true,
66
66
  lock: {} as never,
67
67
  }));
68
- const workflowService = {
68
+ const versionControlService = {
69
69
  getLock: vi.fn(async () => null),
70
70
  acquireLock,
71
71
  releaseLock,
72
72
  releaseLockNoCommit: vi.fn(async () => undefined as never),
73
- } as unknown as IWorkflowService;
73
+ } as unknown as IVersionControlService;
74
74
 
75
75
  const emit = vi.fn();
76
76
  const app = express();
@@ -84,8 +84,8 @@ async function makeHarness(): Promise<Harness> {
84
84
  createWorkspaceRoutes(
85
85
  workspaceService,
86
86
  { getUserById: vi.fn(async () => USER) } as unknown as AuthService,
87
- workflowService,
88
- { emit } as unknown as WorkflowEventBus,
87
+ versionControlService,
88
+ { emit } as unknown as VersionControlEventBus,
89
89
  allowAll,
90
90
  testKbContext({ kbDirName: KB }),
91
91
  stubCreatorAccess,