@bevel-software/platform-core-backend 0.31.0 → 0.33.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 (984) hide show
  1. package/agent-guide/access-control.md +5 -0
  2. package/agent-guide/html-views.md +46 -10
  3. package/dist/core/create-core-server.d.ts.map +1 -1
  4. package/dist/core/create-core-server.js +29 -4
  5. package/dist/core/create-core-server.js.map +1 -1
  6. package/dist/core/create-core-services.d.ts +14 -2
  7. package/dist/core/create-core-services.d.ts.map +1 -1
  8. package/dist/core/create-core-services.js +34 -7
  9. package/dist/core/create-core-services.js.map +1 -1
  10. package/dist/core/lifecycle.d.ts +8 -0
  11. package/dist/core/lifecycle.d.ts.map +1 -1
  12. package/dist/core/lifecycle.js +4 -0
  13. package/dist/core/lifecycle.js.map +1 -1
  14. package/dist/core/public-config.d.ts +10 -0
  15. package/dist/core/public-config.d.ts.map +1 -1
  16. package/dist/core/public-config.js +10 -0
  17. package/dist/core/public-config.js.map +1 -1
  18. package/dist/index.d.ts +1 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/modules/access/access-control.service.d.ts +3 -3
  23. package/dist/modules/access/access-control.service.d.ts.map +1 -1
  24. package/dist/modules/access/access-control.service.js +4 -5
  25. package/dist/modules/access/access-control.service.js.map +1 -1
  26. package/dist/modules/access/access-declarations.d.ts +1 -1
  27. package/dist/modules/access/access-declarations.d.ts.map +1 -1
  28. package/dist/modules/access/access-declarations.js +1 -1
  29. package/dist/modules/access/access-declarations.js.map +1 -1
  30. package/dist/modules/access/access-mutation.service.d.ts +8 -3
  31. package/dist/modules/access/access-mutation.service.d.ts.map +1 -1
  32. package/dist/modules/access/access-mutation.service.js +3 -3
  33. package/dist/modules/access/access-mutation.service.js.map +1 -1
  34. package/dist/modules/access/access-requests.contract.d.ts +1 -1
  35. package/dist/modules/access/access-requests.contract.d.ts.map +1 -1
  36. package/dist/modules/access/access-requests.routes.d.ts +3 -3
  37. package/dist/modules/access/access-requests.routes.d.ts.map +1 -1
  38. package/dist/modules/access/access-requests.routes.js +7 -7
  39. package/dist/modules/access/access-requests.routes.js.map +1 -1
  40. package/dist/modules/access/access-requests.service.d.ts +21 -20
  41. package/dist/modules/access/access-requests.service.d.ts.map +1 -1
  42. package/dist/modules/access/access-requests.service.js +22 -68
  43. package/dist/modules/access/access-requests.service.js.map +1 -1
  44. package/dist/modules/access/access-view.d.ts +1 -1
  45. package/dist/modules/access/access-view.d.ts.map +1 -1
  46. package/dist/modules/access/access-view.js +1 -1
  47. package/dist/modules/access/access-view.js.map +1 -1
  48. package/dist/modules/access/access.routes.d.ts +5 -7
  49. package/dist/modules/access/access.routes.d.ts.map +1 -1
  50. package/dist/modules/access/access.routes.js +4 -4
  51. package/dist/modules/access/access.routes.js.map +1 -1
  52. package/dist/modules/access/admin-locked-commit.d.ts +2 -2
  53. package/dist/modules/access/admin-locked-commit.d.ts.map +1 -1
  54. package/dist/modules/access/admin-locked-commit.js +1 -1
  55. package/dist/modules/access/admin-locked-commit.js.map +1 -1
  56. package/dist/modules/access/capability-registry.js +1 -1
  57. package/dist/modules/access/capability-registry.js.map +1 -1
  58. package/dist/modules/access/change-read-gate.d.ts +2 -2
  59. package/dist/modules/access/change-read-gate.d.ts.map +1 -1
  60. package/dist/modules/access/change-read-gate.js +1 -3
  61. package/dist/modules/access/change-read-gate.js.map +1 -1
  62. package/dist/modules/access/creator-access.d.ts +2 -2
  63. package/dist/modules/access/creator-access.d.ts.map +1 -1
  64. package/dist/modules/access/creator-access.js +2 -4
  65. package/dist/modules/access/creator-access.js.map +1 -1
  66. package/dist/modules/access/directory-sync-bot.d.ts +1 -1
  67. package/dist/modules/access/directory-sync-bot.d.ts.map +1 -1
  68. package/dist/modules/access/directory-sync-bot.js +1 -1
  69. package/dist/modules/access/directory-sync-bot.js.map +1 -1
  70. package/dist/modules/access/groups-admin.routes.d.ts +2 -2
  71. package/dist/modules/access/groups-admin.routes.d.ts.map +1 -1
  72. package/dist/modules/access/groups-admin.routes.js +2 -2
  73. package/dist/modules/access/groups-admin.routes.js.map +1 -1
  74. package/dist/modules/access/groups-admin.service.d.ts +1 -1
  75. package/dist/modules/access/groups-admin.service.d.ts.map +1 -1
  76. package/dist/modules/access/groups-admin.service.js +2 -3
  77. package/dist/modules/access/groups-admin.service.js.map +1 -1
  78. package/dist/modules/access/groups-edit.js +2 -2
  79. package/dist/modules/access/groups-edit.js.map +1 -1
  80. package/dist/modules/access/index.d.ts +17 -0
  81. package/dist/modules/access/index.d.ts.map +1 -0
  82. package/dist/modules/access/index.js +6 -0
  83. package/dist/modules/access/index.js.map +1 -0
  84. package/dist/modules/access/reference-scan.js +1 -1
  85. package/dist/modules/access/reference-scan.js.map +1 -1
  86. package/dist/modules/access/roles-admin.service.d.ts +1 -1
  87. package/dist/modules/access/roles-admin.service.d.ts.map +1 -1
  88. package/dist/modules/access/roles-admin.service.js +2 -5
  89. package/dist/modules/access/roles-admin.service.js.map +1 -1
  90. package/dist/modules/access/roles-edit.js +1 -1
  91. package/dist/modules/access/roles-edit.js.map +1 -1
  92. package/dist/modules/access/synced-groups-committer.d.ts +2 -2
  93. package/dist/modules/access/synced-groups-committer.d.ts.map +1 -1
  94. package/dist/modules/access/synced-groups-committer.js +2 -2
  95. package/dist/modules/access/synced-groups-committer.js.map +1 -1
  96. package/dist/modules/access/synced-groups-writer.js +2 -2
  97. package/dist/modules/access/synced-groups-writer.js.map +1 -1
  98. package/dist/modules/access/user-access-removal.service.d.ts +1 -1
  99. package/dist/modules/access/user-access-removal.service.d.ts.map +1 -1
  100. package/dist/modules/access/user-access-removal.service.js +2 -5
  101. package/dist/modules/access/user-access-removal.service.js.map +1 -1
  102. package/dist/modules/access-model/index.d.ts +29 -0
  103. package/dist/modules/access-model/index.d.ts.map +1 -0
  104. package/dist/modules/access-model/index.js +26 -0
  105. package/dist/modules/access-model/index.js.map +1 -0
  106. package/dist/modules/access-model/roles-yaml-guard.d.ts +1 -1
  107. package/dist/modules/access-model/roles-yaml-guard.d.ts.map +1 -1
  108. package/dist/modules/admin/admin-access.routes.d.ts +1 -1
  109. package/dist/modules/admin/admin-access.routes.d.ts.map +1 -1
  110. package/dist/modules/admin/admin-access.routes.js +1 -1
  111. package/dist/modules/admin/admin-access.routes.js.map +1 -1
  112. package/dist/modules/admin/admin-access.service.d.ts +2 -2
  113. package/dist/modules/admin/admin-access.service.d.ts.map +1 -1
  114. package/dist/modules/admin/index.d.ts +8 -0
  115. package/dist/modules/admin/index.d.ts.map +1 -0
  116. package/dist/modules/admin/index.js +2 -0
  117. package/dist/modules/admin/index.js.map +1 -0
  118. package/dist/modules/agent-guide/agent-guide.js +1 -1
  119. package/dist/modules/agent-guide/agent-guide.js.map +1 -1
  120. package/dist/modules/agent-guide/agent-guide.tools.d.ts +3 -3
  121. package/dist/modules/agent-guide/agent-guide.tools.d.ts.map +1 -1
  122. package/dist/modules/agent-guide/agent-guide.tools.js +2 -4
  123. package/dist/modules/agent-guide/agent-guide.tools.js.map +1 -1
  124. package/dist/modules/agent-guide/index.d.ts +1 -1
  125. package/dist/modules/agent-guide/index.d.ts.map +1 -1
  126. package/dist/modules/agent-guide/index.js +1 -1
  127. package/dist/modules/agent-guide/index.js.map +1 -1
  128. package/dist/modules/agent-instructions/read-preamble.d.ts +1 -1
  129. package/dist/modules/agent-instructions/read-preamble.d.ts.map +1 -1
  130. package/dist/modules/audit/agent-audit.service.d.ts +2 -2
  131. package/dist/modules/audit/agent-audit.service.d.ts.map +1 -1
  132. package/dist/modules/audit/agent-audit.service.js +1 -1
  133. package/dist/modules/audit/agent-audit.service.js.map +1 -1
  134. package/dist/modules/audit/agent-connection.routes.d.ts +1 -1
  135. package/dist/modules/audit/agent-connection.routes.d.ts.map +1 -1
  136. package/dist/modules/audit/agent-connection.routes.js +1 -1
  137. package/dist/modules/audit/agent-connection.routes.js.map +1 -1
  138. package/dist/modules/audit/agent-rest-audit.middleware.d.ts +1 -1
  139. package/dist/modules/audit/agent-rest-audit.middleware.d.ts.map +1 -1
  140. package/dist/modules/audit/agent-rest-audit.middleware.js +1 -1
  141. package/dist/modules/audit/agent-rest-audit.middleware.js.map +1 -1
  142. package/dist/modules/audit/audit.routes.d.ts +3 -3
  143. package/dist/modules/audit/audit.routes.d.ts.map +1 -1
  144. package/dist/modules/audit/audit.routes.js +2 -2
  145. package/dist/modules/audit/audit.routes.js.map +1 -1
  146. package/dist/modules/auth/account-erasure.service.d.ts +3 -3
  147. package/dist/modules/auth/account-erasure.service.d.ts.map +1 -1
  148. package/dist/modules/auth/account-erasure.service.js +1 -5
  149. package/dist/modules/auth/account-erasure.service.js.map +1 -1
  150. package/dist/modules/auth/account-hooks.d.ts +4 -6
  151. package/dist/modules/auth/account-hooks.d.ts.map +1 -1
  152. package/dist/modules/auth/account-hooks.js +7 -17
  153. package/dist/modules/auth/account-hooks.js.map +1 -1
  154. package/dist/modules/auth/account-switch-lock.d.ts +1 -1
  155. package/dist/modules/auth/account-switch-lock.d.ts.map +1 -1
  156. package/dist/modules/auth/account-switch-lock.js +1 -1
  157. package/dist/modules/auth/account-switch-lock.js.map +1 -1
  158. package/dist/modules/auth/account.routes.d.ts +2 -2
  159. package/dist/modules/auth/account.routes.d.ts.map +1 -1
  160. package/dist/modules/auth/account.routes.js +1 -1
  161. package/dist/modules/auth/account.routes.js.map +1 -1
  162. package/dist/modules/auth/auth.service.d.ts +10 -9
  163. package/dist/modules/auth/auth.service.d.ts.map +1 -1
  164. package/dist/modules/auth/auth.service.js +22 -21
  165. package/dist/modules/auth/auth.service.js.map +1 -1
  166. package/dist/modules/auth/index.d.ts +2 -0
  167. package/dist/modules/auth/index.d.ts.map +1 -1
  168. package/dist/modules/auth/oidc-auth-provider.js +1 -1
  169. package/dist/modules/auth/oidc-auth-provider.js.map +1 -1
  170. package/dist/modules/code-mode/code-mode.tool.d.ts +1 -1
  171. package/dist/modules/code-mode/code-mode.tool.d.ts.map +1 -1
  172. package/dist/modules/connection-probe/connection-probe.service.d.ts +2 -2
  173. package/dist/modules/connection-probe/connection-probe.service.d.ts.map +1 -1
  174. package/dist/modules/connection-probe/connection-probe.service.js +1 -4
  175. package/dist/modules/connection-probe/connection-probe.service.js.map +1 -1
  176. package/dist/modules/database/core-schema.d.ts +128 -235
  177. package/dist/modules/database/core-schema.d.ts.map +1 -1
  178. package/dist/modules/database/core-schema.js +55 -36
  179. package/dist/modules/database/core-schema.js.map +1 -1
  180. package/dist/modules/database/index.d.ts +10 -0
  181. package/dist/modules/database/index.d.ts.map +1 -0
  182. package/dist/modules/database/index.js +4 -0
  183. package/dist/modules/database/index.js.map +1 -0
  184. package/dist/modules/database/migrate.d.ts.map +1 -1
  185. package/dist/modules/database/migrate.js +78 -3
  186. package/dist/modules/database/migrate.js.map +1 -1
  187. package/dist/modules/declared-variables/declared-variables.routes.d.ts +2 -2
  188. package/dist/modules/declared-variables/declared-variables.routes.d.ts.map +1 -1
  189. package/dist/modules/diff/diff.routes.d.ts +3 -3
  190. package/dist/modules/diff/diff.routes.d.ts.map +1 -1
  191. package/dist/modules/diff/diff.routes.js +3 -3
  192. package/dist/modules/diff/diff.routes.js.map +1 -1
  193. package/dist/modules/diff/diff.service.d.ts +2 -2
  194. package/dist/modules/diff/diff.service.d.ts.map +1 -1
  195. package/dist/modules/diff/index.d.ts +7 -0
  196. package/dist/modules/diff/index.d.ts.map +1 -0
  197. package/dist/modules/diff/index.js +2 -0
  198. package/dist/modules/diff/index.js.map +1 -0
  199. package/dist/modules/embed/account-link.service.d.ts +1 -1
  200. package/dist/modules/embed/account-link.service.d.ts.map +1 -1
  201. package/dist/modules/embed/account-link.service.js +1 -1
  202. package/dist/modules/embed/account-link.service.js.map +1 -1
  203. package/dist/modules/embed/embed.routes.d.ts +1 -1
  204. package/dist/modules/embed/embed.routes.d.ts.map +1 -1
  205. package/dist/modules/embed/embed.routes.js +2 -2
  206. package/dist/modules/embed/embed.routes.js.map +1 -1
  207. package/dist/modules/embed/embed.service.d.ts +1 -1
  208. package/dist/modules/embed/embed.service.d.ts.map +1 -1
  209. package/dist/modules/embed/embed.tools.d.ts +4 -4
  210. package/dist/modules/embed/embed.tools.d.ts.map +1 -1
  211. package/dist/modules/embed/embed.tools.js +3 -5
  212. package/dist/modules/embed/embed.tools.js.map +1 -1
  213. package/dist/modules/github-app/github-app.connection.d.ts +1 -1
  214. package/dist/modules/github-app/github-app.connection.d.ts.map +1 -1
  215. package/dist/modules/github-app/github-app.routes.d.ts +3 -3
  216. package/dist/modules/github-app/github-app.routes.d.ts.map +1 -1
  217. package/dist/modules/github-app/github-app.routes.js +1 -1
  218. package/dist/modules/github-app/github-app.routes.js.map +1 -1
  219. package/dist/modules/kb-fs/index.d.ts +10 -0
  220. package/dist/modules/kb-fs/index.d.ts.map +1 -1
  221. package/dist/modules/kb-fs/index.js +10 -0
  222. package/dist/modules/kb-fs/index.js.map +1 -1
  223. package/dist/modules/kb-fs/locking-filesystem.d.ts +1 -1
  224. package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
  225. package/dist/modules/kb-sync/kb-sync.routes.d.ts +1 -1
  226. package/dist/modules/kb-sync/kb-sync.routes.d.ts.map +1 -1
  227. package/dist/modules/kb-sync/kb-sync.routes.js +2 -2
  228. package/dist/modules/kb-sync/kb-sync.routes.js.map +1 -1
  229. package/dist/modules/kb-sync/kb-sync.service.js +1 -1
  230. package/dist/modules/kb-sync/kb-sync.service.js.map +1 -1
  231. package/dist/modules/kb-sync/sync-auth.js +1 -1
  232. package/dist/modules/kb-sync/sync-auth.js.map +1 -1
  233. package/dist/modules/kb-sync/sync-payload.js +1 -1
  234. package/dist/modules/kb-sync/sync-payload.js.map +1 -1
  235. package/dist/modules/marketplace/git-http.routes.d.ts +1 -1
  236. package/dist/modules/marketplace/git-http.routes.d.ts.map +1 -1
  237. package/dist/modules/marketplace/git-http.routes.js +1 -1
  238. package/dist/modules/marketplace/git-http.routes.js.map +1 -1
  239. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.d.ts +1 -1
  240. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.d.ts.map +1 -1
  241. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.js +1 -1
  242. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.js.map +1 -1
  243. package/dist/modules/marketplace/github-facade/github-facade-codes.store.d.ts +1 -1
  244. package/dist/modules/marketplace/github-facade/github-facade-codes.store.d.ts.map +1 -1
  245. package/dist/modules/marketplace/github-facade/github-facade-codes.store.js +1 -1
  246. package/dist/modules/marketplace/github-facade/github-facade-codes.store.js.map +1 -1
  247. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.d.ts +1 -1
  248. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.d.ts.map +1 -1
  249. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.js +1 -1
  250. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.js.map +1 -1
  251. package/dist/modules/marketplace/github-facade/github-facade.routes.d.ts +2 -2
  252. package/dist/modules/marketplace/github-facade/github-facade.routes.d.ts.map +1 -1
  253. package/dist/modules/marketplace/github-facade/github-facade.routes.js +2 -2
  254. package/dist/modules/marketplace/github-facade/github-facade.routes.js.map +1 -1
  255. package/dist/modules/marketplace/github-facade/github-facade.service.d.ts +2 -2
  256. package/dist/modules/marketplace/github-facade/github-facade.service.d.ts.map +1 -1
  257. package/dist/modules/marketplace/github-facade/github-facade.service.js +1 -1
  258. package/dist/modules/marketplace/github-facade/github-facade.service.js.map +1 -1
  259. package/dist/modules/marketplace/marketplace-repo.service.d.ts +1 -1
  260. package/dist/modules/marketplace/marketplace-repo.service.d.ts.map +1 -1
  261. package/dist/modules/marketplace/marketplace-repo.service.js +1 -1
  262. package/dist/modules/mcp/index.d.ts +8 -0
  263. package/dist/modules/mcp/index.d.ts.map +1 -0
  264. package/dist/modules/mcp/index.js +7 -0
  265. package/dist/modules/mcp/index.js.map +1 -0
  266. package/dist/modules/mcp/mcp-auth.middleware.d.ts +4 -5
  267. package/dist/modules/mcp/mcp-auth.middleware.d.ts.map +1 -1
  268. package/dist/modules/mcp/mcp-auth.middleware.js +4 -4
  269. package/dist/modules/mcp/mcp-auth.middleware.js.map +1 -1
  270. package/dist/modules/mcp/mcp.routes.d.ts +2 -4
  271. package/dist/modules/mcp/mcp.routes.d.ts.map +1 -1
  272. package/dist/modules/mcp/mcp.routes.js +2 -2
  273. package/dist/modules/mcp/mcp.routes.js.map +1 -1
  274. package/dist/modules/mcp/mcp.service.d.ts +14 -4
  275. package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
  276. package/dist/modules/mcp/mcp.service.js +17 -7
  277. package/dist/modules/mcp/mcp.service.js.map +1 -1
  278. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts +29 -1
  279. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts.map +1 -1
  280. package/dist/modules/mcp/oauth/bevel-oauth-provider.js +167 -40
  281. package/dist/modules/mcp/oauth/bevel-oauth-provider.js.map +1 -1
  282. package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts +1 -1
  283. package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts.map +1 -1
  284. package/dist/modules/mcp/oauth/oauth-consent.routes.js +1 -1
  285. package/dist/modules/mcp/oauth/oauth-consent.routes.js.map +1 -1
  286. package/dist/modules/onboarding/onboarding.routes.d.ts +1 -1
  287. package/dist/modules/onboarding/onboarding.routes.d.ts.map +1 -1
  288. package/dist/modules/onboarding/onboarding.routes.js +1 -1
  289. package/dist/modules/onboarding/onboarding.routes.js.map +1 -1
  290. package/dist/modules/onboarding/starter-pack.service.d.ts +4 -5
  291. package/dist/modules/onboarding/starter-pack.service.d.ts.map +1 -1
  292. package/dist/modules/onboarding/starter-pack.service.js +2 -2
  293. package/dist/modules/onboarding/starter-pack.service.js.map +1 -1
  294. package/dist/modules/plugins/compile/compile-marketplace.d.ts +1 -1
  295. package/dist/modules/plugins/compile/compile-marketplace.d.ts.map +1 -1
  296. package/dist/modules/plugins/compile/compile-marketplace.js +1 -1
  297. package/dist/modules/plugins/compile/compile-marketplace.js.map +1 -1
  298. package/dist/modules/plugins/compile/marketplace-compiler.service.d.ts +3 -3
  299. package/dist/modules/plugins/compile/marketplace-compiler.service.d.ts.map +1 -1
  300. package/dist/modules/plugins/discovery/bundle-dialect/registry.d.ts +1 -1
  301. package/dist/modules/plugins/discovery/bundle-dialect/registry.d.ts.map +1 -1
  302. package/dist/modules/plugins/discovery/bundle-dialect/registry.js +1 -1
  303. package/dist/modules/plugins/discovery/bundle-dialect/registry.js.map +1 -1
  304. package/dist/modules/plugins/index.d.ts +1 -0
  305. package/dist/modules/plugins/index.d.ts.map +1 -1
  306. package/dist/modules/plugins/index.js +2 -0
  307. package/dist/modules/plugins/index.js.map +1 -1
  308. package/dist/modules/plugins/join-proposals.d.ts +2 -2
  309. package/dist/modules/plugins/join-proposals.d.ts.map +1 -1
  310. package/dist/modules/plugins/join-proposals.js +1 -1
  311. package/dist/modules/plugins/join-proposals.js.map +1 -1
  312. package/dist/modules/plugins/join-request-jobs.service.d.ts +1 -1
  313. package/dist/modules/plugins/join-request-jobs.service.d.ts.map +1 -1
  314. package/dist/modules/plugins/join-request-jobs.service.js +2 -2
  315. package/dist/modules/plugins/join-request-jobs.service.js.map +1 -1
  316. package/dist/modules/plugins/join-request-records.store.d.ts +1 -1
  317. package/dist/modules/plugins/join-request-records.store.d.ts.map +1 -1
  318. package/dist/modules/plugins/join-request-records.store.js +1 -1
  319. package/dist/modules/plugins/join-request-records.store.js.map +1 -1
  320. package/dist/modules/plugins/join-requests.service.d.ts +3 -3
  321. package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
  322. package/dist/modules/plugins/join-requests.service.js +1 -1
  323. package/dist/modules/plugins/join-requests.service.js.map +1 -1
  324. package/dist/modules/plugins/plugin-links.d.ts +3 -3
  325. package/dist/modules/plugins/plugin-links.d.ts.map +1 -1
  326. package/dist/modules/plugins/plugin-links.js +1 -1
  327. package/dist/modules/plugins/plugin-links.js.map +1 -1
  328. package/dist/modules/plugins/plugin-links.service.d.ts +8 -5
  329. package/dist/modules/plugins/plugin-links.service.d.ts.map +1 -1
  330. package/dist/modules/plugins/plugin-links.service.js +8 -6
  331. package/dist/modules/plugins/plugin-links.service.js.map +1 -1
  332. package/dist/modules/plugins/plugin-provision.service.d.ts +2 -2
  333. package/dist/modules/plugins/plugin-provision.service.d.ts.map +1 -1
  334. package/dist/modules/plugins/plugin-provision.service.js +2 -3
  335. package/dist/modules/plugins/plugin-provision.service.js.map +1 -1
  336. package/dist/modules/plugins/plugin-rename.service.d.ts +2 -2
  337. package/dist/modules/plugins/plugin-rename.service.d.ts.map +1 -1
  338. package/dist/modules/plugins/plugin-rename.service.js +1 -1
  339. package/dist/modules/plugins/plugin-rename.service.js.map +1 -1
  340. package/dist/modules/plugins/plugins.contract.d.ts +1 -1
  341. package/dist/modules/plugins/plugins.contract.d.ts.map +1 -1
  342. package/dist/modules/plugins/plugins.routes.d.ts +2 -2
  343. package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
  344. package/dist/modules/plugins/plugins.routes.js +3 -3
  345. package/dist/modules/plugins/plugins.routes.js.map +1 -1
  346. package/dist/modules/plugins/plugins.service.d.ts +4 -4
  347. package/dist/modules/plugins/plugins.service.d.ts.map +1 -1
  348. package/dist/modules/plugins/plugins.service.js +1 -1
  349. package/dist/modules/plugins/plugins.service.js.map +1 -1
  350. package/dist/modules/plugins/plugins.tools.d.ts +1 -1
  351. package/dist/modules/plugins/plugins.tools.d.ts.map +1 -1
  352. package/dist/modules/plugins/plugins.tools.js +3 -3
  353. package/dist/modules/plugins/plugins.tools.js.map +1 -1
  354. package/dist/modules/plugins/teams.routes.d.ts +3 -3
  355. package/dist/modules/plugins/teams.routes.d.ts.map +1 -1
  356. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts +1 -1
  357. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts.map +1 -1
  358. package/dist/modules/secrets-vault/db-secrets-vault.service.js +1 -1
  359. package/dist/modules/secrets-vault/db-secrets-vault.service.js.map +1 -1
  360. package/dist/modules/secrets-vault/index.d.ts +1 -0
  361. package/dist/modules/secrets-vault/index.d.ts.map +1 -1
  362. package/dist/modules/secrets-vault/index.js +2 -0
  363. package/dist/modules/secrets-vault/index.js.map +1 -1
  364. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +4 -4
  365. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -1
  366. package/dist/modules/secrets-vault/secrets-vault.routes.js +1 -1
  367. package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
  368. package/dist/modules/settings/connection-check.js +1 -1
  369. package/dist/modules/settings/connection-check.js.map +1 -1
  370. package/dist/modules/settings/deployment-settings.service.d.ts +7 -1
  371. package/dist/modules/settings/deployment-settings.service.d.ts.map +1 -1
  372. package/dist/modules/settings/deployment-settings.service.js +45 -3
  373. package/dist/modules/settings/deployment-settings.service.js.map +1 -1
  374. package/dist/modules/settings/git-root-folders.js +1 -1
  375. package/dist/modules/settings/git-root-folders.js.map +1 -1
  376. package/dist/modules/settings/index.d.ts +13 -0
  377. package/dist/modules/settings/index.d.ts.map +1 -0
  378. package/dist/modules/settings/index.js +3 -0
  379. package/dist/modules/settings/index.js.map +1 -0
  380. package/dist/modules/settings/setup.routes.d.ts +3 -3
  381. package/dist/modules/settings/setup.routes.d.ts.map +1 -1
  382. package/dist/modules/settings/setup.routes.js +2 -2
  383. package/dist/modules/settings/setup.routes.js.map +1 -1
  384. package/dist/modules/skills/allowed-tools-check.d.ts +2 -2
  385. package/dist/modules/skills/allowed-tools-check.d.ts.map +1 -1
  386. package/dist/modules/skills/allowed-tools-check.js +1 -1
  387. package/dist/modules/skills/allowed-tools-check.js.map +1 -1
  388. package/dist/modules/skills/index.d.ts +1 -0
  389. package/dist/modules/skills/index.d.ts.map +1 -1
  390. package/dist/modules/skills/pending-skills.service.d.ts +3 -3
  391. package/dist/modules/skills/pending-skills.service.d.ts.map +1 -1
  392. package/dist/modules/skills/pending-skills.service.js.map +1 -1
  393. package/dist/modules/skills/skill-access-requests.routes.d.ts +5 -5
  394. package/dist/modules/skills/skill-access-requests.routes.d.ts.map +1 -1
  395. package/dist/modules/skills/skill-access-requests.routes.js +6 -13
  396. package/dist/modules/skills/skill-access-requests.routes.js.map +1 -1
  397. package/dist/modules/skills/skills.routes.d.ts +1 -1
  398. package/dist/modules/skills/skills.routes.d.ts.map +1 -1
  399. package/dist/modules/skills/skills.routes.js +1 -1
  400. package/dist/modules/skills/skills.routes.js.map +1 -1
  401. package/dist/modules/skills/skills.service.d.ts +2 -2
  402. package/dist/modules/skills/skills.service.d.ts.map +1 -1
  403. package/dist/modules/skills/skills.tools.d.ts +3 -3
  404. package/dist/modules/skills/skills.tools.d.ts.map +1 -1
  405. package/dist/modules/skills/skills.tools.js +3 -7
  406. package/dist/modules/skills/skills.tools.js.map +1 -1
  407. package/dist/modules/tool-auth/connection-key-rejection.js +1 -1
  408. package/dist/modules/tool-auth/connection-key-rejection.js.map +1 -1
  409. package/dist/modules/tool-auth/connection-keys-admin.routes.d.ts +2 -2
  410. package/dist/modules/tool-auth/connection-keys-admin.routes.d.ts.map +1 -1
  411. package/dist/modules/tool-auth/connection-keys-admin.routes.js +1 -1
  412. package/dist/modules/tool-auth/connection-keys-admin.routes.js.map +1 -1
  413. package/dist/modules/tool-auth/external-api-key.service.d.ts +1 -1
  414. package/dist/modules/tool-auth/external-api-key.service.d.ts.map +1 -1
  415. package/dist/modules/tool-auth/external-api-key.service.js +1 -1
  416. package/dist/modules/tool-auth/external-api-key.service.js.map +1 -1
  417. package/dist/modules/tool-auth/index.d.ts +15 -0
  418. package/dist/modules/tool-auth/index.d.ts.map +1 -0
  419. package/dist/modules/tool-auth/index.js +11 -0
  420. package/dist/modules/tool-auth/index.js.map +1 -0
  421. package/dist/modules/tool-auth/tool-auth.middleware.d.ts +2 -2
  422. package/dist/modules/tool-auth/tool-auth.middleware.d.ts.map +1 -1
  423. package/dist/modules/tool-auth/tool-auth.middleware.js +1 -1
  424. package/dist/modules/tool-auth/tool-auth.middleware.js.map +1 -1
  425. package/dist/modules/tool-helpers/default-branch-write.d.ts +1 -1
  426. package/dist/modules/tool-helpers/default-branch-write.d.ts.map +1 -1
  427. package/dist/modules/tool-helpers/index.d.ts +4 -1
  428. package/dist/modules/tool-helpers/index.d.ts.map +1 -1
  429. package/dist/modules/tool-helpers/index.js +3 -0
  430. package/dist/modules/tool-helpers/index.js.map +1 -1
  431. package/dist/modules/tool-helpers/route-argument-check.js +1 -1
  432. package/dist/modules/tool-helpers/route-argument-check.js.map +1 -1
  433. package/dist/modules/tool-helpers/route-tool-schemas.d.ts +1 -1
  434. package/dist/modules/tool-helpers/route-tool-schemas.d.ts.map +1 -1
  435. package/dist/modules/tool-helpers/tool-context.d.ts +5 -6
  436. package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
  437. package/dist/modules/tool-helpers/tool-context.js +2 -3
  438. package/dist/modules/tool-helpers/tool-context.js.map +1 -1
  439. package/dist/modules/tool-helpers/tool-def.d.ts +4 -2
  440. package/dist/modules/tool-helpers/tool-def.d.ts.map +1 -1
  441. package/dist/modules/tool-helpers/tool-def.js +3 -1
  442. package/dist/modules/tool-helpers/tool-def.js.map +1 -1
  443. package/dist/modules/tool-helpers/tool-handler.d.ts +2 -2
  444. package/dist/modules/tool-helpers/tool-handler.d.ts.map +1 -1
  445. package/dist/modules/tool-helpers/tool-handler.js +2 -2
  446. package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
  447. package/dist/modules/tool-helpers/tool.contract.d.ts +2 -2
  448. package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
  449. package/dist/modules/tool-helpers/validate-token.d.ts +1 -2
  450. package/dist/modules/tool-helpers/validate-token.d.ts.map +1 -1
  451. package/dist/modules/tool-helpers/validate-token.js +1 -1
  452. package/dist/modules/tool-helpers/validate-token.js.map +1 -1
  453. package/dist/modules/tool-manuals/index.d.ts +5 -0
  454. package/dist/modules/tool-manuals/index.d.ts.map +1 -1
  455. package/dist/modules/tool-manuals/index.js +4 -0
  456. package/dist/modules/tool-manuals/index.js.map +1 -1
  457. package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts +2 -2
  458. package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts.map +1 -1
  459. package/dist/modules/tool-manuals/pending-tools.service.d.ts +2 -2
  460. package/dist/modules/tool-manuals/pending-tools.service.d.ts.map +1 -1
  461. package/dist/modules/tool-manuals/tool-delete.service.d.ts +5 -6
  462. package/dist/modules/tool-manuals/tool-delete.service.d.ts.map +1 -1
  463. package/dist/modules/tool-manuals/tool-delete.service.js.map +1 -1
  464. package/dist/modules/tool-manuals/tool-manuals.routes.d.ts +5 -5
  465. package/dist/modules/tool-manuals/tool-manuals.routes.d.ts.map +1 -1
  466. package/dist/modules/tool-manuals/tool-manuals.routes.js +2 -2
  467. package/dist/modules/tool-manuals/tool-manuals.routes.js.map +1 -1
  468. package/dist/modules/tool-manuals/tool-manuals.service.d.ts +3 -3
  469. package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
  470. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts +3 -3
  471. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
  472. package/dist/modules/tool-manuals/tool-manuals.tools.js +1 -2
  473. package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
  474. package/dist/modules/tool-registry/description-length.js +2 -2
  475. package/dist/modules/tool-registry/description-length.js.map +1 -1
  476. package/dist/modules/tool-registry/index.d.ts +8 -0
  477. package/dist/modules/tool-registry/index.d.ts.map +1 -0
  478. package/dist/modules/tool-registry/index.js +8 -0
  479. package/dist/modules/tool-registry/index.js.map +1 -0
  480. package/dist/modules/tool-registry/manual.routes.d.ts +37 -2
  481. package/dist/modules/tool-registry/manual.routes.d.ts.map +1 -1
  482. package/dist/modules/tool-registry/manual.routes.js +14 -7
  483. package/dist/modules/tool-registry/manual.routes.js.map +1 -1
  484. package/dist/modules/tool-registry/read-only-hints.contract.d.ts +52 -0
  485. package/dist/modules/tool-registry/read-only-hints.contract.d.ts.map +1 -0
  486. package/dist/modules/tool-registry/read-only-hints.contract.js +2 -0
  487. package/dist/modules/tool-registry/read-only-hints.contract.js.map +1 -0
  488. package/dist/modules/tool-registry/read-only-hints.d.ts +89 -0
  489. package/dist/modules/tool-registry/read-only-hints.d.ts.map +1 -0
  490. package/dist/modules/tool-registry/read-only-hints.js +212 -0
  491. package/dist/modules/tool-registry/read-only-hints.js.map +1 -0
  492. package/dist/modules/tool-registry/tool.contract.d.ts +8 -0
  493. package/dist/modules/tool-registry/tool.contract.d.ts.map +1 -1
  494. package/dist/modules/tool-registry/tool.contract.js +10 -1
  495. package/dist/modules/tool-registry/tool.contract.js.map +1 -1
  496. package/dist/modules/update-check/update-check.routes.d.ts +2 -2
  497. package/dist/modules/update-check/update-check.routes.d.ts.map +1 -1
  498. package/dist/modules/update-check/update-check.routes.js +1 -1
  499. package/dist/modules/update-check/update-check.routes.js.map +1 -1
  500. package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts +9 -104
  501. package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts.map +1 -1
  502. package/dist/modules/workflow/agent-tools/change-request-read-shape.js +8 -118
  503. package/dist/modules/workflow/agent-tools/change-request-read-shape.js.map +1 -1
  504. package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts +16 -17
  505. package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts.map +1 -1
  506. package/dist/modules/workflow/agent-tools/change-request-read.tools.js +19 -86
  507. package/dist/modules/workflow/agent-tools/change-request-read.tools.js.map +1 -1
  508. package/dist/modules/workflow/agent-tools/change-request-summary.d.ts +15 -2
  509. package/dist/modules/workflow/agent-tools/change-request-summary.d.ts.map +1 -1
  510. package/dist/modules/workflow/agent-tools/change-request-summary.js +12 -1
  511. package/dist/modules/workflow/agent-tools/change-request-summary.js.map +1 -1
  512. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts +7 -5
  513. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -1
  514. package/dist/modules/workflow/agent-tools/workflow.tools.js +51 -68
  515. package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -1
  516. package/dist/modules/workflow/change-request-hooks.d.ts +78 -0
  517. package/dist/modules/workflow/change-request-hooks.d.ts.map +1 -0
  518. package/dist/modules/workflow/change-request-hooks.js +15 -0
  519. package/dist/modules/workflow/change-request-hooks.js.map +1 -0
  520. package/dist/modules/workflow/event-bus.d.ts.map +1 -1
  521. package/dist/modules/workflow/event-bus.js +3 -1
  522. package/dist/modules/workflow/event-bus.js.map +1 -1
  523. package/dist/modules/workflow/events-delivery.d.ts +120 -0
  524. package/dist/modules/workflow/events-delivery.d.ts.map +1 -0
  525. package/dist/modules/workflow/events-delivery.js +202 -0
  526. package/dist/modules/workflow/events-delivery.js.map +1 -0
  527. package/dist/modules/workflow/events.routes.d.ts +16 -7
  528. package/dist/modules/workflow/events.routes.d.ts.map +1 -1
  529. package/dist/modules/workflow/events.routes.js +23 -4
  530. package/dist/modules/workflow/events.routes.js.map +1 -1
  531. package/dist/modules/workflow/file-lock.service.d.ts +1 -1
  532. package/dist/modules/workflow/file-lock.service.d.ts.map +1 -1
  533. package/dist/modules/workflow/file-lock.service.js +1 -1
  534. package/dist/modules/workflow/file-lock.service.js.map +1 -1
  535. package/dist/modules/workflow/git/git.service.d.ts +2 -2
  536. package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
  537. package/dist/modules/workflow/git/git.service.js +3 -6
  538. package/dist/modules/workflow/git/git.service.js.map +1 -1
  539. package/dist/modules/workflow/git/node-git-runner.js +1 -1
  540. package/dist/modules/workflow/git/node-git-runner.js.map +1 -1
  541. package/dist/modules/workflow/git/pull-request.service.d.ts +16 -7
  542. package/dist/modules/workflow/git/pull-request.service.d.ts.map +1 -1
  543. package/dist/modules/workflow/git/pull-request.service.js +49 -33
  544. package/dist/modules/workflow/git/pull-request.service.js.map +1 -1
  545. package/dist/modules/workflow/index.d.ts +14 -2
  546. package/dist/modules/workflow/index.d.ts.map +1 -1
  547. package/dist/modules/workflow/index.js +11 -2
  548. package/dist/modules/workflow/index.js.map +1 -1
  549. package/dist/modules/workflow/pending-commits.service.d.ts +1 -1
  550. package/dist/modules/workflow/pending-commits.service.d.ts.map +1 -1
  551. package/dist/modules/workflow/pending-commits.service.js +1 -1
  552. package/dist/modules/workflow/pending-commits.service.js.map +1 -1
  553. package/dist/modules/workflow/read-on-branch.d.ts +1 -1
  554. package/dist/modules/workflow/read-on-branch.d.ts.map +1 -1
  555. package/dist/modules/workflow/recovery-bot.d.ts +1 -1
  556. package/dist/modules/workflow/recovery-bot.d.ts.map +1 -1
  557. package/dist/modules/workflow/recovery-bot.js +1 -1
  558. package/dist/modules/workflow/recovery-bot.js.map +1 -1
  559. package/dist/modules/workflow/review-workflow/approval-lock.d.ts +1 -1
  560. package/dist/modules/workflow/review-workflow/approval-lock.d.ts.map +1 -1
  561. package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts +4 -20
  562. package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts.map +1 -1
  563. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts +4 -8
  564. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +1 -1
  565. package/dist/modules/workflow/review-workflow/review-workflow.service.js +3 -138
  566. package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +1 -1
  567. package/dist/modules/workflow/workflow.routes.d.ts +5 -5
  568. package/dist/modules/workflow/workflow.routes.d.ts.map +1 -1
  569. package/dist/modules/workflow/workflow.routes.js +42 -94
  570. package/dist/modules/workflow/workflow.routes.js.map +1 -1
  571. package/dist/modules/workflow/workflow.service.d.ts +112 -62
  572. package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
  573. package/dist/modules/workflow/workflow.service.js +367 -172
  574. package/dist/modules/workflow/workflow.service.js.map +1 -1
  575. package/dist/modules/workspace/agent-access.gate.d.ts +3 -3
  576. package/dist/modules/workspace/agent-access.gate.d.ts.map +1 -1
  577. package/dist/modules/workspace/agent-download.builder.d.ts +1 -1
  578. package/dist/modules/workspace/agent-download.builder.d.ts.map +1 -1
  579. package/dist/modules/workspace/agent-download.builder.js +1 -1
  580. package/dist/modules/workspace/agent-download.builder.js.map +1 -1
  581. package/dist/modules/workspace/agent-upload.routes.d.ts.map +1 -1
  582. package/dist/modules/workspace/agent-upload.routes.js +19 -0
  583. package/dist/modules/workspace/agent-upload.routes.js.map +1 -1
  584. package/dist/modules/workspace/agent-upload.store.d.ts +11 -0
  585. package/dist/modules/workspace/agent-upload.store.d.ts.map +1 -1
  586. package/dist/modules/workspace/agent-upload.store.js +18 -0
  587. package/dist/modules/workspace/agent-upload.store.js.map +1 -1
  588. package/dist/modules/workspace/bounded-matcher.d.ts +5 -11
  589. package/dist/modules/workspace/bounded-matcher.d.ts.map +1 -1
  590. package/dist/modules/workspace/bounded-matcher.js +26 -87
  591. package/dist/modules/workspace/bounded-matcher.js.map +1 -1
  592. package/dist/modules/workspace/file-readers/doc-extract.service.d.ts +54 -10
  593. package/dist/modules/workspace/file-readers/doc-extract.service.d.ts.map +1 -1
  594. package/dist/modules/workspace/file-readers/doc-extract.service.js +69 -17
  595. package/dist/modules/workspace/file-readers/doc-extract.service.js.map +1 -1
  596. package/dist/modules/workspace/file-readers/doc-extract.types.d.ts +9 -2
  597. package/dist/modules/workspace/file-readers/doc-extract.types.d.ts.map +1 -1
  598. package/dist/modules/workspace/file-readers/doc-extract.types.js.map +1 -1
  599. package/dist/modules/workspace/file-readers/document-extractor.contract.d.ts +41 -0
  600. package/dist/modules/workspace/file-readers/document-extractor.contract.d.ts.map +1 -0
  601. package/dist/modules/workspace/file-readers/document-extractor.contract.js +5 -0
  602. package/dist/modules/workspace/file-readers/document-extractor.contract.js.map +1 -0
  603. package/dist/modules/workspace/file-readers/document-extractors.d.ts +9 -0
  604. package/dist/modules/workspace/file-readers/document-extractors.d.ts.map +1 -0
  605. package/dist/modules/workspace/file-readers/document-extractors.js +26 -0
  606. package/dist/modules/workspace/file-readers/document-extractors.js.map +1 -0
  607. package/dist/modules/workspace/file-readers/document-formats.d.ts +12 -0
  608. package/dist/modules/workspace/file-readers/document-formats.d.ts.map +1 -0
  609. package/dist/modules/workspace/file-readers/document-formats.js +11 -0
  610. package/dist/modules/workspace/file-readers/document-formats.js.map +1 -0
  611. package/dist/modules/workspace/file-readers/document-reader.d.ts +21 -17
  612. package/dist/modules/workspace/file-readers/document-reader.d.ts.map +1 -1
  613. package/dist/modules/workspace/file-readers/document-reader.js +38 -34
  614. package/dist/modules/workspace/file-readers/document-reader.js.map +1 -1
  615. package/dist/modules/workspace/file-readers/extract-in-worker.d.ts +60 -0
  616. package/dist/modules/workspace/file-readers/extract-in-worker.d.ts.map +1 -0
  617. package/dist/modules/workspace/file-readers/extract-in-worker.js +140 -0
  618. package/dist/modules/workspace/file-readers/extract-in-worker.js.map +1 -0
  619. package/dist/modules/workspace/file-readers/extract-pdf.d.ts +2 -0
  620. package/dist/modules/workspace/file-readers/extract-pdf.d.ts.map +1 -1
  621. package/dist/modules/workspace/file-readers/extract-pdf.js +20 -3
  622. package/dist/modules/workspace/file-readers/extract-pdf.js.map +1 -1
  623. package/dist/modules/workspace/file-readers/extract.worker.d.ts +2 -0
  624. package/dist/modules/workspace/file-readers/extract.worker.d.ts.map +1 -0
  625. package/dist/modules/workspace/file-readers/extract.worker.js +5 -0
  626. package/dist/modules/workspace/file-readers/extract.worker.js.map +1 -0
  627. package/dist/modules/workspace/file-readers/extraction-cache.d.ts +21 -5
  628. package/dist/modules/workspace/file-readers/extraction-cache.d.ts.map +1 -1
  629. package/dist/modules/workspace/file-readers/extraction-cache.js +24 -10
  630. package/dist/modules/workspace/file-readers/extraction-cache.js.map +1 -1
  631. package/dist/modules/workspace/file-readers/extraction-worker.d.ts +42 -0
  632. package/dist/modules/workspace/file-readers/extraction-worker.d.ts.map +1 -0
  633. package/dist/modules/workspace/file-readers/extraction-worker.js +69 -0
  634. package/dist/modules/workspace/file-readers/extraction-worker.js.map +1 -0
  635. package/dist/modules/workspace/file-readers/file-reader.d.ts +13 -4
  636. package/dist/modules/workspace/file-readers/file-reader.d.ts.map +1 -1
  637. package/dist/modules/workspace/file-readers/file-reader.js.map +1 -1
  638. package/dist/modules/workspace/file-readers/file-reader.registry.d.ts +3 -2
  639. package/dist/modules/workspace/file-readers/file-reader.registry.d.ts.map +1 -1
  640. package/dist/modules/workspace/file-readers/file-reader.registry.js +6 -20
  641. package/dist/modules/workspace/file-readers/file-reader.registry.js.map +1 -1
  642. package/dist/modules/workspace/first-run.js +1 -1
  643. package/dist/modules/workspace/first-run.js.map +1 -1
  644. package/dist/modules/workspace/git-internals.middleware.d.ts +1 -1
  645. package/dist/modules/workspace/git-internals.middleware.d.ts.map +1 -1
  646. package/dist/modules/workspace/git-internals.middleware.js +1 -1
  647. package/dist/modules/workspace/git-internals.middleware.js.map +1 -1
  648. package/dist/modules/workspace/index.d.ts +16 -0
  649. package/dist/modules/workspace/index.d.ts.map +1 -1
  650. package/dist/modules/workspace/index.js +13 -0
  651. package/dist/modules/workspace/index.js.map +1 -1
  652. package/dist/modules/workspace/kb-repository.d.ts.map +1 -1
  653. package/dist/modules/workspace/kb-repository.js +1 -1
  654. package/dist/modules/workspace/kb-repository.js.map +1 -1
  655. package/dist/modules/workspace/not-found.d.ts +1 -1
  656. package/dist/modules/workspace/not-found.d.ts.map +1 -1
  657. package/dist/modules/workspace/not-found.js +1 -1
  658. package/dist/modules/workspace/not-found.js.map +1 -1
  659. package/dist/modules/workspace/pattern-matcher.contract.d.ts +1 -1
  660. package/dist/modules/workspace/pattern-matcher.contract.d.ts.map +1 -1
  661. package/dist/modules/workspace/pattern-matcher.contract.js +1 -1
  662. package/dist/modules/workspace/pattern-matcher.contract.js.map +1 -1
  663. package/dist/modules/workspace/routine-write-policy.js +1 -1
  664. package/dist/modules/workspace/routine-write-policy.js.map +1 -1
  665. package/dist/modules/workspace/startup/kb-git.js +1 -1
  666. package/dist/modules/workspace/startup/kb-git.js.map +1 -1
  667. package/dist/modules/workspace/startup/kb-startup-runner.d.ts.map +1 -1
  668. package/dist/modules/workspace/startup/kb-startup-runner.js +1 -2
  669. package/dist/modules/workspace/startup/kb-startup-runner.js.map +1 -1
  670. package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js +2 -2
  671. package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js.map +1 -1
  672. package/dist/modules/workspace/startup/steps/personal-spaces.step.js +2 -2
  673. package/dist/modules/workspace/startup/steps/personal-spaces.step.js.map +1 -1
  674. package/dist/modules/workspace/startup/steps/plugin-layout.js +1 -1
  675. package/dist/modules/workspace/startup/steps/plugin-layout.js.map +1 -1
  676. package/dist/modules/workspace/startup/steps/roles-yaml.step.js +1 -1
  677. package/dist/modules/workspace/startup/steps/roles-yaml.step.js.map +1 -1
  678. package/dist/modules/workspace/startup/steps/seed-tree.js +2 -2
  679. package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
  680. package/dist/modules/workspace/startup/steps/template-files.step.d.ts +1 -1
  681. package/dist/modules/workspace/startup/steps/template-files.step.d.ts.map +1 -1
  682. package/dist/modules/workspace/startup/steps/template-files.step.js +2 -2
  683. package/dist/modules/workspace/startup/steps/template-files.step.js.map +1 -1
  684. package/dist/modules/workspace/startup/steps/template-source.js +2 -2
  685. package/dist/modules/workspace/startup/steps/template-source.js.map +1 -1
  686. package/dist/modules/workspace/worker-pool.d.ts +100 -0
  687. package/dist/modules/workspace/worker-pool.d.ts.map +1 -0
  688. package/dist/modules/workspace/worker-pool.js +156 -0
  689. package/dist/modules/workspace/worker-pool.js.map +1 -0
  690. package/dist/modules/workspace/workspace.routes.d.ts +7 -8
  691. package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
  692. package/dist/modules/workspace/workspace.routes.js +4 -6
  693. package/dist/modules/workspace/workspace.routes.js.map +1 -1
  694. package/dist/modules/workspace/workspace.service.d.ts +1 -1
  695. package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
  696. package/dist/modules/workspace/workspace.service.js +3 -6
  697. package/dist/modules/workspace/workspace.service.js.map +1 -1
  698. package/dist/modules/workspace/workspace.tools.d.ts +7 -7
  699. package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
  700. package/dist/modules/workspace/workspace.tools.js +45 -27
  701. package/dist/modules/workspace/workspace.tools.js.map +1 -1
  702. package/dist/modules/workspace/write-denial.d.ts +4 -4
  703. package/dist/modules/workspace/write-denial.d.ts.map +1 -1
  704. package/dist/modules/workspace/write-denial.js +2 -3
  705. package/dist/modules/workspace/write-denial.js.map +1 -1
  706. package/dist/modules/write-access/index.d.ts +8 -0
  707. package/dist/modules/write-access/index.d.ts.map +1 -0
  708. package/dist/modules/write-access/index.js +7 -0
  709. package/dist/modules/write-access/index.js.map +1 -0
  710. package/dist/shared/listener-seam.d.ts +34 -0
  711. package/dist/shared/listener-seam.d.ts.map +1 -0
  712. package/dist/shared/listener-seam.js +42 -0
  713. package/dist/shared/listener-seam.js.map +1 -0
  714. package/migrations/0019_oauth_token_rotated_at.sql +7 -0
  715. package/migrations/0020_change_request_body_is_the_description.sql +20 -0
  716. package/migrations/0021_data_migrations_ledger.sql +11 -0
  717. package/migrations/meta/0019_snapshot.json +2435 -0
  718. package/migrations/meta/0020_snapshot.json +2321 -0
  719. package/migrations/meta/0021_snapshot.json +2353 -0
  720. package/migrations/meta/_journal.json +21 -0
  721. package/package.json +3 -3
  722. package/src/core/__tests__/damaged-document.tools.test.ts +374 -0
  723. package/src/core/__tests__/public-config.test.ts +5 -0
  724. package/src/core/create-core-server.ts +32 -3
  725. package/src/core/create-core-services.ts +49 -5
  726. package/src/core/lifecycle.ts +10 -0
  727. package/src/core/public-config.ts +10 -0
  728. package/src/index.ts +7 -0
  729. package/src/modules/access/__tests__/access-requests.routes.test.ts +29 -15
  730. package/src/modules/access/access-control.service.ts +5 -6
  731. package/src/modules/access/access-declarations.ts +1 -1
  732. package/src/modules/access/access-mutation.service.ts +10 -4
  733. package/src/modules/access/access-requests.contract.ts +1 -1
  734. package/src/modules/access/access-requests.routes.ts +10 -15
  735. package/src/modules/access/access-requests.service.ts +29 -71
  736. package/src/modules/access/access-view.ts +1 -1
  737. package/src/modules/access/access.routes.ts +9 -11
  738. package/src/modules/access/admin-locked-commit.ts +3 -2
  739. package/src/modules/access/capability-registry.ts +1 -1
  740. package/src/modules/access/change-read-gate.ts +3 -5
  741. package/src/modules/access/creator-access.ts +3 -5
  742. package/src/modules/access/directory-sync-bot.ts +2 -2
  743. package/src/modules/access/groups-admin.routes.ts +3 -3
  744. package/src/modules/access/groups-admin.service.ts +3 -4
  745. package/src/modules/access/groups-edit.ts +2 -2
  746. package/src/modules/access/index.ts +17 -0
  747. package/src/modules/access/reference-scan.ts +1 -1
  748. package/src/modules/access/roles-admin.service.ts +3 -6
  749. package/src/modules/access/roles-edit.ts +1 -1
  750. package/src/modules/access/synced-groups-committer.ts +4 -4
  751. package/src/modules/access/synced-groups-writer.ts +2 -2
  752. package/src/modules/access/user-access-removal.service.ts +3 -6
  753. package/src/modules/access-model/index.ts +29 -0
  754. package/src/modules/access-model/roles-yaml-guard.ts +1 -1
  755. package/src/modules/admin/admin-access.routes.ts +1 -1
  756. package/src/modules/admin/admin-access.service.ts +2 -2
  757. package/src/modules/admin/index.ts +7 -0
  758. package/src/modules/agent-guide/__tests__/agent-guide.test.ts +5 -0
  759. package/src/modules/agent-guide/agent-guide.tools.ts +4 -6
  760. package/src/modules/agent-guide/agent-guide.ts +1 -1
  761. package/src/modules/agent-guide/index.ts +1 -1
  762. package/src/modules/agent-instructions/read-preamble.ts +1 -1
  763. package/src/modules/audit/agent-audit.service.ts +3 -3
  764. package/src/modules/audit/agent-connection.routes.ts +1 -1
  765. package/src/modules/audit/agent-rest-audit.middleware.ts +1 -1
  766. package/src/modules/audit/audit.routes.ts +4 -4
  767. package/src/modules/auth/__tests__/account-deactivation.test.ts +38 -2
  768. package/src/modules/auth/account-erasure.service.ts +4 -9
  769. package/src/modules/auth/account-hooks.ts +13 -21
  770. package/src/modules/auth/account-switch-lock.ts +2 -2
  771. package/src/modules/auth/account.routes.ts +3 -3
  772. package/src/modules/auth/auth.service.ts +23 -22
  773. package/src/modules/auth/index.ts +3 -0
  774. package/src/modules/auth/oidc-auth-provider.ts +1 -1
  775. package/src/modules/code-mode/code-mode.tool.ts +1 -1
  776. package/src/modules/connection-probe/connection-probe.service.ts +3 -6
  777. package/src/modules/database/__tests__/legacy-change-request-body.test.ts +118 -0
  778. package/src/modules/database/__tests__/legacy-request-bodies.pg.test.ts +258 -0
  779. package/src/modules/database/__tests__/pii-backfill.pg.test.ts +15 -18
  780. package/src/modules/database/core-schema.ts +59 -37
  781. package/src/modules/database/index.ts +9 -0
  782. package/src/modules/database/migrate.ts +79 -3
  783. package/src/modules/declared-variables/declared-variables.routes.ts +2 -2
  784. package/src/modules/diff/diff.routes.ts +5 -5
  785. package/src/modules/diff/diff.service.ts +2 -2
  786. package/src/modules/diff/index.ts +6 -0
  787. package/src/modules/embed/account-link.service.ts +2 -2
  788. package/src/modules/embed/embed.routes.ts +2 -2
  789. package/src/modules/embed/embed.service.ts +1 -1
  790. package/src/modules/embed/embed.tools.ts +6 -9
  791. package/src/modules/github-app/github-app.connection.ts +1 -1
  792. package/src/modules/github-app/github-app.routes.ts +3 -3
  793. package/src/modules/kb-fs/index.ts +11 -0
  794. package/src/modules/kb-fs/locking-filesystem.ts +1 -1
  795. package/src/modules/kb-sync/kb-sync.routes.ts +3 -3
  796. package/src/modules/kb-sync/kb-sync.service.ts +1 -1
  797. package/src/modules/kb-sync/sync-auth.ts +1 -1
  798. package/src/modules/kb-sync/sync-payload.ts +1 -1
  799. package/src/modules/marketplace/git-http.routes.ts +1 -1
  800. package/src/modules/marketplace/github-facade/github-facade-admin.routes.ts +1 -1
  801. package/src/modules/marketplace/github-facade/github-facade-codes.store.ts +2 -2
  802. package/src/modules/marketplace/github-facade/github-facade-credentials.service.ts +2 -2
  803. package/src/modules/marketplace/github-facade/github-facade.routes.ts +2 -2
  804. package/src/modules/marketplace/github-facade/github-facade.service.ts +2 -2
  805. package/src/modules/marketplace/marketplace-repo.service.ts +2 -2
  806. package/src/modules/mcp/__tests__/bevel-oauth-provider.pg.test.ts +279 -0
  807. package/src/modules/mcp/__tests__/bevel-oauth-provider.test.ts +190 -15
  808. package/src/modules/mcp/__tests__/read-only-hint.e2e.test.ts +213 -0
  809. package/src/modules/mcp/index.ts +7 -0
  810. package/src/modules/mcp/mcp-auth.middleware.ts +6 -7
  811. package/src/modules/mcp/mcp.routes.ts +3 -5
  812. package/src/modules/mcp/mcp.service.ts +30 -13
  813. package/src/modules/mcp/oauth/bevel-oauth-provider.ts +216 -50
  814. package/src/modules/mcp/oauth/oauth-consent.routes.ts +1 -1
  815. package/src/modules/onboarding/onboarding.routes.ts +1 -1
  816. package/src/modules/onboarding/starter-pack.service.ts +5 -6
  817. package/src/modules/plugins/__tests__/bundle-dialect.e2e.test.ts +2 -1
  818. package/src/modules/plugins/__tests__/plugin-links.service.test.ts +2 -1
  819. package/src/modules/plugins/compile/compile-marketplace.ts +2 -2
  820. package/src/modules/plugins/compile/marketplace-compiler.service.ts +3 -3
  821. package/src/modules/plugins/discovery/bundle-dialect/registry.ts +1 -1
  822. package/src/modules/plugins/index.ts +2 -0
  823. package/src/modules/plugins/join-proposals.ts +2 -2
  824. package/src/modules/plugins/join-request-jobs.service.ts +3 -3
  825. package/src/modules/plugins/join-request-records.store.ts +2 -2
  826. package/src/modules/plugins/join-requests.service.ts +4 -4
  827. package/src/modules/plugins/plugin-links.service.ts +10 -11
  828. package/src/modules/plugins/plugin-links.ts +4 -4
  829. package/src/modules/plugins/plugin-provision.service.ts +4 -5
  830. package/src/modules/plugins/plugin-rename.service.ts +3 -3
  831. package/src/modules/plugins/plugins.contract.ts +1 -1
  832. package/src/modules/plugins/plugins.routes.ts +4 -4
  833. package/src/modules/plugins/plugins.service.ts +5 -5
  834. package/src/modules/plugins/plugins.tools.ts +4 -4
  835. package/src/modules/plugins/teams.routes.ts +3 -3
  836. package/src/modules/secrets-vault/db-secrets-vault.service.ts +2 -2
  837. package/src/modules/secrets-vault/index.ts +2 -0
  838. package/src/modules/secrets-vault/secrets-vault.routes.ts +4 -4
  839. package/src/modules/settings/__tests__/deployment-settings.service.test.ts +88 -1
  840. package/src/modules/settings/connection-check.ts +1 -1
  841. package/src/modules/settings/deployment-settings.service.ts +44 -4
  842. package/src/modules/settings/git-root-folders.ts +1 -1
  843. package/src/modules/settings/index.ts +12 -0
  844. package/src/modules/settings/setup.routes.ts +5 -4
  845. package/src/modules/skills/__tests__/allowed-tools-warn.tools.test.ts +2 -2
  846. package/src/modules/skills/__tests__/skill-access-requests.routes.test.ts +6 -3
  847. package/src/modules/skills/allowed-tools-check.ts +2 -6
  848. package/src/modules/skills/index.ts +2 -0
  849. package/src/modules/skills/pending-skills.service.ts +3 -4
  850. package/src/modules/skills/skill-access-requests.routes.ts +10 -17
  851. package/src/modules/skills/skills.routes.ts +1 -1
  852. package/src/modules/skills/skills.service.ts +2 -2
  853. package/src/modules/skills/skills.tools.ts +5 -9
  854. package/src/modules/tool-auth/connection-key-rejection.ts +1 -1
  855. package/src/modules/tool-auth/connection-keys-admin.routes.ts +2 -2
  856. package/src/modules/tool-auth/external-api-key.service.ts +2 -2
  857. package/src/modules/tool-auth/index.ts +14 -0
  858. package/src/modules/tool-auth/tool-auth.middleware.ts +3 -3
  859. package/src/modules/tool-helpers/__tests__/agent-roles-write.test.ts +2 -2
  860. package/src/modules/tool-helpers/__tests__/can-write.tools.test.ts +2 -2
  861. package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +2 -2
  862. package/src/modules/tool-helpers/default-branch-write.ts +1 -1
  863. package/src/modules/tool-helpers/index.ts +5 -1
  864. package/src/modules/tool-helpers/route-argument-check.ts +1 -1
  865. package/src/modules/tool-helpers/route-tool-schemas.ts +1 -1
  866. package/src/modules/tool-helpers/tool-context.ts +8 -10
  867. package/src/modules/tool-helpers/tool-def.ts +7 -3
  868. package/src/modules/tool-helpers/tool-handler.ts +2 -2
  869. package/src/modules/tool-helpers/tool.contract.ts +2 -2
  870. package/src/modules/tool-helpers/validate-token.ts +2 -3
  871. package/src/modules/tool-manuals/index.ts +6 -0
  872. package/src/modules/tool-manuals/mcp-server-edit.service.ts +2 -2
  873. package/src/modules/tool-manuals/pending-tools.service.ts +2 -2
  874. package/src/modules/tool-manuals/tool-delete.service.ts +5 -6
  875. package/src/modules/tool-manuals/tool-manuals.routes.ts +5 -5
  876. package/src/modules/tool-manuals/tool-manuals.service.ts +3 -3
  877. package/src/modules/tool-manuals/tool-manuals.tools.ts +4 -6
  878. package/src/modules/tool-registry/__tests__/read-only-hints.test.ts +439 -0
  879. package/src/modules/tool-registry/__tests__/tool-registry.test.ts +9 -2
  880. package/src/modules/tool-registry/description-length.ts +2 -2
  881. package/src/modules/tool-registry/index.ts +22 -0
  882. package/src/modules/tool-registry/manual.routes.ts +14 -8
  883. package/src/modules/tool-registry/read-only-hints.contract.ts +54 -0
  884. package/src/modules/tool-registry/read-only-hints.ts +225 -0
  885. package/src/modules/tool-registry/tool.contract.ts +11 -0
  886. package/src/modules/update-check/update-check.routes.ts +2 -2
  887. package/src/modules/workflow/__tests__/change-request-hooks.test.ts +62 -0
  888. package/src/modules/workflow/__tests__/event-bus.test.ts +14 -2
  889. package/src/modules/workflow/__tests__/events-delivery.test.ts +778 -0
  890. package/src/modules/workflow/__tests__/workflow.routes.open-change-request.test.ts +79 -0
  891. package/src/modules/workflow/__tests__/workflow.service.delete-branch.test.ts +9 -1
  892. package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +342 -22
  893. package/src/modules/workflow/__tests__/workflow.service.update-change-request.pg.test.ts +120 -0
  894. package/src/modules/workflow/__tests__/workflow.service.update-change-request.test.ts +346 -0
  895. package/src/modules/workflow/agent-tools/__tests__/change-request-read-shape.test.ts +32 -209
  896. package/src/modules/workflow/agent-tools/__tests__/change-request-read.tools.test.ts +16 -245
  897. package/src/modules/workflow/agent-tools/__tests__/update-change-request.parity.test.ts +306 -0
  898. package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +43 -57
  899. package/src/modules/workflow/agent-tools/change-request-read-shape.ts +18 -153
  900. package/src/modules/workflow/agent-tools/change-request-read.tools.ts +24 -96
  901. package/src/modules/workflow/agent-tools/change-request-summary.ts +26 -3
  902. package/src/modules/workflow/agent-tools/workflow.tools.ts +55 -75
  903. package/src/modules/workflow/change-request-hooks.ts +96 -0
  904. package/src/modules/workflow/event-bus.ts +3 -1
  905. package/src/modules/workflow/events-delivery.ts +278 -0
  906. package/src/modules/workflow/events.routes.ts +30 -9
  907. package/src/modules/workflow/file-lock.service.ts +2 -2
  908. package/src/modules/workflow/git/__tests__/pull-request.service.getPrDetail.test.ts +24 -9
  909. package/src/modules/workflow/git/git.service.ts +5 -8
  910. package/src/modules/workflow/git/node-git-runner.ts +1 -1
  911. package/src/modules/workflow/git/pull-request.service.ts +44 -29
  912. package/src/modules/workflow/index.ts +15 -2
  913. package/src/modules/workflow/pending-commits.service.ts +2 -2
  914. package/src/modules/workflow/read-on-branch.ts +1 -1
  915. package/src/modules/workflow/recovery-bot.ts +2 -2
  916. package/src/modules/workflow/review-workflow/approval-lock.ts +1 -1
  917. package/src/modules/workflow/review-workflow/review-workflow.interface.ts +3 -35
  918. package/src/modules/workflow/review-workflow/review-workflow.service.ts +6 -165
  919. package/src/modules/workflow/workflow.routes.ts +46 -100
  920. package/src/modules/workflow/workflow.service.ts +444 -215
  921. package/src/modules/workspace/__tests__/agent-downloads.test.ts +2 -1
  922. package/src/modules/workspace/__tests__/agent-uploads.test.ts +87 -1
  923. package/src/modules/workspace/__tests__/escape-sequences.routes.test.ts +2 -1
  924. package/src/modules/workspace/__tests__/file-stat-access.test.ts +2 -1
  925. package/src/modules/workspace/__tests__/git-internals.security.test.ts +2 -1
  926. package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +2 -1
  927. package/src/modules/workspace/__tests__/worker-pool.test.ts +118 -0
  928. package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +3 -2
  929. package/src/modules/workspace/__tests__/workspace.service.ensure-remotes-fetched.test.ts +30 -0
  930. package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +2 -1
  931. package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +2 -1
  932. package/src/modules/workspace/__tests__/workspace.tools.test.ts +30 -4
  933. package/src/modules/workspace/agent-access.gate.ts +3 -3
  934. package/src/modules/workspace/agent-download.builder.ts +1 -1
  935. package/src/modules/workspace/agent-upload.routes.ts +19 -0
  936. package/src/modules/workspace/agent-upload.store.ts +18 -0
  937. package/src/modules/workspace/bounded-matcher.ts +32 -89
  938. package/src/modules/workspace/file-readers/README.md +9 -0
  939. package/src/modules/workspace/file-readers/__tests__/doc-extract.service.test.ts +165 -0
  940. package/src/modules/workspace/file-readers/__tests__/doc-extract.test.ts +21 -16
  941. package/src/modules/workspace/file-readers/__tests__/extract-in-worker.test.ts +229 -0
  942. package/src/modules/workspace/file-readers/__tests__/file-reader.registry.test.ts +2 -1
  943. package/src/modules/workspace/file-readers/__tests__/fixtures/damaged-pdf.ts +34 -0
  944. package/src/modules/workspace/file-readers/__tests__/fixtures/misbehaving-extract.worker.ts +57 -0
  945. package/src/modules/workspace/file-readers/__tests__/fixtures/pdf-in-trouble.worker.ts +20 -0
  946. package/src/modules/workspace/file-readers/__tests__/fixtures/unloadable-extract.worker.ts +2 -0
  947. package/src/modules/workspace/file-readers/doc-extract.service.ts +95 -20
  948. package/src/modules/workspace/file-readers/doc-extract.types.ts +13 -3
  949. package/src/modules/workspace/file-readers/document-extractor.contract.ts +42 -0
  950. package/src/modules/workspace/file-readers/document-extractors.ts +28 -0
  951. package/src/modules/workspace/file-readers/document-formats.ts +13 -0
  952. package/src/modules/workspace/file-readers/document-reader.ts +40 -36
  953. package/src/modules/workspace/file-readers/extract-in-worker.ts +183 -0
  954. package/src/modules/workspace/file-readers/extract-pdf.ts +23 -4
  955. package/src/modules/workspace/file-readers/extract.worker.ts +5 -0
  956. package/src/modules/workspace/file-readers/extraction-cache.ts +33 -12
  957. package/src/modules/workspace/file-readers/extraction-worker.ts +86 -0
  958. package/src/modules/workspace/file-readers/file-reader.registry.ts +6 -20
  959. package/src/modules/workspace/file-readers/file-reader.ts +14 -4
  960. package/src/modules/workspace/first-run.ts +1 -1
  961. package/src/modules/workspace/git-internals.middleware.ts +1 -1
  962. package/src/modules/workspace/index.ts +17 -0
  963. package/src/modules/workspace/kb-repository.ts +3 -2
  964. package/src/modules/workspace/not-found.ts +1 -1
  965. package/src/modules/workspace/pattern-matcher.contract.ts +1 -1
  966. package/src/modules/workspace/routine-write-policy.ts +1 -1
  967. package/src/modules/workspace/startup/kb-git.ts +1 -1
  968. package/src/modules/workspace/startup/kb-startup-runner.ts +1 -2
  969. package/src/modules/workspace/startup/steps/groups-to-plugins.step.ts +3 -3
  970. package/src/modules/workspace/startup/steps/personal-spaces.step.ts +2 -2
  971. package/src/modules/workspace/startup/steps/plugin-layout.ts +1 -1
  972. package/src/modules/workspace/startup/steps/roles-yaml.step.ts +1 -1
  973. package/src/modules/workspace/startup/steps/seed-tree.ts +2 -2
  974. package/src/modules/workspace/startup/steps/template-files.step.ts +2 -2
  975. package/src/modules/workspace/startup/steps/template-source.ts +2 -2
  976. package/src/modules/workspace/worker-pool.ts +193 -0
  977. package/src/modules/workspace/workspace.routes.ts +9 -12
  978. package/src/modules/workspace/workspace.service.ts +4 -7
  979. package/src/modules/workspace/workspace.tools.ts +53 -34
  980. package/src/modules/workspace/write-denial.ts +4 -5
  981. package/src/modules/write-access/index.ts +7 -0
  982. package/src/shared/__tests__/module-boundaries.lint.test.ts +301 -0
  983. package/src/shared/listener-seam.ts +52 -0
  984. package/src/modules/workflow/__tests__/format-affected-owners.test.ts +0 -85
@@ -34,6 +34,8 @@ import { TemplateFilesStep } from '../modules/workspace/startup/steps/template-f
34
34
  import { RolesYamlStep } from '../modules/workspace/startup/steps/roles-yaml.step.js';
35
35
  import { buildSeedTree } from '../modules/workspace/startup/steps/seed-tree.js';
36
36
  import { DeploymentSettingsService, retireMergedBranchesOn } from '../modules/settings/deployment-settings.service.js';
37
+ import { ToolReadOnlyHints } from '../modules/tool-registry/read-only-hints.js';
38
+ import type { IToolReadOnlyHints } from '../modules/tool-registry/read-only-hints.contract.js';
37
39
  import { KbSyncService } from '../modules/kb-sync/kb-sync.service.js';
38
40
  import { NodeFs } from '../modules/kb-fs/node-fs.js';
39
41
  import { assertKbDirNameFree } from '../modules/kb-fs/repo-path.js';
@@ -67,7 +69,11 @@ import { createDownloadFetcherIdentifier } from '../modules/workspace/agent-down
67
69
  import { WorkerPatternMatcher } from '../modules/workspace/bounded-matcher.js';
68
70
  import type { IPatternMatcher } from '../modules/workspace/pattern-matcher.contract.js';
69
71
  import type { Request } from 'express';
70
- import { DocExtractService } from '../modules/workspace/file-readers/doc-extract.service.js';
72
+ import {
73
+ DocExtractService,
74
+ WorkerDocumentExtractor,
75
+ type IDocumentExtractor,
76
+ } from '../modules/workspace/index.js';
71
77
  import { UuidSessionSink, type ISessionSink } from '../modules/workspace/session-sink.js';
72
78
  import { AuthService } from '../modules/auth/auth.service.js';
73
79
  import { AccountHooks, type IAccountHooks } from '../modules/auth/account-hooks.js';
@@ -75,6 +81,7 @@ import { AccountErasureService } from '../modules/auth/account-erasure.service.j
75
81
  import { OidcAuthProvider, oidcSettingsFrom } from '../modules/auth/oidc-auth-provider.js';
76
82
  import { createAuthMiddleware, readAuthCookie } from '../modules/auth/auth.middleware.js';
77
83
  import { AccessControlService, loadActiveGroups } from '../modules/access/access-control.service.js';
84
+ import { AccessMutationService } from '../modules/access/access-mutation.service.js';
78
85
  import { CreatorAccessService } from '../modules/access/creator-access.js';
79
86
  import { ChangeReadGate } from '../modules/access/change-read-gate.js';
80
87
  import { GroupsAdminService } from '../modules/access/groups-admin.service.js';
@@ -122,11 +129,12 @@ import { assertGitVersion } from '../modules/workflow/git/git-version.js';
122
129
  import { DiffService } from '../modules/diff/diff.service.js';
123
130
  import { ReviewWorkflowService } from '../modules/workflow/review-workflow/review-workflow.service.js';
124
131
  import { FileLockService } from '../modules/workflow/file-lock.service.js';
125
- import { WorkflowEventBus } from '../modules/workflow/event-bus.js';
132
+ import { WorkflowEventBus } from '../modules/workflow/index.js';
126
133
  import { FileChangeNotifier } from '../modules/kb-fs/file-change-notifier.js';
127
134
  import { StarterPackService } from '../modules/onboarding/starter-pack.service.js';
128
135
  import { WorkflowService } from '../modules/workflow/workflow.service.js';
129
136
  import { WorkflowHooks } from '../modules/workflow/workflow-hooks.js';
137
+ import { ChangeRequestHooks, type IChangeRequestHooks } from '../modules/workflow/change-request-hooks.js';
130
138
  import { PendingCommitsService } from '../modules/workflow/pending-commits.service.js';
131
139
  import {
132
140
  PendingCommitsWorker,
@@ -255,6 +263,8 @@ export interface CoreServices {
255
263
  * download route can refuse a link presented by someone it was not issued to.
256
264
  */
257
265
  agentDownloadFetcher: (req: Request) => Promise<string[]>;
266
+ /** Runs every document extraction off the request thread under a budget; its workers end when the graph stops. */
267
+ documentExtractor: IDocumentExtractor;
258
268
  docExtractService: DocExtractService;
259
269
  accessControl: AccessControlService;
260
270
  creatorAccess: CreatorAccessService;
@@ -324,6 +334,12 @@ export interface CoreServices {
324
334
  reviewWorkflowService: ReviewWorkflowService;
325
335
  fileLockService: FileLockService;
326
336
  workflowService: WorkflowService;
337
+ /**
338
+ * The seam for "a change request was opened": a deployment registers here
339
+ * how the reviewers are told (the cloud's mail, say), and the open's answer
340
+ * says whether somebody did. Core registers nothing.
341
+ */
342
+ changeRequestHooks: IChangeRequestHooks;
327
343
  /** Remote sync (`POST /api/sync`): a git host or pipeline makes the clones catch up. */
328
344
  kbSyncService: KbSyncService;
329
345
  eventBus: WorkflowEventBus;
@@ -392,6 +408,8 @@ export interface CoreServices {
392
408
  /** The Audit log: what every connected agent and key called, and the revoke of an agent's grant. */
393
409
  agentAuditService: AgentAuditService;
394
410
  toolRegistry: ToolRegistry;
411
+ /** Each platform tool's and meta-tool's read-only hint, and an admin's overrides of them. */
412
+ readOnlyHints: IToolReadOnlyHints;
395
413
  toolAuthMiddleware: ReturnType<typeof createToolAuthMiddleware>;
396
414
  manualAuthMiddleware: ReturnType<typeof createManualAuthMiddleware>;
397
415
  toolHandlerFactory: ReturnType<typeof createToolHandlerFactory>;
@@ -784,9 +802,9 @@ export async function createCoreServices(
784
802
  // `<tenant>-down_`: recognisable by shape beside the upload token.
785
803
  tokenPrefix: config.uploadTokenPrefix.replace(/up_$/, 'down_'),
786
804
  });
787
- // Office-document/PDF text extraction for `read_file`/`grep`, cached by
788
- // content hash beside the workspaces root (see `DocExtractionCache`).
789
- const docExtractService = new DocExtractService(config.docExtractCacheRoot);
805
+ // The worker threads every office/PDF/email extraction runs in, under a
806
+ // 10 s budget per file (see `WorkerDocumentExtractor`).
807
+ const documentExtractor = new WorkerDocumentExtractor();
790
808
  // The deployment owner counts as Admin for the two hardcoded `write`
791
809
  // rescues (`roles.yaml` and any `access.md`) — the SAME list
792
810
  // `AdminAccessService` below is given, so the admin surfaces and the write
@@ -945,11 +963,23 @@ export async function createCoreServices(
945
963
  // browser sessions. Single instance per Node process — survives across
946
964
  // requests, doesn't survive restarts (clients reconnect + resync).
947
965
  const eventBus = new WorkflowEventBus();
966
+ // Office-document/PDF/email text extraction for `read_file`/`grep`, cached
967
+ // by content hash beside the workspaces root (see `DocExtractionCache`),
968
+ // failures included. A fresh failure is told to the people looking at the
969
+ // file: the events route delivers it only to sessions that may read it.
970
+ const docExtractService = new DocExtractService(config.docExtractCacheRoot, documentExtractor, {
971
+ onUnreadable: ({ workspaceId, path, reason }) =>
972
+ eventBus.emit({ kind: 'document-unreadable', workspaceId, path, reason }),
973
+ });
948
974
  // In-process post-commit hook (distinct from the SSE bus): fires once per
949
975
  // committed change (batched paths) so catalogs refresh instantly and the
950
976
  // id-repair keeps the id namespace collision-free. Subscribers are registered
951
977
  // below, once the reacting services exist.
952
978
  const fileChangeNotifier = new FileChangeNotifier();
979
+ // Who tells the reviewers of an opened change request: the composition root
980
+ // of a distribution registers its listener here, after this returns (see
981
+ // `ChangeRequestHooks`).
982
+ const changeRequestHooks = new ChangeRequestHooks();
953
983
  const workflowService = new WorkflowService(
954
984
  db,
955
985
  gitService,
@@ -967,6 +997,11 @@ export async function createCoreServices(
967
997
  // the agent-access gate consult, so a deployment's registrations against
968
998
  // it reach every hook point.
969
999
  workflowHooks,
1000
+ // Exposed as `changeRequestHooks`, the same instance, for the same reason.
1001
+ changeRequestHooks,
1002
+ // The opened event names the approvers as accounts; auth answers which
1003
+ // of the addresses the access model names have one.
1004
+ authService,
970
1005
  );
971
1006
  // The leftover-branch cleanup asks the Deployment page at every round, so
972
1007
  // switching it off there applies without a restart.
@@ -1022,6 +1057,7 @@ export async function createCoreServices(
1022
1057
  workspaceService,
1023
1058
  workflowService,
1024
1059
  accessControl,
1060
+ new AccessMutationService(workspaceService, accessControl, kb.kbDirName),
1025
1061
  skillService,
1026
1062
  pluginLinkIndex,
1027
1063
  kb,
@@ -1370,6 +1406,8 @@ export async function createCoreServices(
1370
1406
  // the setup save applies lands without a restart.
1371
1407
  kbLayout: () => kb.layout,
1372
1408
  secretsScope,
1409
+ // Read at listing time, by when the hints below exist.
1410
+ readOnlyOverrides: () => readOnlyHints.overrides(),
1373
1411
  },
1374
1412
  // Pre-dispatch per-user credential check: the vault answers "has this caller
1375
1413
  // set it?" and the manual catalog answers "which user-scoped vars does this
@@ -1438,6 +1476,9 @@ export async function createCoreServices(
1438
1476
  // `internalTokenService` minted above (shared with the agent factories) is
1439
1477
  // the same one the tool-auth middleware verifies internal tokens against.
1440
1478
  const toolRegistry = new ToolRegistry();
1479
+ // What MCP clients are told about each platform tool's effect: its write
1480
+ // declaration, or an admin's override from the Tools page.
1481
+ const readOnlyHints = new ToolReadOnlyHints(toolRegistry, settings);
1441
1482
  const resolveToolContext = createToolContextResolver({
1442
1483
  authService,
1443
1484
  workspaceService,
@@ -1634,6 +1675,7 @@ export async function createCoreServices(
1634
1675
  agentDownloadStore,
1635
1676
  patternMatcher,
1636
1677
  agentDownloadFetcher,
1678
+ documentExtractor,
1637
1679
  docExtractService,
1638
1680
  accessControl,
1639
1681
  creatorAccess,
@@ -1668,6 +1710,7 @@ export async function createCoreServices(
1668
1710
  reviewWorkflowService,
1669
1711
  fileLockService,
1670
1712
  workflowService,
1713
+ changeRequestHooks,
1671
1714
  kbSyncService,
1672
1715
  eventBus,
1673
1716
  fileChangeNotifier,
@@ -1691,6 +1734,7 @@ export async function createCoreServices(
1691
1734
  mcpResourceMetadataUrl,
1692
1735
  agentAuditService,
1693
1736
  toolRegistry,
1737
+ readOnlyHints,
1694
1738
  toolAuthMiddleware,
1695
1739
  manualAuthMiddleware,
1696
1740
  toolHandlerFactory,
@@ -454,6 +454,12 @@ export interface CoreStopDeps {
454
454
  * caller that has not built one passes nothing.
455
455
  */
456
456
  patternMatcher?: { close(): Promise<void> };
457
+ /**
458
+ * The document extractor, whose worker threads are this graph's own for the
459
+ * same reason: ended here, so no extraction worker outlives its graph.
460
+ * Optional like the matcher.
461
+ */
462
+ documentExtractor?: { close(): Promise<void> };
457
463
  /**
458
464
  * The workflow service, for the tidy-up it runs after each sweep (closing
459
465
  * empty requests, removing leftover branches): detached from whatever
@@ -591,6 +597,10 @@ async function releaseCore(deps: CoreStopDeps, remaining: () => number, log: (m:
591
597
  if (deps.patternMatcher) {
592
598
  await bounded(deps.patternMatcher.close(), remaining(), 'ending the search workers', log);
593
599
  }
600
+ // Likewise: an extraction still running is answered busy, and nothing about its file is remembered.
601
+ if (deps.documentExtractor) {
602
+ await bounded(deps.documentExtractor.close(), remaining(), 'ending the extraction workers', log);
603
+ }
594
604
  await bounded(deps.commitWorker.stop(), remaining(), 'stopping the commit worker', log);
595
605
  if (deps.secretsScope !== undefined) unregisterBevelSecretsVariableLoader(deps.secretsScope);
596
606
  await bounded(closeDb(deps.db), remaining(), 'ending the database pool', log);
@@ -85,5 +85,15 @@ export function publicConfig(kb: KbContext, { marketplaceGitUrl, mcpUrl }: Publi
85
85
  * there.
86
86
  */
87
87
  catalogRevision: true as const,
88
+ /**
89
+ * This deployment serves `GET /api/agent/tool-hints`, the read-only hint
90
+ * of every platform tool and code-mode meta-tool (see
91
+ * modules/tool-registry/read-only-hints.ts). The local `hexis-mcp` bridge
92
+ * reads it on every `tools/list` only when this is advertised — on the
93
+ * same terms as the two flags above: an older deployment answers the
94
+ * unknown route with 401, and an OAuth bridge reads a 401 as an expired
95
+ * token and refreshes its sign-in on every listing.
96
+ */
97
+ toolHints: true as const,
88
98
  };
89
99
  }
package/src/index.ts CHANGED
@@ -151,3 +151,10 @@ export {
151
151
  type AgentReadHook,
152
152
  type PreWriteHook,
153
153
  } from './modules/workflow/workflow-hooks.js';
154
+ export {
155
+ ChangeRequestHooks,
156
+ type ChangeRequestOpenedEvent,
157
+ type ChangeRequestOpenedHook,
158
+ type ChangeRequestPerson,
159
+ type IChangeRequestHooks,
160
+ } from './modules/workflow/change-request-hooks.js';
@@ -49,7 +49,8 @@ interface HarnessOpts {
49
49
  lastClosed?: { number: number; state: 'closed' | 'merged' } | null;
50
50
  liveRules?: string | null;
51
51
  branchRules?: string | null;
52
- detailBody?: string;
52
+ /** What `getChangeRequestDetail` answers for every request: the body, and the access request's own facts. */
53
+ detail?: { body?: string; accessRequest?: { level: 'write' | 'owner'; note?: string } };
53
54
  }
54
55
 
55
56
  async function makeHarness(opts: HarnessOpts = {}) {
@@ -62,7 +63,7 @@ async function makeHarness(opts: HarnessOpts = {}) {
62
63
  lastClosed = null,
63
64
  liveRules = '---\n---\nwrite:\n - Ed <ed@x.io>\n',
64
65
  branchRules = null,
65
- detailBody = '',
66
+ detail = {},
66
67
  } = opts;
67
68
 
68
69
  const absent = Object.assign(new Error('ENOENT'), { code: 'ENOENT' });
@@ -92,7 +93,7 @@ async function makeHarness(opts: HarnessOpts = {}) {
92
93
  }),
93
94
  latestClosedChangeRequest: vi.fn(async () => lastClosed),
94
95
  getChangeRequest: vi.fn(async (n: number) => ({ number: n, state: 'open' })),
95
- getChangeRequestDetail: vi.fn(async () => ({ body: detailBody })),
96
+ getChangeRequestDetail: vi.fn(async () => ({ body: '', ...detail })),
96
97
  } as unknown as IWorkflowService;
97
98
 
98
99
  const workspaceService = {
@@ -345,13 +346,14 @@ describe('GET /workspace/:id/access/request — what the requester is told', ()
345
346
  it('reports the open request, taking the level off the REQUEST rather than the branch', async () => {
346
347
  // The branch is where the proposal lives, but a clone whose refs are
347
348
  // seconds stale cannot read a branch cut moments ago. "Requested: Owner"
348
- // is a promise about a request, so it is answered from the request — here
349
- // the branch is deliberately unreadable and the line is still right.
349
+ // is a promise about a request, so it is answered from the request's own
350
+ // row — here the branch is deliberately unreadable and the line is still
351
+ // right.
350
352
  const branch = joinBranchFor(RITA.email, FOLDER);
351
353
  const h = await makeHarness({
352
354
  openCrs: [{ number: 31, branch, state: 'open' }],
353
355
  proposals: null,
354
- detailBody: '<!--hexis:access-request-level:owner-->\nRita asked for Owner.',
356
+ detail: { body: 'Rita asked for Owner.', accessRequest: { level: 'owner' } },
355
357
  });
356
358
  server = h.server;
357
359
  expect(await (await status(h)).json()).toEqual({ state: 'pending', level: 'owner', number: 31 });
@@ -361,7 +363,7 @@ describe('GET /workspace/:id/access/request — what the requester is told', ()
361
363
  const branch = joinBranchFor(RITA.email, FOLDER);
362
364
  const h = await makeHarness({
363
365
  openCrs: [{ number: 31, branch, state: 'open' }],
364
- detailBody: 'Opened before the level was recorded.',
366
+ detail: { body: 'Opened before the level was recorded.' },
365
367
  });
366
368
  server = h.server;
367
369
  expect(await (await status(h)).json()).toMatchObject({ state: 'pending', level: 'write' });
@@ -410,12 +412,14 @@ describe('the editors\' side', () => {
410
412
  const listUrl = (base: string) =>
411
413
  `${base}/${LIVE_WS}/access/requests?path=${encodeURIComponent(`${KB}/${FOLDER}`)}&kind=folder`;
412
414
 
413
- it('lists the item\'s open requests for an editor, with the note read back as plain text', async () => {
415
+ it("lists the item's open requests for an editor, with the note off the request's own row", async () => {
414
416
  const h = await makeHarness({
415
417
  writable: [`${FOLDER}/access.md`],
416
418
  proposals: [proposalFor('owner')],
417
- detailBody:
418
- 'x\n\n<!--hexis:access-request-note-->\n> I maintain these pages now\n<!--/hexis:access-request-note-->\n',
419
+ detail: {
420
+ body: 'x\n\nNote from Rita:\n\n> I maintain these pages now',
421
+ accessRequest: { level: 'owner', note: 'I maintain these pages now' },
422
+ },
419
423
  });
420
424
  server = h.server;
421
425
  const body = await (await fetch(listUrl(h.base))).json();
@@ -565,19 +569,29 @@ describe('a branch left over from an answered request', () => {
565
569
  // request asking for Owner.
566
570
  const h = await makeHarness({
567
571
  openCrs: [{ number: 31, branch: stale, state: 'open' }],
568
- detailBody: '<!--hexis:access-request-level:owner-->',
572
+ detail: { accessRequest: { level: 'owner' } },
569
573
  });
570
574
  server = h.server;
571
575
  const res = await post(`${h.base}/${LIVE_WS}/access/request`, { ...folderBody, level: 'write' });
572
576
  expect(await res.json()).toEqual({ ok: true, state: 'pending', number: 31, level: 'owner' });
573
577
  });
574
578
 
575
- it('records the level on the request itself, so it can be read back', async () => {
579
+ it('records the level and the note on the request itself, never hidden in its description', async () => {
576
580
  const h = await makeHarness();
577
581
  server = h.server;
578
- await post(`${h.base}/${LIVE_WS}/access/request`, { ...folderBody, level: 'owner' });
579
- const { description } = h.opened[0] as { description: string };
580
- expect(description).toContain('<!--hexis:access-request-level:owner-->');
582
+ await post(`${h.base}/${LIVE_WS}/access/request`, { ...folderBody, level: 'owner', note: 'For the Q3 review' });
583
+ const { description, accessRequest } = h.opened[0] as { description: string; accessRequest: unknown };
584
+ expect(accessRequest).toEqual({ level: 'owner', note: 'For the Q3 review' });
585
+ // The description is prose for the people who read it: no marker, no fence.
586
+ expect(description).not.toMatch(/<!--/);
587
+ expect(description).toContain('For the Q3 review');
588
+ });
589
+
590
+ it('records no note when none was written', async () => {
591
+ const h = await makeHarness();
592
+ server = h.server;
593
+ await post(`${h.base}/${LIVE_WS}/access/request`, { ...folderBody, level: 'write' });
594
+ expect((h.opened[0] as { accessRequest: unknown }).accessRequest).toEqual({ level: 'write' });
581
595
  });
582
596
  });
583
597
 
@@ -7,9 +7,9 @@ const log = logger('access');
7
7
  import { isAbsence, type ITreeWalker, type WalkListener } from '../../shared/fs.contract.js';
8
8
  import { assertOneSpecPerLine, isCommitSha, isGitTimeout, type IGitRunner } from '../../shared/git.contract.js';
9
9
  import { hashEmail } from '../../shared/email-identity.js';
10
- import { NodeGitRunner } from '../workflow/git/node-git-runner.js';
10
+ import { NodeGitRunner } from '../workflow/index.js';
11
11
  import { readRevSha } from '../kb-fs/index.js';
12
- import type { WorkspaceService } from '../workspace/workspace.service.js';
12
+ import type { WorkspaceService } from '../workspace/index.js';
13
13
  import type {
14
14
  IAccessControl,
15
15
  AccessDecision,
@@ -32,14 +32,13 @@ import {
32
32
  platformRestoreDestination,
33
33
  } from '@bevel-software/platform-shared';
34
34
  import type { KbContext } from '../../shared/kb-context.js';
35
- import { AccessConfigError, AccessUnreadableError } from '../access-model/access-errors.js';
36
- import { synthesizePluginPrincipals } from '../access-model/plugin-principals.js';
35
+ import { AccessConfigError, AccessUnreadableError, synthesizePluginPrincipals } from '../access-model/index.js';
37
36
  import {
38
37
  GROUPS_YAML,
39
38
  SYNCED_GROUPS_YAML,
40
39
  parseGroupsFile,
41
40
  type GroupsIndex,
42
- } from '../access-model/group-files.js';
41
+ } from '../access-model/index.js';
43
42
  import {
44
43
  ADMIN_CANONICAL,
45
44
  EVERYONE_CANONICAL,
@@ -61,7 +60,7 @@ import {
61
60
  type ParsedEntry,
62
61
  type RolesIndex,
63
62
  type Verb,
64
- } from '../access-model/access-grammar.js';
63
+ } from '../access-model/index.js';
65
64
  import {
66
65
  DIRECTORY_SYNC_BOT_EMAIL,
67
66
  DIRECTORY_SYNC_BOT_NAME,
@@ -9,7 +9,7 @@ import {
9
9
  parseOwnAccessEntries,
10
10
  type ParsedEntry,
11
11
  type Verb,
12
- } from '../access-model/access-grammar.js';
12
+ } from '../access-model/index.js';
13
13
 
14
14
  /**
15
15
  * WHERE access rules are DECLARED inside a folder — a read-only inventory, not
@@ -35,10 +35,10 @@
35
35
 
36
36
  import path from 'node:path';
37
37
 
38
- import type { WorkspaceService } from '../workspace/workspace.service.js';
38
+ import type { WorkspaceService } from '../workspace/index.js';
39
39
  import type { IAccessControl } from './access-control.interface.js';
40
40
  import { isAbsence } from '../../shared/fs.contract.js';
41
- import { isTextBytes } from '../workspace/file-readers/text-reader.js';
41
+ import { isTextBytes } from '../workspace/index.js';
42
42
  import {
43
43
  type Verb,
44
44
  ADMIN_CANONICAL,
@@ -46,7 +46,7 @@ import {
46
46
  ROLE_TOKEN_PREFIX,
47
47
  canonicalRoleName,
48
48
  accessFrontmatterExtensionList,
49
- } from '../access-model/access-grammar.js';
49
+ } from '../access-model/index.js';
50
50
  import {
51
51
  spliceRevoke,
52
52
  spliceGrant,
@@ -54,7 +54,7 @@ import {
54
54
  AccessSpliceError,
55
55
  type Principal,
56
56
  type TokenMatch,
57
- } from '../access-model/access-splice.js';
57
+ } from '../access-model/index.js';
58
58
  import { WorkflowDomainError } from '../../shared/domain-errors.js';
59
59
  import {
60
60
  canCarryFrontmatter,
@@ -610,3 +610,9 @@ export class AccessMutationService {
610
610
  return new AccessMutationError(err instanceof Error ? err.message : 'mutation failed', 500);
611
611
  }
612
612
  }
613
+
614
+ /**
615
+ * What another module needs of the mutation service: to grant and to revoke.
616
+ * Injected by the composition root, which owns the implementation.
617
+ */
618
+ export type IAccessMutation = Pick<AccessMutationService, 'grant' | 'revoke'>;
@@ -1,5 +1,5 @@
1
1
  import type { AuthUser, ChangeRequest } from '@bevel-software/platform-shared';
2
- import type { Verb } from '../access-model/access-grammar.js';
2
+ import type { Verb } from '../access-model/index.js';
3
3
  import { accessMdPathForFolder, type TargetKind } from './access-mutation.service.js';
4
4
 
5
5
  /**
@@ -1,11 +1,10 @@
1
1
  import express from 'express';
2
- import type { AuthUser } from '@bevel-software/platform-shared';
3
- import type { IWorkflowService } from '@bevel-software/platform-shared';
2
+ import type { AuthUser, IWorkflowService } from '@bevel-software/platform-shared';
4
3
  import { logger } from '../../shared/logging.js';
5
4
  import type { KbContext } from '../../shared/kb-context.js';
6
5
  import { branchForWorkspaceId } from '../../shared/workspace-id.js';
7
- import type { AuthService } from '../auth/auth.service.js';
8
- import type { WorkspaceService } from '../workspace/workspace.service.js';
6
+ import type { AuthService } from '../auth/index.js';
7
+ import type { WorkspaceService } from '../workspace/index.js';
9
8
  import type { IAccessControl } from './access-control.interface.js';
10
9
  import {
11
10
  AccessMutationError,
@@ -22,12 +21,8 @@ import {
22
21
  type AccessRequestTarget,
23
22
  type IAccessRequestLifecycle,
24
23
  } from './access-requests.contract.js';
25
- import {
26
- AccessRequestsService,
27
- extractRequestNote,
28
- itemNameOf,
29
- } from './access-requests.service.js';
30
- import '../auth/auth.middleware.js'; // Express Request.userId augmentation
24
+ import { AccessRequestsService, itemNameOf } from './access-requests.service.js';
25
+ import '../auth/index.js'; // Express Request.userId augmentation
31
26
 
32
27
  const log = logger('access.request');
33
28
 
@@ -235,16 +230,16 @@ export function createAccessRequestRoutes(deps: {
235
230
  }
236
231
  const crs = await workflow.listChangeRequests();
237
232
  const rows = await lifecycle.list(target.path, target, crs, user);
238
- // The note lives in the request's description and nowhere else, so it
239
- // is read back per request. Bounded by the open requests on ONE item —
240
- // a handful at most — and a detail that cannot be fetched costs the
241
- // note, never the line it belongs to.
233
+ // The note is the request's own column, read back per request.
234
+ // Bounded by the open requests on ONE item — a handful at most — and a
235
+ // detail that cannot be fetched costs the note, never the line it
236
+ // belongs to.
242
237
  const withNotes = await Promise.all(
243
238
  rows.map(async (row) => {
244
239
  const detail = await workflow
245
240
  .getChangeRequestDetail(row.number, { patches: false })
246
241
  .catch(() => null);
247
- const note = extractRequestNote(detail?.body);
242
+ const note = detail?.accessRequest?.note;
248
243
  return note ? { ...row, note } : row;
249
244
  }),
250
245
  );
@@ -10,8 +10,8 @@ import {
10
10
  } from '../../shared/domain-errors.js';
11
11
  import { isAbsence } from '../../shared/fs.contract.js';
12
12
  import type { KbContext } from '../../shared/kb-context.js';
13
- import { spliceGrant } from '../access-model/access-splice.js';
14
- import type { WorkspaceService } from '../workspace/workspace.service.js';
13
+ import { spliceGrant } from '../access-model/index.js';
14
+ import type { WorkspaceService } from '../workspace/index.js';
15
15
  import { logger } from '../../shared/logging.js';
16
16
  import { AccessMutationError } from './access-mutation.service.js';
17
17
  import {
@@ -50,7 +50,7 @@ export function itemNameOf(repoRelPath: string): string {
50
50
  /**
51
51
  * Neutralise every character a markdown renderer would read as structure.
52
52
  *
53
- * The note is somebody's free text and it lands in a change request's
53
+ * The note is somebody's free text and it is quoted in a change request's
54
54
  * description, which IS rendered. Escaping it is what makes "plain text" true:
55
55
  * without this a note can carry a heading, a link, or an image pointing at a
56
56
  * URL that logs whoever opens the request.
@@ -59,64 +59,6 @@ export function escapeMarkdown(text: string): string {
59
59
  return text.replace(/[\\`*_{}[\]()#+\-.!|<>~]/g, (c) => `\\${c}`);
60
60
  }
61
61
 
62
- /** The exact inverse of {@link escapeMarkdown} — only our own backslashes go. */
63
- function unescapeMarkdown(text: string): string {
64
- return text.replace(/\\([\\`*_{}[\]()#+\-.!|<>~])/g, '$1');
65
- }
66
-
67
- /**
68
- * The fence the note sits behind in a request's description.
69
- *
70
- * The description is the note's only home — there is no column for it — so the
71
- * editors' banner has to read it back out of prose. Marking the block means
72
- * that read is exact rather than a guess at which paragraph was the note, and
73
- * an HTML comment is invisible in every surface that renders the description.
74
- */
75
- const NOTE_OPEN = '<!--hexis:access-request-note-->';
76
- const NOTE_CLOSE = '<!--/hexis:access-request-note-->';
77
-
78
- /**
79
- * The level, recorded on the change request itself.
80
- *
81
- * The branch says what is proposed, but only while it can be read — and a
82
- * clone whose refs are a few seconds stale cannot read a branch cut moments
83
- * ago. The request's own row always can. "Requested: <level>" is a promise
84
- * about a request, so it is answered from the request, not from a file at a
85
- * ref that may not have arrived yet.
86
- */
87
- const LEVEL_MARK = /<!--hexis:access-request-level:(write|owner)-->/;
88
-
89
- /**
90
- * The requester's own words, back out of a request's description, or
91
- * undefined when they wrote none. Unescaped exactly as they were escaped, so
92
- * what the banner shows is what was typed.
93
- */
94
- /**
95
- * The level a request asks for, off its own description. Undefined for a
96
- * request opened before this marker existed — those are the skill route's,
97
- * and the skill route only ever asked for `write`.
98
- */
99
- export function extractRequestLevel(body: string | null | undefined): RequestLevel | undefined {
100
- const hit = body ? LEVEL_MARK.exec(body) : null;
101
- return hit ? (hit[1] as RequestLevel) : undefined;
102
- }
103
-
104
- export function extractRequestNote(body: string | null | undefined): string | undefined {
105
- if (!body) return undefined;
106
- const start = body.indexOf(NOTE_OPEN);
107
- if (start < 0) return undefined;
108
- const end = body.indexOf(NOTE_CLOSE, start);
109
- if (end < 0) return undefined;
110
- const note = body
111
- .slice(start + NOTE_OPEN.length, end)
112
- .split(/\r?\n/)
113
- .filter((line) => line.startsWith('>'))
114
- .map((line) => unescapeMarkdown(line.replace(/^>\s?/, '')))
115
- .join('\n')
116
- .trim();
117
- return note || undefined;
118
- }
119
-
120
62
  /**
121
63
  * Asking for Can edit or Owner on ONE item, and reading back what came of it.
122
64
  *
@@ -261,11 +203,15 @@ export class AccessRequestsService {
261
203
  }
262
204
 
263
205
  try {
206
+ // The level and the note are the request's own columns — what the
207
+ // dialog and the editors' banner read back. The description is for the
208
+ // people who read the request, and says the same things in prose.
264
209
  const detail = await workflow.openChangeRequest(ws.id, user, {
265
210
  sourceBranch: branch,
266
211
  targetBranch: kb.defaultBranch,
267
212
  title: `Access request: ${itemName}`,
268
213
  description: this.describe({ user, target, level, note }),
214
+ accessRequest: { level, ...(note ? { note } : {}) },
269
215
  });
270
216
  return { number: detail.number, level };
271
217
  } catch (err) {
@@ -331,18 +277,21 @@ export class AccessRequestsService {
331
277
  }
332
278
 
333
279
  /**
334
- * The level change request `number` asks for, off its own description.
280
+ * The level change request `number` asks for, off the request's own row.
335
281
  *
336
- * `write` when the description does not say: every request that predates the
337
- * marker came from the skill page's "Request write access", which asks for
338
- * exactly that. A detail that cannot be fetched falls there too — the line
339
- * it feeds says which level was asked for, and Can edit is the lesser claim.
282
+ * The branch says what is proposed, but only while it can be read — and a
283
+ * clone whose refs are a few seconds stale cannot read a branch cut moments
284
+ * ago. The request's row always can. `write` when the row does not say:
285
+ * every request that predates the column came from the skill page's
286
+ * "Request write access", which asks for exactly that. A detail that cannot
287
+ * be fetched falls there too — the line it feeds says which level was asked
288
+ * for, and Can edit is the lesser claim.
340
289
  */
341
290
  private async levelOf(number: number): Promise<RequestLevel> {
342
291
  const detail = await this.deps.workflow
343
292
  .getChangeRequestDetail(number, { patches: false })
344
293
  .catch(() => null);
345
- return extractRequestLevel(detail?.body) ?? 'write';
294
+ return detail?.accessRequest?.level ?? 'write';
346
295
  }
347
296
 
348
297
  /**
@@ -390,7 +339,12 @@ export class AccessRequestsService {
390
339
  }
391
340
  }
392
341
 
393
- /** The description an editor reads: who, what, where, the note, and how to answer. */
342
+ /**
343
+ * The description an editor reads: who, what, where, the note, and how to
344
+ * answer. Prose only — the level and the note the platform reads back are
345
+ * the request's own columns, so nothing hidden is written here and an edit
346
+ * of the description loses nothing.
347
+ */
394
348
  private describe(input: {
395
349
  user: AuthUser;
396
350
  target: AccessRequestTarget;
@@ -400,14 +354,12 @@ export class AccessRequestsService {
400
354
  const { user, target, level, note } = input;
401
355
  const who = escapeMarkdown(user.name || user.email);
402
356
  const lines = [
403
- `<!--hexis:access-request-level:${level}-->`,
404
357
  `${who} (${escapeMarkdown(user.email)}) asked for **${LEVEL_LABEL[level]}** on ` +
405
358
  `${escapeMarkdown(target.path || 'the workspace')}.`,
406
359
  ];
407
360
  if (note) {
408
- lines.push('', `Note from ${who}:`, '', NOTE_OPEN);
361
+ lines.push('', `Note from ${who}:`, '');
409
362
  for (const line of note.split(/\r?\n/)) lines.push(`> ${escapeMarkdown(line)}`);
410
- lines.push(NOTE_CLOSE);
411
363
  }
412
364
  lines.push(
413
365
  '',
@@ -418,3 +370,9 @@ export class AccessRequestsService {
418
370
  return lines.join('\n');
419
371
  }
420
372
  }
373
+
374
+ /**
375
+ * What another module needs of the access-request service: to open one.
376
+ * Injected by the composition root, which owns the implementation.
377
+ */
378
+ export type IAccessRequests = Pick<AccessRequestsService, 'open'>;