@bevel-software/platform-core-backend 0.33.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/agent-guide/access-control.md +19 -8
  2. package/agent-guide/html-views.md +231 -5
  3. package/agent-guide/tool-manuals.md +1 -1
  4. package/dist/core/catalog-revision.d.ts +12 -1
  5. package/dist/core/catalog-revision.d.ts.map +1 -1
  6. package/dist/core/catalog-revision.js +23 -3
  7. package/dist/core/catalog-revision.js.map +1 -1
  8. package/dist/core/core-ports.d.ts +41 -0
  9. package/dist/core/core-ports.d.ts.map +1 -1
  10. package/dist/core/core-ports.js.map +1 -1
  11. package/dist/core/create-core-server.d.ts.map +1 -1
  12. package/dist/core/create-core-server.js +14 -7
  13. package/dist/core/create-core-server.js.map +1 -1
  14. package/dist/core/create-core-services.d.ts +16 -5
  15. package/dist/core/create-core-services.d.ts.map +1 -1
  16. package/dist/core/create-core-services.js +37 -12
  17. package/dist/core/create-core-services.js.map +1 -1
  18. package/dist/core/lifecycle.d.ts +16 -0
  19. package/dist/core/lifecycle.d.ts.map +1 -1
  20. package/dist/core/lifecycle.js +12 -2
  21. package/dist/core/lifecycle.js.map +1 -1
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/modules/access/access-control.interface.d.ts +17 -9
  26. package/dist/modules/access/access-control.interface.d.ts.map +1 -1
  27. package/dist/modules/access/access-control.service.d.ts +12 -2
  28. package/dist/modules/access/access-control.service.d.ts.map +1 -1
  29. package/dist/modules/access/access-control.service.js +164 -75
  30. package/dist/modules/access/access-control.service.js.map +1 -1
  31. package/dist/modules/access/access-mutation.service.d.ts +22 -24
  32. package/dist/modules/access/access-mutation.service.d.ts.map +1 -1
  33. package/dist/modules/access/access-mutation.service.js +48 -51
  34. package/dist/modules/access/access-mutation.service.js.map +1 -1
  35. package/dist/modules/access/access-view.d.ts.map +1 -1
  36. package/dist/modules/access/access-view.js +12 -11
  37. package/dist/modules/access/access-view.js.map +1 -1
  38. package/dist/modules/access/access.routes.d.ts +3 -0
  39. package/dist/modules/access/access.routes.d.ts.map +1 -1
  40. package/dist/modules/access/access.routes.js +35 -29
  41. package/dist/modules/access/access.routes.js.map +1 -1
  42. package/dist/modules/access/groups-admin.routes.d.ts.map +1 -1
  43. package/dist/modules/access/groups-admin.routes.js +4 -2
  44. package/dist/modules/access/groups-admin.routes.js.map +1 -1
  45. package/dist/modules/access/groups-admin.service.d.ts +44 -13
  46. package/dist/modules/access/groups-admin.service.d.ts.map +1 -1
  47. package/dist/modules/access/groups-admin.service.js +80 -38
  48. package/dist/modules/access/groups-admin.service.js.map +1 -1
  49. package/dist/modules/access/groups-edit.d.ts +1 -1
  50. package/dist/modules/access/groups-edit.d.ts.map +1 -1
  51. package/dist/modules/access/groups-edit.js +1 -1
  52. package/dist/modules/access/groups-edit.js.map +1 -1
  53. package/dist/modules/access/reference-scan.d.ts +116 -24
  54. package/dist/modules/access/reference-scan.d.ts.map +1 -1
  55. package/dist/modules/access/reference-scan.js +305 -44
  56. package/dist/modules/access/reference-scan.js.map +1 -1
  57. package/dist/modules/access/roles-admin.service.d.ts +17 -8
  58. package/dist/modules/access/roles-admin.service.d.ts.map +1 -1
  59. package/dist/modules/access/roles-admin.service.js +32 -23
  60. package/dist/modules/access/roles-admin.service.js.map +1 -1
  61. package/dist/modules/access-model/access-grammar.d.ts +35 -10
  62. package/dist/modules/access-model/access-grammar.d.ts.map +1 -1
  63. package/dist/modules/access-model/access-grammar.js +60 -20
  64. package/dist/modules/access-model/access-grammar.js.map +1 -1
  65. package/dist/modules/access-model/access-splice.d.ts +22 -18
  66. package/dist/modules/access-model/access-splice.d.ts.map +1 -1
  67. package/dist/modules/access-model/access-splice.js +20 -14
  68. package/dist/modules/access-model/access-splice.js.map +1 -1
  69. package/dist/modules/access-model/group-files.d.ts +1 -0
  70. package/dist/modules/access-model/group-files.d.ts.map +1 -1
  71. package/dist/modules/access-model/group-files.js +5 -1
  72. package/dist/modules/access-model/group-files.js.map +1 -1
  73. package/dist/modules/agent-guide/agent-guide.tools.d.ts.map +1 -1
  74. package/dist/modules/agent-guide/agent-guide.tools.js +13 -3
  75. package/dist/modules/agent-guide/agent-guide.tools.js.map +1 -1
  76. package/dist/modules/agent-instructions/compose.d.ts +3 -1
  77. package/dist/modules/agent-instructions/compose.d.ts.map +1 -1
  78. package/dist/modules/agent-instructions/compose.js +3 -1
  79. package/dist/modules/agent-instructions/compose.js.map +1 -1
  80. package/dist/modules/agent-instructions/shared-file-rules.d.ts +5 -1
  81. package/dist/modules/agent-instructions/shared-file-rules.d.ts.map +1 -1
  82. package/dist/modules/agent-instructions/shared-file-rules.js +16 -1
  83. package/dist/modules/agent-instructions/shared-file-rules.js.map +1 -1
  84. package/dist/modules/agent-scope/agent-scope.contract.d.ts +67 -0
  85. package/dist/modules/agent-scope/agent-scope.contract.d.ts.map +1 -0
  86. package/dist/modules/agent-scope/agent-scope.contract.js +27 -0
  87. package/dist/modules/agent-scope/agent-scope.contract.js.map +1 -0
  88. package/dist/modules/agent-scope/connection-scope.d.ts +111 -0
  89. package/dist/modules/agent-scope/connection-scope.d.ts.map +1 -0
  90. package/dist/modules/agent-scope/connection-scope.js +165 -0
  91. package/dist/modules/agent-scope/connection-scope.js.map +1 -0
  92. package/dist/modules/agent-scope/index.d.ts +3 -0
  93. package/dist/modules/agent-scope/index.d.ts.map +1 -0
  94. package/dist/modules/agent-scope/index.js +3 -0
  95. package/dist/modules/agent-scope/index.js.map +1 -0
  96. package/dist/modules/audit/agent-audit.service.d.ts.map +1 -1
  97. package/dist/modules/audit/agent-audit.service.js +2 -0
  98. package/dist/modules/audit/agent-audit.service.js.map +1 -1
  99. package/dist/modules/audit/audit.contract.d.ts +6 -0
  100. package/dist/modules/audit/audit.contract.d.ts.map +1 -1
  101. package/dist/modules/audit/audit.contract.js.map +1 -1
  102. package/dist/modules/auth/account-admission.d.ts +12 -0
  103. package/dist/modules/auth/account-admission.d.ts.map +1 -1
  104. package/dist/modules/auth/account-admission.js +15 -0
  105. package/dist/modules/auth/account-admission.js.map +1 -1
  106. package/dist/modules/auth/auth.middleware.d.ts +27 -1
  107. package/dist/modules/auth/auth.middleware.d.ts.map +1 -1
  108. package/dist/modules/auth/auth.middleware.js +42 -4
  109. package/dist/modules/auth/auth.middleware.js.map +1 -1
  110. package/dist/modules/auth/auth.routes.d.ts +13 -9
  111. package/dist/modules/auth/auth.routes.d.ts.map +1 -1
  112. package/dist/modules/auth/auth.routes.js +35 -29
  113. package/dist/modules/auth/auth.routes.js.map +1 -1
  114. package/dist/modules/auth/auth.service.d.ts +55 -6
  115. package/dist/modules/auth/auth.service.d.ts.map +1 -1
  116. package/dist/modules/auth/auth.service.js +128 -34
  117. package/dist/modules/auth/auth.service.js.map +1 -1
  118. package/dist/modules/auth/index.d.ts +1 -1
  119. package/dist/modules/auth/index.d.ts.map +1 -1
  120. package/dist/modules/auth/index.js +1 -1
  121. package/dist/modules/auth/index.js.map +1 -1
  122. package/dist/modules/auth/oidc-auth-provider.d.ts.map +1 -1
  123. package/dist/modules/auth/oidc-auth-provider.js +2 -9
  124. package/dist/modules/auth/oidc-auth-provider.js.map +1 -1
  125. package/dist/modules/database/core-schema.d.ts +68 -0
  126. package/dist/modules/database/core-schema.d.ts.map +1 -1
  127. package/dist/modules/database/core-schema.js +33 -0
  128. package/dist/modules/database/core-schema.js.map +1 -1
  129. package/dist/modules/declared-variables/declared-variables.routes.d.ts +8 -1
  130. package/dist/modules/declared-variables/declared-variables.routes.d.ts.map +1 -1
  131. package/dist/modules/declared-variables/declared-variables.routes.js +13 -2
  132. package/dist/modules/declared-variables/declared-variables.routes.js.map +1 -1
  133. package/dist/modules/embed/embed.tools.d.ts.map +1 -1
  134. package/dist/modules/embed/embed.tools.js +5 -0
  135. package/dist/modules/embed/embed.tools.js.map +1 -1
  136. package/dist/modules/kb-fs/index.d.ts +2 -0
  137. package/dist/modules/kb-fs/index.d.ts.map +1 -1
  138. package/dist/modules/kb-fs/index.js +1 -0
  139. package/dist/modules/kb-fs/index.js.map +1 -1
  140. package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
  141. package/dist/modules/kb-fs/locking-filesystem.js +7 -1
  142. package/dist/modules/kb-fs/locking-filesystem.js.map +1 -1
  143. package/dist/modules/kb-fs/repo-path.d.ts +26 -6
  144. package/dist/modules/kb-fs/repo-path.d.ts.map +1 -1
  145. package/dist/modules/kb-fs/repo-path.js +22 -7
  146. package/dist/modules/kb-fs/repo-path.js.map +1 -1
  147. package/dist/modules/kb-fs/tmp-ref.d.ts +36 -0
  148. package/dist/modules/kb-fs/tmp-ref.d.ts.map +1 -0
  149. package/dist/modules/kb-fs/tmp-ref.js +76 -0
  150. package/dist/modules/kb-fs/tmp-ref.js.map +1 -0
  151. package/dist/modules/mcp/mcp-auth.middleware.d.ts +7 -0
  152. package/dist/modules/mcp/mcp-auth.middleware.d.ts.map +1 -1
  153. package/dist/modules/mcp/mcp-auth.middleware.js +14 -1
  154. package/dist/modules/mcp/mcp-auth.middleware.js.map +1 -1
  155. package/dist/modules/mcp/mcp.routes.d.ts +7 -1
  156. package/dist/modules/mcp/mcp.routes.d.ts.map +1 -1
  157. package/dist/modules/mcp/mcp.routes.js +39 -4
  158. package/dist/modules/mcp/mcp.routes.js.map +1 -1
  159. package/dist/modules/mcp/mcp.service.d.ts +11 -0
  160. package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
  161. package/dist/modules/mcp/mcp.service.js +68 -13
  162. package/dist/modules/mcp/mcp.service.js.map +1 -1
  163. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts +24 -1
  164. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts.map +1 -1
  165. package/dist/modules/mcp/oauth/bevel-oauth-provider.js +45 -10
  166. package/dist/modules/mcp/oauth/bevel-oauth-provider.js.map +1 -1
  167. package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts +9 -0
  168. package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts.map +1 -1
  169. package/dist/modules/mcp/oauth/oauth-consent.routes.js +34 -1
  170. package/dist/modules/mcp/oauth/oauth-consent.routes.js.map +1 -1
  171. package/dist/modules/plugins/index.d.ts +1 -1
  172. package/dist/modules/plugins/index.d.ts.map +1 -1
  173. package/dist/modules/plugins/index.js.map +1 -1
  174. package/dist/modules/plugins/plugin-links.d.ts +18 -2
  175. package/dist/modules/plugins/plugin-links.d.ts.map +1 -1
  176. package/dist/modules/plugins/plugin-links.js.map +1 -1
  177. package/dist/modules/plugins/plugins.routes.d.ts +5 -1
  178. package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
  179. package/dist/modules/plugins/plugins.routes.js +32 -5
  180. package/dist/modules/plugins/plugins.routes.js.map +1 -1
  181. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +9 -0
  182. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -1
  183. package/dist/modules/secrets-vault/secrets-vault.routes.js +15 -3
  184. package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
  185. package/dist/modules/skills/index.d.ts +3 -3
  186. package/dist/modules/skills/index.d.ts.map +1 -1
  187. package/dist/modules/skills/index.js +0 -2
  188. package/dist/modules/skills/index.js.map +1 -1
  189. package/dist/modules/skills/skills.contract.d.ts +16 -0
  190. package/dist/modules/skills/skills.contract.d.ts.map +1 -1
  191. package/dist/modules/skills/skills.service.d.ts.map +1 -1
  192. package/dist/modules/skills/skills.service.js +6 -1
  193. package/dist/modules/skills/skills.service.js.map +1 -1
  194. package/dist/modules/skills/skills.tools.d.ts.map +1 -1
  195. package/dist/modules/skills/skills.tools.js +24 -12
  196. package/dist/modules/skills/skills.tools.js.map +1 -1
  197. package/dist/modules/tool-auth/external-api-key.interface.d.ts +11 -0
  198. package/dist/modules/tool-auth/external-api-key.interface.d.ts.map +1 -1
  199. package/dist/modules/tool-auth/external-api-key.interface.js.map +1 -1
  200. package/dist/modules/tool-auth/external-api-key.service.d.ts +1 -0
  201. package/dist/modules/tool-auth/external-api-key.service.d.ts.map +1 -1
  202. package/dist/modules/tool-auth/external-api-key.service.js +4 -1
  203. package/dist/modules/tool-auth/external-api-key.service.js.map +1 -1
  204. package/dist/modules/tool-auth/index.d.ts +1 -1
  205. package/dist/modules/tool-auth/index.d.ts.map +1 -1
  206. package/dist/modules/tool-auth/internal-token.service.d.ts +9 -0
  207. package/dist/modules/tool-auth/internal-token.service.d.ts.map +1 -1
  208. package/dist/modules/tool-auth/internal-token.service.js +1 -0
  209. package/dist/modules/tool-auth/internal-token.service.js.map +1 -1
  210. package/dist/modules/tool-auth/tool-auth.middleware.d.ts +27 -3
  211. package/dist/modules/tool-auth/tool-auth.middleware.d.ts.map +1 -1
  212. package/dist/modules/tool-auth/tool-auth.middleware.js +32 -6
  213. package/dist/modules/tool-auth/tool-auth.middleware.js.map +1 -1
  214. package/dist/modules/tool-helpers/tool-context.d.ts +7 -0
  215. package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
  216. package/dist/modules/tool-helpers/tool-context.js +3 -0
  217. package/dist/modules/tool-helpers/tool-context.js.map +1 -1
  218. package/dist/modules/tool-helpers/tool-handler.d.ts +15 -0
  219. package/dist/modules/tool-helpers/tool-handler.d.ts.map +1 -1
  220. package/dist/modules/tool-helpers/tool-handler.js +19 -0
  221. package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
  222. package/dist/modules/tool-helpers/tool.contract.d.ts +10 -0
  223. package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
  224. package/dist/modules/tool-helpers/tool.contract.js.map +1 -1
  225. package/dist/modules/tool-helpers/validate-token.d.ts +3 -1
  226. package/dist/modules/tool-helpers/validate-token.d.ts.map +1 -1
  227. package/dist/modules/tool-helpers/validate-token.js +1 -1
  228. package/dist/modules/tool-helpers/validate-token.js.map +1 -1
  229. package/dist/modules/tool-manuals/index.d.ts +3 -3
  230. package/dist/modules/tool-manuals/index.d.ts.map +1 -1
  231. package/dist/modules/tool-manuals/index.js +0 -2
  232. package/dist/modules/tool-manuals/index.js.map +1 -1
  233. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts +19 -6
  234. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts.map +1 -1
  235. package/dist/modules/tool-manuals/tool-manuals.routes.d.ts +7 -1
  236. package/dist/modules/tool-manuals/tool-manuals.routes.d.ts.map +1 -1
  237. package/dist/modules/tool-manuals/tool-manuals.routes.js +41 -4
  238. package/dist/modules/tool-manuals/tool-manuals.routes.js.map +1 -1
  239. package/dist/modules/tool-manuals/tool-manuals.service.d.ts +13 -6
  240. package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
  241. package/dist/modules/tool-manuals/tool-manuals.service.js +23 -15
  242. package/dist/modules/tool-manuals/tool-manuals.service.js.map +1 -1
  243. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
  244. package/dist/modules/tool-manuals/tool-manuals.tools.js +25 -10
  245. package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
  246. package/dist/modules/tool-registry/manual.routes.d.ts +8 -1
  247. package/dist/modules/tool-registry/manual.routes.d.ts.map +1 -1
  248. package/dist/modules/tool-registry/manual.routes.js +27 -7
  249. package/dist/modules/tool-registry/manual.routes.js.map +1 -1
  250. package/dist/modules/tool-registry/tool.contract.d.ts +7 -0
  251. package/dist/modules/tool-registry/tool.contract.d.ts.map +1 -1
  252. package/dist/modules/tool-registry/tool.contract.js.map +1 -1
  253. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -1
  254. package/dist/modules/workflow/agent-tools/workflow.tools.js +14 -9
  255. package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -1
  256. package/dist/modules/workflow/git/git.service.d.ts +2 -2
  257. package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
  258. package/dist/modules/workflow/git/git.service.js +20 -35
  259. package/dist/modules/workflow/git/git.service.js.map +1 -1
  260. package/dist/modules/workflow/workflow.service.d.ts +2 -1
  261. package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
  262. package/dist/modules/workflow/workflow.service.js +3 -0
  263. package/dist/modules/workflow/workflow.service.js.map +1 -1
  264. package/dist/modules/workspace/file-readers/doc-extract.service.d.ts +28 -4
  265. package/dist/modules/workspace/file-readers/doc-extract.service.d.ts.map +1 -1
  266. package/dist/modules/workspace/file-readers/doc-extract.service.js +61 -40
  267. package/dist/modules/workspace/file-readers/doc-extract.service.js.map +1 -1
  268. package/dist/modules/workspace/index.d.ts +8 -0
  269. package/dist/modules/workspace/index.d.ts.map +1 -1
  270. package/dist/modules/workspace/index.js +8 -0
  271. package/dist/modules/workspace/index.js.map +1 -1
  272. package/dist/modules/workspace/nul-scan.d.ts +19 -0
  273. package/dist/modules/workspace/nul-scan.d.ts.map +1 -0
  274. package/dist/modules/workspace/nul-scan.js +55 -0
  275. package/dist/modules/workspace/nul-scan.js.map +1 -0
  276. package/dist/modules/workspace/pattern-matcher.contract.d.ts +110 -27
  277. package/dist/modules/workspace/pattern-matcher.contract.d.ts.map +1 -1
  278. package/dist/modules/workspace/pattern-matcher.contract.js +30 -13
  279. package/dist/modules/workspace/pattern-matcher.contract.js.map +1 -1
  280. package/dist/modules/workspace/ripgrep-search.d.ts +54 -0
  281. package/dist/modules/workspace/ripgrep-search.d.ts.map +1 -0
  282. package/dist/modules/workspace/ripgrep-search.js +657 -0
  283. package/dist/modules/workspace/ripgrep-search.js.map +1 -0
  284. package/dist/modules/workspace/ripgrep-version.d.ts +15 -0
  285. package/dist/modules/workspace/ripgrep-version.d.ts.map +1 -0
  286. package/dist/modules/workspace/ripgrep-version.js +31 -0
  287. package/dist/modules/workspace/ripgrep-version.js.map +1 -0
  288. package/dist/modules/workspace/startup/beside-checkout.d.ts +8 -5
  289. package/dist/modules/workspace/startup/beside-checkout.d.ts.map +1 -1
  290. package/dist/modules/workspace/startup/beside-checkout.js +14 -5
  291. package/dist/modules/workspace/startup/beside-checkout.js.map +1 -1
  292. package/dist/modules/workspace/worker-pool.d.ts +3 -4
  293. package/dist/modules/workspace/worker-pool.d.ts.map +1 -1
  294. package/dist/modules/workspace/worker-pool.js.map +1 -1
  295. package/dist/modules/workspace/workspace-tmp.d.ts +146 -0
  296. package/dist/modules/workspace/workspace-tmp.d.ts.map +1 -0
  297. package/dist/modules/workspace/workspace-tmp.js +435 -0
  298. package/dist/modules/workspace/workspace-tmp.js.map +1 -0
  299. package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
  300. package/dist/modules/workspace/workspace.routes.js +5 -26
  301. package/dist/modules/workspace/workspace.routes.js.map +1 -1
  302. package/dist/modules/workspace/workspace.service.d.ts +47 -6
  303. package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
  304. package/dist/modules/workspace/workspace.service.js +86 -6
  305. package/dist/modules/workspace/workspace.service.js.map +1 -1
  306. package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
  307. package/dist/modules/workspace/workspace.tools.js +460 -116
  308. package/dist/modules/workspace/workspace.tools.js.map +1 -1
  309. package/dist/shared/path-order.d.ts +28 -8
  310. package/dist/shared/path-order.d.ts.map +1 -1
  311. package/dist/shared/path-order.js +37 -8
  312. package/dist/shared/path-order.js.map +1 -1
  313. package/migrations/0022_session_version.sql +6 -0
  314. package/migrations/0023_agent_path.sql +3 -0
  315. package/migrations/meta/0022_snapshot.json +2360 -0
  316. package/migrations/meta/0023_snapshot.json +2378 -0
  317. package/migrations/meta/_journal.json +14 -0
  318. package/package.json +3 -3
  319. package/src/__tests__/pg-scratch.test.ts +69 -0
  320. package/src/__tests__/pg-scratch.ts +31 -0
  321. package/src/__tests__/slow-ripgrep.ts +65 -0
  322. package/src/core/__tests__/boot-without-ripgrep.test.ts +34 -0
  323. package/src/core/__tests__/catalog-revision.test.ts +89 -0
  324. package/src/core/__tests__/damaged-document.tools.test.ts +2 -2
  325. package/src/core/__tests__/gated-boot.test.ts +8 -1
  326. package/src/core/__tests__/lifecycle.test.ts +46 -13
  327. package/src/core/catalog-revision.ts +24 -2
  328. package/src/core/core-ports.ts +42 -0
  329. package/src/core/create-core-server.ts +13 -0
  330. package/src/core/create-core-services.ts +49 -12
  331. package/src/core/lifecycle.ts +26 -2
  332. package/src/index.ts +1 -1
  333. package/src/modules/access/__tests__/access-control.admin-root-floor.test.ts +12 -0
  334. package/src/modules/access/__tests__/access-control.colliding-name-cases.test.ts +113 -0
  335. package/src/modules/access/__tests__/access-control.frontmatter-head.test.ts +117 -0
  336. package/src/modules/access/__tests__/access-control.group-named-admin.test.ts +122 -0
  337. package/src/modules/access/__tests__/access-control.preview-relocation.test.ts +50 -0
  338. package/src/modules/access/__tests__/access-declarations.test.ts +19 -0
  339. package/src/modules/access/__tests__/access-groups.test.ts +55 -22
  340. package/src/modules/access/__tests__/access-mutation.service.test.ts +85 -59
  341. package/src/modules/access/__tests__/access-restrict-here.test.ts +7 -5
  342. package/src/modules/access/__tests__/access.routes.admins.test.ts +1 -0
  343. package/src/modules/access/__tests__/access.routes.batch.test.ts +2 -0
  344. package/src/modules/access/__tests__/access.routes.folder-governs.test.ts +2 -0
  345. package/src/modules/access/__tests__/access.routes.group-grant.test.ts +50 -14
  346. package/src/modules/access/__tests__/access.routes.overrides.test.ts +2 -1
  347. package/src/modules/access/__tests__/access.routes.proposal-branch.test.ts +1 -0
  348. package/src/modules/access/__tests__/access.routes.prospective.test.ts +2 -0
  349. package/src/modules/access/__tests__/access.routes.revoke.test.ts +18 -13
  350. package/src/modules/access/__tests__/access.routes.unknown-email.test.ts +2 -0
  351. package/src/modules/access/__tests__/grant-sources.test.ts +20 -15
  352. package/src/modules/access/__tests__/groups-admin.routes.test.ts +61 -0
  353. package/src/modules/access/__tests__/groups-admin.service.test.ts +211 -18
  354. package/src/modules/access/__tests__/reference-scan.test.ts +366 -14
  355. package/src/modules/access/__tests__/roles-admin.security.test.ts +1 -1
  356. package/src/modules/access/__tests__/roles-admin.service.test.ts +43 -22
  357. package/src/modules/access/__tests__/roles-capabilities.test.ts +6 -2
  358. package/src/modules/access/__tests__/roles.routes.test.ts +1 -1
  359. package/src/modules/access/access-control.interface.ts +17 -10
  360. package/src/modules/access/access-control.service.ts +158 -72
  361. package/src/modules/access/access-mutation.service.ts +48 -53
  362. package/src/modules/access/access-view.ts +12 -10
  363. package/src/modules/access/access.routes.ts +43 -33
  364. package/src/modules/access/groups-admin.routes.ts +4 -2
  365. package/src/modules/access/groups-admin.service.ts +114 -44
  366. package/src/modules/access/groups-edit.ts +1 -1
  367. package/src/modules/access/reference-scan.ts +319 -46
  368. package/src/modules/access/roles-admin.service.ts +43 -26
  369. package/src/modules/access/synced-groups-writer.ts +1 -1
  370. package/src/modules/access-model/__tests__/access-grammar.test.ts +38 -1
  371. package/src/modules/access-model/__tests__/access-splice.test.ts +50 -8
  372. package/src/modules/access-model/access-grammar.ts +65 -20
  373. package/src/modules/access-model/access-splice.ts +31 -23
  374. package/src/modules/access-model/group-files.ts +5 -0
  375. package/src/modules/agent-guide/__tests__/agent-guide.test.ts +31 -0
  376. package/src/modules/agent-guide/agent-guide.tools.ts +13 -2
  377. package/src/modules/agent-instructions/__tests__/shared-file-rules.test.ts +1 -0
  378. package/src/modules/agent-instructions/compose.ts +3 -1
  379. package/src/modules/agent-instructions/shared-file-rules.ts +17 -1
  380. package/src/modules/agent-scope/__tests__/agent-surfaces.connect-as.test.ts +421 -0
  381. package/src/modules/agent-scope/__tests__/connection-scope.test.ts +46 -0
  382. package/src/modules/agent-scope/__tests__/in-memory-kb.ts +148 -0
  383. package/src/modules/agent-scope/agent-scope.contract.ts +83 -0
  384. package/src/modules/agent-scope/connection-scope.ts +199 -0
  385. package/src/modules/agent-scope/index.ts +15 -0
  386. package/src/modules/audit/agent-audit.service.ts +2 -0
  387. package/src/modules/audit/audit.contract.ts +6 -0
  388. package/src/modules/auth/__tests__/auth.middleware.test.ts +30 -2
  389. package/src/modules/auth/__tests__/auth.routes.test.ts +71 -5
  390. package/src/modules/auth/__tests__/auth.service.test.ts +90 -9
  391. package/src/modules/auth/__tests__/password-change-sessions.pg.test.ts +269 -0
  392. package/src/modules/auth/account-admission.ts +19 -0
  393. package/src/modules/auth/auth.middleware.ts +45 -4
  394. package/src/modules/auth/auth.routes.ts +46 -29
  395. package/src/modules/auth/auth.service.ts +135 -34
  396. package/src/modules/auth/index.ts +2 -0
  397. package/src/modules/auth/oidc-auth-provider.ts +2 -9
  398. package/src/modules/database/__tests__/session-version-migration.pg.test.ts +133 -0
  399. package/src/modules/database/core-schema.ts +33 -0
  400. package/src/modules/declared-variables/__tests__/declared-variables.route.test.ts +44 -1
  401. package/src/modules/declared-variables/declared-variables.routes.ts +12 -1
  402. package/src/modules/embed/__tests__/embed.tools.test.ts +12 -0
  403. package/src/modules/embed/embed.tools.ts +5 -0
  404. package/src/modules/kb-fs/__tests__/locking-filesystem.test.ts +25 -0
  405. package/src/modules/kb-fs/__tests__/repo-path.test.ts +53 -8
  406. package/src/modules/kb-fs/index.ts +2 -0
  407. package/src/modules/kb-fs/locking-filesystem.ts +7 -1
  408. package/src/modules/kb-fs/repo-path.ts +33 -7
  409. package/src/modules/kb-fs/tmp-ref.ts +81 -0
  410. package/src/modules/mcp/__tests__/connect-as.pg.test.ts +137 -0
  411. package/src/modules/mcp/__tests__/mcp-auth.middleware.test.ts +29 -5
  412. package/src/modules/mcp/__tests__/mcp-routes-harness.ts +8 -0
  413. package/src/modules/mcp/__tests__/mcp.connect-as.test.ts +195 -0
  414. package/src/modules/mcp/__tests__/mcp.routes.connect-as.test.ts +192 -0
  415. package/src/modules/mcp/__tests__/oauth-consent.connect-as.test.ts +146 -0
  416. package/src/modules/mcp/mcp-auth.middleware.ts +19 -2
  417. package/src/modules/mcp/mcp.routes.ts +39 -3
  418. package/src/modules/mcp/mcp.service.ts +107 -17
  419. package/src/modules/mcp/oauth/bevel-oauth-provider.ts +46 -8
  420. package/src/modules/mcp/oauth/oauth-consent.routes.ts +41 -1
  421. package/src/modules/plugins/__tests__/plugins.tools.test.ts +38 -2
  422. package/src/modules/plugins/index.ts +1 -1
  423. package/src/modules/plugins/plugin-links.ts +19 -2
  424. package/src/modules/plugins/plugins.routes.ts +35 -4
  425. package/src/modules/secrets-vault/__tests__/connect-pending.route.test.ts +113 -0
  426. package/src/modules/secrets-vault/secrets-vault.routes.ts +23 -3
  427. package/src/modules/skills/__tests__/skills.service.test.ts +34 -0
  428. package/src/modules/skills/index.ts +7 -2
  429. package/src/modules/skills/skills.contract.ts +17 -0
  430. package/src/modules/skills/skills.service.ts +5 -1
  431. package/src/modules/skills/skills.tools.ts +44 -13
  432. package/src/modules/tool-auth/__tests__/external-api-key.service.test.ts +4 -0
  433. package/src/modules/tool-auth/external-api-key.interface.ts +11 -1
  434. package/src/modules/tool-auth/external-api-key.service.ts +5 -2
  435. package/src/modules/tool-auth/index.ts +1 -1
  436. package/src/modules/tool-auth/internal-token.service.ts +10 -0
  437. package/src/modules/tool-auth/tool-auth.middleware.ts +45 -3
  438. package/src/modules/tool-helpers/__tests__/can-write.tools.test.ts +3 -1
  439. package/src/modules/tool-helpers/tool-context.ts +10 -0
  440. package/src/modules/tool-helpers/tool-handler.ts +34 -0
  441. package/src/modules/tool-helpers/tool.contract.ts +10 -0
  442. package/src/modules/tool-helpers/validate-token.ts +4 -2
  443. package/src/modules/tool-manuals/__tests__/tool-manuals.archive.route.test.ts +80 -4
  444. package/src/modules/tool-manuals/__tests__/tool-manuals.service.test.ts +42 -0
  445. package/src/modules/tool-manuals/__tests__/tool-manuals.tools.test.ts +3 -3
  446. package/src/modules/tool-manuals/index.ts +6 -2
  447. package/src/modules/tool-manuals/tool-manuals.contract.ts +18 -6
  448. package/src/modules/tool-manuals/tool-manuals.routes.ts +40 -3
  449. package/src/modules/tool-manuals/tool-manuals.service.ts +31 -15
  450. package/src/modules/tool-manuals/tool-manuals.tools.ts +28 -11
  451. package/src/modules/tool-registry/__tests__/tool-description-length.test.ts +2 -2
  452. package/src/modules/tool-registry/manual.routes.ts +26 -5
  453. package/src/modules/tool-registry/tool.contract.ts +7 -0
  454. package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +1 -1
  455. package/src/modules/workflow/__tests__/workflow.service.sync.test.ts +1 -1
  456. package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +54 -3
  457. package/src/modules/workflow/agent-tools/workflow.tools.ts +14 -9
  458. package/src/modules/workflow/git/__tests__/git.service.list-branches.test.ts +130 -3
  459. package/src/modules/workflow/git/git.service.ts +29 -48
  460. package/src/modules/workflow/workflow.service.ts +5 -0
  461. package/src/modules/workspace/__tests__/git-internals.security.test.ts +2 -2
  462. package/src/modules/workspace/__tests__/holds-nul.test.ts +66 -0
  463. package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +3 -3
  464. package/src/modules/workspace/__tests__/ripgrep-search.test.ts +570 -0
  465. package/src/modules/workspace/__tests__/ripgrep-version.test.ts +29 -0
  466. package/src/modules/workspace/__tests__/workspace-tmp.tools.test.ts +928 -0
  467. package/src/modules/workspace/__tests__/workspace.routes.read-gate.test.ts +17 -37
  468. package/src/modules/workspace/__tests__/workspace.service.read-filter.test.ts +20 -8
  469. package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +2 -2
  470. package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +22 -10
  471. package/src/modules/workspace/__tests__/workspace.tools.test.ts +393 -113
  472. package/src/modules/workspace/file-readers/__tests__/doc-extract.service.test.ts +10 -0
  473. package/src/modules/workspace/file-readers/doc-extract.service.ts +71 -38
  474. package/src/modules/workspace/index.ts +20 -0
  475. package/src/modules/workspace/nul-scan.ts +50 -0
  476. package/src/modules/workspace/pattern-matcher.contract.ts +123 -32
  477. package/src/modules/workspace/ripgrep-search.ts +715 -0
  478. package/src/modules/workspace/ripgrep-version.ts +35 -0
  479. package/src/modules/workspace/startup/__tests__/beside-checkout.test.ts +11 -0
  480. package/src/modules/workspace/startup/beside-checkout.ts +13 -5
  481. package/src/modules/workspace/worker-pool.ts +3 -4
  482. package/src/modules/workspace/workspace-tmp.ts +457 -0
  483. package/src/modules/workspace/workspace.routes.ts +6 -27
  484. package/src/modules/workspace/workspace.service.ts +92 -15
  485. package/src/modules/workspace/workspace.tools.ts +500 -155
  486. package/src/shared/path-order.ts +37 -8
  487. package/starter-packs/engineering/Plugins/engineering-starter/access.md +1 -1
  488. package/starter-packs/general/Plugins/general-starter/access.md +1 -1
  489. package/starter-packs/operations/Plugins/operations-starter/access.md +1 -1
  490. package/starter-packs/sales/Plugins/sales-starter/access.md +1 -1
  491. package/starter-packs/support/Plugins/support-starter/access.md +1 -1
  492. package/dist/modules/workspace/bounded-matcher.d.ts +0 -73
  493. package/dist/modules/workspace/bounded-matcher.d.ts.map +0 -1
  494. package/dist/modules/workspace/bounded-matcher.js +0 -200
  495. package/dist/modules/workspace/bounded-matcher.js.map +0 -1
  496. package/src/modules/workspace/__tests__/bounded-matcher.test.ts +0 -213
  497. package/src/modules/workspace/bounded-matcher.ts +0 -271
@@ -35,7 +35,7 @@
35
35
  import path from 'node:path';
36
36
  import { isAbsence } from '../../shared/fs.contract.js';
37
37
  import { isTextBytes } from '../workspace/index.js';
38
- import { ADMIN_CANONICAL, KNOWN_VERBS, ROLE_TOKEN_PREFIX, canonicalRoleName, accessFrontmatterExtensionList, } from '../access-model/index.js';
38
+ import { ADMIN_CANONICAL, KNOWN_VERBS, canonicalRoleName, splitPrincipalToken, accessFrontmatterExtensionList, } from '../access-model/index.js';
39
39
  import { spliceRevoke, spliceGrant, validatePrincipal, AccessSpliceError, } from '../access-model/index.js';
40
40
  import { WorkflowDomainError } from '../../shared/domain-errors.js';
41
41
  import { canCarryFrontmatter, FOLDER_GOVERNS_ACCESS_KIND, folderGovernsAccessMessage, } from '@bevel-software/platform-shared';
@@ -60,20 +60,18 @@ export const ADMIN_ROOT_WRITE_MESSAGE = 'Admins always keep write access at the
60
60
  * this target touches the Admin ROLE's write at the repository root — the
61
61
  * root folder's `access.md`, or a file directly in the root. The resolver
62
62
  * ignores such a rule anyway (the Admin write floor), so writing it would only
63
- * leave a line that says something the app does not do. A bare token matched
64
- * `exact` is a group's (or a shadowed name's), never the Admin role. Targets
65
- * arrive in one spelling: the routes refuse `.` and `..` segments.
63
+ * leave a line that says something the app does not do. A bare `Admin` is the
64
+ * role (a bare name is always the role when one exists, and roles.yaml always
65
+ * declares Admin); `group/Admin` is a group and never the role. Targets arrive
66
+ * in one spelling: the routes refuse `.` and `..` segments.
66
67
  */
67
- export function removesAdminRootWrite(kind, repoRelTarget, principal, verb, tokenMatch) {
68
+ export function removesAdminRootWrite(kind, repoRelTarget, principal, verb) {
68
69
  if (principal.kind !== 'role')
69
70
  return false;
70
71
  if (!touchesRootWrite(kind, repoRelTarget, verb))
71
72
  return false;
72
- const canonical = canonicalRoleName(principal.role);
73
- const explicit = canonical.startsWith(ROLE_TOKEN_PREFIX);
74
- if (!explicit && tokenMatch === 'exact')
75
- return false;
76
- return (explicit ? canonical.slice(ROLE_TOKEN_PREFIX.length) : canonical) === ADMIN_CANONICAL;
73
+ const { prefix, name } = splitPrincipalToken(canonicalRoleName(principal.role));
74
+ return prefix !== 'group' && name === ADMIN_CANONICAL;
77
75
  }
78
76
  /** Whether a mutation on `verb` (absent = every verb) at this target reaches write at the repository root. */
79
77
  function touchesRootWrite(kind, repoRelTarget, verb) {
@@ -230,39 +228,41 @@ export class AccessMutationService {
230
228
  return path.posix.join(this.kbDirName, repoRelative);
231
229
  }
232
230
  /**
233
- * How a REVOKE of `principal` matches file tokens — the shadowing rule:
231
+ * How a REVOKE of `principal` matches file tokens. `'name'` strips the
232
+ * principal's explicit spelling AND the bare name (never the other kind's
233
+ * explicit spelling — see `TokenMatch`); `'exact'` strips the literal
234
+ * spelling alone. The bare name is stripped only when it is THIS
235
+ * principal's under role-first precedence:
234
236
  *
235
- * - When a GROUP owns the principal's bare name (group-first precedence),
236
- * the two spellings are DIFFERENT principals: the bare token is the
237
- * group's, `role/<name>` is the role's. Matching is `'exact'` so
238
- * revoking the role never strips the group's bare grant (and revoking
239
- * the group never strips the role's explicit grant).
240
- * - Unshadowed, both spellings resolve to the ROLE (bare falls back to
241
- * it), so matching is `'name'`: revoking the role also removes legacy
242
- * bare spellings — the historical cleanup behavior.
237
+ * - A ROLE (`role/<name>`, or a bare name) owns the bare key unless no
238
+ * role of that name exists and a group does — then the bare token is
239
+ * the group's, and matching is `'exact'`. A model that fails to load
240
+ * keeps it `'exact'` too.
241
+ * - A GROUP (`group/<name>`) owns the bare key only while no role of
242
+ * that name exists — otherwise the bare token is the role's, and
243
+ * matching is `'exact'`. A group that has VANISHED from the active
244
+ * source still reads correctly: the question is whether a ROLE holds
245
+ * the name. A model that fails to load says nothing about roles, so a
246
+ * group revoke then stays `'exact'` rather than risk a role's grant.
243
247
  *
244
248
  * Judged against THIS workspace's merged principal index (`kbPrincipals` —
245
249
  * the same model the resolver reads), so revoke agrees with resolution on
246
- * who owns the bare key. A model that fails to load yields no groups, i.e.
247
- * unshadowed — matching degrades to the pre-groups name-level behavior.
248
- *
249
- * GROUP revokes never take the name-level path: the route passes
250
- * `tokenMatch: 'exact'` explicitly (see `revoke`'s `opts`), because this
251
- * shadow probe cannot tell a group apart from a role once the group has
252
- * VANISHED from the active source — the bare name then reads "unshadowed"
253
- * and a name-level group revoke would strip a same-named role's live
254
- * `role/<Name>` grant.
250
+ * who owns the bare key.
255
251
  */
256
252
  async revokeTokenMatch(workspaceId, principal) {
257
253
  if (principal.kind !== 'role')
258
254
  return 'exact'; // user matching ignores the mode
259
- const canonical = canonicalRoleName(principal.role);
260
- const bare = canonical.startsWith(ROLE_TOKEN_PREFIX)
261
- ? canonical.slice(ROLE_TOKEN_PREFIX.length)
262
- : canonical;
263
- const { groups } = await this.accessControl.kbPrincipals(workspaceId);
264
- const shadowed = groups.some((g) => canonicalRoleName(g) === bare);
265
- return shadowed ? 'exact' : 'name';
255
+ const { prefix, name } = splitPrincipalToken(canonicalRoleName(principal.role));
256
+ const { roles, groups } = await this.accessControl.kbPrincipals(workspaceId);
257
+ const isRole = roles.some((r) => canonicalRoleName(r) === name);
258
+ if (prefix === 'group') {
259
+ // `roles` always carries at least `Everyone` once the model loads.
260
+ return isRole || roles.length === 0 ? 'exact' : 'name';
261
+ }
262
+ const isGroup = groups.some((g) => canonicalRoleName(g) === name);
263
+ // No roles at all means the model failed to load: stay exact, so a role
264
+ // revoke never strips a same-named group's bare grant.
265
+ return roles.length === 0 || (!isRole && isGroup) ? 'exact' : 'name';
266
266
  }
267
267
  /**
268
268
  * Grant `principal` `verb` on `target`. Adds the principal under exactly this
@@ -312,11 +312,10 @@ export class AccessMutationService {
312
312
  // When present, strip ONLY this verb (a per-checkbox toggle in the share UI);
313
313
  // absent strips the principal from every verb (the whole-principal Remove).
314
314
  verb,
315
- // `tokenMatch` overrides the shadow-derived matching. The route passes
316
- // 'exact' for GROUP principals: a group's grant is its bare token only,
317
- // and once the group has vanished the shadow probe can no longer tell it
318
- // from a role — name-level matching would then strip a same-named role's
319
- // `role/<Name>` grant.
315
+ // `tokenMatch` overrides the derived matching (see revokeTokenMatch).
316
+ // One production caller: the plugin-links unlink pins `'exact'` for its
317
+ // `plugin/<Name>/<verb>` tokens. Pin only `'exact'` — a pinned `'name'`
318
+ // would bypass the guard that never strips across kinds.
320
319
  opts) {
321
320
  void _actingUserEmail; // referenced to satisfy no-unused-vars until something consumes it
322
321
  this.assertPrincipalSafe(principal); // same injection/shape guard grant runs
@@ -325,8 +324,8 @@ export class AccessMutationService {
325
324
  // missing FILE node is a bad target and should surface, not silently no-op
326
325
  // — same rule grant() uses.
327
326
  const original = await this.readOrEmpty(workspaceId, kind, repoRelTarget, editPath);
328
- // Alias-tolerant vs exact-token matching, decided by group shadowing —
329
- // see revokeTokenMatch — unless the caller pinned it.
327
+ // Alias-tolerant vs exact-token matching, decided by who owns the bare
328
+ // name — see revokeTokenMatch — unless the caller pinned it.
330
329
  const tokenMatch = opts?.tokenMatch ?? (await this.revokeTokenMatch(workspaceId, principal));
331
330
  let next = original;
332
331
  let changed = false;
@@ -349,7 +348,7 @@ export class AccessMutationService {
349
348
  // Refused only when an Admin write entry would really go: a whole-row
350
349
  // Remove at a root that grants Admin other verbs but no write line (write
351
350
  // comes from the floor) strips those verbs as usual.
352
- if (writeRemoved && removesAdminRootWrite(kind, repoRelTarget, principal, verb, tokenMatch)) {
351
+ if (writeRemoved && removesAdminRootWrite(kind, repoRelTarget, principal, verb)) {
353
352
  throw adminRootWriteRefusal();
354
353
  }
355
354
  if (!changed)
@@ -390,16 +389,16 @@ export class AccessMutationService {
390
389
  * apply to whichever verbs were targeted.
391
390
  */
392
391
  async denyHere(workspaceId, kind, repoRelTarget, principal, verb,
393
- // Same override as `revoke` — the route pins 'exact' for GROUP principals.
392
+ // Same override as `revoke`; no production caller passes it here.
394
393
  opts) {
395
394
  this.assertPrincipalSafe(principal);
396
395
  const { editPath, allowScalar } = this.fileToEdit(kind, repoRelTarget);
397
396
  const original = await this.readOrEmpty(workspaceId, kind, repoRelTarget, editPath);
398
397
  const verbsToDeny = verb ? [verb] : KNOWN_VERBS;
399
- // Same shadowing-aware matching as revoke(): the strip must not swallow a
400
- // same-named OTHER principal's grant (bare = group vs role/<name> = role).
398
+ // Same matching as revoke(): the strip must not swallow a same-named
399
+ // OTHER principal's grant (`group/<name>` vs the role's bare/`role/`).
401
400
  const tokenMatch = opts?.tokenMatch ?? (await this.revokeTokenMatch(workspaceId, principal));
402
- if (removesAdminRootWrite(kind, repoRelTarget, principal, verb, tokenMatch)) {
401
+ if (removesAdminRootWrite(kind, repoRelTarget, principal, verb)) {
403
402
  throw adminRootWriteRefusal();
404
403
  }
405
404
  // A PERSON who is an admin keeps root write through the floor, so a deny
@@ -435,10 +434,8 @@ export class AccessMutationService {
435
434
  this.accessControl.invalidate(workspaceId);
436
435
  // (3) Assert the deny actually removed effective access on the targeted
437
436
  // verb(s) — else roll back. The check evaluates the SAME token identity
438
- // the deny above spliced (`tokenMatch` rides along): with a pinned exact
439
- // GROUP deny whose group has vanished, alias-tolerant matching would read
440
- // a same-named role's surviving `role/<Name>` grant as the group still
441
- // having access — rolling back a fully effective deny as "ineffective".
437
+ // the deny above spliced (`tokenMatch` rides along), so a pinned exact
438
+ // deny is never judged by spellings it did not touch.
442
439
  const stillHas = await this.principalStillHasAccess(workspaceId, kind, repoRelTarget, principal, verb, tokenMatch);
443
440
  if (stillHas) {
444
441
  await this.workspaceService.writeFile(workspaceId, wsRelative, original);
@@ -1 +1 @@
1
- {"version":3,"file":"access-mutation.service.js","sourceRoot":"","sources":["../../../src/modules/access/access-mutation.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access-mutation.service.js","sourceRoot":"","sources":["../../../src/modules/access/access-mutation.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"access-view.d.ts","sourceRoot":"","sources":["../../../src/modules/access/access-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAEhB,WAAW,EAEX,UAAU,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAKL,KAAK,IAAI,EACV,MAAM,0BAA0B,CAAC;AAElC;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,cAAc,EAC7B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GvB;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAOvE;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,kBAAkB,EAAE,CAMvE;AAED,mGAAmG;AACnG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AAiBvD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,YAAY,CAwB1G;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,KAAK,QAAQ,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;IACzF,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB,CAAC;AAEF,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,UAAU,EACV,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,YAAY,CACjE,GAAG;IACF,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IACjD;;;;OAIG;IACH,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;CAChD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,CAcvD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GACjC,kBAAkB,CAgBpB"}
1
+ {"version":3,"file":"access-view.d.ts","sourceRoot":"","sources":["../../../src/modules/access/access-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAEhB,WAAW,EAEX,UAAU,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAML,KAAK,IAAI,EACV,MAAM,0BAA0B,CAAC;AAElC;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,cAAc,EAC7B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2GvB;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAOvE;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,kBAAkB,EAAE,CAMvE;AAED,mGAAmG;AACnG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AAiBvD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,YAAY,CAwB1G;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,KAAK,QAAQ,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;IACzF,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB,CAAC;AAEF,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,UAAU,EACV,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,YAAY,CACjE,GAAG;IACF,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IACjD;;;;OAIG;IACH,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;CAChD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,CAcvD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GACjC,kBAAkB,CAgBpB"}
@@ -1,4 +1,4 @@
1
- import { canonicalRoleName, EVERYONE_CANONICAL, KNOWN_VERBS, ROLE_TOKEN_PREFIX, } from '../access-model/index.js';
1
+ import { canonicalRoleName, EVERYONE_CANONICAL, KNOWN_VERBS, ROLE_TOKEN_PREFIX, GROUP_TOKEN_PREFIX, } from '../access-model/index.js';
2
2
  /**
3
3
  * The resolved access view of one target, as the Manage access dialog reads it
4
4
  * (`GET /api/workspace/:id/access`): the caller's four verdicts, the eligible
@@ -26,13 +26,12 @@ export async function resolveAccessView(accessControl, workspaceId, repoRelTarge
26
26
  // files). Keyed `u:<email>` / `r:<role>` / `g:<group>` to match the
27
27
  // dialog's row keys, so each row can show where its access comes from and
28
28
  // which verbs are removable here. Groups get their OWN `g:` namespace: a
29
- // group and a role sharing a name are DIFFERENT principals (bare token vs
30
- // `role/<name>`), and one shared `r:` entry could only describe one of
31
- // them. Each kind resolves through the token spelling that IS that
32
- // principal — a group through its bare token (group-first precedence), a
33
- // role through its explicit `role/<name>` alias (correct whether or not a
34
- // group shadows the name; the built-in `everyone` keeps its bare spelling,
35
- // it has no alias). A row whose verbs resolve only via a
29
+ // group and a role sharing a name are DIFFERENT principals (`group/<name>`
30
+ // vs the bare name and `role/<name>`), and one shared `r:` entry could only
31
+ // describe one of them. Each kind resolves through the explicit token that
32
+ // IS that principal — a group through `group/<name>`, a role through
33
+ // `role/<name>` (the built-in `everyone` keeps its bare spelling, it has no
34
+ // alias); the bare spelling counts toward whichever kind owns it. A row whose verbs resolve only via a
36
35
  // group/everyone/rescue has no source (the verb is absent) and renders
37
36
  // non-actionable. Built over the union of every principal in the four
38
37
  // eligible lists (kinded `principals`, with the name-only `roles` list as
@@ -73,9 +72,11 @@ export async function resolveAccessView(accessControl, workspaceId, repoRelTarge
73
72
  const denials = {};
74
73
  await Promise.all([
75
74
  ...[...collectives.entries()].map(async ([key, p]) => {
76
- const token = p.kind === 'role' && canonicalRoleName(p.name) !== EVERYONE_CANONICAL
77
- ? `${ROLE_TOKEN_PREFIX}${p.name}`
78
- : p.name;
75
+ const token = p.kind === 'group'
76
+ ? `${GROUP_TOKEN_PREFIX}${p.name}`
77
+ : p.kind === 'role' && canonicalRoleName(p.name) !== EVERYONE_CANONICAL
78
+ ? `${ROLE_TOKEN_PREFIX}${p.name}`
79
+ : p.name;
79
80
  const principal = { kind: 'role', role: token };
80
81
  const [grants, denied] = await Promise.all([
81
82
  accessControl.grantSources(workspaceId, kind, repoRelTarget, principal),
@@ -1 +1 @@
1
- {"version":3,"file":"access-view.js","sourceRoot":"","sources":["../../../src/modules/access/access-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access-view.js","sourceRoot":"","sources":["../../../src/modules/access/access-view.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import express from 'express';
2
2
  import type { IAccessControl } from './access-control.interface.js';
3
3
  import type { WorkspaceService } from '../workspace/index.js';
4
4
  import type { KbContext } from '../../shared/kb-context.js';
5
+ import type { ITreeWalker } from '../../shared/fs.contract.js';
5
6
  import type { AuthService, IAccountSwitchGuard } from '../auth/index.js';
6
7
  import type { WorkflowService, WorkflowEventBus } from '../workflow/index.js';
7
8
  import type { Database } from '../database/index.js';
@@ -9,6 +10,8 @@ import '../auth/index.js';
9
10
  export declare function createAccessRoutes(accessControl: IAccessControl, workspaceService: WorkspaceService, authService: AuthService,
10
11
  /** Auth's switch-off coordination, for the invite's promotion (`ifActive`). */
11
12
  switchGuard: IAccountSwitchGuard, workflowService: WorkflowService, eventBus: WorkflowEventBus, db: Database, kb: KbContext,
13
+ /** The composition root's walk, for the roles admin's reference scan. */
14
+ disk: ITreeWalker,
12
15
  /** This deployment's configured admins — the break-glass recovery roster. */
13
16
  recoveryAdmins?: readonly string[]): express.Router;
14
17
  //# sourceMappingURL=access.routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"access.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/access/access.routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAc9B,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA2B9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,kBAAkB,CAAC;AA8B1B,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW;AACxB,+EAA+E;AAC/E,WAAW,EAAE,mBAAmB,EAChC,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,gBAAgB,EAC1B,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,SAAS;AACb,6EAA6E;AAC7E,cAAc,GAAE,SAAS,MAAM,EAAO,GACrC,OAAO,CAAC,MAAM,CAmzChB"}
1
+ {"version":3,"file":"access.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/access/access.routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAc9B,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA6B9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,kBAAkB,CAAC;AA8B1B,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW;AACxB,+EAA+E;AAC/E,WAAW,EAAE,mBAAmB,EAChC,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,gBAAgB,EAC1B,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,SAAS;AACb,yEAAyE;AACzE,IAAI,EAAE,WAAW;AACjB,6EAA6E;AAC7E,cAAc,GAAE,SAAS,MAAM,EAAO,GACrC,OAAO,CAAC,MAAM,CAwzChB"}
@@ -11,7 +11,7 @@ import { branchForWorkspaceId } from '../../shared/workspace-id.js';
11
11
  import { WorkflowDomainError } from '../../shared/domain-errors.js';
12
12
  import { AccessDeniedError } from '../access-model/index.js';
13
13
  import { AccessMutationService, AccessMutationError, accessMdPathForFolder, assertFileCarriesAccessRules, fileCarriesAccessRules, governingFolderOf, } from './access-mutation.service.js';
14
- import { canonicalRoleName, EVERYONE_CANONICAL, PLUGIN_TOKEN_PREFIX, PLUGIN_TOKEN_VERBS, ROLE_TOKEN_PREFIX, } from '../access-model/index.js';
14
+ import { canonicalRoleName, EVERYONE_CANONICAL, PLUGIN_TOKEN_PREFIX, PLUGIN_TOKEN_VERBS, ROLE_TOKEN_PREFIX, GROUP_TOKEN_PREFIX, splitPrincipalToken, } from '../access-model/index.js';
15
15
  import { listAccessDeclarationsUnder } from './access-declarations.js';
16
16
  import { emailsInView, holderPrincipals, labelAccountHolders, resolveAccessView } from './access-view.js';
17
17
  import { toHttpError as sharedToHttpError, requireNonEmptyString as sharedRequireNonEmptyString } from './admin-route-helpers.js';
@@ -44,12 +44,14 @@ function isFolderGovernsRefusal(err) {
44
44
  export function createAccessRoutes(accessControl, workspaceService, authService,
45
45
  /** Auth's switch-off coordination, for the invite's promotion (`ifActive`). */
46
46
  switchGuard, workflowService, eventBus, db, kb,
47
+ /** The composition root's walk, for the roles admin's reference scan. */
48
+ disk,
47
49
  /** This deployment's configured admins — the break-glass recovery roster. */
48
50
  recoveryAdmins = []) {
49
51
  const router = express.Router({ mergeParams: true });
50
52
  const { kbDirName } = kb;
51
53
  const mutation = new AccessMutationService(workspaceService, accessControl, kbDirName);
52
- const rolesAdmin = new RolesAdminService(workspaceService, workflowService, accessControl, kbDirName, () => kb.defaultBranch, eventBus, recoveryAdmins);
54
+ const rolesAdmin = new RolesAdminService(workspaceService, workflowService, accessControl, disk, kbDirName, () => kb.defaultBranch, eventBus, recoveryAdmins);
53
55
  // Roles and groups are authoritative on the DEFAULT branch — the Roles
54
56
  // admin screen only ever edits roles.yaml there, and the ACTIVE group
55
57
  // source (IdP-synced or manual) lives there. Resolve both from the
@@ -89,15 +91,17 @@ recoveryAdmins = []) {
89
91
  };
90
92
  /**
91
93
  * The role-shaped principal the splice layer actually writes/matches.
92
- * - group → its bare name (group-first precedence resolves it).
93
- * - role → the explicit `role/<Name>` token — the grant route WRITES
94
- * roles that way from now on (bare role tokens remain
95
- * read-compatible). The built-in `everyone` stays bare: it
96
- * is not a roles.yaml role and has no `role/` alias.
94
+ * - group → the explicit `group/<Name>` token. Never the bare name:
95
+ * a bare name is the ROLE whenever one of that name exists,
96
+ * so a bare group grant could silently mean someone else.
97
+ * - role → the explicit `role/<Name>` token. Bare spellings in
98
+ * existing files remain read-compatible. The built-in
99
+ * `everyone` stays bare: it is not a roles.yaml role and
100
+ * has no `role/` alias.
97
101
  */
98
102
  const asSplicePrincipal = (p) => {
99
103
  if (p.kind === 'group')
100
- return { kind: 'role', role: p.group };
104
+ return { kind: 'role', role: `${GROUP_TOKEN_PREFIX}${groupName(p.group)}` };
101
105
  // Written with the folder's own casing; `parseAccessEntry` canonicalises
102
106
  // the name half to the manifest slug on the way back in.
103
107
  if (p.kind === 'plugin')
@@ -127,6 +131,13 @@ recoveryAdmins = []) {
127
131
  }
128
132
  return p;
129
133
  };
134
+ /** A group as the caller named it, without a `group/` prefix it may carry (casing kept). */
135
+ function groupName(group) {
136
+ const raw = group.trim();
137
+ return splitPrincipalToken(canonicalRoleName(raw)).prefix === 'group'
138
+ ? raw.slice(GROUP_TOKEN_PREFIX.length).trim()
139
+ : raw;
140
+ }
130
141
  // Authentication gate only. Per PLAN §3 the workspace `:id` is a branch
131
142
  // identifier — any authenticated user can read its access tree.
132
143
  async function requireUser(req, res) {
@@ -403,8 +414,8 @@ recoveryAdmins = []) {
403
414
  * signed in — so the dialog can label them; it withholds nobody.
404
415
  *
405
416
  * A name shared by a group and a role is offered as BOTH — nothing is
406
- * withheld: grant precedence resolves the collision (bare token = the
407
- * group; the role is written as `role/<Name>`).
417
+ * withheld: each is written with its own prefix (`group/<Name>`,
418
+ * `role/<Name>`), so the collision never reaches the file.
408
419
  */
409
420
  router.get('/workspace/:id/access/suggest', async (req, res) => {
410
421
  const user = await requireUser(req, res);
@@ -782,10 +793,10 @@ recoveryAdmins = []) {
782
793
  // uses — and one the caller may see (`visibleGroups`): a group hidden
783
794
  // from the picker is refused here with the same words as one that
784
795
  // does not exist, so the grant route is no oracle for group names.
785
- // No role-collision refusal: bare tokens resolve GROUP-FIRST, so the
786
- // written bare name IS the group.
796
+ // No role-collision refusal: the grant is written `group/<Name>`,
797
+ // which always resolves to the group.
787
798
  const groups = await visibleGroups(user.email, (await defaultBranchPrincipals()).groups);
788
- const canonical = canonicalRoleName(principal.group);
799
+ const canonical = canonicalRoleName(groupName(principal.group));
789
800
  if (!groups.some((g) => canonicalRoleName(g) === canonical)) {
790
801
  throw new AccessMutationError(`No group named "${principal.group}". Pick an existing group.`, 404, { kind: 'unknown-group', group: principal.group });
791
802
  }
@@ -803,8 +814,8 @@ recoveryAdmins = []) {
803
814
  throw new AccessMutationError(`No plugin named "${principal.plugin}". Pick an existing plugin.`, 404, { kind: 'unknown-plugin', plugin: principal.plugin });
804
815
  }
805
816
  }
806
- // Splice shape: group → bare token (group-first precedence); role →
807
- // explicit `role/<Name>` token (see asSplicePrincipal).
817
+ // Splice shape: group → explicit `group/<Name>` token; role → explicit
818
+ // `role/<Name>` token (see asSplicePrincipal).
808
819
  const splicePrincipal = asSplicePrincipal(principal);
809
820
  const { gatePath } = gateAndEditPaths(kind, repoRelTarget);
810
821
  // Ensure the branch workspace exists before locking.
@@ -868,17 +879,12 @@ recoveryAdmins = []) {
868
879
  try {
869
880
  const mode = req.body.mode;
870
881
  const { repoRelTarget, kind, principal: routePrincipal } = parseMutationBody(req.body);
871
- // A group principal converts straight to the role-shaped bare token —
872
- // no existence check (revoking a grant whose group has since vanished
873
- // must keep working).
882
+ // A group principal converts straight to its `group/<Name>` token — no
883
+ // existence check (revoking a grant whose group has since vanished must
884
+ // keep working). Which spellings a revoke strips is the mutation
885
+ // service's call: `group/<Name>` never matches `role/<Name>`, and the
886
+ // bare name only when no role of that name owns it.
874
887
  const principal = asSplicePrincipal(routePrincipal);
875
- // GROUP revokes match the EXACT bare token only. The service's own
876
- // shadow probe decides exact-vs-name for roles, but it cannot know a
877
- // bare token was a GROUP once that group vanished from the active
878
- // source — the name would read "unshadowed" and name-level matching
879
- // would strip a same-named role's live `role/<Name>` grant. The route
880
- // still knows the caller's kind, so it pins the matching here.
881
- const revokeOpts = routePrincipal.kind === 'group' ? { tokenMatch: 'exact' } : undefined;
882
888
  // Optional `verb` scopes ALL three paths to a single verb: a default revoke
883
889
  // strips just that verb; remove-from-parent removes just that verb on the
884
890
  // ancestor; deny-here denies just that verb at the target. Absent ⇒ the
@@ -921,7 +927,7 @@ recoveryAdmins = []) {
921
927
  throw new AccessMutationError('This person is no longer inherited from that folder — refresh and try again.', 409, { kind: 'stale-ancestor' });
922
928
  }
923
929
  // Scope the ancestor revoke to the same verb the user acted on (if any).
924
- await mutation.revoke(workspaceId, 'folder', ancestorDir, principal, user.email, verb, revokeOpts);
930
+ await mutation.revoke(workspaceId, 'folder', ancestorDir, principal, user.email, verb);
925
931
  });
926
932
  accessControl.invalidate(workspaceId);
927
933
  logger('access.revoke.remove-from-parent').info(`ws=${workspaceId} branch=${branch} ` +
@@ -936,7 +942,7 @@ recoveryAdmins = []) {
936
942
  await mutation.assertTargetHoldsText(workspaceId, kind, repoRelTarget);
937
943
  await withEditLock(workspaceId, branch, gatePath, user, async () => {
938
944
  // Scope the deny to the same verb the user acted on (if any).
939
- await mutation.denyHere(workspaceId, kind, repoRelTarget, principal, verb, revokeOpts);
945
+ await mutation.denyHere(workspaceId, kind, repoRelTarget, principal, verb);
940
946
  });
941
947
  accessControl.invalidate(workspaceId);
942
948
  logger('access.revoke.deny-here').info(`ws=${workspaceId} branch=${branch} ` +
@@ -951,7 +957,7 @@ recoveryAdmins = []) {
951
957
  const editPath = gatePath;
952
958
  let changed = false;
953
959
  await withEditLock(workspaceId, branch, editPath, user, async () => {
954
- const r = await mutation.revoke(workspaceId, kind, repoRelTarget, principal, user.email, verb, revokeOpts);
960
+ const r = await mutation.revoke(workspaceId, kind, repoRelTarget, principal, user.email, verb);
955
961
  changed = r.changed;
956
962
  });
957
963
  accessControl.invalidate(workspaceId);
@@ -1030,7 +1036,7 @@ recoveryAdmins = []) {
1030
1036
  // surface). The frontend hides the page, but the API must gate too — the
1031
1037
  // roster exposes every role + member email.
1032
1038
  await assertRolesAdmin(user.email);
1033
- res.json({ roles: await rolesAdmin.getRoster() });
1039
+ res.json({ roles: await rolesAdmin.getRoster(user.email) });
1034
1040
  }
1035
1041
  catch (err) {
1036
1042
  const { status, body } = toHttpError(err);