@bevel-software/platform-core-backend 0.32.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 (958) 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 +7 -2
  7. package/dist/core/create-core-services.d.ts.map +1 -1
  8. package/dist/core/create-core-services.js +22 -6
  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/modules/access/access-control.service.d.ts +3 -3
  19. package/dist/modules/access/access-control.service.d.ts.map +1 -1
  20. package/dist/modules/access/access-control.service.js +4 -5
  21. package/dist/modules/access/access-control.service.js.map +1 -1
  22. package/dist/modules/access/access-declarations.d.ts +1 -1
  23. package/dist/modules/access/access-declarations.d.ts.map +1 -1
  24. package/dist/modules/access/access-declarations.js +1 -1
  25. package/dist/modules/access/access-declarations.js.map +1 -1
  26. package/dist/modules/access/access-mutation.service.d.ts +8 -3
  27. package/dist/modules/access/access-mutation.service.d.ts.map +1 -1
  28. package/dist/modules/access/access-mutation.service.js +3 -3
  29. package/dist/modules/access/access-mutation.service.js.map +1 -1
  30. package/dist/modules/access/access-requests.contract.d.ts +1 -1
  31. package/dist/modules/access/access-requests.contract.d.ts.map +1 -1
  32. package/dist/modules/access/access-requests.routes.d.ts +3 -3
  33. package/dist/modules/access/access-requests.routes.d.ts.map +1 -1
  34. package/dist/modules/access/access-requests.routes.js +7 -7
  35. package/dist/modules/access/access-requests.routes.js.map +1 -1
  36. package/dist/modules/access/access-requests.service.d.ts +21 -20
  37. package/dist/modules/access/access-requests.service.d.ts.map +1 -1
  38. package/dist/modules/access/access-requests.service.js +22 -68
  39. package/dist/modules/access/access-requests.service.js.map +1 -1
  40. package/dist/modules/access/access-view.d.ts +1 -1
  41. package/dist/modules/access/access-view.d.ts.map +1 -1
  42. package/dist/modules/access/access-view.js +1 -1
  43. package/dist/modules/access/access-view.js.map +1 -1
  44. package/dist/modules/access/access.routes.d.ts +5 -7
  45. package/dist/modules/access/access.routes.d.ts.map +1 -1
  46. package/dist/modules/access/access.routes.js +4 -4
  47. package/dist/modules/access/access.routes.js.map +1 -1
  48. package/dist/modules/access/admin-locked-commit.d.ts +2 -2
  49. package/dist/modules/access/admin-locked-commit.d.ts.map +1 -1
  50. package/dist/modules/access/admin-locked-commit.js +1 -1
  51. package/dist/modules/access/admin-locked-commit.js.map +1 -1
  52. package/dist/modules/access/capability-registry.js +1 -1
  53. package/dist/modules/access/capability-registry.js.map +1 -1
  54. package/dist/modules/access/change-read-gate.d.ts +2 -2
  55. package/dist/modules/access/change-read-gate.d.ts.map +1 -1
  56. package/dist/modules/access/change-read-gate.js +1 -3
  57. package/dist/modules/access/change-read-gate.js.map +1 -1
  58. package/dist/modules/access/creator-access.d.ts +2 -2
  59. package/dist/modules/access/creator-access.d.ts.map +1 -1
  60. package/dist/modules/access/creator-access.js +2 -4
  61. package/dist/modules/access/creator-access.js.map +1 -1
  62. package/dist/modules/access/directory-sync-bot.d.ts +1 -1
  63. package/dist/modules/access/directory-sync-bot.d.ts.map +1 -1
  64. package/dist/modules/access/directory-sync-bot.js +1 -1
  65. package/dist/modules/access/directory-sync-bot.js.map +1 -1
  66. package/dist/modules/access/groups-admin.routes.d.ts +2 -2
  67. package/dist/modules/access/groups-admin.routes.d.ts.map +1 -1
  68. package/dist/modules/access/groups-admin.routes.js +2 -2
  69. package/dist/modules/access/groups-admin.routes.js.map +1 -1
  70. package/dist/modules/access/groups-admin.service.d.ts +1 -1
  71. package/dist/modules/access/groups-admin.service.d.ts.map +1 -1
  72. package/dist/modules/access/groups-admin.service.js +2 -3
  73. package/dist/modules/access/groups-admin.service.js.map +1 -1
  74. package/dist/modules/access/groups-edit.js +2 -2
  75. package/dist/modules/access/groups-edit.js.map +1 -1
  76. package/dist/modules/access/index.d.ts +17 -0
  77. package/dist/modules/access/index.d.ts.map +1 -0
  78. package/dist/modules/access/index.js +6 -0
  79. package/dist/modules/access/index.js.map +1 -0
  80. package/dist/modules/access/reference-scan.js +1 -1
  81. package/dist/modules/access/reference-scan.js.map +1 -1
  82. package/dist/modules/access/roles-admin.service.d.ts +1 -1
  83. package/dist/modules/access/roles-admin.service.d.ts.map +1 -1
  84. package/dist/modules/access/roles-admin.service.js +2 -5
  85. package/dist/modules/access/roles-admin.service.js.map +1 -1
  86. package/dist/modules/access/roles-edit.js +1 -1
  87. package/dist/modules/access/roles-edit.js.map +1 -1
  88. package/dist/modules/access/synced-groups-committer.d.ts +2 -2
  89. package/dist/modules/access/synced-groups-committer.d.ts.map +1 -1
  90. package/dist/modules/access/synced-groups-committer.js +2 -2
  91. package/dist/modules/access/synced-groups-committer.js.map +1 -1
  92. package/dist/modules/access/synced-groups-writer.js +2 -2
  93. package/dist/modules/access/synced-groups-writer.js.map +1 -1
  94. package/dist/modules/access/user-access-removal.service.d.ts +1 -1
  95. package/dist/modules/access/user-access-removal.service.d.ts.map +1 -1
  96. package/dist/modules/access/user-access-removal.service.js +2 -5
  97. package/dist/modules/access/user-access-removal.service.js.map +1 -1
  98. package/dist/modules/access-model/index.d.ts +20 -5
  99. package/dist/modules/access-model/index.d.ts.map +1 -1
  100. package/dist/modules/access-model/index.js +18 -5
  101. package/dist/modules/access-model/index.js.map +1 -1
  102. package/dist/modules/access-model/roles-yaml-guard.d.ts +1 -1
  103. package/dist/modules/access-model/roles-yaml-guard.d.ts.map +1 -1
  104. package/dist/modules/admin/admin-access.routes.d.ts +1 -1
  105. package/dist/modules/admin/admin-access.routes.d.ts.map +1 -1
  106. package/dist/modules/admin/admin-access.routes.js +1 -1
  107. package/dist/modules/admin/admin-access.routes.js.map +1 -1
  108. package/dist/modules/admin/admin-access.service.d.ts +2 -2
  109. package/dist/modules/admin/admin-access.service.d.ts.map +1 -1
  110. package/dist/modules/admin/index.d.ts +8 -0
  111. package/dist/modules/admin/index.d.ts.map +1 -0
  112. package/dist/modules/admin/index.js +2 -0
  113. package/dist/modules/admin/index.js.map +1 -0
  114. package/dist/modules/agent-guide/agent-guide.js +1 -1
  115. package/dist/modules/agent-guide/agent-guide.js.map +1 -1
  116. package/dist/modules/agent-guide/agent-guide.tools.d.ts +3 -3
  117. package/dist/modules/agent-guide/agent-guide.tools.d.ts.map +1 -1
  118. package/dist/modules/agent-guide/agent-guide.tools.js +2 -4
  119. package/dist/modules/agent-guide/agent-guide.tools.js.map +1 -1
  120. package/dist/modules/agent-guide/index.d.ts +1 -1
  121. package/dist/modules/agent-guide/index.d.ts.map +1 -1
  122. package/dist/modules/agent-guide/index.js +1 -1
  123. package/dist/modules/agent-guide/index.js.map +1 -1
  124. package/dist/modules/agent-instructions/read-preamble.d.ts +1 -1
  125. package/dist/modules/agent-instructions/read-preamble.d.ts.map +1 -1
  126. package/dist/modules/audit/agent-audit.service.d.ts +2 -2
  127. package/dist/modules/audit/agent-audit.service.d.ts.map +1 -1
  128. package/dist/modules/audit/agent-audit.service.js +1 -1
  129. package/dist/modules/audit/agent-audit.service.js.map +1 -1
  130. package/dist/modules/audit/agent-connection.routes.d.ts +1 -1
  131. package/dist/modules/audit/agent-connection.routes.d.ts.map +1 -1
  132. package/dist/modules/audit/agent-connection.routes.js +1 -1
  133. package/dist/modules/audit/agent-connection.routes.js.map +1 -1
  134. package/dist/modules/audit/agent-rest-audit.middleware.d.ts +1 -1
  135. package/dist/modules/audit/agent-rest-audit.middleware.d.ts.map +1 -1
  136. package/dist/modules/audit/agent-rest-audit.middleware.js +1 -1
  137. package/dist/modules/audit/agent-rest-audit.middleware.js.map +1 -1
  138. package/dist/modules/audit/audit.routes.d.ts +3 -3
  139. package/dist/modules/audit/audit.routes.d.ts.map +1 -1
  140. package/dist/modules/audit/audit.routes.js +2 -2
  141. package/dist/modules/audit/audit.routes.js.map +1 -1
  142. package/dist/modules/auth/account-erasure.service.d.ts +3 -3
  143. package/dist/modules/auth/account-erasure.service.d.ts.map +1 -1
  144. package/dist/modules/auth/account-erasure.service.js +1 -5
  145. package/dist/modules/auth/account-erasure.service.js.map +1 -1
  146. package/dist/modules/auth/account-switch-lock.d.ts +1 -1
  147. package/dist/modules/auth/account-switch-lock.d.ts.map +1 -1
  148. package/dist/modules/auth/account-switch-lock.js +1 -1
  149. package/dist/modules/auth/account-switch-lock.js.map +1 -1
  150. package/dist/modules/auth/account.routes.d.ts +2 -2
  151. package/dist/modules/auth/account.routes.d.ts.map +1 -1
  152. package/dist/modules/auth/account.routes.js +1 -1
  153. package/dist/modules/auth/account.routes.js.map +1 -1
  154. package/dist/modules/auth/auth.service.d.ts +1 -1
  155. package/dist/modules/auth/auth.service.d.ts.map +1 -1
  156. package/dist/modules/auth/auth.service.js +3 -3
  157. package/dist/modules/auth/auth.service.js.map +1 -1
  158. package/dist/modules/auth/index.d.ts +2 -0
  159. package/dist/modules/auth/index.d.ts.map +1 -1
  160. package/dist/modules/auth/oidc-auth-provider.js +1 -1
  161. package/dist/modules/auth/oidc-auth-provider.js.map +1 -1
  162. package/dist/modules/code-mode/code-mode.tool.d.ts +1 -1
  163. package/dist/modules/code-mode/code-mode.tool.d.ts.map +1 -1
  164. package/dist/modules/connection-probe/connection-probe.service.d.ts +2 -2
  165. package/dist/modules/connection-probe/connection-probe.service.d.ts.map +1 -1
  166. package/dist/modules/connection-probe/connection-probe.service.js +1 -4
  167. package/dist/modules/connection-probe/connection-probe.service.js.map +1 -1
  168. package/dist/modules/database/core-schema.d.ts +107 -234
  169. package/dist/modules/database/core-schema.d.ts.map +1 -1
  170. package/dist/modules/database/core-schema.js +39 -35
  171. package/dist/modules/database/core-schema.js.map +1 -1
  172. package/dist/modules/database/index.d.ts +10 -0
  173. package/dist/modules/database/index.d.ts.map +1 -0
  174. package/dist/modules/database/index.js +4 -0
  175. package/dist/modules/database/index.js.map +1 -0
  176. package/dist/modules/database/migrate.d.ts.map +1 -1
  177. package/dist/modules/database/migrate.js +78 -3
  178. package/dist/modules/database/migrate.js.map +1 -1
  179. package/dist/modules/declared-variables/declared-variables.routes.d.ts +2 -2
  180. package/dist/modules/declared-variables/declared-variables.routes.d.ts.map +1 -1
  181. package/dist/modules/diff/diff.routes.d.ts +3 -3
  182. package/dist/modules/diff/diff.routes.d.ts.map +1 -1
  183. package/dist/modules/diff/diff.routes.js +3 -3
  184. package/dist/modules/diff/diff.routes.js.map +1 -1
  185. package/dist/modules/diff/diff.service.d.ts +2 -2
  186. package/dist/modules/diff/diff.service.d.ts.map +1 -1
  187. package/dist/modules/diff/index.d.ts +7 -0
  188. package/dist/modules/diff/index.d.ts.map +1 -0
  189. package/dist/modules/diff/index.js +2 -0
  190. package/dist/modules/diff/index.js.map +1 -0
  191. package/dist/modules/embed/account-link.service.d.ts +1 -1
  192. package/dist/modules/embed/account-link.service.d.ts.map +1 -1
  193. package/dist/modules/embed/account-link.service.js +1 -1
  194. package/dist/modules/embed/account-link.service.js.map +1 -1
  195. package/dist/modules/embed/embed.routes.d.ts +1 -1
  196. package/dist/modules/embed/embed.routes.d.ts.map +1 -1
  197. package/dist/modules/embed/embed.routes.js +2 -2
  198. package/dist/modules/embed/embed.routes.js.map +1 -1
  199. package/dist/modules/embed/embed.service.d.ts +1 -1
  200. package/dist/modules/embed/embed.service.d.ts.map +1 -1
  201. package/dist/modules/embed/embed.tools.d.ts +4 -4
  202. package/dist/modules/embed/embed.tools.d.ts.map +1 -1
  203. package/dist/modules/embed/embed.tools.js +3 -5
  204. package/dist/modules/embed/embed.tools.js.map +1 -1
  205. package/dist/modules/github-app/github-app.connection.d.ts +1 -1
  206. package/dist/modules/github-app/github-app.connection.d.ts.map +1 -1
  207. package/dist/modules/github-app/github-app.routes.d.ts +3 -3
  208. package/dist/modules/github-app/github-app.routes.d.ts.map +1 -1
  209. package/dist/modules/github-app/github-app.routes.js +1 -1
  210. package/dist/modules/github-app/github-app.routes.js.map +1 -1
  211. package/dist/modules/kb-fs/index.d.ts +10 -0
  212. package/dist/modules/kb-fs/index.d.ts.map +1 -1
  213. package/dist/modules/kb-fs/index.js +10 -0
  214. package/dist/modules/kb-fs/index.js.map +1 -1
  215. package/dist/modules/kb-fs/locking-filesystem.d.ts +1 -1
  216. package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
  217. package/dist/modules/kb-sync/kb-sync.routes.d.ts +1 -1
  218. package/dist/modules/kb-sync/kb-sync.routes.d.ts.map +1 -1
  219. package/dist/modules/kb-sync/kb-sync.routes.js +2 -2
  220. package/dist/modules/kb-sync/kb-sync.routes.js.map +1 -1
  221. package/dist/modules/kb-sync/kb-sync.service.js +1 -1
  222. package/dist/modules/kb-sync/kb-sync.service.js.map +1 -1
  223. package/dist/modules/kb-sync/sync-auth.js +1 -1
  224. package/dist/modules/kb-sync/sync-auth.js.map +1 -1
  225. package/dist/modules/kb-sync/sync-payload.js +1 -1
  226. package/dist/modules/kb-sync/sync-payload.js.map +1 -1
  227. package/dist/modules/marketplace/git-http.routes.d.ts +1 -1
  228. package/dist/modules/marketplace/git-http.routes.d.ts.map +1 -1
  229. package/dist/modules/marketplace/git-http.routes.js +1 -1
  230. package/dist/modules/marketplace/git-http.routes.js.map +1 -1
  231. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.d.ts +1 -1
  232. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.d.ts.map +1 -1
  233. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.js +1 -1
  234. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.js.map +1 -1
  235. package/dist/modules/marketplace/github-facade/github-facade-codes.store.d.ts +1 -1
  236. package/dist/modules/marketplace/github-facade/github-facade-codes.store.d.ts.map +1 -1
  237. package/dist/modules/marketplace/github-facade/github-facade-codes.store.js +1 -1
  238. package/dist/modules/marketplace/github-facade/github-facade-codes.store.js.map +1 -1
  239. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.d.ts +1 -1
  240. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.d.ts.map +1 -1
  241. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.js +1 -1
  242. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.js.map +1 -1
  243. package/dist/modules/marketplace/github-facade/github-facade.routes.d.ts +2 -2
  244. package/dist/modules/marketplace/github-facade/github-facade.routes.d.ts.map +1 -1
  245. package/dist/modules/marketplace/github-facade/github-facade.routes.js +2 -2
  246. package/dist/modules/marketplace/github-facade/github-facade.routes.js.map +1 -1
  247. package/dist/modules/marketplace/github-facade/github-facade.service.d.ts +2 -2
  248. package/dist/modules/marketplace/github-facade/github-facade.service.d.ts.map +1 -1
  249. package/dist/modules/marketplace/github-facade/github-facade.service.js +1 -1
  250. package/dist/modules/marketplace/github-facade/github-facade.service.js.map +1 -1
  251. package/dist/modules/marketplace/marketplace-repo.service.d.ts +1 -1
  252. package/dist/modules/marketplace/marketplace-repo.service.d.ts.map +1 -1
  253. package/dist/modules/marketplace/marketplace-repo.service.js +1 -1
  254. package/dist/modules/mcp/index.d.ts +8 -0
  255. package/dist/modules/mcp/index.d.ts.map +1 -0
  256. package/dist/modules/mcp/index.js +7 -0
  257. package/dist/modules/mcp/index.js.map +1 -0
  258. package/dist/modules/mcp/mcp-auth.middleware.d.ts +4 -5
  259. package/dist/modules/mcp/mcp-auth.middleware.d.ts.map +1 -1
  260. package/dist/modules/mcp/mcp-auth.middleware.js +4 -4
  261. package/dist/modules/mcp/mcp-auth.middleware.js.map +1 -1
  262. package/dist/modules/mcp/mcp.routes.d.ts +2 -4
  263. package/dist/modules/mcp/mcp.routes.d.ts.map +1 -1
  264. package/dist/modules/mcp/mcp.routes.js +2 -2
  265. package/dist/modules/mcp/mcp.routes.js.map +1 -1
  266. package/dist/modules/mcp/mcp.service.d.ts +14 -4
  267. package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
  268. package/dist/modules/mcp/mcp.service.js +17 -7
  269. package/dist/modules/mcp/mcp.service.js.map +1 -1
  270. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts +1 -1
  271. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts.map +1 -1
  272. package/dist/modules/mcp/oauth/bevel-oauth-provider.js +1 -1
  273. package/dist/modules/mcp/oauth/bevel-oauth-provider.js.map +1 -1
  274. package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts +1 -1
  275. package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts.map +1 -1
  276. package/dist/modules/mcp/oauth/oauth-consent.routes.js +1 -1
  277. package/dist/modules/mcp/oauth/oauth-consent.routes.js.map +1 -1
  278. package/dist/modules/onboarding/onboarding.routes.d.ts +1 -1
  279. package/dist/modules/onboarding/onboarding.routes.d.ts.map +1 -1
  280. package/dist/modules/onboarding/onboarding.routes.js +1 -1
  281. package/dist/modules/onboarding/onboarding.routes.js.map +1 -1
  282. package/dist/modules/onboarding/starter-pack.service.d.ts +4 -5
  283. package/dist/modules/onboarding/starter-pack.service.d.ts.map +1 -1
  284. package/dist/modules/onboarding/starter-pack.service.js +2 -2
  285. package/dist/modules/onboarding/starter-pack.service.js.map +1 -1
  286. package/dist/modules/plugins/compile/compile-marketplace.d.ts +1 -1
  287. package/dist/modules/plugins/compile/compile-marketplace.d.ts.map +1 -1
  288. package/dist/modules/plugins/compile/compile-marketplace.js +1 -1
  289. package/dist/modules/plugins/compile/compile-marketplace.js.map +1 -1
  290. package/dist/modules/plugins/compile/marketplace-compiler.service.d.ts +3 -3
  291. package/dist/modules/plugins/compile/marketplace-compiler.service.d.ts.map +1 -1
  292. package/dist/modules/plugins/discovery/bundle-dialect/registry.d.ts +1 -1
  293. package/dist/modules/plugins/discovery/bundle-dialect/registry.d.ts.map +1 -1
  294. package/dist/modules/plugins/discovery/bundle-dialect/registry.js +1 -1
  295. package/dist/modules/plugins/discovery/bundle-dialect/registry.js.map +1 -1
  296. package/dist/modules/plugins/index.d.ts +1 -0
  297. package/dist/modules/plugins/index.d.ts.map +1 -1
  298. package/dist/modules/plugins/index.js +2 -0
  299. package/dist/modules/plugins/index.js.map +1 -1
  300. package/dist/modules/plugins/join-proposals.d.ts +2 -2
  301. package/dist/modules/plugins/join-proposals.d.ts.map +1 -1
  302. package/dist/modules/plugins/join-proposals.js +1 -1
  303. package/dist/modules/plugins/join-proposals.js.map +1 -1
  304. package/dist/modules/plugins/join-request-jobs.service.d.ts +1 -1
  305. package/dist/modules/plugins/join-request-jobs.service.d.ts.map +1 -1
  306. package/dist/modules/plugins/join-request-jobs.service.js +2 -2
  307. package/dist/modules/plugins/join-request-jobs.service.js.map +1 -1
  308. package/dist/modules/plugins/join-request-records.store.d.ts +1 -1
  309. package/dist/modules/plugins/join-request-records.store.d.ts.map +1 -1
  310. package/dist/modules/plugins/join-request-records.store.js +1 -1
  311. package/dist/modules/plugins/join-request-records.store.js.map +1 -1
  312. package/dist/modules/plugins/join-requests.service.d.ts +3 -3
  313. package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
  314. package/dist/modules/plugins/join-requests.service.js +1 -1
  315. package/dist/modules/plugins/join-requests.service.js.map +1 -1
  316. package/dist/modules/plugins/plugin-links.d.ts +3 -3
  317. package/dist/modules/plugins/plugin-links.d.ts.map +1 -1
  318. package/dist/modules/plugins/plugin-links.js +1 -1
  319. package/dist/modules/plugins/plugin-links.js.map +1 -1
  320. package/dist/modules/plugins/plugin-links.service.d.ts +8 -5
  321. package/dist/modules/plugins/plugin-links.service.d.ts.map +1 -1
  322. package/dist/modules/plugins/plugin-links.service.js +8 -6
  323. package/dist/modules/plugins/plugin-links.service.js.map +1 -1
  324. package/dist/modules/plugins/plugin-provision.service.d.ts +2 -2
  325. package/dist/modules/plugins/plugin-provision.service.d.ts.map +1 -1
  326. package/dist/modules/plugins/plugin-provision.service.js +2 -3
  327. package/dist/modules/plugins/plugin-provision.service.js.map +1 -1
  328. package/dist/modules/plugins/plugin-rename.service.d.ts +2 -2
  329. package/dist/modules/plugins/plugin-rename.service.d.ts.map +1 -1
  330. package/dist/modules/plugins/plugin-rename.service.js +1 -1
  331. package/dist/modules/plugins/plugin-rename.service.js.map +1 -1
  332. package/dist/modules/plugins/plugins.contract.d.ts +1 -1
  333. package/dist/modules/plugins/plugins.contract.d.ts.map +1 -1
  334. package/dist/modules/plugins/plugins.routes.d.ts +2 -2
  335. package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
  336. package/dist/modules/plugins/plugins.routes.js +3 -3
  337. package/dist/modules/plugins/plugins.routes.js.map +1 -1
  338. package/dist/modules/plugins/plugins.service.d.ts +4 -4
  339. package/dist/modules/plugins/plugins.service.d.ts.map +1 -1
  340. package/dist/modules/plugins/plugins.service.js +1 -1
  341. package/dist/modules/plugins/plugins.service.js.map +1 -1
  342. package/dist/modules/plugins/plugins.tools.d.ts +1 -1
  343. package/dist/modules/plugins/plugins.tools.d.ts.map +1 -1
  344. package/dist/modules/plugins/plugins.tools.js +3 -3
  345. package/dist/modules/plugins/plugins.tools.js.map +1 -1
  346. package/dist/modules/plugins/teams.routes.d.ts +3 -3
  347. package/dist/modules/plugins/teams.routes.d.ts.map +1 -1
  348. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts +1 -1
  349. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts.map +1 -1
  350. package/dist/modules/secrets-vault/db-secrets-vault.service.js +1 -1
  351. package/dist/modules/secrets-vault/db-secrets-vault.service.js.map +1 -1
  352. package/dist/modules/secrets-vault/index.d.ts +1 -0
  353. package/dist/modules/secrets-vault/index.d.ts.map +1 -1
  354. package/dist/modules/secrets-vault/index.js +2 -0
  355. package/dist/modules/secrets-vault/index.js.map +1 -1
  356. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +4 -4
  357. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -1
  358. package/dist/modules/secrets-vault/secrets-vault.routes.js +1 -1
  359. package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
  360. package/dist/modules/settings/connection-check.js +1 -1
  361. package/dist/modules/settings/connection-check.js.map +1 -1
  362. package/dist/modules/settings/deployment-settings.service.d.ts +7 -1
  363. package/dist/modules/settings/deployment-settings.service.d.ts.map +1 -1
  364. package/dist/modules/settings/deployment-settings.service.js +45 -3
  365. package/dist/modules/settings/deployment-settings.service.js.map +1 -1
  366. package/dist/modules/settings/git-root-folders.js +1 -1
  367. package/dist/modules/settings/git-root-folders.js.map +1 -1
  368. package/dist/modules/settings/index.d.ts +13 -0
  369. package/dist/modules/settings/index.d.ts.map +1 -0
  370. package/dist/modules/settings/index.js +3 -0
  371. package/dist/modules/settings/index.js.map +1 -0
  372. package/dist/modules/settings/setup.routes.d.ts +3 -3
  373. package/dist/modules/settings/setup.routes.d.ts.map +1 -1
  374. package/dist/modules/settings/setup.routes.js +2 -2
  375. package/dist/modules/settings/setup.routes.js.map +1 -1
  376. package/dist/modules/skills/allowed-tools-check.d.ts +2 -2
  377. package/dist/modules/skills/allowed-tools-check.d.ts.map +1 -1
  378. package/dist/modules/skills/allowed-tools-check.js +1 -1
  379. package/dist/modules/skills/allowed-tools-check.js.map +1 -1
  380. package/dist/modules/skills/index.d.ts +1 -0
  381. package/dist/modules/skills/index.d.ts.map +1 -1
  382. package/dist/modules/skills/pending-skills.service.d.ts +3 -3
  383. package/dist/modules/skills/pending-skills.service.d.ts.map +1 -1
  384. package/dist/modules/skills/pending-skills.service.js.map +1 -1
  385. package/dist/modules/skills/skill-access-requests.routes.d.ts +5 -5
  386. package/dist/modules/skills/skill-access-requests.routes.d.ts.map +1 -1
  387. package/dist/modules/skills/skill-access-requests.routes.js +6 -13
  388. package/dist/modules/skills/skill-access-requests.routes.js.map +1 -1
  389. package/dist/modules/skills/skills.routes.d.ts +1 -1
  390. package/dist/modules/skills/skills.routes.d.ts.map +1 -1
  391. package/dist/modules/skills/skills.routes.js +1 -1
  392. package/dist/modules/skills/skills.routes.js.map +1 -1
  393. package/dist/modules/skills/skills.service.d.ts +2 -2
  394. package/dist/modules/skills/skills.service.d.ts.map +1 -1
  395. package/dist/modules/skills/skills.tools.d.ts +3 -3
  396. package/dist/modules/skills/skills.tools.d.ts.map +1 -1
  397. package/dist/modules/skills/skills.tools.js +3 -7
  398. package/dist/modules/skills/skills.tools.js.map +1 -1
  399. package/dist/modules/tool-auth/connection-key-rejection.js +1 -1
  400. package/dist/modules/tool-auth/connection-key-rejection.js.map +1 -1
  401. package/dist/modules/tool-auth/connection-keys-admin.routes.d.ts +2 -2
  402. package/dist/modules/tool-auth/connection-keys-admin.routes.d.ts.map +1 -1
  403. package/dist/modules/tool-auth/connection-keys-admin.routes.js +1 -1
  404. package/dist/modules/tool-auth/connection-keys-admin.routes.js.map +1 -1
  405. package/dist/modules/tool-auth/external-api-key.service.d.ts +1 -1
  406. package/dist/modules/tool-auth/external-api-key.service.d.ts.map +1 -1
  407. package/dist/modules/tool-auth/external-api-key.service.js +1 -1
  408. package/dist/modules/tool-auth/external-api-key.service.js.map +1 -1
  409. package/dist/modules/tool-auth/index.d.ts +15 -0
  410. package/dist/modules/tool-auth/index.d.ts.map +1 -0
  411. package/dist/modules/tool-auth/index.js +11 -0
  412. package/dist/modules/tool-auth/index.js.map +1 -0
  413. package/dist/modules/tool-auth/tool-auth.middleware.d.ts +2 -2
  414. package/dist/modules/tool-auth/tool-auth.middleware.d.ts.map +1 -1
  415. package/dist/modules/tool-auth/tool-auth.middleware.js +1 -1
  416. package/dist/modules/tool-auth/tool-auth.middleware.js.map +1 -1
  417. package/dist/modules/tool-helpers/default-branch-write.d.ts +1 -1
  418. package/dist/modules/tool-helpers/default-branch-write.d.ts.map +1 -1
  419. package/dist/modules/tool-helpers/index.d.ts +4 -1
  420. package/dist/modules/tool-helpers/index.d.ts.map +1 -1
  421. package/dist/modules/tool-helpers/index.js +3 -0
  422. package/dist/modules/tool-helpers/index.js.map +1 -1
  423. package/dist/modules/tool-helpers/route-argument-check.js +1 -1
  424. package/dist/modules/tool-helpers/route-argument-check.js.map +1 -1
  425. package/dist/modules/tool-helpers/route-tool-schemas.d.ts +1 -1
  426. package/dist/modules/tool-helpers/route-tool-schemas.d.ts.map +1 -1
  427. package/dist/modules/tool-helpers/tool-context.d.ts +5 -6
  428. package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
  429. package/dist/modules/tool-helpers/tool-context.js +2 -3
  430. package/dist/modules/tool-helpers/tool-context.js.map +1 -1
  431. package/dist/modules/tool-helpers/tool-def.d.ts +4 -2
  432. package/dist/modules/tool-helpers/tool-def.d.ts.map +1 -1
  433. package/dist/modules/tool-helpers/tool-def.js +3 -1
  434. package/dist/modules/tool-helpers/tool-def.js.map +1 -1
  435. package/dist/modules/tool-helpers/tool-handler.d.ts +2 -2
  436. package/dist/modules/tool-helpers/tool-handler.d.ts.map +1 -1
  437. package/dist/modules/tool-helpers/tool-handler.js +2 -2
  438. package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
  439. package/dist/modules/tool-helpers/tool.contract.d.ts +2 -2
  440. package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
  441. package/dist/modules/tool-helpers/validate-token.d.ts +1 -2
  442. package/dist/modules/tool-helpers/validate-token.d.ts.map +1 -1
  443. package/dist/modules/tool-helpers/validate-token.js +1 -1
  444. package/dist/modules/tool-helpers/validate-token.js.map +1 -1
  445. package/dist/modules/tool-manuals/index.d.ts +5 -0
  446. package/dist/modules/tool-manuals/index.d.ts.map +1 -1
  447. package/dist/modules/tool-manuals/index.js +4 -0
  448. package/dist/modules/tool-manuals/index.js.map +1 -1
  449. package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts +2 -2
  450. package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts.map +1 -1
  451. package/dist/modules/tool-manuals/pending-tools.service.d.ts +2 -2
  452. package/dist/modules/tool-manuals/pending-tools.service.d.ts.map +1 -1
  453. package/dist/modules/tool-manuals/tool-delete.service.d.ts +5 -6
  454. package/dist/modules/tool-manuals/tool-delete.service.d.ts.map +1 -1
  455. package/dist/modules/tool-manuals/tool-delete.service.js.map +1 -1
  456. package/dist/modules/tool-manuals/tool-manuals.routes.d.ts +5 -5
  457. package/dist/modules/tool-manuals/tool-manuals.routes.d.ts.map +1 -1
  458. package/dist/modules/tool-manuals/tool-manuals.routes.js +2 -2
  459. package/dist/modules/tool-manuals/tool-manuals.routes.js.map +1 -1
  460. package/dist/modules/tool-manuals/tool-manuals.service.d.ts +3 -3
  461. package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
  462. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts +3 -3
  463. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
  464. package/dist/modules/tool-manuals/tool-manuals.tools.js +1 -2
  465. package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
  466. package/dist/modules/tool-registry/description-length.js +2 -2
  467. package/dist/modules/tool-registry/description-length.js.map +1 -1
  468. package/dist/modules/tool-registry/index.d.ts +8 -0
  469. package/dist/modules/tool-registry/index.d.ts.map +1 -0
  470. package/dist/modules/tool-registry/index.js +8 -0
  471. package/dist/modules/tool-registry/index.js.map +1 -0
  472. package/dist/modules/tool-registry/manual.routes.d.ts +37 -2
  473. package/dist/modules/tool-registry/manual.routes.d.ts.map +1 -1
  474. package/dist/modules/tool-registry/manual.routes.js +14 -7
  475. package/dist/modules/tool-registry/manual.routes.js.map +1 -1
  476. package/dist/modules/tool-registry/read-only-hints.contract.d.ts +52 -0
  477. package/dist/modules/tool-registry/read-only-hints.contract.d.ts.map +1 -0
  478. package/dist/modules/tool-registry/read-only-hints.contract.js +2 -0
  479. package/dist/modules/tool-registry/read-only-hints.contract.js.map +1 -0
  480. package/dist/modules/tool-registry/read-only-hints.d.ts +89 -0
  481. package/dist/modules/tool-registry/read-only-hints.d.ts.map +1 -0
  482. package/dist/modules/tool-registry/read-only-hints.js +212 -0
  483. package/dist/modules/tool-registry/read-only-hints.js.map +1 -0
  484. package/dist/modules/tool-registry/tool.contract.d.ts +8 -0
  485. package/dist/modules/tool-registry/tool.contract.d.ts.map +1 -1
  486. package/dist/modules/tool-registry/tool.contract.js +10 -1
  487. package/dist/modules/tool-registry/tool.contract.js.map +1 -1
  488. package/dist/modules/update-check/update-check.routes.d.ts +2 -2
  489. package/dist/modules/update-check/update-check.routes.d.ts.map +1 -1
  490. package/dist/modules/update-check/update-check.routes.js +1 -1
  491. package/dist/modules/update-check/update-check.routes.js.map +1 -1
  492. package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts +9 -104
  493. package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts.map +1 -1
  494. package/dist/modules/workflow/agent-tools/change-request-read-shape.js +8 -118
  495. package/dist/modules/workflow/agent-tools/change-request-read-shape.js.map +1 -1
  496. package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts +16 -17
  497. package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts.map +1 -1
  498. package/dist/modules/workflow/agent-tools/change-request-read.tools.js +19 -86
  499. package/dist/modules/workflow/agent-tools/change-request-read.tools.js.map +1 -1
  500. package/dist/modules/workflow/agent-tools/change-request-summary.d.ts +5 -1
  501. package/dist/modules/workflow/agent-tools/change-request-summary.d.ts.map +1 -1
  502. package/dist/modules/workflow/agent-tools/change-request-summary.js +10 -1
  503. package/dist/modules/workflow/agent-tools/change-request-summary.js.map +1 -1
  504. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts +7 -5
  505. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -1
  506. package/dist/modules/workflow/agent-tools/workflow.tools.js +46 -68
  507. package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -1
  508. package/dist/modules/workflow/change-request-hooks.d.ts +1 -1
  509. package/dist/modules/workflow/event-bus.d.ts.map +1 -1
  510. package/dist/modules/workflow/event-bus.js +3 -1
  511. package/dist/modules/workflow/event-bus.js.map +1 -1
  512. package/dist/modules/workflow/events-delivery.d.ts +120 -0
  513. package/dist/modules/workflow/events-delivery.d.ts.map +1 -0
  514. package/dist/modules/workflow/events-delivery.js +202 -0
  515. package/dist/modules/workflow/events-delivery.js.map +1 -0
  516. package/dist/modules/workflow/events.routes.d.ts +16 -7
  517. package/dist/modules/workflow/events.routes.d.ts.map +1 -1
  518. package/dist/modules/workflow/events.routes.js +23 -4
  519. package/dist/modules/workflow/events.routes.js.map +1 -1
  520. package/dist/modules/workflow/file-lock.service.d.ts +1 -1
  521. package/dist/modules/workflow/file-lock.service.d.ts.map +1 -1
  522. package/dist/modules/workflow/file-lock.service.js +1 -1
  523. package/dist/modules/workflow/file-lock.service.js.map +1 -1
  524. package/dist/modules/workflow/git/git.service.d.ts +2 -2
  525. package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
  526. package/dist/modules/workflow/git/git.service.js +3 -6
  527. package/dist/modules/workflow/git/git.service.js.map +1 -1
  528. package/dist/modules/workflow/git/node-git-runner.js +1 -1
  529. package/dist/modules/workflow/git/node-git-runner.js.map +1 -1
  530. package/dist/modules/workflow/git/pull-request.service.d.ts +6 -7
  531. package/dist/modules/workflow/git/pull-request.service.d.ts.map +1 -1
  532. package/dist/modules/workflow/git/pull-request.service.js +40 -33
  533. package/dist/modules/workflow/git/pull-request.service.js.map +1 -1
  534. package/dist/modules/workflow/index.d.ts +14 -2
  535. package/dist/modules/workflow/index.d.ts.map +1 -1
  536. package/dist/modules/workflow/index.js +11 -2
  537. package/dist/modules/workflow/index.js.map +1 -1
  538. package/dist/modules/workflow/pending-commits.service.d.ts +1 -1
  539. package/dist/modules/workflow/pending-commits.service.d.ts.map +1 -1
  540. package/dist/modules/workflow/pending-commits.service.js +1 -1
  541. package/dist/modules/workflow/pending-commits.service.js.map +1 -1
  542. package/dist/modules/workflow/read-on-branch.d.ts +1 -1
  543. package/dist/modules/workflow/read-on-branch.d.ts.map +1 -1
  544. package/dist/modules/workflow/recovery-bot.d.ts +1 -1
  545. package/dist/modules/workflow/recovery-bot.d.ts.map +1 -1
  546. package/dist/modules/workflow/recovery-bot.js +1 -1
  547. package/dist/modules/workflow/recovery-bot.js.map +1 -1
  548. package/dist/modules/workflow/review-workflow/approval-lock.d.ts +1 -1
  549. package/dist/modules/workflow/review-workflow/approval-lock.d.ts.map +1 -1
  550. package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts +4 -20
  551. package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts.map +1 -1
  552. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts +4 -8
  553. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +1 -1
  554. package/dist/modules/workflow/review-workflow/review-workflow.service.js +3 -138
  555. package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +1 -1
  556. package/dist/modules/workflow/workflow.routes.d.ts +5 -5
  557. package/dist/modules/workflow/workflow.routes.d.ts.map +1 -1
  558. package/dist/modules/workflow/workflow.routes.js +42 -94
  559. package/dist/modules/workflow/workflow.routes.js.map +1 -1
  560. package/dist/modules/workflow/workflow.service.d.ts +40 -50
  561. package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
  562. package/dist/modules/workflow/workflow.service.js +218 -154
  563. package/dist/modules/workflow/workflow.service.js.map +1 -1
  564. package/dist/modules/workspace/agent-access.gate.d.ts +3 -3
  565. package/dist/modules/workspace/agent-access.gate.d.ts.map +1 -1
  566. package/dist/modules/workspace/agent-download.builder.d.ts +1 -1
  567. package/dist/modules/workspace/agent-download.builder.d.ts.map +1 -1
  568. package/dist/modules/workspace/agent-download.builder.js +1 -1
  569. package/dist/modules/workspace/agent-download.builder.js.map +1 -1
  570. package/dist/modules/workspace/agent-upload.routes.d.ts.map +1 -1
  571. package/dist/modules/workspace/agent-upload.routes.js +19 -0
  572. package/dist/modules/workspace/agent-upload.routes.js.map +1 -1
  573. package/dist/modules/workspace/agent-upload.store.d.ts +11 -0
  574. package/dist/modules/workspace/agent-upload.store.d.ts.map +1 -1
  575. package/dist/modules/workspace/agent-upload.store.js +18 -0
  576. package/dist/modules/workspace/agent-upload.store.js.map +1 -1
  577. package/dist/modules/workspace/bounded-matcher.d.ts +5 -11
  578. package/dist/modules/workspace/bounded-matcher.d.ts.map +1 -1
  579. package/dist/modules/workspace/bounded-matcher.js +26 -87
  580. package/dist/modules/workspace/bounded-matcher.js.map +1 -1
  581. package/dist/modules/workspace/file-readers/doc-extract.service.d.ts +54 -10
  582. package/dist/modules/workspace/file-readers/doc-extract.service.d.ts.map +1 -1
  583. package/dist/modules/workspace/file-readers/doc-extract.service.js +69 -17
  584. package/dist/modules/workspace/file-readers/doc-extract.service.js.map +1 -1
  585. package/dist/modules/workspace/file-readers/doc-extract.types.d.ts +9 -2
  586. package/dist/modules/workspace/file-readers/doc-extract.types.d.ts.map +1 -1
  587. package/dist/modules/workspace/file-readers/doc-extract.types.js.map +1 -1
  588. package/dist/modules/workspace/file-readers/document-extractor.contract.d.ts +41 -0
  589. package/dist/modules/workspace/file-readers/document-extractor.contract.d.ts.map +1 -0
  590. package/dist/modules/workspace/file-readers/document-extractor.contract.js +5 -0
  591. package/dist/modules/workspace/file-readers/document-extractor.contract.js.map +1 -0
  592. package/dist/modules/workspace/file-readers/document-extractors.d.ts +9 -0
  593. package/dist/modules/workspace/file-readers/document-extractors.d.ts.map +1 -0
  594. package/dist/modules/workspace/file-readers/document-extractors.js +26 -0
  595. package/dist/modules/workspace/file-readers/document-extractors.js.map +1 -0
  596. package/dist/modules/workspace/file-readers/document-formats.d.ts +12 -0
  597. package/dist/modules/workspace/file-readers/document-formats.d.ts.map +1 -0
  598. package/dist/modules/workspace/file-readers/document-formats.js +11 -0
  599. package/dist/modules/workspace/file-readers/document-formats.js.map +1 -0
  600. package/dist/modules/workspace/file-readers/document-reader.d.ts +21 -17
  601. package/dist/modules/workspace/file-readers/document-reader.d.ts.map +1 -1
  602. package/dist/modules/workspace/file-readers/document-reader.js +38 -34
  603. package/dist/modules/workspace/file-readers/document-reader.js.map +1 -1
  604. package/dist/modules/workspace/file-readers/extract-in-worker.d.ts +60 -0
  605. package/dist/modules/workspace/file-readers/extract-in-worker.d.ts.map +1 -0
  606. package/dist/modules/workspace/file-readers/extract-in-worker.js +140 -0
  607. package/dist/modules/workspace/file-readers/extract-in-worker.js.map +1 -0
  608. package/dist/modules/workspace/file-readers/extract-pdf.d.ts +2 -0
  609. package/dist/modules/workspace/file-readers/extract-pdf.d.ts.map +1 -1
  610. package/dist/modules/workspace/file-readers/extract-pdf.js +20 -3
  611. package/dist/modules/workspace/file-readers/extract-pdf.js.map +1 -1
  612. package/dist/modules/workspace/file-readers/extract.worker.d.ts +2 -0
  613. package/dist/modules/workspace/file-readers/extract.worker.d.ts.map +1 -0
  614. package/dist/modules/workspace/file-readers/extract.worker.js +5 -0
  615. package/dist/modules/workspace/file-readers/extract.worker.js.map +1 -0
  616. package/dist/modules/workspace/file-readers/extraction-cache.d.ts +21 -5
  617. package/dist/modules/workspace/file-readers/extraction-cache.d.ts.map +1 -1
  618. package/dist/modules/workspace/file-readers/extraction-cache.js +24 -10
  619. package/dist/modules/workspace/file-readers/extraction-cache.js.map +1 -1
  620. package/dist/modules/workspace/file-readers/extraction-worker.d.ts +42 -0
  621. package/dist/modules/workspace/file-readers/extraction-worker.d.ts.map +1 -0
  622. package/dist/modules/workspace/file-readers/extraction-worker.js +69 -0
  623. package/dist/modules/workspace/file-readers/extraction-worker.js.map +1 -0
  624. package/dist/modules/workspace/file-readers/file-reader.d.ts +13 -4
  625. package/dist/modules/workspace/file-readers/file-reader.d.ts.map +1 -1
  626. package/dist/modules/workspace/file-readers/file-reader.js.map +1 -1
  627. package/dist/modules/workspace/file-readers/file-reader.registry.d.ts +3 -2
  628. package/dist/modules/workspace/file-readers/file-reader.registry.d.ts.map +1 -1
  629. package/dist/modules/workspace/file-readers/file-reader.registry.js +6 -20
  630. package/dist/modules/workspace/file-readers/file-reader.registry.js.map +1 -1
  631. package/dist/modules/workspace/first-run.js +1 -1
  632. package/dist/modules/workspace/first-run.js.map +1 -1
  633. package/dist/modules/workspace/git-internals.middleware.d.ts +1 -1
  634. package/dist/modules/workspace/git-internals.middleware.d.ts.map +1 -1
  635. package/dist/modules/workspace/git-internals.middleware.js +1 -1
  636. package/dist/modules/workspace/git-internals.middleware.js.map +1 -1
  637. package/dist/modules/workspace/index.d.ts +16 -0
  638. package/dist/modules/workspace/index.d.ts.map +1 -1
  639. package/dist/modules/workspace/index.js +13 -0
  640. package/dist/modules/workspace/index.js.map +1 -1
  641. package/dist/modules/workspace/kb-repository.d.ts.map +1 -1
  642. package/dist/modules/workspace/kb-repository.js +1 -1
  643. package/dist/modules/workspace/kb-repository.js.map +1 -1
  644. package/dist/modules/workspace/not-found.d.ts +1 -1
  645. package/dist/modules/workspace/not-found.d.ts.map +1 -1
  646. package/dist/modules/workspace/not-found.js +1 -1
  647. package/dist/modules/workspace/not-found.js.map +1 -1
  648. package/dist/modules/workspace/pattern-matcher.contract.d.ts +1 -1
  649. package/dist/modules/workspace/pattern-matcher.contract.d.ts.map +1 -1
  650. package/dist/modules/workspace/pattern-matcher.contract.js +1 -1
  651. package/dist/modules/workspace/pattern-matcher.contract.js.map +1 -1
  652. package/dist/modules/workspace/routine-write-policy.js +1 -1
  653. package/dist/modules/workspace/routine-write-policy.js.map +1 -1
  654. package/dist/modules/workspace/startup/kb-git.js +1 -1
  655. package/dist/modules/workspace/startup/kb-git.js.map +1 -1
  656. package/dist/modules/workspace/startup/kb-startup-runner.d.ts.map +1 -1
  657. package/dist/modules/workspace/startup/kb-startup-runner.js +1 -2
  658. package/dist/modules/workspace/startup/kb-startup-runner.js.map +1 -1
  659. package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js +2 -2
  660. package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js.map +1 -1
  661. package/dist/modules/workspace/startup/steps/personal-spaces.step.js +2 -2
  662. package/dist/modules/workspace/startup/steps/personal-spaces.step.js.map +1 -1
  663. package/dist/modules/workspace/startup/steps/plugin-layout.js +1 -1
  664. package/dist/modules/workspace/startup/steps/plugin-layout.js.map +1 -1
  665. package/dist/modules/workspace/startup/steps/roles-yaml.step.js +1 -1
  666. package/dist/modules/workspace/startup/steps/roles-yaml.step.js.map +1 -1
  667. package/dist/modules/workspace/startup/steps/seed-tree.js +2 -2
  668. package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
  669. package/dist/modules/workspace/startup/steps/template-files.step.d.ts +1 -1
  670. package/dist/modules/workspace/startup/steps/template-files.step.d.ts.map +1 -1
  671. package/dist/modules/workspace/startup/steps/template-files.step.js +2 -2
  672. package/dist/modules/workspace/startup/steps/template-files.step.js.map +1 -1
  673. package/dist/modules/workspace/startup/steps/template-source.js +2 -2
  674. package/dist/modules/workspace/startup/steps/template-source.js.map +1 -1
  675. package/dist/modules/workspace/worker-pool.d.ts +100 -0
  676. package/dist/modules/workspace/worker-pool.d.ts.map +1 -0
  677. package/dist/modules/workspace/worker-pool.js +156 -0
  678. package/dist/modules/workspace/worker-pool.js.map +1 -0
  679. package/dist/modules/workspace/workspace.routes.d.ts +7 -8
  680. package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
  681. package/dist/modules/workspace/workspace.routes.js +4 -6
  682. package/dist/modules/workspace/workspace.routes.js.map +1 -1
  683. package/dist/modules/workspace/workspace.service.d.ts +1 -1
  684. package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
  685. package/dist/modules/workspace/workspace.service.js +3 -6
  686. package/dist/modules/workspace/workspace.service.js.map +1 -1
  687. package/dist/modules/workspace/workspace.tools.d.ts +7 -7
  688. package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
  689. package/dist/modules/workspace/workspace.tools.js +45 -27
  690. package/dist/modules/workspace/workspace.tools.js.map +1 -1
  691. package/dist/modules/workspace/write-denial.d.ts +4 -4
  692. package/dist/modules/workspace/write-denial.d.ts.map +1 -1
  693. package/dist/modules/workspace/write-denial.js +2 -3
  694. package/dist/modules/workspace/write-denial.js.map +1 -1
  695. package/dist/modules/write-access/index.d.ts +8 -0
  696. package/dist/modules/write-access/index.d.ts.map +1 -0
  697. package/dist/modules/write-access/index.js +7 -0
  698. package/dist/modules/write-access/index.js.map +1 -0
  699. package/migrations/0020_change_request_body_is_the_description.sql +20 -0
  700. package/migrations/0021_data_migrations_ledger.sql +11 -0
  701. package/migrations/meta/0020_snapshot.json +2321 -0
  702. package/migrations/meta/0021_snapshot.json +2353 -0
  703. package/migrations/meta/_journal.json +14 -0
  704. package/package.json +3 -3
  705. package/src/core/__tests__/damaged-document.tools.test.ts +374 -0
  706. package/src/core/__tests__/public-config.test.ts +5 -0
  707. package/src/core/create-core-server.ts +32 -3
  708. package/src/core/create-core-services.ts +32 -5
  709. package/src/core/lifecycle.ts +10 -0
  710. package/src/core/public-config.ts +10 -0
  711. package/src/modules/access/__tests__/access-requests.routes.test.ts +29 -15
  712. package/src/modules/access/access-control.service.ts +5 -6
  713. package/src/modules/access/access-declarations.ts +1 -1
  714. package/src/modules/access/access-mutation.service.ts +10 -4
  715. package/src/modules/access/access-requests.contract.ts +1 -1
  716. package/src/modules/access/access-requests.routes.ts +10 -15
  717. package/src/modules/access/access-requests.service.ts +29 -71
  718. package/src/modules/access/access-view.ts +1 -1
  719. package/src/modules/access/access.routes.ts +9 -11
  720. package/src/modules/access/admin-locked-commit.ts +3 -2
  721. package/src/modules/access/capability-registry.ts +1 -1
  722. package/src/modules/access/change-read-gate.ts +3 -5
  723. package/src/modules/access/creator-access.ts +3 -5
  724. package/src/modules/access/directory-sync-bot.ts +2 -2
  725. package/src/modules/access/groups-admin.routes.ts +3 -3
  726. package/src/modules/access/groups-admin.service.ts +3 -4
  727. package/src/modules/access/groups-edit.ts +2 -2
  728. package/src/modules/access/index.ts +17 -0
  729. package/src/modules/access/reference-scan.ts +1 -1
  730. package/src/modules/access/roles-admin.service.ts +3 -6
  731. package/src/modules/access/roles-edit.ts +1 -1
  732. package/src/modules/access/synced-groups-committer.ts +4 -4
  733. package/src/modules/access/synced-groups-writer.ts +2 -2
  734. package/src/modules/access/user-access-removal.service.ts +3 -6
  735. package/src/modules/access-model/index.ts +21 -5
  736. package/src/modules/access-model/roles-yaml-guard.ts +1 -1
  737. package/src/modules/admin/admin-access.routes.ts +1 -1
  738. package/src/modules/admin/admin-access.service.ts +2 -2
  739. package/src/modules/admin/index.ts +7 -0
  740. package/src/modules/agent-guide/__tests__/agent-guide.test.ts +5 -0
  741. package/src/modules/agent-guide/agent-guide.tools.ts +4 -6
  742. package/src/modules/agent-guide/agent-guide.ts +1 -1
  743. package/src/modules/agent-guide/index.ts +1 -1
  744. package/src/modules/agent-instructions/read-preamble.ts +1 -1
  745. package/src/modules/audit/agent-audit.service.ts +3 -3
  746. package/src/modules/audit/agent-connection.routes.ts +1 -1
  747. package/src/modules/audit/agent-rest-audit.middleware.ts +1 -1
  748. package/src/modules/audit/audit.routes.ts +4 -4
  749. package/src/modules/auth/account-erasure.service.ts +4 -9
  750. package/src/modules/auth/account-switch-lock.ts +2 -2
  751. package/src/modules/auth/account.routes.ts +3 -3
  752. package/src/modules/auth/auth.service.ts +4 -4
  753. package/src/modules/auth/index.ts +3 -0
  754. package/src/modules/auth/oidc-auth-provider.ts +1 -1
  755. package/src/modules/code-mode/code-mode.tool.ts +1 -1
  756. package/src/modules/connection-probe/connection-probe.service.ts +3 -6
  757. package/src/modules/database/__tests__/legacy-change-request-body.test.ts +118 -0
  758. package/src/modules/database/__tests__/legacy-request-bodies.pg.test.ts +258 -0
  759. package/src/modules/database/__tests__/pii-backfill.pg.test.ts +15 -18
  760. package/src/modules/database/core-schema.ts +43 -36
  761. package/src/modules/database/index.ts +9 -0
  762. package/src/modules/database/migrate.ts +79 -3
  763. package/src/modules/declared-variables/declared-variables.routes.ts +2 -2
  764. package/src/modules/diff/diff.routes.ts +5 -5
  765. package/src/modules/diff/diff.service.ts +2 -2
  766. package/src/modules/diff/index.ts +6 -0
  767. package/src/modules/embed/account-link.service.ts +2 -2
  768. package/src/modules/embed/embed.routes.ts +2 -2
  769. package/src/modules/embed/embed.service.ts +1 -1
  770. package/src/modules/embed/embed.tools.ts +6 -9
  771. package/src/modules/github-app/github-app.connection.ts +1 -1
  772. package/src/modules/github-app/github-app.routes.ts +3 -3
  773. package/src/modules/kb-fs/index.ts +11 -0
  774. package/src/modules/kb-fs/locking-filesystem.ts +1 -1
  775. package/src/modules/kb-sync/kb-sync.routes.ts +3 -3
  776. package/src/modules/kb-sync/kb-sync.service.ts +1 -1
  777. package/src/modules/kb-sync/sync-auth.ts +1 -1
  778. package/src/modules/kb-sync/sync-payload.ts +1 -1
  779. package/src/modules/marketplace/git-http.routes.ts +1 -1
  780. package/src/modules/marketplace/github-facade/github-facade-admin.routes.ts +1 -1
  781. package/src/modules/marketplace/github-facade/github-facade-codes.store.ts +2 -2
  782. package/src/modules/marketplace/github-facade/github-facade-credentials.service.ts +2 -2
  783. package/src/modules/marketplace/github-facade/github-facade.routes.ts +2 -2
  784. package/src/modules/marketplace/github-facade/github-facade.service.ts +2 -2
  785. package/src/modules/marketplace/marketplace-repo.service.ts +2 -2
  786. package/src/modules/mcp/__tests__/read-only-hint.e2e.test.ts +213 -0
  787. package/src/modules/mcp/index.ts +7 -0
  788. package/src/modules/mcp/mcp-auth.middleware.ts +6 -7
  789. package/src/modules/mcp/mcp.routes.ts +3 -5
  790. package/src/modules/mcp/mcp.service.ts +30 -13
  791. package/src/modules/mcp/oauth/bevel-oauth-provider.ts +2 -2
  792. package/src/modules/mcp/oauth/oauth-consent.routes.ts +1 -1
  793. package/src/modules/onboarding/onboarding.routes.ts +1 -1
  794. package/src/modules/onboarding/starter-pack.service.ts +5 -6
  795. package/src/modules/plugins/__tests__/bundle-dialect.e2e.test.ts +2 -1
  796. package/src/modules/plugins/__tests__/plugin-links.service.test.ts +2 -1
  797. package/src/modules/plugins/compile/compile-marketplace.ts +2 -2
  798. package/src/modules/plugins/compile/marketplace-compiler.service.ts +3 -3
  799. package/src/modules/plugins/discovery/bundle-dialect/registry.ts +1 -1
  800. package/src/modules/plugins/index.ts +2 -0
  801. package/src/modules/plugins/join-proposals.ts +2 -2
  802. package/src/modules/plugins/join-request-jobs.service.ts +3 -3
  803. package/src/modules/plugins/join-request-records.store.ts +2 -2
  804. package/src/modules/plugins/join-requests.service.ts +4 -4
  805. package/src/modules/plugins/plugin-links.service.ts +10 -11
  806. package/src/modules/plugins/plugin-links.ts +4 -4
  807. package/src/modules/plugins/plugin-provision.service.ts +4 -5
  808. package/src/modules/plugins/plugin-rename.service.ts +3 -3
  809. package/src/modules/plugins/plugins.contract.ts +1 -1
  810. package/src/modules/plugins/plugins.routes.ts +4 -4
  811. package/src/modules/plugins/plugins.service.ts +5 -5
  812. package/src/modules/plugins/plugins.tools.ts +4 -4
  813. package/src/modules/plugins/teams.routes.ts +3 -3
  814. package/src/modules/secrets-vault/db-secrets-vault.service.ts +2 -2
  815. package/src/modules/secrets-vault/index.ts +2 -0
  816. package/src/modules/secrets-vault/secrets-vault.routes.ts +4 -4
  817. package/src/modules/settings/__tests__/deployment-settings.service.test.ts +88 -1
  818. package/src/modules/settings/connection-check.ts +1 -1
  819. package/src/modules/settings/deployment-settings.service.ts +44 -4
  820. package/src/modules/settings/git-root-folders.ts +1 -1
  821. package/src/modules/settings/index.ts +12 -0
  822. package/src/modules/settings/setup.routes.ts +5 -4
  823. package/src/modules/skills/__tests__/allowed-tools-warn.tools.test.ts +2 -2
  824. package/src/modules/skills/__tests__/skill-access-requests.routes.test.ts +6 -3
  825. package/src/modules/skills/allowed-tools-check.ts +2 -6
  826. package/src/modules/skills/index.ts +2 -0
  827. package/src/modules/skills/pending-skills.service.ts +3 -4
  828. package/src/modules/skills/skill-access-requests.routes.ts +10 -17
  829. package/src/modules/skills/skills.routes.ts +1 -1
  830. package/src/modules/skills/skills.service.ts +2 -2
  831. package/src/modules/skills/skills.tools.ts +5 -9
  832. package/src/modules/tool-auth/connection-key-rejection.ts +1 -1
  833. package/src/modules/tool-auth/connection-keys-admin.routes.ts +2 -2
  834. package/src/modules/tool-auth/external-api-key.service.ts +2 -2
  835. package/src/modules/tool-auth/index.ts +14 -0
  836. package/src/modules/tool-auth/tool-auth.middleware.ts +3 -3
  837. package/src/modules/tool-helpers/__tests__/agent-roles-write.test.ts +2 -2
  838. package/src/modules/tool-helpers/__tests__/can-write.tools.test.ts +2 -2
  839. package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +2 -2
  840. package/src/modules/tool-helpers/default-branch-write.ts +1 -1
  841. package/src/modules/tool-helpers/index.ts +5 -1
  842. package/src/modules/tool-helpers/route-argument-check.ts +1 -1
  843. package/src/modules/tool-helpers/route-tool-schemas.ts +1 -1
  844. package/src/modules/tool-helpers/tool-context.ts +8 -10
  845. package/src/modules/tool-helpers/tool-def.ts +7 -3
  846. package/src/modules/tool-helpers/tool-handler.ts +2 -2
  847. package/src/modules/tool-helpers/tool.contract.ts +2 -2
  848. package/src/modules/tool-helpers/validate-token.ts +2 -3
  849. package/src/modules/tool-manuals/index.ts +6 -0
  850. package/src/modules/tool-manuals/mcp-server-edit.service.ts +2 -2
  851. package/src/modules/tool-manuals/pending-tools.service.ts +2 -2
  852. package/src/modules/tool-manuals/tool-delete.service.ts +5 -6
  853. package/src/modules/tool-manuals/tool-manuals.routes.ts +5 -5
  854. package/src/modules/tool-manuals/tool-manuals.service.ts +3 -3
  855. package/src/modules/tool-manuals/tool-manuals.tools.ts +4 -6
  856. package/src/modules/tool-registry/__tests__/read-only-hints.test.ts +439 -0
  857. package/src/modules/tool-registry/__tests__/tool-registry.test.ts +9 -2
  858. package/src/modules/tool-registry/description-length.ts +2 -2
  859. package/src/modules/tool-registry/index.ts +22 -0
  860. package/src/modules/tool-registry/manual.routes.ts +14 -8
  861. package/src/modules/tool-registry/read-only-hints.contract.ts +54 -0
  862. package/src/modules/tool-registry/read-only-hints.ts +225 -0
  863. package/src/modules/tool-registry/tool.contract.ts +11 -0
  864. package/src/modules/update-check/update-check.routes.ts +2 -2
  865. package/src/modules/workflow/__tests__/event-bus.test.ts +14 -2
  866. package/src/modules/workflow/__tests__/events-delivery.test.ts +778 -0
  867. package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +84 -21
  868. package/src/modules/workflow/__tests__/workflow.service.update-change-request.pg.test.ts +120 -0
  869. package/src/modules/workflow/__tests__/workflow.service.update-change-request.test.ts +346 -0
  870. package/src/modules/workflow/agent-tools/__tests__/change-request-read-shape.test.ts +32 -209
  871. package/src/modules/workflow/agent-tools/__tests__/change-request-read.tools.test.ts +16 -245
  872. package/src/modules/workflow/agent-tools/__tests__/update-change-request.parity.test.ts +306 -0
  873. package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +33 -57
  874. package/src/modules/workflow/agent-tools/change-request-read-shape.ts +18 -153
  875. package/src/modules/workflow/agent-tools/change-request-read.tools.ts +24 -96
  876. package/src/modules/workflow/agent-tools/change-request-summary.ts +16 -2
  877. package/src/modules/workflow/agent-tools/workflow.tools.ts +49 -75
  878. package/src/modules/workflow/change-request-hooks.ts +1 -1
  879. package/src/modules/workflow/event-bus.ts +3 -1
  880. package/src/modules/workflow/events-delivery.ts +278 -0
  881. package/src/modules/workflow/events.routes.ts +30 -9
  882. package/src/modules/workflow/file-lock.service.ts +2 -2
  883. package/src/modules/workflow/git/__tests__/pull-request.service.getPrDetail.test.ts +24 -9
  884. package/src/modules/workflow/git/git.service.ts +5 -8
  885. package/src/modules/workflow/git/node-git-runner.ts +1 -1
  886. package/src/modules/workflow/git/pull-request.service.ts +34 -29
  887. package/src/modules/workflow/index.ts +15 -2
  888. package/src/modules/workflow/pending-commits.service.ts +2 -2
  889. package/src/modules/workflow/read-on-branch.ts +1 -1
  890. package/src/modules/workflow/recovery-bot.ts +2 -2
  891. package/src/modules/workflow/review-workflow/approval-lock.ts +1 -1
  892. package/src/modules/workflow/review-workflow/review-workflow.interface.ts +3 -35
  893. package/src/modules/workflow/review-workflow/review-workflow.service.ts +6 -165
  894. package/src/modules/workflow/workflow.routes.ts +46 -100
  895. package/src/modules/workflow/workflow.service.ts +272 -191
  896. package/src/modules/workspace/__tests__/agent-downloads.test.ts +2 -1
  897. package/src/modules/workspace/__tests__/agent-uploads.test.ts +87 -1
  898. package/src/modules/workspace/__tests__/escape-sequences.routes.test.ts +2 -1
  899. package/src/modules/workspace/__tests__/file-stat-access.test.ts +2 -1
  900. package/src/modules/workspace/__tests__/git-internals.security.test.ts +2 -1
  901. package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +2 -1
  902. package/src/modules/workspace/__tests__/worker-pool.test.ts +118 -0
  903. package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +3 -2
  904. package/src/modules/workspace/__tests__/workspace.service.ensure-remotes-fetched.test.ts +30 -0
  905. package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +2 -1
  906. package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +2 -1
  907. package/src/modules/workspace/__tests__/workspace.tools.test.ts +30 -4
  908. package/src/modules/workspace/agent-access.gate.ts +3 -3
  909. package/src/modules/workspace/agent-download.builder.ts +1 -1
  910. package/src/modules/workspace/agent-upload.routes.ts +19 -0
  911. package/src/modules/workspace/agent-upload.store.ts +18 -0
  912. package/src/modules/workspace/bounded-matcher.ts +32 -89
  913. package/src/modules/workspace/file-readers/README.md +9 -0
  914. package/src/modules/workspace/file-readers/__tests__/doc-extract.service.test.ts +165 -0
  915. package/src/modules/workspace/file-readers/__tests__/doc-extract.test.ts +21 -16
  916. package/src/modules/workspace/file-readers/__tests__/extract-in-worker.test.ts +229 -0
  917. package/src/modules/workspace/file-readers/__tests__/file-reader.registry.test.ts +2 -1
  918. package/src/modules/workspace/file-readers/__tests__/fixtures/damaged-pdf.ts +34 -0
  919. package/src/modules/workspace/file-readers/__tests__/fixtures/misbehaving-extract.worker.ts +57 -0
  920. package/src/modules/workspace/file-readers/__tests__/fixtures/pdf-in-trouble.worker.ts +20 -0
  921. package/src/modules/workspace/file-readers/__tests__/fixtures/unloadable-extract.worker.ts +2 -0
  922. package/src/modules/workspace/file-readers/doc-extract.service.ts +95 -20
  923. package/src/modules/workspace/file-readers/doc-extract.types.ts +13 -3
  924. package/src/modules/workspace/file-readers/document-extractor.contract.ts +42 -0
  925. package/src/modules/workspace/file-readers/document-extractors.ts +28 -0
  926. package/src/modules/workspace/file-readers/document-formats.ts +13 -0
  927. package/src/modules/workspace/file-readers/document-reader.ts +40 -36
  928. package/src/modules/workspace/file-readers/extract-in-worker.ts +183 -0
  929. package/src/modules/workspace/file-readers/extract-pdf.ts +23 -4
  930. package/src/modules/workspace/file-readers/extract.worker.ts +5 -0
  931. package/src/modules/workspace/file-readers/extraction-cache.ts +33 -12
  932. package/src/modules/workspace/file-readers/extraction-worker.ts +86 -0
  933. package/src/modules/workspace/file-readers/file-reader.registry.ts +6 -20
  934. package/src/modules/workspace/file-readers/file-reader.ts +14 -4
  935. package/src/modules/workspace/first-run.ts +1 -1
  936. package/src/modules/workspace/git-internals.middleware.ts +1 -1
  937. package/src/modules/workspace/index.ts +17 -0
  938. package/src/modules/workspace/kb-repository.ts +3 -2
  939. package/src/modules/workspace/not-found.ts +1 -1
  940. package/src/modules/workspace/pattern-matcher.contract.ts +1 -1
  941. package/src/modules/workspace/routine-write-policy.ts +1 -1
  942. package/src/modules/workspace/startup/kb-git.ts +1 -1
  943. package/src/modules/workspace/startup/kb-startup-runner.ts +1 -2
  944. package/src/modules/workspace/startup/steps/groups-to-plugins.step.ts +3 -3
  945. package/src/modules/workspace/startup/steps/personal-spaces.step.ts +2 -2
  946. package/src/modules/workspace/startup/steps/plugin-layout.ts +1 -1
  947. package/src/modules/workspace/startup/steps/roles-yaml.step.ts +1 -1
  948. package/src/modules/workspace/startup/steps/seed-tree.ts +2 -2
  949. package/src/modules/workspace/startup/steps/template-files.step.ts +2 -2
  950. package/src/modules/workspace/startup/steps/template-source.ts +2 -2
  951. package/src/modules/workspace/worker-pool.ts +193 -0
  952. package/src/modules/workspace/workspace.routes.ts +9 -12
  953. package/src/modules/workspace/workspace.service.ts +4 -7
  954. package/src/modules/workspace/workspace.tools.ts +53 -34
  955. package/src/modules/workspace/write-denial.ts +4 -5
  956. package/src/modules/write-access/index.ts +7 -0
  957. package/src/shared/__tests__/module-boundaries.lint.test.ts +301 -0
  958. package/src/modules/workflow/__tests__/format-affected-owners.test.ts +0 -85
@@ -1,12 +1,11 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import type {
3
- ChangeRequest,
4
- ChangeRequestDetail,
5
- FileApproval,
2
+ import {
3
+ type ChangeRequest,
4
+ type ChangeRequestDetail,
5
+ type FileApproval,
6
6
  } from '@bevel-software/platform-shared';
7
7
  import { hashEmail } from '../../../../shared/email-identity.js';
8
8
  import {
9
- authorsDescription,
10
9
  fileIsReadable,
11
10
  isAuthor,
12
11
  loginFor,
@@ -16,11 +15,10 @@ import {
16
15
  pagingOf,
17
16
  pathsOf,
18
17
  statesFor,
18
+ toCrDetail,
19
19
  toCrViewer,
20
20
  toCrSummary,
21
21
  APPLY_FAILURE_REASON_WITHHELD,
22
- visibleComments,
23
- toCrComment,
24
22
  toCrFile,
25
23
  toCrReviews,
26
24
  visibleBlockers,
@@ -373,56 +371,6 @@ describe('reviews, gathered out of the per-file approvals', () => {
373
371
  });
374
372
  });
375
373
 
376
- describe('comments', () => {
377
- // Scenario: WHEN a reviewer left an inline comment and a reply followed THEN
378
- // `list_change_request_comments` returns both, the reply with `parentId`.
379
- it('maps an inline comment and a reply, the reply carrying `parentId`', () => {
380
- const inline = toCrComment({
381
- id: 'c-1',
382
- author: { email: 'mia@bevel.software', name: 'Mia' },
383
- body: 'This line is out of date.',
384
- path: 'Knowledge/A.md',
385
- line: 14,
386
- headSha: 'head-1',
387
- createdAt: '2026-09-29T08:00:00.000Z',
388
- });
389
- expect(inline).toEqual({
390
- id: 'c-1',
391
- author: { login: loginFor('mia@bevel.software'), name: 'Mia', email: 'mia@bevel.software' },
392
- body: 'This line is out of date.',
393
- path: 'Knowledge/A.md',
394
- line: 14,
395
- headSha: 'head-1',
396
- createdAt: '2026-09-29T08:00:00.000Z',
397
- });
398
- const reply = toCrComment({
399
- id: 'c-2',
400
- author: { email: AUTHOR, name: 'Juan' },
401
- body: 'Fixed.',
402
- path: 'Knowledge/A.md',
403
- line: 14,
404
- headSha: 'head-1',
405
- parentId: 'c-1',
406
- createdAt: '2026-09-29T09:00:00.000Z',
407
- updatedAt: '2026-09-29T09:05:00.000Z',
408
- });
409
- expect(reply).toMatchObject({ parentId: 'c-1', updatedAt: '2026-09-29T09:05:00.000Z' });
410
- });
411
-
412
- it('leaves `path`, `line` and `parentId` off a general comment', () => {
413
- const general = toCrComment({
414
- id: 'c-3',
415
- author: { email: AUTHOR, name: 'Juan' },
416
- body: 'Ready for review.',
417
- headSha: 'head-1',
418
- createdAt: '2026-09-29T07:00:00.000Z',
419
- });
420
- expect(general.path).toBeUndefined();
421
- expect(general.line).toBeUndefined();
422
- expect(general.parentId).toBeUndefined();
423
- });
424
- });
425
-
426
374
  describe('the viewer block — what this caller may do', () => {
427
375
  const detail = (over: Partial<ChangeRequestDetail> = {}) =>
428
376
  ({
@@ -520,71 +468,34 @@ describe('merge blockers never name a file the caller may not read', () => {
520
468
  });
521
469
 
522
470
  /**
523
- * The leak Local Testing caught on the first attempt: `openChangeRequest`
524
- * appends a generated `## Affected owners` block to the body, naming every
525
- * changed path and its approvers, and the detail returned the body verbatim.
471
+ * The body is the description and nothing else — Hexis writes none of its own
472
+ * facts into it — so a caller is handed it verbatim, whatever they may read:
473
+ * a path in it is one the author chose to write about.
526
474
  */
527
- describe('the body a caller is handed is the author\'s, not the machine\'s', () => {
528
- const GENERATED = [
529
- '## Affected owners',
530
- '',
531
- '- `KnowledgeBase/Engineering/Knowledge/Avi-Checkin.md` — Admin',
532
- '- `KnowledgeBase/GTM/Notes.md` — GTM Team',
533
- ].join('\n');
534
-
535
- it('drops the generated owners block, keeping what the author typed', () => {
536
- expect(authorsDescription(`Please take a look.\n\n${GENERATED}`)).toBe('Please take a look.');
537
- expect(authorsDescription(GENERATED)).toBe('');
538
- });
539
-
540
- it('names no path of the generated block, readable or not', () => {
541
- const out = authorsDescription(`Why this is needed.\n\n${GENERATED}`);
542
- expect(out).not.toContain('Avi-Checkin');
543
- expect(out).not.toContain('KnowledgeBase');
544
- expect(out).not.toContain('Affected owners');
545
- });
546
-
547
- it("strips the hidden identity markers older bodies carry, and only those — an author's own HTML comment is prose", () => {
548
- expect(authorsDescription('<!-- bevel:author:abc123 -->\nMy reason.')).toBe('My reason.');
549
- expect(authorsDescription('<!--hexis:access-request-level:write-->\nMy reason.')).toBe('My reason.');
550
- expect(authorsDescription('My reason.\n<!-- TODO: ask Mia about the title -->')).toBe(
551
- 'My reason.\n<!-- TODO: ask Mia about the title -->',
552
- );
553
- });
554
-
555
- it('leaves a body that is only the author\'s prose alone', () => {
556
- expect(authorsDescription(' A multi-line\nreason. ')).toBe('A multi-line\nreason.');
557
- expect(authorsDescription('')).toBe('');
558
- });
559
-
560
- // Razvan's review (2026-10-02): the first cut copied the app's dialog, which
561
- // drops everything from the first `##` heading on. An author who writes their
562
- // description in sections lost it from that heading onwards, and was never
563
- // told. The cut is now the generated block and nothing else.
564
- it("keeps the author's own headings, and everything under them", () => {
565
- expect(authorsDescription('Lead.\n\n## My own heading\n\nmore')).toBe(
566
- 'Lead.\n\n## My own heading\n\nmore',
567
- );
568
- expect(authorsDescription(`Lead.\n\n## Why now\n\nBecause.\n\n${GENERATED}`)).toBe(
569
- 'Lead.\n\n## Why now\n\nBecause.',
570
- );
571
- });
572
-
573
- // Hexis appends the block LAST, so the last such line is always the generated
574
- // one — which is what makes an author who happens to use that heading
575
- // themselves no worse off than before.
576
- it('cuts the LAST such heading, so an author may use the words too', () => {
577
- const out = authorsDescription(`Lead.\n\n## Affected owners\n\nI mean the GTM ones.\n\n${GENERATED}`);
578
- expect(out).toBe('Lead.\n\n## Affected owners\n\nI mean the GTM ones.');
579
- // Their sentence is kept; not one path of the generated block is.
580
- expect(out).not.toContain('Avi-Checkin');
581
- expect(out).not.toContain('KnowledgeBase');
582
- });
583
-
584
- it('cuts an author\'s own owners heading when there is no generated block', () => {
585
- // Indistinguishable from the generated one with nothing after it, so it is
586
- // cut — the safe direction, and the only way this can err.
587
- expect(authorsDescription('Lead.\n\n## Affected owners\n\nI mean the GTM ones.')).toBe('Lead.');
475
+ describe('the body a caller is handed is the stored one', () => {
476
+ const body = 'Lead.\n\n## Why now\n\nBecause of `Knowledge/Secret.md`.\n<!-- my own aside -->';
477
+ const stored = {
478
+ ...summary(),
479
+ body,
480
+ headSha: 'a'.repeat(40),
481
+ baseSha: 'b'.repeat(40),
482
+ files: [],
483
+ approvals: [],
484
+ mergeableInBevel: false,
485
+ mergeBlockedReasons: [],
486
+ mergeWarnings: [],
487
+ viewerCanBypassMerge: false,
488
+ } as unknown as ChangeRequestDetail;
489
+
490
+ it('is the body as stored, headings and comments included', () => {
491
+ const out = toCrDetail(stored, { readable: 1, withheld: 0 }, { visible: [], withheld: 0 }, toCrViewer(stored, false, []));
492
+ expect(out.body).toBe(body);
493
+ });
494
+
495
+ it('does not vary by what the caller may read', () => {
496
+ const forReader = toCrDetail(stored, { readable: 0, withheld: 1 }, { visible: [], withheld: 1 }, toCrViewer(stored, false, []));
497
+ const forAuthor = toCrDetail(stored, { readable: 1, withheld: 0 }, { visible: [], withheld: 0 }, toCrViewer(stored, true, []));
498
+ expect(forReader.body).toBe(forAuthor.body);
588
499
  });
589
500
  });
590
501
 
@@ -615,91 +526,3 @@ describe('a renamed file is judged on both of its names', () => {
615
526
  expect(pathsOf({ path: 'A.md' })).toEqual(['A.md']);
616
527
  });
617
528
  });
618
-
619
- /**
620
- * A reply is shown only when the comment it replies to is (Razvan's review,
621
- * 2026-10-02, finding 3). A reply posted without a path of its own — which
622
- * `post_change_request_comment` accepts, taking `parentId` without `path` — read
623
- * as a general comment when judged on itself, so a reply to a comment on a
624
- * withheld file came back with its body and a `parentId` naming a comment the
625
- * caller cannot see.
626
- */
627
- describe('a reply takes its parent\'s verdict, up the chain', () => {
628
- const c = (id: string, over: { path?: string; parentId?: string } = {}) => ({ id, ...over });
629
- const mayShow = (path: string) => path.startsWith('Open/');
630
-
631
- it('withholds a pathless reply to a comment on a file the caller may not read', () => {
632
- const { visible, withheld } = visibleComments(
633
- [c('c-1', { path: 'Secret/Pay.md' }), c('c-2', { parentId: 'c-1' })],
634
- mayShow,
635
- );
636
- expect(visible).toEqual([]);
637
- expect(withheld).toBe(2);
638
- });
639
-
640
- it('withholds a reply to that reply, however deep the thread goes', () => {
641
- const { visible, withheld } = visibleComments(
642
- [
643
- c('c-1', { path: 'Secret/Pay.md' }),
644
- c('c-2', { parentId: 'c-1' }),
645
- c('c-3', { parentId: 'c-2' }),
646
- c('c-4', { parentId: 'c-3' }),
647
- ],
648
- mayShow,
649
- );
650
- expect(visible).toEqual([]);
651
- expect(withheld).toBe(4);
652
- });
653
-
654
- it('keeps a reply whose whole chain is readable', () => {
655
- const { visible, withheld } = visibleComments(
656
- [c('c-1', { path: 'Open/A.md' }), c('c-2', { parentId: 'c-1' }), c('c-3', { parentId: 'c-2' })],
657
- mayShow,
658
- );
659
- expect(visible.map((v) => v.id)).toEqual(['c-1', 'c-2', 'c-3']);
660
- expect(withheld).toBe(0);
661
- });
662
-
663
- // Both halves of the rule are needed, and this is the half the inheritance
664
- // alone would miss: the reply names a withheld file itself.
665
- it('withholds a reply that names a withheld file under a readable parent', () => {
666
- const { visible } = visibleComments(
667
- [c('c-1', { path: 'Open/A.md' }), c('c-2', { path: 'Secret/Pay.md', parentId: 'c-1' })],
668
- mayShow,
669
- );
670
- expect(visible.map((v) => v.id)).toEqual(['c-1']);
671
- });
672
-
673
- it('keeps a general comment and a reply to one — neither is about a file', () => {
674
- const { visible, withheld } = visibleComments([c('c-1'), c('c-2', { parentId: 'c-1' })], mayShow);
675
- expect(visible.map((v) => v.id)).toEqual(['c-1', 'c-2']);
676
- expect(withheld).toBe(0);
677
- });
678
-
679
- it('withholds a reply whose parent is not in the list at all', () => {
680
- // Not provably pathless, so it goes: the parent may have been anchored to
681
- // anything, including a file this caller was refused.
682
- const { visible, withheld } = visibleComments([c('c-2', { parentId: 'gone' })], mayShow);
683
- expect(visible).toEqual([]);
684
- expect(withheld).toBe(1);
685
- });
686
-
687
- it('withholds a cycle rather than looping on it', () => {
688
- const { visible, withheld } = visibleComments(
689
- [c('c-1', { parentId: 'c-2' }), c('c-2', { parentId: 'c-1' })],
690
- mayShow,
691
- );
692
- expect(visible).toEqual([]);
693
- expect(withheld).toBe(2);
694
- });
695
-
696
- it('resolves a long thread without re-walking it per reply', () => {
697
- // 500 replies in one chain: memoised, this is linear; unmemoised it is
698
- // quadratic and the suite would feel it.
699
- const chain = [c('c-0', { path: 'Open/A.md' })];
700
- for (let i = 1; i <= 500; i++) chain.push(c(`c-${i}`, { parentId: `c-${i - 1}` }));
701
- const { visible, withheld } = visibleComments(chain, mayShow);
702
- expect(visible).toHaveLength(501);
703
- expect(withheld).toBe(0);
704
- });
705
- });
@@ -3,7 +3,6 @@ import express from 'express';
3
3
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
  import type {
5
5
  ChangeRequest,
6
- ChangeRequestComment,
7
6
  ChangeRequestDetail,
8
7
  ChangeRequestState,
9
8
  ChangedFile,
@@ -28,7 +27,6 @@ const TOOLS = [
28
27
  'get_change_request',
29
28
  'list_change_request_files',
30
29
  'list_change_request_reviews',
31
- 'list_change_request_comments',
32
30
  ] as const;
33
31
 
34
32
  // ── The world each test sets up ─────────────────────────────────────────────
@@ -69,18 +67,6 @@ function approval(path: string, over: Partial<FileApproval> = {}): FileApproval
69
67
  };
70
68
  }
71
69
 
72
- /** A comment as the detail carries one. Module-level: the rename suite needs it too. */
73
- function comment(over: Partial<ChangeRequestComment>): ChangeRequestComment {
74
- return {
75
- id: 'c-1',
76
- author: { email: VIEWER, name: 'Mia' },
77
- body: 'This line is out of date.',
78
- headSha: 'head-1',
79
- createdAt: '2026-09-29T08:00:00.000Z',
80
- ...over,
81
- };
82
- }
83
-
84
70
  function approvedBy(email: string, name: string, at: string, isStale = false) {
85
71
  return { email, name, approvedAt: at, isStale, isSelfApproval: false };
86
72
  }
@@ -126,7 +112,6 @@ function detail(over: Partial<ChangeRequestDetail> = {}): ChangeRequestDetail {
126
112
  headSha: 'head-1',
127
113
  baseSha: 'base-1',
128
114
  files,
129
- comments: [],
130
115
  approvals: files.map((f) => approval(f.path)),
131
116
  mergeableInBevel: false,
132
117
  mergeBlockedReasons: [],
@@ -274,7 +259,7 @@ afterEach(async () => {
274
259
 
275
260
  // ── The catalog ─────────────────────────────────────────────────────────────
276
261
 
277
- describe('the five read tools', () => {
262
+ describe('the four read tools', () => {
278
263
  it('are all registered, on both surfaces, by their GitHub-counterpart names', async () => {
279
264
  await start();
280
265
  const internal = (await registryRef!.listInternal()).map((t) => t.name);
@@ -285,6 +270,15 @@ describe('the five read tools', () => {
285
270
  }
286
271
  });
287
272
 
273
+ // Change-request comments were removed (no screen ever showed one), and the
274
+ // tool that listed them went with them.
275
+ it('offers no comment tool on either surface', async () => {
276
+ await start();
277
+ for (const list of [await registryRef!.listInternal(), await registryRef!.listExternal()]) {
278
+ expect(list.map((t) => t.name).filter((n) => n.includes('comment'))).toEqual([]);
279
+ }
280
+ });
281
+
288
282
  // "None of the tools changes anything." A `write`-tagged tool is refused to
289
283
  // read-scoped callers; these must carry no such tag, because none writes.
290
284
  it('carry no `write` tag, so a read-scoped caller may use every one', async () => {
@@ -891,123 +885,13 @@ describe('list_change_request_reviews', () => {
891
885
  });
892
886
  });
893
887
 
894
- // ── Scenario: comments ──────────────────────────────────────────────────────
895
-
896
- describe('list_change_request_comments', () => {
897
- // WHEN a reviewer left an inline comment and a reply followed THEN
898
- // `list_change_request_comments` returns both, the reply with `parentId`.
899
- it('returns the inline comment and its reply, the reply carrying parentId', async () => {
900
- const base = await start();
901
- details.set(
902
- 12,
903
- detail({
904
- comments: [
905
- comment({ id: 'c-1', path: 'Knowledge/A.md', line: 14 }),
906
- comment({
907
- id: 'c-2',
908
- author: { email: AUTHOR, name: 'Juan' },
909
- body: 'Fixed.',
910
- path: 'Knowledge/A.md',
911
- line: 14,
912
- parentId: 'c-1',
913
- createdAt: '2026-09-29T09:00:00.000Z',
914
- }),
915
- ],
916
- }),
917
- );
918
- const { status, json } = await call(base, 'list_change_request_comments', { number: 12 });
919
- expect(status).toBe(200);
920
- expect(json.comments).toHaveLength(2);
921
- expect(json.comments[0]).toMatchObject({
922
- id: 'c-1',
923
- author: { name: 'Mia', email: VIEWER },
924
- body: 'This line is out of date.',
925
- path: 'Knowledge/A.md',
926
- line: 14,
927
- headSha: 'head-1',
928
- createdAt: '2026-09-29T08:00:00.000Z',
929
- });
930
- expect(json.comments[1]).toMatchObject({ id: 'c-2', parentId: 'c-1' });
931
- expect(json.withheldComments).toBe(0);
932
- });
933
-
934
- it('keeps a general comment, which belongs to the request rather than a file', async () => {
935
- const base = await start();
936
- details.set(12, detail({ comments: [comment({ id: 'c-9', body: 'Ready for review.' })] }));
937
- const { json } = await call(base, 'list_change_request_comments', { number: 12 });
938
- expect(json.comments).toHaveLength(1);
939
- expect((json.comments as unknown as { path?: string }[])[0].path).toBeUndefined();
940
- });
941
-
942
- it('leaves out a comment on a file the caller may not read, and counts it', async () => {
943
- const base = await start();
944
- readable = ['Knowledge/A.md'];
945
- details.set(
946
- 12,
947
- detail({
948
- files: [file('Knowledge/A.md'), file('Payroll/Rates.md')],
949
- comments: [
950
- comment({ id: 'c-1', path: 'Knowledge/A.md', line: 1 }),
951
- comment({ id: 'c-2', path: 'Payroll/Rates.md', line: 2, body: 'The band is wrong.' }),
952
- ],
953
- }),
954
- );
955
- const { json } = await call(base, 'list_change_request_comments', { number: 12 });
956
- expect((json.comments as unknown as { id: string }[]).map((c) => c.id)).toEqual(['c-1']);
957
- expect(json.withheldComments).toBe(1);
958
- expect(JSON.stringify(json)).not.toContain('Payroll');
959
- expect(JSON.stringify(json)).not.toContain('band is wrong');
960
- });
961
-
962
- it('keeps a comment on a file the request no longer changes but the caller may read', async () => {
963
- const base = await start();
964
- readable = ['Knowledge/A.md', 'Knowledge/Gone.md'];
965
- details.set(12, detail({ comments: [comment({ id: 'c-7', path: 'Knowledge/Gone.md', line: 3 })] }));
966
- const { json } = await call(base, 'list_change_request_comments', { number: 12 });
967
- expect((json.comments as unknown as { id: string }[]).map((c) => c.id)).toEqual(['c-7']);
968
- expect(json.withheldComments).toBe(0);
969
- });
970
-
971
- it('pages the comments', async () => {
972
- const base = await start();
973
- details.set(
974
- 12,
975
- detail({
976
- comments: Array.from({ length: 40 }, (_, i) =>
977
- comment({ id: `c-${i}`, createdAt: `2026-09-29T08:00:${String(i).padStart(2, '0')}.000Z` }),
978
- ),
979
- }),
980
- );
981
- const first = await call(base, 'list_change_request_comments', { number: 12 });
982
- expect(first.json.comments).toHaveLength(30);
983
- expect(first.json.hasNextPage).toBe(true);
984
- const second = await call(base, 'list_change_request_comments', { number: 12, page: 2 });
985
- expect(second.json.comments).toHaveLength(10);
986
- expect(second.json.hasNextPage).toBe(false);
987
- });
988
-
989
- it('answers not found when the caller may read none of its files', async () => {
990
- const base = await start();
991
- readable = [];
992
- details.set(12, detail({ comments: [comment({ id: 'c-1' })] }));
993
- expect((await call(base, 'list_change_request_comments', { number: 12 })).status).toBe(404);
994
- });
995
- });
996
-
997
888
  /**
998
889
  * Reproductions of what Local Testing found on sha ae2f49d9, through the HTTP
999
890
  * tool surface it found them on — not just the pure mapper underneath.
1000
891
  */
1001
892
  describe('a mixed-access caller is never handed a path they may not read', () => {
1002
- /** A body exactly as `openChangeRequest` builds it: prose, then the block. */
1003
- const bodyWithOwnersBlock = [
1004
- 'Please review the check-in note.',
1005
- '',
1006
- '## Affected owners',
1007
- '',
1008
- '- `KnowledgeBase/Engineering/Knowledge/Avi-Checkin.md` — Admin',
1009
- '- `KnowledgeBase/GTM/Notes.md` — GTM Team',
1010
- ].join('\n');
893
+ /** A body as `openChangeRequest` stores it: the description, nothing else. */
894
+ const body = 'Please review the check-in note.';
1011
895
 
1012
896
  /** The reader of one folder of a two-folder request — john.newcomer's case. */
1013
897
  function mixedAccessRequest(): void {
@@ -1020,7 +904,7 @@ describe('a mixed-access caller is never handed a path they may not read', () =>
1020
904
  1,
1021
905
  detail({
1022
906
  number: 1,
1023
- body: bodyWithOwnersBlock,
907
+ body,
1024
908
  files: [
1025
909
  file('KnowledgeBase/Engineering/Knowledge/Avi-Checkin.md'),
1026
910
  file('KnowledgeBase/GTM/Notes.md'),
@@ -1039,7 +923,7 @@ describe('a mixed-access caller is never handed a path they may not read', () =>
1039
923
  );
1040
924
  }
1041
925
 
1042
- it('get_change_request answers the author\'s reason and names no withheld file anywhere', async () => {
926
+ it('get_change_request answers the description and names no withheld file anywhere', async () => {
1043
927
  const base = await start();
1044
928
  mixedAccessRequest();
1045
929
  const { status, json } = await call(base, 'get_change_request', { number: 1 });
@@ -1054,13 +938,12 @@ describe('a mixed-access caller is never handed a path they may not read', () =>
1054
938
  const whole = JSON.stringify(json);
1055
939
  expect(whole).not.toContain('Avi-Checkin');
1056
940
  expect(whole).not.toContain('KnowledgeBase/Engineering');
1057
- expect(whole).not.toContain('Affected owners');
1058
941
  // The file they CAN read is still named, and its blocker still readable.
1059
942
  expect(whole).toContain('KnowledgeBase/GTM/Notes.md');
1060
943
  expect(json).toMatchObject({ withheldMergeBlockedReasons: 1 });
1061
944
  });
1062
945
 
1063
- it('no tool of the five names the withheld file, in any field', async () => {
946
+ it('no tool of the four names the withheld file, in any field', async () => {
1064
947
  const base = await start();
1065
948
  mixedAccessRequest();
1066
949
  summaries = [details.get(1)!];
@@ -1081,7 +964,7 @@ describe('a mixed-access caller is never handed a path they may not read', () =>
1081
964
  }
1082
965
  });
1083
966
 
1084
- it('the author sees their own body too — the cut is the same for everyone', async () => {
967
+ it('the author is handed the same body — one body for everyone', async () => {
1085
968
  const base = await start();
1086
969
  mixedAccessRequest();
1087
970
  callerEmail = AUTHOR;
@@ -1090,14 +973,11 @@ describe('a mixed-access caller is never handed a path they may not read', () =>
1090
973
  'KnowledgeBase/Engineering/Knowledge/Avi-Checkin.md',
1091
974
  ];
1092
975
  const { json } = await call(base, 'get_change_request', { number: 1 });
1093
- // A caller who may read everything gets the same author text, not the
1094
- // machine block — one body nobody has to reason about.
1095
976
  expect(json).toMatchObject({
1096
977
  body: 'Please review the check-in note.',
1097
978
  changedFiles: 2,
1098
979
  withheldFiles: 0,
1099
980
  });
1100
- expect(JSON.stringify(json)).not.toContain('Affected owners');
1101
981
  });
1102
982
  });
1103
983
 
@@ -1159,35 +1039,6 @@ describe('a file renamed out of a folder the caller may not read', () => {
1159
1039
  expect(json.withheldFiles).toBe(0);
1160
1040
  });
1161
1041
 
1162
- it('keeps a comment anchored to the withheld rename out of the comment list', async () => {
1163
- const base = await start();
1164
- renameRequest();
1165
- details.set(
1166
- 12,
1167
- detail({
1168
- files: [
1169
- file('Knowledge/Open.md', { status: 'renamed', previousPath: 'Payroll/Rates.md' }),
1170
- file('Knowledge/Plain.md'),
1171
- ],
1172
- approvals: [approval('Knowledge/Open.md'), approval('Knowledge/Plain.md')],
1173
- comments: [
1174
- comment({ id: 'c-1', path: 'Knowledge/Plain.md', line: 4 }),
1175
- comment({ id: 'c-2', path: 'Knowledge/Open.md', line: 9, body: 'Rate band looks off.' }),
1176
- ],
1177
- }),
1178
- );
1179
- const { json } = await call(base, 'list_change_request_comments', { number: 12 });
1180
- // `Knowledge/Open.md` passes a bare read check — it is the file's new name —
1181
- // but the file is withheld whole, so a comment on it is withheld too. Were
1182
- // it kept, it would print the name the files tool refuses to print.
1183
- expect((json.comments as unknown as { id: string }[]).map((c) => c.id)).toEqual(['c-1']);
1184
- expect(json.withheldComments).toBe(1);
1185
- const whole = JSON.stringify(json);
1186
- expect(whole).not.toContain('Knowledge/Open.md');
1187
- expect(whole).not.toContain('Payroll');
1188
- expect(whole).not.toContain('Rate band');
1189
- });
1190
-
1191
1042
  it('keeps the withheld rename out of the files a review names, and counts it', async () => {
1192
1043
  const base = await start();
1193
1044
  renameRequest();
@@ -1472,83 +1323,3 @@ describe('reading a request that is no longer open', () => {
1472
1323
  expect(mine.json).toMatchObject({ state: 'closed', changedFiles: 0, viewer: { isAuthor: true } });
1473
1324
  });
1474
1325
  });
1475
-
1476
- /**
1477
- * Scenario (Razvan's review, 2026-10-02, finding 3): a reply is shown only when
1478
- * the comment it replies to is.
1479
- *
1480
- * `post_change_request_comment` takes `parentId` without requiring `path`, so a
1481
- * reply to a comment on a withheld file has no path of its own — and judged on
1482
- * itself it looked like a general comment about the whole request. It came back
1483
- * with its body and a `parentId` naming a comment the caller cannot see.
1484
- */
1485
- describe('a reply is shown only when the comment it replies to is', () => {
1486
- /** A request whose two files the caller can read one of. */
1487
- function threadRequest(comments: ChangeRequestComment[]) {
1488
- readable = ['Knowledge/Open.md'];
1489
- details.set(
1490
- 12,
1491
- detail({
1492
- files: [file('Knowledge/Open.md'), file('Payroll/Rates.md')],
1493
- approvals: [approval('Knowledge/Open.md'), approval('Payroll/Rates.md')],
1494
- comments,
1495
- }),
1496
- );
1497
- }
1498
-
1499
- it('withholds a pathless reply to a comment on a file the caller may not read', async () => {
1500
- const base = await start();
1501
- threadRequest([
1502
- comment({ id: 'c-1', path: 'Payroll/Rates.md', line: 3, body: 'This band is wrong.' }),
1503
- comment({ id: 'c-2', parentId: 'c-1', body: 'Agreed, the band moved in April.' }),
1504
- ]);
1505
- const { json } = await call(base, 'list_change_request_comments', { number: 12 });
1506
- expect(json.comments).toEqual([]);
1507
- expect(json.withheldComments).toBe(2);
1508
- const whole = JSON.stringify(json);
1509
- // Neither the parent's path, nor the reply's body, nor the id it answers.
1510
- expect(whole).not.toContain('Payroll');
1511
- expect(whole).not.toContain('band moved');
1512
- expect(whole).not.toContain('c-1');
1513
- });
1514
-
1515
- it('withholds every reply down the thread, however deep it runs', async () => {
1516
- const base = await start();
1517
- threadRequest([
1518
- comment({ id: 'c-1', path: 'Payroll/Rates.md', body: 'This band is wrong.' }),
1519
- comment({ id: 'c-2', parentId: 'c-1', body: 'Which one?' }),
1520
- comment({ id: 'c-3', parentId: 'c-2', body: 'The senior one.' }),
1521
- ]);
1522
- const { json } = await call(base, 'list_change_request_comments', { number: 12 });
1523
- expect(json.comments).toEqual([]);
1524
- expect(json.withheldComments).toBe(3);
1525
- expect(JSON.stringify(json)).not.toContain('senior');
1526
- });
1527
-
1528
- it('keeps a thread on a file the caller may read, replies and all', async () => {
1529
- const base = await start();
1530
- threadRequest([
1531
- comment({ id: 'c-1', path: 'Knowledge/Open.md', line: 4, body: 'Out of date.' }),
1532
- comment({ id: 'c-2', parentId: 'c-1', body: 'Fixed.' }),
1533
- comment({ id: 'c-3', parentId: 'c-2', body: 'Thanks.' }),
1534
- ]);
1535
- const { json } = await call(base, 'list_change_request_comments', { number: 12 });
1536
- expect((json.comments as unknown as { id: string }[]).map((c) => c.id)).toEqual([
1537
- 'c-1',
1538
- 'c-2',
1539
- 'c-3',
1540
- ]);
1541
- expect(json.withheldComments).toBe(0);
1542
- });
1543
-
1544
- it('keeps a general comment and its replies — neither is about a file', async () => {
1545
- const base = await start();
1546
- threadRequest([
1547
- comment({ id: 'c-1', body: 'Ready for review.' }),
1548
- comment({ id: 'c-2', parentId: 'c-1', body: 'Looking now.' }),
1549
- ]);
1550
- const { json } = await call(base, 'list_change_request_comments', { number: 12 });
1551
- expect(json.comments).toHaveLength(2);
1552
- expect(json.withheldComments).toBe(0);
1553
- });
1554
- });