@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
@@ -0,0 +1,306 @@
1
+ import type { Server as HttpServer } from 'node:http';
2
+ import express from 'express';
3
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
+ import type { IWorkflowService } from '@bevel-software/platform-shared';
5
+ import { testKbContext } from '../../../../__tests__/kb-context.js';
6
+ import { ToolRegistry } from '../../../tool-registry/tool-registry.js';
7
+ import { InternalTokenService } from '../../../tool-auth/internal-token.service.js';
8
+ import { createToolAuthMiddleware } from '../../../tool-auth/tool-auth.middleware.js';
9
+ import { createToolContextResolver } from '../../../tool-helpers/tool-context.js';
10
+ import { createToolHandlerFactory } from '../../../tool-helpers/tool-handler.js';
11
+ import { WorkflowDomainError } from '../../../../shared/domain-errors.js';
12
+ import type { IAccessControl } from '../../../access/access-control.interface.js';
13
+ import type { AuthService } from '../../../auth/auth.service.js';
14
+ import type { WorkspaceService } from '../../../workspace/workspace.service.js';
15
+ import type { WorkflowEventBus } from '../../event-bus.js';
16
+ import { createWorkflowRoutes } from '../../workflow.routes.js';
17
+ import { registerWorkflowTools } from '../workflow.tools.js';
18
+
19
+ /**
20
+ * The app's `PATCH /api/workflow/change-requests/:number` and the agent's
21
+ * `update_change_request` are one verb: both reach the SAME service method
22
+ * with the same caller and the same fields, and every refusal it makes reaches
23
+ * both callers with the same status and the same words. The rule itself is
24
+ * pinned in `workflow.service.update-change-request.test.ts`; this pins that
25
+ * neither surface narrows, widens or rewords it.
26
+ *
27
+ * One answer differs, and on purpose: a request the caller may not READ is
28
+ * not found to the agent (404, as `get_change_request` answers it), before
29
+ * its state or the edit rule is consulted. The app serves every request's
30
+ * detail to any signed-in viewer, so its route has nothing to hide.
31
+ */
32
+
33
+ const CALLER = { id: 'user-A', email: 'alice@example.com', name: 'Alice' };
34
+
35
+ let calls: unknown[][] = [];
36
+ /** What the shared service does next: answer the request, or refuse. */
37
+ let outcome: () => unknown;
38
+ /** `get_change_request`'s visibility gate, as the tool is handed it. */
39
+ let maySee: (number: number) => Promise<boolean>;
40
+
41
+ const updated = {
42
+ number: 9,
43
+ url: 'https://bevel.example.com/change-requests/9',
44
+ title: 'New title',
45
+ state: 'open',
46
+ touchedNodePaths: ['Docs/a.md'],
47
+ };
48
+
49
+ const workflowService = {
50
+ updateChangeRequest: async (number: number, user: { id: string; email: string }, input: unknown) => {
51
+ calls.push(['updateChangeRequest', number, user.id, input]);
52
+ return outcome();
53
+ },
54
+ } as unknown as IWorkflowService;
55
+
56
+ const authService = { getUserById: async () => CALLER } as unknown as AuthService;
57
+ const workspaceService = {
58
+ getOrCreateForUser: async () => ({ id: 'ws' }),
59
+ findAnyWorkspaceId: async () => 'ws',
60
+ } as unknown as WorkspaceService;
61
+ const events = { emit: () => ({}) } as unknown as WorkflowEventBus;
62
+ const internalToken = new InternalTokenService({ secret: 's' });
63
+
64
+ let httpServer: HttpServer | undefined;
65
+ /** The agent tools `start` registered, as the manual lists them. */
66
+ let registry: ToolRegistry;
67
+
68
+ async function start(): Promise<string> {
69
+ const app = express();
70
+ app.use(express.json());
71
+
72
+ // The app's route, signed in as CALLER.
73
+ const appRouter = express.Router();
74
+ appRouter.use((req, _res, next) => {
75
+ (req as unknown as { userId: string }).userId = CALLER.id;
76
+ next();
77
+ });
78
+ appRouter.use(
79
+ createWorkflowRoutes(
80
+ workflowService,
81
+ workspaceService,
82
+ authService,
83
+ events,
84
+ { canReadBatch: async () => new Map() } as unknown as IAccessControl,
85
+ 'knowledge-base',
86
+ ),
87
+ );
88
+
89
+ // The agent's tool, as CALLER over an internal token.
90
+ registry = new ToolRegistry();
91
+ const toolRouter = express.Router();
92
+ const toolAuth = createToolAuthMiddleware(
93
+ { looksLikeExternalApiKey: () => false, verifyAndLoadToken: async () => null } as never,
94
+ internalToken,
95
+ );
96
+ const resolve = createToolContextResolver({
97
+ authService,
98
+ workspaceService,
99
+ workflowService,
100
+ events,
101
+ kbDirName: 'knowledge-base',
102
+ creatorAccess: { planForCreate: async () => null, grantInExtractedFile: async () => null, noteAccessFileWritten: () => {} },
103
+ } as never);
104
+ registerWorkflowTools(registry, toolRouter, toolAuth, createToolHandlerFactory(resolve), testKbContext(), async (_ctx, number) =>
105
+ maySee(number),
106
+ );
107
+
108
+ app.use('/api', toolRouter);
109
+ app.use('/api', appRouter);
110
+ httpServer = await new Promise<HttpServer>((r) => {
111
+ const s = app.listen(0, () => r(s));
112
+ });
113
+ return `http://127.0.0.1:${(httpServer.address() as { port: number }).port}`;
114
+ }
115
+
116
+ async function viaRoute(base: string, body: Record<string, unknown>) {
117
+ const res = await fetch(`${base}/api/workflow/change-requests/9`, {
118
+ method: 'PATCH',
119
+ headers: { 'content-type': 'application/json' },
120
+ body: JSON.stringify(body),
121
+ });
122
+ return { status: res.status, body: (await res.json()) as Record<string, unknown> };
123
+ }
124
+
125
+ async function viaTool(base: string, body: Record<string, unknown>) {
126
+ const res = await fetch(`${base}/api/agent/tools/update_change_request`, {
127
+ method: 'POST',
128
+ headers: { 'content-type': 'application/json', authorization: `Bearer ${internalToken.mint({ userId: CALLER.id })}` },
129
+ body: JSON.stringify({ number: 9, ...body }),
130
+ });
131
+ return { status: res.status, body: (await res.json()) as Record<string, unknown> };
132
+ }
133
+
134
+ beforeEach(() => {
135
+ calls = [];
136
+ outcome = () => updated;
137
+ maySee = async () => true;
138
+ });
139
+ afterEach(async () => {
140
+ if (httpServer) await new Promise<void>((r) => httpServer!.close(() => r()));
141
+ httpServer = undefined;
142
+ });
143
+
144
+ describe('update_change_request ⇔ PATCH /workflow/change-requests/:number', () => {
145
+ it('both hand the same service call the same caller and the same fields', async () => {
146
+ const base = await start();
147
+ const fields = { title: 'New title', description: 'P2 - Planned\n\nWhy.' };
148
+ expect((await viaRoute(base, fields)).status).toBe(200);
149
+ expect((await viaTool(base, fields)).status).toBe(200);
150
+ expect(calls).toEqual([
151
+ ['updateChangeRequest', 9, CALLER.id, fields],
152
+ ['updateChangeRequest', 9, CALLER.id, fields],
153
+ ]);
154
+ });
155
+
156
+ it('a description alone reaches the service as a description alone, from both', async () => {
157
+ const base = await start();
158
+ await viaRoute(base, { description: 'Only this.' });
159
+ await viaTool(base, { description: 'Only this.' });
160
+ expect(calls).toEqual([
161
+ ['updateChangeRequest', 9, CALLER.id, { title: undefined, description: 'Only this.' }],
162
+ ['updateChangeRequest', 9, CALLER.id, { title: undefined, description: 'Only this.' }],
163
+ ]);
164
+ });
165
+
166
+ it('an append reaches the service as an append, from both — the tool offers the field the route takes', async () => {
167
+ const base = await start();
168
+ expect((await viaRoute(base, { appendDescription: 'Round two.' })).status).toBe(200);
169
+ expect((await viaTool(base, { appendDescription: 'Round two.' })).status).toBe(200);
170
+ expect(calls).toEqual([
171
+ ['updateChangeRequest', 9, CALLER.id, { title: undefined, description: undefined, appendDescription: 'Round two.' }],
172
+ ['updateChangeRequest', 9, CALLER.id, { title: undefined, description: undefined, appendDescription: 'Round two.' }],
173
+ ]);
174
+ });
175
+
176
+ it("the tool's input schema names every field the route takes", async () => {
177
+ await start();
178
+ const tool = (await registry.listInternal()).find((t) => t.name === 'update_change_request');
179
+ // The catalog nests a tool's arguments under `body`.
180
+ const top = (tool?.inputs as { properties: Record<string, { properties?: Record<string, unknown> }> }).properties;
181
+ const props = top.body?.properties ?? top;
182
+ expect(Object.keys(props).sort()).toEqual(['appendDescription', 'description', 'number', 'title']);
183
+ });
184
+
185
+ const refusals: [string, () => never][] = [
186
+ [
187
+ 'neither the author nor someone who may merge it (403)',
188
+ () => {
189
+ throw new WorkflowDomainError(
190
+ "Only the request's author, an admin, or someone who may approve every file it changes can edit its title and description.",
191
+ 403,
192
+ );
193
+ },
194
+ ],
195
+ [
196
+ 'a merged request (409)',
197
+ () => {
198
+ throw new WorkflowDomainError(
199
+ 'This change request has already been applied; its title and description can no longer be changed.',
200
+ 409,
201
+ );
202
+ },
203
+ ],
204
+ [
205
+ 'a closed request (409)',
206
+ () => {
207
+ throw new WorkflowDomainError(
208
+ 'This change request is closed; its title and description can no longer be changed.',
209
+ 409,
210
+ );
211
+ },
212
+ ],
213
+ ];
214
+
215
+ for (const [name, refuse] of refusals) {
216
+ it(`refuses ${name} with the same status and the same words`, async () => {
217
+ const base = await start();
218
+ outcome = refuse;
219
+ const route = await viaRoute(base, { title: 'New title' });
220
+ const tool = await viaTool(base, { title: 'New title' });
221
+ expect(route.status).toBeGreaterThanOrEqual(400);
222
+ expect(tool).toEqual(route);
223
+ expect(typeof route.body.error).toBe('string');
224
+ expect((route.body.error as string).length).toBeGreaterThan(20);
225
+ });
226
+ }
227
+
228
+ it('the tool answers a request the caller may not see as not found, whatever its state or the rule would say', async () => {
229
+ const base = await start();
230
+ maySee = async () => false;
231
+ for (const [, refuse] of refusals) {
232
+ outcome = refuse;
233
+ const tool = await viaTool(base, { title: 'New title' });
234
+ expect(tool).toEqual({ status: 404, body: { error: 'Change request #9 not found.' } });
235
+ }
236
+ expect(calls).toEqual([]);
237
+ });
238
+
239
+ it('the tool answers the request’s link and its title; the route the request', async () => {
240
+ const base = await start();
241
+ const tool = await viaTool(base, { title: 'New title' });
242
+ expect(tool.body).toEqual({
243
+ number: 9,
244
+ url: 'https://bevel.example.com/change-requests/9',
245
+ title: 'New title',
246
+ });
247
+ const route = await viaRoute(base, { title: 'New title' });
248
+ expect(route.body).toMatchObject({ number: 9, title: 'New title' });
249
+ });
250
+
251
+ it('asks for something to change before reaching the service', async () => {
252
+ const base = await start();
253
+ const tool = await viaTool(base, {});
254
+ expect(tool.status).toBe(400);
255
+ expect(calls).toEqual([]);
256
+ });
257
+
258
+ it('the route refuses a non-string field before reaching the service', async () => {
259
+ const base = await start();
260
+ const route = await viaRoute(base, { title: 7 });
261
+ expect(route.status).toBe(400);
262
+ expect(calls).toEqual([]);
263
+ });
264
+ });
265
+
266
+ /**
267
+ * The comment system is gone: no screen ever showed a comment, so the routes,
268
+ * the service methods, the storage and the two agent tools were removed
269
+ * rather than surfaced. Its old addresses answer 404 and its tools are not
270
+ * offered; the request itself still answers on its own address.
271
+ */
272
+ describe('change-request comments are gone', () => {
273
+ const routes: [string, string][] = [
274
+ ['GET', '/api/workflow/change-requests/9/comments'],
275
+ ['POST', '/api/workflow/change-requests/9/comments'],
276
+ ['PATCH', '/api/workflow/change-requests/9/comments/00000000-0000-4000-8000-000000000000'],
277
+ ['DELETE', '/api/workflow/change-requests/9/comments/00000000-0000-4000-8000-000000000000'],
278
+ ];
279
+ for (const [method, path] of routes) {
280
+ it(`${method} ${path.replace('/api', '')} answers 404`, async () => {
281
+ const base = await start();
282
+ const res = await fetch(`${base}${path}`, {
283
+ method,
284
+ headers: { 'content-type': 'application/json' },
285
+ ...(method === 'GET' || method === 'DELETE' ? {} : { body: JSON.stringify({ body: 'hi' }) }),
286
+ });
287
+ expect(res.status).toBe(404);
288
+ expect(calls).toEqual([]);
289
+ });
290
+ }
291
+
292
+ it('the agent is offered no comment tool, and calling one answers 404', async () => {
293
+ const base = await start();
294
+ for (const name of ['post_change_request_comment']) {
295
+ const res = await fetch(`${base}/api/agent/tools/${name}`, {
296
+ method: 'POST',
297
+ headers: { 'content-type': 'application/json', authorization: `Bearer ${internalToken.mint({ userId: CALLER.id })}` },
298
+ body: JSON.stringify({ number: 9, body: 'hi' }),
299
+ });
300
+ expect(res.status).toBe(404);
301
+ }
302
+ const names = (await registry.listInternal()).map((t) => t.name);
303
+ expect(names).toContain('update_change_request');
304
+ expect(names.filter((n) => n.includes('comment'))).toEqual([]);
305
+ });
306
+ });
@@ -72,7 +72,6 @@ function detailOf(files: Record<string, unknown>[]): Record<string, unknown> {
72
72
  headSha: 'head-1',
73
73
  baseSha: 'base-1',
74
74
  files,
75
- comments: [],
76
75
  approvals: files.map((f) => approvalOf(f.path as string)),
77
76
  mergeableInBevel: false,
78
77
  mergeBlockedReasons: files.map((f) => `${f.path as string} is not approved`),
@@ -94,8 +93,6 @@ const externalApiKeyService = {
94
93
  t === 'bevel_key' ? { user: { id: 'user-A', email: 'e@x', name: 'N' }, tokenId: 'tok' } : null,
95
94
  } as never;
96
95
  const authService = { getUserById: async (id: string) => ({ id, email: 'e@x', name: 'N' }) } as never;
97
- /** A declined change request: no sha records what it proposed, so it has no head. */
98
- const DECLINED_CR = 21;
99
96
 
100
97
  const workspaceService = {
101
98
  getOrCreateForUser: async () => ({ id: WS }),
@@ -129,15 +126,12 @@ const workflowService = {
129
126
  releaseLock: async (ws: string, branch: string, path: string) => {
130
127
  calls.push(['releaseLock', ws, branch, path]);
131
128
  },
132
- // #21 is DECLINED: the service reads such a row from nothing (no sha records
133
- // what it proposed), so its detail carries no head — which is what the comment
134
- // tool has to anchor to. Every other number is an ordinary open request.
135
129
  getChangeRequestDetail: async (number: number) => ({
136
130
  number,
137
131
  url: `https://bevel.example.com/change-requests/${number}`,
138
- headSha: number === DECLINED_CR ? '' : 'head-1',
132
+ headSha: 'head-1',
139
133
  approvals: [],
140
- state: number === DECLINED_CR ? 'closed' : 'open',
134
+ state: 'open',
141
135
  title: 'T',
142
136
  base: 'main',
143
137
  }),
@@ -181,10 +175,6 @@ const workflowService = {
181
175
  }
182
176
  return { kind: 'deleted', branch: name, lastCommit: 'tip-1', discardedCommits: name === 'me/unmerged' ? 3 : 0 };
183
177
  },
184
- postComment: async (number: number, _user: unknown, input: { path?: string }) => {
185
- calls.push(['postComment', number, input.path]);
186
- return { id: 'c-1' };
187
- },
188
178
  // The history and syncing reads, answered from a fixed script.
189
179
  listChangesForFile: async (ws: string, path: string, limit?: number) => {
190
180
  calls.push(['listChangesForFile', ws, path, limit]);
@@ -373,51 +363,6 @@ describe('registerWorkflowTools', () => {
373
363
  expect(calls).toContainEqual(['commitChange', WS, 'user-A', { summary: 'fix typo', description: undefined }]);
374
364
  });
375
365
 
376
- // A change request's files are repository-relative; the Copy path form
377
- // carries the clone folder, which is dropped so the comment lands on the file.
378
- it('post_change_request_comment anchors a copied workspace path to the repository-relative file', async () => {
379
- const base = await start();
380
- for (const path of ['/knowledge-base/KnowledgeBase/Foo.md', 'knowledge-base/KnowledgeBase/Foo.md', 'KnowledgeBase/Foo.md']) {
381
- const res = await post(`${base}/api/agent/tools/post_change_request_comment`, writeTok(), { number: 3, body: 'hi', path });
382
- expect(res.status, path).toBe(200);
383
- }
384
- expect(calls.filter((c) => c[0] === 'postComment')).toEqual([
385
- ['postComment', 3, 'KnowledgeBase/Foo.md'],
386
- ['postComment', 3, 'KnowledgeBase/Foo.md'],
387
- ['postComment', 3, 'KnowledgeBase/Foo.md'],
388
- ]);
389
- });
390
-
391
- // An agent hands the change request's link to a person, so the tools that
392
- // act on one by number return its `{ number, url }` beside their own payload.
393
- it('post_change_request_comment returns the change request link', async () => {
394
- const base = await start();
395
- const comment = await post(`${base}/api/agent/tools/post_change_request_comment`, writeTok(), { number: 3, body: 'hi' });
396
- expect(comment.status).toBe(200);
397
- const commentBody = await comment.json();
398
- expect(commentBody).toMatchObject({
399
- comment: { id: 'c-1' },
400
- changeRequest: { number: 3, url: 'https://bevel.example.com/change-requests/3' },
401
- });
402
- // A configured address yields an absolute link, so no note rides along.
403
- expect(commentBody.changeRequest).not.toHaveProperty('urlNote');
404
- });
405
-
406
- // A comment anchors to a commit. A declined request records none — nothing
407
- // durable says what it proposed, so it is read from nothing and its detail
408
- // carries no head. Say so, rather than letting the service's `head sha is
409
- // required` come back as a 400 about an argument the caller never passed.
410
- it('post_change_request_comment says why a declined request takes no comment', async () => {
411
- const base = await start();
412
- const res = await post(`${base}/api/agent/tools/post_change_request_comment`, writeTok(), { number: DECLINED_CR, body: 'why was this turned down?' });
413
- expect(res.status).toBe(409);
414
- expect(((await res.json()) as { error: string }).error).toMatch(
415
- new RegExp(`#${DECLINED_CR} is closed and has no commit to anchor a comment to`),
416
- );
417
- // Nothing was written: the refusal happens before the service is asked.
418
- expect(calls.some((c) => c[0] === 'postComment')).toBe(false);
419
- });
420
-
421
366
  describe('delete_branch', () => {
422
367
  it('is on both catalogs, takes name, dryRun and discardUnmerged, and is a write tool', async () => {
423
368
  await start();
@@ -746,6 +691,37 @@ describe('registerWorkflowTools', () => {
746
691
  ]);
747
692
  });
748
693
 
694
+ it('names each user owner by name, or by email when the name is empty — never a blank string', async () => {
695
+ const base = await start();
696
+ opened = detailOf([
697
+ { path: 'Skills/Owned/SKILL.md', status: 'modified', additions: 1, deletions: 1, isBinary: false, sha: 'b5', rawUrl: 'r5' },
698
+ ]);
699
+ // What the resolver hands back for owners `roles.yaml` lists by email:
700
+ // an empty name. QA saw `users: [""]` here while `mergeBlockedReasons`
701
+ // named qa-user2@example.com.
702
+ opened.approvals = [
703
+ {
704
+ path: 'Skills/Owned/SKILL.md',
705
+ eligibleApprovers: {
706
+ roles: [],
707
+ users: [
708
+ { name: '', email: 'qa-user2@example.com' },
709
+ { name: 'Razvan Radulescu', email: 'razvan.radulescu@bevel.software' },
710
+ { name: ' ', email: 'qa-user3@example.com' },
711
+ { name: '', email: '' },
712
+ ],
713
+ },
714
+ approvedBy: [],
715
+ eligibilityResolved: true,
716
+ isApproved: false,
717
+ inMergeGate: true,
718
+ },
719
+ ];
720
+ const [entry] = (await open(base)).approvals as { users: string[] }[];
721
+ expect(entry.users).toEqual(['qa-user2@example.com', 'Razvan Radulescu', 'qa-user3@example.com']);
722
+ expect(entry.users.every((u) => u.trim() !== '')).toBe(true);
723
+ });
724
+
749
725
  it('surfaces the `change-request-conflicts` error as before', async () => {
750
726
  const base = await start();
751
727
  openFails = new ChangeRequestConflictsError('me/draft', 'target-company-state', ['KnowledgeBase/Clash.md']);
@@ -22,8 +22,8 @@
22
22
  * and an agent reading `state` should not have to read a second field to
23
23
  * learn whether the change landed.
24
24
  * - **One name per path.** GitHub names a pull-request file's path `filename`
25
- * and a review comment's `path`; mirroring that inconsistency was the point
26
- * while these tools wore GitHub's names, and is now just a trap. Every path
25
+ * and elsewhere `path`; mirroring that inconsistency was the point while
26
+ * these tools wore GitHub's names, and is now just a trap. Every path
27
27
  * in every answer is `path`, and a moved file's old name is `previousPath`,
28
28
  * as `open_change_request` names them.
29
29
  * - **A file's kind of change** is `change` — `added` / `changed` / `deleted`
@@ -37,9 +37,6 @@
37
37
  * - **`stale`, not `DISMISSED`.** Hexis's word for an approval a later push
38
38
  * invalidated is `isStale`; a review entry reports `stale: true` rather
39
39
  * than borrowing GitHub's review state.
40
- * - **A reply names its parent `parentId`**, which is the argument
41
- * `post_change_request_comment` takes to create one. Reading a comment and
42
- * replying to it use the same word for the same thing.
43
40
  *
44
41
  * The tools' INPUTS are untouched and stay GitHub's (`state`, `head`, `base`,
45
42
  * `author`, `per_page`, `page`, `include`): the ticket pins them by name, and
@@ -53,27 +50,26 @@
53
50
  * tools file does the IO and calls in here for every decision.
54
51
  */
55
52
 
56
- import type {
57
- ChangeRequest,
58
- ChangeRequestComment,
59
- ChangeRequestDetail,
60
- ChangeRequestState,
61
- ChangedFile,
62
- FileApproval,
53
+ import {
54
+ type ChangeRequest,
55
+ type ChangeRequestDetail,
56
+ type ChangeRequestState,
57
+ type ChangedFile,
58
+ type FileApproval,
63
59
  } from '@bevel-software/platform-shared';
64
60
  import { canonicalEmail, hashEmail } from '../../../shared/email-identity.js';
65
61
  import { changeKindOf, type ChangeKind } from './change-request-summary.js';
66
62
 
67
- /** A person on a change request, a review or a comment. */
63
+ /** A person on a change request or a review. */
68
64
  export interface CrUser {
69
65
  /** Hexis's author login — `user-<first 12 of the email hash>`, no raw email. */
70
66
  login: string;
71
67
  /** Display name, when Hexis knows one. */
72
68
  name?: string;
73
69
  /**
74
- * The person's address, for a comment author and an approver — the two
75
- * places the app's own change-request surfaces already show it, and what an
76
- * agent needs to address a reply to a reviewer. Never set on a change
70
+ * The person's address, for an approver — where the app's own
71
+ * change-request surfaces already show it, and what an agent needs to
72
+ * reach a reviewer. Never set on a change
77
73
  * request's `author`, which carries a hash-derived login only.
78
74
  */
79
75
  email?: string;
@@ -202,26 +198,6 @@ export interface CrReview {
202
198
  withheldFiles: number;
203
199
  }
204
200
 
205
- export interface CrComment {
206
- id: string;
207
- author: CrUser;
208
- body: string;
209
- /** Set on a file-level or inline comment. */
210
- path?: string;
211
- /** Set on an inline comment. */
212
- line?: number;
213
- /**
214
- * The comment this one replies to — the same `parentId`
215
- * `post_change_request_comment` takes to post the reply.
216
- */
217
- parentId?: string;
218
- /** The head the comment was anchored to. */
219
- headSha: string;
220
- createdAt: string;
221
- /** Present once edited. */
222
- updatedAt?: string;
223
- }
224
-
225
201
  /** One page of a list, and whether there is another. */
226
202
  export interface CrPage<T> {
227
203
  items: T[];
@@ -374,7 +350,7 @@ export function toCrSummary(
374
350
  };
375
351
  }
376
352
 
377
- /** A detail: the row, the author's description, and the gate as this caller sees it. */
353
+ /** A detail: the row, its description, and the gate as this caller sees it. */
378
354
  export function toCrDetail(
379
355
  detail: ChangeRequestDetail,
380
356
  counts: { readable: number; withheld: number },
@@ -388,7 +364,10 @@ export function toCrDetail(
388
364
  // read as a sha nobody can look up.
389
365
  ...(detail.headSha ? { headSha: detail.headSha } : {}),
390
366
  ...(detail.baseSha ? { baseSha: detail.baseSha } : {}),
391
- body: authorsDescription(detail.body),
367
+ // The body is the description and nothing else — Hexis writes none of
368
+ // its own facts into it, so there is nothing to cut and no path in it
369
+ // that the author did not choose to write about.
370
+ body: detail.body,
392
371
  mergeable: detail.mergeableInBevel,
393
372
  mergeBlockedReasons: blockers.visible,
394
373
  withheldMergeBlockedReasons: blockers.withheld,
@@ -396,50 +375,6 @@ export function toCrDetail(
396
375
  };
397
376
  }
398
377
 
399
- /**
400
- * The part of a change-request body its AUTHOR wrote.
401
- *
402
- * A Hexis body is part human and part machine: `openChangeRequest` appends an
403
- * `## Affected owners` block — one line per changed path, naming that path and
404
- * its eligible approvers — to whatever the author typed. Returning the body
405
- * verbatim NAMED every file of the request, including the ones this caller may
406
- * not read: Local Testing caught a GTM-team reader being handed
407
- * `- \`KnowledgeBase/Engineering/…\` — Admin` out of a request whose file list
408
- * had correctly withheld that very path.
409
- *
410
- * So the generated block goes, and NOTHING ELSE does. The first cut at this
411
- * copied the app's dialog, which drops everything from the first `##` heading
412
- * on; Razvan's review (2026-10-02) asked for the narrower cut, because an
413
- * author who writes their description in sections loses it from that heading
414
- * onwards and is never told. The generated block is appended LAST and begins
415
- * with a line that is exactly `## Affected owners`, so cutting at the LAST such
416
- * line removes the machinery and keeps every heading a person wrote. (An author
417
- * who writes that exact heading themselves loses their text from there — the
418
- * safe direction, and the only way this can err.)
419
- *
420
- * Hexis's OWN hidden markers go too — the `<!--hexis:…-->` / `<!--bevel:…-->`
421
- * comments older bodies carry identity in — and no other comment: an HTML
422
- * comment the author wrote is the author's prose, like the rest.
423
- *
424
- * Who must approve each file is NOT lost by this — it is what
425
- * `list_change_request_files` answers under `requiredApprovers`, per file and
426
- * access-filtered, which is where a caller should read it from anyway.
427
- *
428
- * Two things this deliberately does not do. It does not vary by caller: one
429
- * body for everyone is a body nobody has to reason about. And it does not touch
430
- * the author's own prose, which may mention any path they chose to write about —
431
- * that is a person's sentence, shown to every viewer in the app, not Hexis
432
- * naming a file it was asked to withhold.
433
- */
434
- export function authorsDescription(body: string): string {
435
- const lines = body.split('\n');
436
- const generated = lines.lastIndexOf('## Affected owners');
437
- return (generated === -1 ? lines : lines.slice(0, generated))
438
- .join('\n')
439
- .replace(/<!--\s*(?:hexis|bevel)[:/][\s\S]*?-->/g, '')
440
- .trim();
441
- }
442
-
443
378
  /**
444
379
  * What this caller may do with the request.
445
380
  *
@@ -599,8 +534,7 @@ export function loginFor(email: string): string {
599
534
  * readable approvals alone, for the same reason.
600
535
  *
601
536
  * Hexis records nothing about who DECLINED a request — a rejection closes it
602
- * and stores no reviewer — so no review entry can report one. A reviewer's
603
- * objection lives in a comment, which `list_change_request_comments` returns.
537
+ * and stores no reviewer — so no review entry can report one.
604
538
  */
605
539
  export function toCrReviews(
606
540
  approvals: FileApproval[],
@@ -641,72 +575,3 @@ export function toCrReviews(
641
575
  withheldReviews: all.length - reviews.length,
642
576
  };
643
577
  }
644
-
645
- /** A comment. Covers the file-anchored and the general ones — Hexis has one table. */
646
- export function toCrComment(comment: ChangeRequestComment): CrComment {
647
- return {
648
- id: comment.id,
649
- author: {
650
- login: loginFor(comment.author.email),
651
- name: comment.author.name,
652
- email: comment.author.email,
653
- },
654
- body: comment.body,
655
- ...(comment.path ? { path: comment.path } : {}),
656
- ...(comment.line !== undefined ? { line: comment.line } : {}),
657
- ...(comment.parentId ? { parentId: comment.parentId } : {}),
658
- headSha: comment.headSha,
659
- createdAt: comment.createdAt,
660
- ...(comment.updatedAt ? { updatedAt: comment.updatedAt } : {}),
661
- };
662
- }
663
-
664
- /**
665
- * The comments the caller may read, replies included in the answer only when
666
- * the comment they reply to is.
667
- *
668
- * A comment with no path is about the request as a whole, and a comment with
669
- * one is as readable as that path is NAMEABLE here (`mayShow`, so a comment
670
- * anchored to the new name of a file withheld for its old one goes with the
671
- * file rather than announcing it). A REPLY is neither, quite: it carries no
672
- * path of its own when it was posted without one, so judged on itself it is a
673
- * general comment — and `post_change_request_comment` takes `parentId` without
674
- * requiring `path`, so a reply to a comment on a withheld file was returned
675
- * with its body and a `parentId` naming a comment the caller cannot see.
676
- * Razvan's review (2026-10-02) asked for the rule the ticket states: a reply is
677
- * shown only when its parent is.
678
- *
679
- * So a comment is visible when its OWN path may be shown (if it has one) AND
680
- * its parent is visible, all the way up the chain. Both halves are needed:
681
- * inheriting only would show a reply naming a withheld file under a readable
682
- * parent, and checking only its own path would show it under a withheld one.
683
- *
684
- * Fail-closed at the edges. A `parentId` naming a comment that is not in this
685
- * request's list (deleted, or from somewhere this answer cannot see) is not
686
- * provably pathless, so the reply goes. A cycle — which the schema does not
687
- * permit and a corrupted row could still hold — is unresolvable, so it goes
688
- * too. Both are counted in the withheld total, never named.
689
- */
690
- export function visibleComments<T extends { id: string; path?: string; parentId?: string }>(
691
- comments: T[],
692
- mayShow: (path: string) => boolean,
693
- ): { visible: T[]; withheld: number } {
694
- const byId = new Map(comments.map((c) => [c.id, c]));
695
- /** Memoised per id, so a long thread costs one walk and not one per reply. */
696
- const verdicts = new Map<string, boolean>();
697
- const mayShowComment = (comment: T, seen: Set<string>): boolean => {
698
- const cached = verdicts.get(comment.id);
699
- if (cached !== undefined) return cached;
700
- if (seen.has(comment.id)) return false;
701
- seen.add(comment.id);
702
- let verdict = !comment.path || mayShow(comment.path);
703
- if (verdict && comment.parentId) {
704
- const parent = byId.get(comment.parentId);
705
- verdict = parent !== undefined && mayShowComment(parent, seen);
706
- }
707
- verdicts.set(comment.id, verdict);
708
- return verdict;
709
- };
710
- const visible = comments.filter((c) => mayShowComment(c, new Set()));
711
- return { visible, withheld: comments.length - visible.length };
712
- }