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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1188) hide show
  1. package/agent-guide/access-control.md +24 -8
  2. package/agent-guide/html-views.md +277 -15
  3. package/agent-guide/tool-manuals.md +1 -1
  4. package/dist/core/catalog-revision.d.ts +12 -1
  5. package/dist/core/catalog-revision.d.ts.map +1 -1
  6. package/dist/core/catalog-revision.js +23 -3
  7. package/dist/core/catalog-revision.js.map +1 -1
  8. package/dist/core/core-ports.d.ts +41 -0
  9. package/dist/core/core-ports.d.ts.map +1 -1
  10. package/dist/core/core-ports.js.map +1 -1
  11. package/dist/core/create-core-server.d.ts.map +1 -1
  12. package/dist/core/create-core-server.js +42 -10
  13. package/dist/core/create-core-server.js.map +1 -1
  14. package/dist/core/create-core-services.d.ts +22 -6
  15. package/dist/core/create-core-services.d.ts.map +1 -1
  16. package/dist/core/create-core-services.js +58 -17
  17. package/dist/core/create-core-services.js.map +1 -1
  18. package/dist/core/lifecycle.d.ts +24 -0
  19. package/dist/core/lifecycle.d.ts.map +1 -1
  20. package/dist/core/lifecycle.js +16 -2
  21. package/dist/core/lifecycle.js.map +1 -1
  22. package/dist/core/public-config.d.ts +10 -0
  23. package/dist/core/public-config.d.ts.map +1 -1
  24. package/dist/core/public-config.js +10 -0
  25. package/dist/core/public-config.js.map +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/modules/access/access-control.interface.d.ts +17 -9
  30. package/dist/modules/access/access-control.interface.d.ts.map +1 -1
  31. package/dist/modules/access/access-control.service.d.ts +13 -3
  32. package/dist/modules/access/access-control.service.d.ts.map +1 -1
  33. package/dist/modules/access/access-control.service.js +165 -77
  34. package/dist/modules/access/access-control.service.js.map +1 -1
  35. package/dist/modules/access/access-declarations.d.ts +1 -1
  36. package/dist/modules/access/access-declarations.d.ts.map +1 -1
  37. package/dist/modules/access/access-declarations.js +1 -1
  38. package/dist/modules/access/access-declarations.js.map +1 -1
  39. package/dist/modules/access/access-mutation.service.d.ts +28 -25
  40. package/dist/modules/access/access-mutation.service.d.ts.map +1 -1
  41. package/dist/modules/access/access-mutation.service.js +50 -53
  42. package/dist/modules/access/access-mutation.service.js.map +1 -1
  43. package/dist/modules/access/access-requests.contract.d.ts +1 -1
  44. package/dist/modules/access/access-requests.contract.d.ts.map +1 -1
  45. package/dist/modules/access/access-requests.routes.d.ts +3 -3
  46. package/dist/modules/access/access-requests.routes.d.ts.map +1 -1
  47. package/dist/modules/access/access-requests.routes.js +7 -7
  48. package/dist/modules/access/access-requests.routes.js.map +1 -1
  49. package/dist/modules/access/access-requests.service.d.ts +21 -20
  50. package/dist/modules/access/access-requests.service.d.ts.map +1 -1
  51. package/dist/modules/access/access-requests.service.js +22 -68
  52. package/dist/modules/access/access-requests.service.js.map +1 -1
  53. package/dist/modules/access/access-view.d.ts +1 -1
  54. package/dist/modules/access/access-view.d.ts.map +1 -1
  55. package/dist/modules/access/access-view.js +12 -11
  56. package/dist/modules/access/access-view.js.map +1 -1
  57. package/dist/modules/access/access.routes.d.ts +8 -7
  58. package/dist/modules/access/access.routes.d.ts.map +1 -1
  59. package/dist/modules/access/access.routes.js +38 -32
  60. package/dist/modules/access/access.routes.js.map +1 -1
  61. package/dist/modules/access/admin-locked-commit.d.ts +2 -2
  62. package/dist/modules/access/admin-locked-commit.d.ts.map +1 -1
  63. package/dist/modules/access/admin-locked-commit.js +1 -1
  64. package/dist/modules/access/admin-locked-commit.js.map +1 -1
  65. package/dist/modules/access/capability-registry.js +1 -1
  66. package/dist/modules/access/capability-registry.js.map +1 -1
  67. package/dist/modules/access/change-read-gate.d.ts +2 -2
  68. package/dist/modules/access/change-read-gate.d.ts.map +1 -1
  69. package/dist/modules/access/change-read-gate.js +1 -3
  70. package/dist/modules/access/change-read-gate.js.map +1 -1
  71. package/dist/modules/access/creator-access.d.ts +2 -2
  72. package/dist/modules/access/creator-access.d.ts.map +1 -1
  73. package/dist/modules/access/creator-access.js +2 -4
  74. package/dist/modules/access/creator-access.js.map +1 -1
  75. package/dist/modules/access/directory-sync-bot.d.ts +1 -1
  76. package/dist/modules/access/directory-sync-bot.d.ts.map +1 -1
  77. package/dist/modules/access/directory-sync-bot.js +1 -1
  78. package/dist/modules/access/directory-sync-bot.js.map +1 -1
  79. package/dist/modules/access/groups-admin.routes.d.ts +2 -2
  80. package/dist/modules/access/groups-admin.routes.d.ts.map +1 -1
  81. package/dist/modules/access/groups-admin.routes.js +6 -4
  82. package/dist/modules/access/groups-admin.routes.js.map +1 -1
  83. package/dist/modules/access/groups-admin.service.d.ts +45 -14
  84. package/dist/modules/access/groups-admin.service.d.ts.map +1 -1
  85. package/dist/modules/access/groups-admin.service.js +80 -39
  86. package/dist/modules/access/groups-admin.service.js.map +1 -1
  87. package/dist/modules/access/groups-edit.d.ts +1 -1
  88. package/dist/modules/access/groups-edit.d.ts.map +1 -1
  89. package/dist/modules/access/groups-edit.js +3 -3
  90. package/dist/modules/access/groups-edit.js.map +1 -1
  91. package/dist/modules/access/index.d.ts +17 -0
  92. package/dist/modules/access/index.d.ts.map +1 -0
  93. package/dist/modules/access/index.js +6 -0
  94. package/dist/modules/access/index.js.map +1 -0
  95. package/dist/modules/access/reference-scan.d.ts +116 -24
  96. package/dist/modules/access/reference-scan.d.ts.map +1 -1
  97. package/dist/modules/access/reference-scan.js +305 -44
  98. package/dist/modules/access/reference-scan.js.map +1 -1
  99. package/dist/modules/access/roles-admin.service.d.ts +18 -9
  100. package/dist/modules/access/roles-admin.service.d.ts.map +1 -1
  101. package/dist/modules/access/roles-admin.service.js +32 -26
  102. package/dist/modules/access/roles-admin.service.js.map +1 -1
  103. package/dist/modules/access/roles-edit.js +1 -1
  104. package/dist/modules/access/roles-edit.js.map +1 -1
  105. package/dist/modules/access/synced-groups-committer.d.ts +2 -2
  106. package/dist/modules/access/synced-groups-committer.d.ts.map +1 -1
  107. package/dist/modules/access/synced-groups-committer.js +2 -2
  108. package/dist/modules/access/synced-groups-committer.js.map +1 -1
  109. package/dist/modules/access/synced-groups-writer.js +2 -2
  110. package/dist/modules/access/synced-groups-writer.js.map +1 -1
  111. package/dist/modules/access/user-access-removal.service.d.ts +1 -1
  112. package/dist/modules/access/user-access-removal.service.d.ts.map +1 -1
  113. package/dist/modules/access/user-access-removal.service.js +2 -5
  114. package/dist/modules/access/user-access-removal.service.js.map +1 -1
  115. package/dist/modules/access-model/access-grammar.d.ts +35 -10
  116. package/dist/modules/access-model/access-grammar.d.ts.map +1 -1
  117. package/dist/modules/access-model/access-grammar.js +60 -20
  118. package/dist/modules/access-model/access-grammar.js.map +1 -1
  119. package/dist/modules/access-model/access-splice.d.ts +22 -18
  120. package/dist/modules/access-model/access-splice.d.ts.map +1 -1
  121. package/dist/modules/access-model/access-splice.js +20 -14
  122. package/dist/modules/access-model/access-splice.js.map +1 -1
  123. package/dist/modules/access-model/group-files.d.ts +1 -0
  124. package/dist/modules/access-model/group-files.d.ts.map +1 -1
  125. package/dist/modules/access-model/group-files.js +5 -1
  126. package/dist/modules/access-model/group-files.js.map +1 -1
  127. package/dist/modules/access-model/index.d.ts +20 -5
  128. package/dist/modules/access-model/index.d.ts.map +1 -1
  129. package/dist/modules/access-model/index.js +18 -5
  130. package/dist/modules/access-model/index.js.map +1 -1
  131. package/dist/modules/access-model/roles-yaml-guard.d.ts +1 -1
  132. package/dist/modules/access-model/roles-yaml-guard.d.ts.map +1 -1
  133. package/dist/modules/admin/admin-access.routes.d.ts +1 -1
  134. package/dist/modules/admin/admin-access.routes.d.ts.map +1 -1
  135. package/dist/modules/admin/admin-access.routes.js +1 -1
  136. package/dist/modules/admin/admin-access.routes.js.map +1 -1
  137. package/dist/modules/admin/admin-access.service.d.ts +2 -2
  138. package/dist/modules/admin/admin-access.service.d.ts.map +1 -1
  139. package/dist/modules/admin/index.d.ts +8 -0
  140. package/dist/modules/admin/index.d.ts.map +1 -0
  141. package/dist/modules/admin/index.js +2 -0
  142. package/dist/modules/admin/index.js.map +1 -0
  143. package/dist/modules/agent-guide/agent-guide.js +1 -1
  144. package/dist/modules/agent-guide/agent-guide.js.map +1 -1
  145. package/dist/modules/agent-guide/agent-guide.tools.d.ts +3 -3
  146. package/dist/modules/agent-guide/agent-guide.tools.d.ts.map +1 -1
  147. package/dist/modules/agent-guide/agent-guide.tools.js +15 -7
  148. package/dist/modules/agent-guide/agent-guide.tools.js.map +1 -1
  149. package/dist/modules/agent-guide/index.d.ts +1 -1
  150. package/dist/modules/agent-guide/index.d.ts.map +1 -1
  151. package/dist/modules/agent-guide/index.js +1 -1
  152. package/dist/modules/agent-guide/index.js.map +1 -1
  153. package/dist/modules/agent-instructions/compose.d.ts +3 -1
  154. package/dist/modules/agent-instructions/compose.d.ts.map +1 -1
  155. package/dist/modules/agent-instructions/compose.js +3 -1
  156. package/dist/modules/agent-instructions/compose.js.map +1 -1
  157. package/dist/modules/agent-instructions/read-preamble.d.ts +1 -1
  158. package/dist/modules/agent-instructions/read-preamble.d.ts.map +1 -1
  159. package/dist/modules/agent-instructions/shared-file-rules.d.ts +5 -1
  160. package/dist/modules/agent-instructions/shared-file-rules.d.ts.map +1 -1
  161. package/dist/modules/agent-instructions/shared-file-rules.js +16 -1
  162. package/dist/modules/agent-instructions/shared-file-rules.js.map +1 -1
  163. package/dist/modules/agent-scope/agent-scope.contract.d.ts +67 -0
  164. package/dist/modules/agent-scope/agent-scope.contract.d.ts.map +1 -0
  165. package/dist/modules/agent-scope/agent-scope.contract.js +27 -0
  166. package/dist/modules/agent-scope/agent-scope.contract.js.map +1 -0
  167. package/dist/modules/agent-scope/connection-scope.d.ts +111 -0
  168. package/dist/modules/agent-scope/connection-scope.d.ts.map +1 -0
  169. package/dist/modules/agent-scope/connection-scope.js +165 -0
  170. package/dist/modules/agent-scope/connection-scope.js.map +1 -0
  171. package/dist/modules/agent-scope/index.d.ts +3 -0
  172. package/dist/modules/agent-scope/index.d.ts.map +1 -0
  173. package/dist/modules/agent-scope/index.js +3 -0
  174. package/dist/modules/agent-scope/index.js.map +1 -0
  175. package/dist/modules/audit/agent-audit.service.d.ts +2 -2
  176. package/dist/modules/audit/agent-audit.service.d.ts.map +1 -1
  177. package/dist/modules/audit/agent-audit.service.js +3 -1
  178. package/dist/modules/audit/agent-audit.service.js.map +1 -1
  179. package/dist/modules/audit/agent-connection.routes.d.ts +1 -1
  180. package/dist/modules/audit/agent-connection.routes.d.ts.map +1 -1
  181. package/dist/modules/audit/agent-connection.routes.js +1 -1
  182. package/dist/modules/audit/agent-connection.routes.js.map +1 -1
  183. package/dist/modules/audit/agent-rest-audit.middleware.d.ts +1 -1
  184. package/dist/modules/audit/agent-rest-audit.middleware.d.ts.map +1 -1
  185. package/dist/modules/audit/agent-rest-audit.middleware.js +1 -1
  186. package/dist/modules/audit/agent-rest-audit.middleware.js.map +1 -1
  187. package/dist/modules/audit/audit.contract.d.ts +6 -0
  188. package/dist/modules/audit/audit.contract.d.ts.map +1 -1
  189. package/dist/modules/audit/audit.contract.js.map +1 -1
  190. package/dist/modules/audit/audit.routes.d.ts +3 -3
  191. package/dist/modules/audit/audit.routes.d.ts.map +1 -1
  192. package/dist/modules/audit/audit.routes.js +2 -2
  193. package/dist/modules/audit/audit.routes.js.map +1 -1
  194. package/dist/modules/auth/account-admission.d.ts +12 -0
  195. package/dist/modules/auth/account-admission.d.ts.map +1 -1
  196. package/dist/modules/auth/account-admission.js +15 -0
  197. package/dist/modules/auth/account-admission.js.map +1 -1
  198. package/dist/modules/auth/account-erasure.service.d.ts +3 -3
  199. package/dist/modules/auth/account-erasure.service.d.ts.map +1 -1
  200. package/dist/modules/auth/account-erasure.service.js +1 -5
  201. package/dist/modules/auth/account-erasure.service.js.map +1 -1
  202. package/dist/modules/auth/account-switch-lock.d.ts +1 -1
  203. package/dist/modules/auth/account-switch-lock.d.ts.map +1 -1
  204. package/dist/modules/auth/account-switch-lock.js +1 -1
  205. package/dist/modules/auth/account-switch-lock.js.map +1 -1
  206. package/dist/modules/auth/account.routes.d.ts +2 -2
  207. package/dist/modules/auth/account.routes.d.ts.map +1 -1
  208. package/dist/modules/auth/account.routes.js +1 -1
  209. package/dist/modules/auth/account.routes.js.map +1 -1
  210. package/dist/modules/auth/auth.middleware.d.ts +27 -1
  211. package/dist/modules/auth/auth.middleware.d.ts.map +1 -1
  212. package/dist/modules/auth/auth.middleware.js +42 -4
  213. package/dist/modules/auth/auth.middleware.js.map +1 -1
  214. package/dist/modules/auth/auth.routes.d.ts +13 -9
  215. package/dist/modules/auth/auth.routes.d.ts.map +1 -1
  216. package/dist/modules/auth/auth.routes.js +35 -29
  217. package/dist/modules/auth/auth.routes.js.map +1 -1
  218. package/dist/modules/auth/auth.service.d.ts +56 -7
  219. package/dist/modules/auth/auth.service.d.ts.map +1 -1
  220. package/dist/modules/auth/auth.service.js +131 -37
  221. package/dist/modules/auth/auth.service.js.map +1 -1
  222. package/dist/modules/auth/index.d.ts +3 -1
  223. package/dist/modules/auth/index.d.ts.map +1 -1
  224. package/dist/modules/auth/index.js +1 -1
  225. package/dist/modules/auth/index.js.map +1 -1
  226. package/dist/modules/auth/oidc-auth-provider.d.ts.map +1 -1
  227. package/dist/modules/auth/oidc-auth-provider.js +3 -10
  228. package/dist/modules/auth/oidc-auth-provider.js.map +1 -1
  229. package/dist/modules/code-mode/code-mode.tool.d.ts +1 -1
  230. package/dist/modules/code-mode/code-mode.tool.d.ts.map +1 -1
  231. package/dist/modules/connection-probe/connection-probe.service.d.ts +2 -2
  232. package/dist/modules/connection-probe/connection-probe.service.d.ts.map +1 -1
  233. package/dist/modules/connection-probe/connection-probe.service.js +1 -4
  234. package/dist/modules/connection-probe/connection-probe.service.js.map +1 -1
  235. package/dist/modules/database/core-schema.d.ts +175 -234
  236. package/dist/modules/database/core-schema.d.ts.map +1 -1
  237. package/dist/modules/database/core-schema.js +72 -35
  238. package/dist/modules/database/core-schema.js.map +1 -1
  239. package/dist/modules/database/index.d.ts +10 -0
  240. package/dist/modules/database/index.d.ts.map +1 -0
  241. package/dist/modules/database/index.js +4 -0
  242. package/dist/modules/database/index.js.map +1 -0
  243. package/dist/modules/database/migrate.d.ts.map +1 -1
  244. package/dist/modules/database/migrate.js +78 -3
  245. package/dist/modules/database/migrate.js.map +1 -1
  246. package/dist/modules/declared-variables/declared-variables.routes.d.ts +10 -3
  247. package/dist/modules/declared-variables/declared-variables.routes.d.ts.map +1 -1
  248. package/dist/modules/declared-variables/declared-variables.routes.js +13 -2
  249. package/dist/modules/declared-variables/declared-variables.routes.js.map +1 -1
  250. package/dist/modules/diff/diff.routes.d.ts +3 -3
  251. package/dist/modules/diff/diff.routes.d.ts.map +1 -1
  252. package/dist/modules/diff/diff.routes.js +3 -3
  253. package/dist/modules/diff/diff.routes.js.map +1 -1
  254. package/dist/modules/diff/diff.service.d.ts +2 -2
  255. package/dist/modules/diff/diff.service.d.ts.map +1 -1
  256. package/dist/modules/diff/index.d.ts +7 -0
  257. package/dist/modules/diff/index.d.ts.map +1 -0
  258. package/dist/modules/diff/index.js +2 -0
  259. package/dist/modules/diff/index.js.map +1 -0
  260. package/dist/modules/embed/account-link.service.d.ts +1 -1
  261. package/dist/modules/embed/account-link.service.d.ts.map +1 -1
  262. package/dist/modules/embed/account-link.service.js +1 -1
  263. package/dist/modules/embed/account-link.service.js.map +1 -1
  264. package/dist/modules/embed/embed.routes.d.ts +1 -1
  265. package/dist/modules/embed/embed.routes.d.ts.map +1 -1
  266. package/dist/modules/embed/embed.routes.js +2 -2
  267. package/dist/modules/embed/embed.routes.js.map +1 -1
  268. package/dist/modules/embed/embed.service.d.ts +1 -1
  269. package/dist/modules/embed/embed.service.d.ts.map +1 -1
  270. package/dist/modules/embed/embed.tools.d.ts +4 -4
  271. package/dist/modules/embed/embed.tools.d.ts.map +1 -1
  272. package/dist/modules/embed/embed.tools.js +8 -5
  273. package/dist/modules/embed/embed.tools.js.map +1 -1
  274. package/dist/modules/github-app/github-app.connection.d.ts +1 -1
  275. package/dist/modules/github-app/github-app.connection.d.ts.map +1 -1
  276. package/dist/modules/github-app/github-app.routes.d.ts +3 -3
  277. package/dist/modules/github-app/github-app.routes.d.ts.map +1 -1
  278. package/dist/modules/github-app/github-app.routes.js +1 -1
  279. package/dist/modules/github-app/github-app.routes.js.map +1 -1
  280. package/dist/modules/kb-fs/index.d.ts +12 -0
  281. package/dist/modules/kb-fs/index.d.ts.map +1 -1
  282. package/dist/modules/kb-fs/index.js +11 -0
  283. package/dist/modules/kb-fs/index.js.map +1 -1
  284. package/dist/modules/kb-fs/locking-filesystem.d.ts +1 -1
  285. package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
  286. package/dist/modules/kb-fs/locking-filesystem.js +7 -1
  287. package/dist/modules/kb-fs/locking-filesystem.js.map +1 -1
  288. package/dist/modules/kb-fs/repo-path.d.ts +26 -6
  289. package/dist/modules/kb-fs/repo-path.d.ts.map +1 -1
  290. package/dist/modules/kb-fs/repo-path.js +22 -7
  291. package/dist/modules/kb-fs/repo-path.js.map +1 -1
  292. package/dist/modules/kb-fs/tmp-ref.d.ts +36 -0
  293. package/dist/modules/kb-fs/tmp-ref.d.ts.map +1 -0
  294. package/dist/modules/kb-fs/tmp-ref.js +76 -0
  295. package/dist/modules/kb-fs/tmp-ref.js.map +1 -0
  296. package/dist/modules/kb-sync/kb-sync.routes.d.ts +1 -1
  297. package/dist/modules/kb-sync/kb-sync.routes.d.ts.map +1 -1
  298. package/dist/modules/kb-sync/kb-sync.routes.js +2 -2
  299. package/dist/modules/kb-sync/kb-sync.routes.js.map +1 -1
  300. package/dist/modules/kb-sync/kb-sync.service.js +1 -1
  301. package/dist/modules/kb-sync/kb-sync.service.js.map +1 -1
  302. package/dist/modules/kb-sync/sync-auth.js +1 -1
  303. package/dist/modules/kb-sync/sync-auth.js.map +1 -1
  304. package/dist/modules/kb-sync/sync-payload.js +1 -1
  305. package/dist/modules/kb-sync/sync-payload.js.map +1 -1
  306. package/dist/modules/marketplace/git-http.routes.d.ts +1 -1
  307. package/dist/modules/marketplace/git-http.routes.d.ts.map +1 -1
  308. package/dist/modules/marketplace/git-http.routes.js +1 -1
  309. package/dist/modules/marketplace/git-http.routes.js.map +1 -1
  310. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.d.ts +1 -1
  311. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.d.ts.map +1 -1
  312. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.js +1 -1
  313. package/dist/modules/marketplace/github-facade/github-facade-admin.routes.js.map +1 -1
  314. package/dist/modules/marketplace/github-facade/github-facade-codes.store.d.ts +1 -1
  315. package/dist/modules/marketplace/github-facade/github-facade-codes.store.d.ts.map +1 -1
  316. package/dist/modules/marketplace/github-facade/github-facade-codes.store.js +1 -1
  317. package/dist/modules/marketplace/github-facade/github-facade-codes.store.js.map +1 -1
  318. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.d.ts +1 -1
  319. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.d.ts.map +1 -1
  320. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.js +1 -1
  321. package/dist/modules/marketplace/github-facade/github-facade-credentials.service.js.map +1 -1
  322. package/dist/modules/marketplace/github-facade/github-facade.routes.d.ts +2 -2
  323. package/dist/modules/marketplace/github-facade/github-facade.routes.d.ts.map +1 -1
  324. package/dist/modules/marketplace/github-facade/github-facade.routes.js +2 -2
  325. package/dist/modules/marketplace/github-facade/github-facade.routes.js.map +1 -1
  326. package/dist/modules/marketplace/github-facade/github-facade.service.d.ts +2 -2
  327. package/dist/modules/marketplace/github-facade/github-facade.service.d.ts.map +1 -1
  328. package/dist/modules/marketplace/github-facade/github-facade.service.js +1 -1
  329. package/dist/modules/marketplace/github-facade/github-facade.service.js.map +1 -1
  330. package/dist/modules/marketplace/marketplace-repo.service.d.ts +1 -1
  331. package/dist/modules/marketplace/marketplace-repo.service.d.ts.map +1 -1
  332. package/dist/modules/marketplace/marketplace-repo.service.js +1 -1
  333. package/dist/modules/mcp/index.d.ts +8 -0
  334. package/dist/modules/mcp/index.d.ts.map +1 -0
  335. package/dist/modules/mcp/index.js +7 -0
  336. package/dist/modules/mcp/index.js.map +1 -0
  337. package/dist/modules/mcp/mcp-auth.middleware.d.ts +11 -5
  338. package/dist/modules/mcp/mcp-auth.middleware.d.ts.map +1 -1
  339. package/dist/modules/mcp/mcp-auth.middleware.js +18 -5
  340. package/dist/modules/mcp/mcp-auth.middleware.js.map +1 -1
  341. package/dist/modules/mcp/mcp.routes.d.ts +9 -5
  342. package/dist/modules/mcp/mcp.routes.d.ts.map +1 -1
  343. package/dist/modules/mcp/mcp.routes.js +41 -6
  344. package/dist/modules/mcp/mcp.routes.js.map +1 -1
  345. package/dist/modules/mcp/mcp.service.d.ts +25 -4
  346. package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
  347. package/dist/modules/mcp/mcp.service.js +84 -19
  348. package/dist/modules/mcp/mcp.service.js.map +1 -1
  349. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts +25 -2
  350. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts.map +1 -1
  351. package/dist/modules/mcp/oauth/bevel-oauth-provider.js +46 -11
  352. package/dist/modules/mcp/oauth/bevel-oauth-provider.js.map +1 -1
  353. package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts +10 -1
  354. package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts.map +1 -1
  355. package/dist/modules/mcp/oauth/oauth-consent.routes.js +35 -2
  356. package/dist/modules/mcp/oauth/oauth-consent.routes.js.map +1 -1
  357. package/dist/modules/onboarding/onboarding.routes.d.ts +1 -1
  358. package/dist/modules/onboarding/onboarding.routes.d.ts.map +1 -1
  359. package/dist/modules/onboarding/onboarding.routes.js +1 -1
  360. package/dist/modules/onboarding/onboarding.routes.js.map +1 -1
  361. package/dist/modules/onboarding/starter-pack.service.d.ts +4 -5
  362. package/dist/modules/onboarding/starter-pack.service.d.ts.map +1 -1
  363. package/dist/modules/onboarding/starter-pack.service.js +2 -2
  364. package/dist/modules/onboarding/starter-pack.service.js.map +1 -1
  365. package/dist/modules/plugins/compile/compile-marketplace.d.ts +1 -1
  366. package/dist/modules/plugins/compile/compile-marketplace.d.ts.map +1 -1
  367. package/dist/modules/plugins/compile/compile-marketplace.js +1 -1
  368. package/dist/modules/plugins/compile/compile-marketplace.js.map +1 -1
  369. package/dist/modules/plugins/compile/marketplace-compiler.service.d.ts +3 -3
  370. package/dist/modules/plugins/compile/marketplace-compiler.service.d.ts.map +1 -1
  371. package/dist/modules/plugins/discovery/bundle-dialect/registry.d.ts +1 -1
  372. package/dist/modules/plugins/discovery/bundle-dialect/registry.d.ts.map +1 -1
  373. package/dist/modules/plugins/discovery/bundle-dialect/registry.js +1 -1
  374. package/dist/modules/plugins/discovery/bundle-dialect/registry.js.map +1 -1
  375. package/dist/modules/plugins/index.d.ts +2 -1
  376. package/dist/modules/plugins/index.d.ts.map +1 -1
  377. package/dist/modules/plugins/index.js +2 -0
  378. package/dist/modules/plugins/index.js.map +1 -1
  379. package/dist/modules/plugins/join-proposals.d.ts +2 -2
  380. package/dist/modules/plugins/join-proposals.d.ts.map +1 -1
  381. package/dist/modules/plugins/join-proposals.js +1 -1
  382. package/dist/modules/plugins/join-proposals.js.map +1 -1
  383. package/dist/modules/plugins/join-request-jobs.service.d.ts +1 -1
  384. package/dist/modules/plugins/join-request-jobs.service.d.ts.map +1 -1
  385. package/dist/modules/plugins/join-request-jobs.service.js +2 -2
  386. package/dist/modules/plugins/join-request-jobs.service.js.map +1 -1
  387. package/dist/modules/plugins/join-request-records.store.d.ts +1 -1
  388. package/dist/modules/plugins/join-request-records.store.d.ts.map +1 -1
  389. package/dist/modules/plugins/join-request-records.store.js +1 -1
  390. package/dist/modules/plugins/join-request-records.store.js.map +1 -1
  391. package/dist/modules/plugins/join-requests.service.d.ts +3 -3
  392. package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
  393. package/dist/modules/plugins/join-requests.service.js +1 -1
  394. package/dist/modules/plugins/join-requests.service.js.map +1 -1
  395. package/dist/modules/plugins/plugin-links.d.ts +21 -5
  396. package/dist/modules/plugins/plugin-links.d.ts.map +1 -1
  397. package/dist/modules/plugins/plugin-links.js +1 -1
  398. package/dist/modules/plugins/plugin-links.js.map +1 -1
  399. package/dist/modules/plugins/plugin-links.service.d.ts +8 -5
  400. package/dist/modules/plugins/plugin-links.service.d.ts.map +1 -1
  401. package/dist/modules/plugins/plugin-links.service.js +8 -6
  402. package/dist/modules/plugins/plugin-links.service.js.map +1 -1
  403. package/dist/modules/plugins/plugin-provision.service.d.ts +2 -2
  404. package/dist/modules/plugins/plugin-provision.service.d.ts.map +1 -1
  405. package/dist/modules/plugins/plugin-provision.service.js +2 -3
  406. package/dist/modules/plugins/plugin-provision.service.js.map +1 -1
  407. package/dist/modules/plugins/plugin-rename.service.d.ts +2 -2
  408. package/dist/modules/plugins/plugin-rename.service.d.ts.map +1 -1
  409. package/dist/modules/plugins/plugin-rename.service.js +1 -1
  410. package/dist/modules/plugins/plugin-rename.service.js.map +1 -1
  411. package/dist/modules/plugins/plugins.contract.d.ts +1 -1
  412. package/dist/modules/plugins/plugins.contract.d.ts.map +1 -1
  413. package/dist/modules/plugins/plugins.routes.d.ts +7 -3
  414. package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
  415. package/dist/modules/plugins/plugins.routes.js +35 -8
  416. package/dist/modules/plugins/plugins.routes.js.map +1 -1
  417. package/dist/modules/plugins/plugins.service.d.ts +4 -4
  418. package/dist/modules/plugins/plugins.service.d.ts.map +1 -1
  419. package/dist/modules/plugins/plugins.service.js +1 -1
  420. package/dist/modules/plugins/plugins.service.js.map +1 -1
  421. package/dist/modules/plugins/plugins.tools.d.ts +1 -1
  422. package/dist/modules/plugins/plugins.tools.d.ts.map +1 -1
  423. package/dist/modules/plugins/plugins.tools.js +3 -3
  424. package/dist/modules/plugins/plugins.tools.js.map +1 -1
  425. package/dist/modules/plugins/teams.routes.d.ts +3 -3
  426. package/dist/modules/plugins/teams.routes.d.ts.map +1 -1
  427. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts +1 -1
  428. package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts.map +1 -1
  429. package/dist/modules/secrets-vault/db-secrets-vault.service.js +1 -1
  430. package/dist/modules/secrets-vault/db-secrets-vault.service.js.map +1 -1
  431. package/dist/modules/secrets-vault/index.d.ts +1 -0
  432. package/dist/modules/secrets-vault/index.d.ts.map +1 -1
  433. package/dist/modules/secrets-vault/index.js +2 -0
  434. package/dist/modules/secrets-vault/index.js.map +1 -1
  435. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +13 -4
  436. package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -1
  437. package/dist/modules/secrets-vault/secrets-vault.routes.js +16 -4
  438. package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
  439. package/dist/modules/settings/connection-check.js +1 -1
  440. package/dist/modules/settings/connection-check.js.map +1 -1
  441. package/dist/modules/settings/deployment-settings.service.d.ts +7 -1
  442. package/dist/modules/settings/deployment-settings.service.d.ts.map +1 -1
  443. package/dist/modules/settings/deployment-settings.service.js +45 -3
  444. package/dist/modules/settings/deployment-settings.service.js.map +1 -1
  445. package/dist/modules/settings/git-root-folders.js +1 -1
  446. package/dist/modules/settings/git-root-folders.js.map +1 -1
  447. package/dist/modules/settings/index.d.ts +13 -0
  448. package/dist/modules/settings/index.d.ts.map +1 -0
  449. package/dist/modules/settings/index.js +3 -0
  450. package/dist/modules/settings/index.js.map +1 -0
  451. package/dist/modules/settings/setup.routes.d.ts +3 -3
  452. package/dist/modules/settings/setup.routes.d.ts.map +1 -1
  453. package/dist/modules/settings/setup.routes.js +2 -2
  454. package/dist/modules/settings/setup.routes.js.map +1 -1
  455. package/dist/modules/skills/allowed-tools-check.d.ts +2 -2
  456. package/dist/modules/skills/allowed-tools-check.d.ts.map +1 -1
  457. package/dist/modules/skills/allowed-tools-check.js +1 -1
  458. package/dist/modules/skills/allowed-tools-check.js.map +1 -1
  459. package/dist/modules/skills/index.d.ts +4 -3
  460. package/dist/modules/skills/index.d.ts.map +1 -1
  461. package/dist/modules/skills/index.js +0 -2
  462. package/dist/modules/skills/index.js.map +1 -1
  463. package/dist/modules/skills/pending-skills.service.d.ts +3 -3
  464. package/dist/modules/skills/pending-skills.service.d.ts.map +1 -1
  465. package/dist/modules/skills/pending-skills.service.js.map +1 -1
  466. package/dist/modules/skills/skill-access-requests.routes.d.ts +5 -5
  467. package/dist/modules/skills/skill-access-requests.routes.d.ts.map +1 -1
  468. package/dist/modules/skills/skill-access-requests.routes.js +6 -13
  469. package/dist/modules/skills/skill-access-requests.routes.js.map +1 -1
  470. package/dist/modules/skills/skills.contract.d.ts +16 -0
  471. package/dist/modules/skills/skills.contract.d.ts.map +1 -1
  472. package/dist/modules/skills/skills.routes.d.ts +1 -1
  473. package/dist/modules/skills/skills.routes.d.ts.map +1 -1
  474. package/dist/modules/skills/skills.routes.js +1 -1
  475. package/dist/modules/skills/skills.routes.js.map +1 -1
  476. package/dist/modules/skills/skills.service.d.ts +2 -2
  477. package/dist/modules/skills/skills.service.d.ts.map +1 -1
  478. package/dist/modules/skills/skills.service.js +6 -1
  479. package/dist/modules/skills/skills.service.js.map +1 -1
  480. package/dist/modules/skills/skills.tools.d.ts +3 -3
  481. package/dist/modules/skills/skills.tools.d.ts.map +1 -1
  482. package/dist/modules/skills/skills.tools.js +27 -19
  483. package/dist/modules/skills/skills.tools.js.map +1 -1
  484. package/dist/modules/tool-auth/connection-key-rejection.js +1 -1
  485. package/dist/modules/tool-auth/connection-key-rejection.js.map +1 -1
  486. package/dist/modules/tool-auth/connection-keys-admin.routes.d.ts +2 -2
  487. package/dist/modules/tool-auth/connection-keys-admin.routes.d.ts.map +1 -1
  488. package/dist/modules/tool-auth/connection-keys-admin.routes.js +1 -1
  489. package/dist/modules/tool-auth/connection-keys-admin.routes.js.map +1 -1
  490. package/dist/modules/tool-auth/external-api-key.interface.d.ts +11 -0
  491. package/dist/modules/tool-auth/external-api-key.interface.d.ts.map +1 -1
  492. package/dist/modules/tool-auth/external-api-key.interface.js.map +1 -1
  493. package/dist/modules/tool-auth/external-api-key.service.d.ts +2 -1
  494. package/dist/modules/tool-auth/external-api-key.service.d.ts.map +1 -1
  495. package/dist/modules/tool-auth/external-api-key.service.js +5 -2
  496. package/dist/modules/tool-auth/external-api-key.service.js.map +1 -1
  497. package/dist/modules/tool-auth/index.d.ts +15 -0
  498. package/dist/modules/tool-auth/index.d.ts.map +1 -0
  499. package/dist/modules/tool-auth/index.js +11 -0
  500. package/dist/modules/tool-auth/index.js.map +1 -0
  501. package/dist/modules/tool-auth/internal-token.service.d.ts +9 -0
  502. package/dist/modules/tool-auth/internal-token.service.d.ts.map +1 -1
  503. package/dist/modules/tool-auth/internal-token.service.js +1 -0
  504. package/dist/modules/tool-auth/internal-token.service.js.map +1 -1
  505. package/dist/modules/tool-auth/tool-auth.middleware.d.ts +29 -5
  506. package/dist/modules/tool-auth/tool-auth.middleware.d.ts.map +1 -1
  507. package/dist/modules/tool-auth/tool-auth.middleware.js +33 -7
  508. package/dist/modules/tool-auth/tool-auth.middleware.js.map +1 -1
  509. package/dist/modules/tool-helpers/default-branch-write.d.ts +1 -1
  510. package/dist/modules/tool-helpers/default-branch-write.d.ts.map +1 -1
  511. package/dist/modules/tool-helpers/index.d.ts +4 -1
  512. package/dist/modules/tool-helpers/index.d.ts.map +1 -1
  513. package/dist/modules/tool-helpers/index.js +3 -0
  514. package/dist/modules/tool-helpers/index.js.map +1 -1
  515. package/dist/modules/tool-helpers/route-argument-check.js +1 -1
  516. package/dist/modules/tool-helpers/route-argument-check.js.map +1 -1
  517. package/dist/modules/tool-helpers/route-tool-schemas.d.ts +1 -1
  518. package/dist/modules/tool-helpers/route-tool-schemas.d.ts.map +1 -1
  519. package/dist/modules/tool-helpers/tool-context.d.ts +12 -6
  520. package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
  521. package/dist/modules/tool-helpers/tool-context.js +5 -3
  522. package/dist/modules/tool-helpers/tool-context.js.map +1 -1
  523. package/dist/modules/tool-helpers/tool-def.d.ts +4 -2
  524. package/dist/modules/tool-helpers/tool-def.d.ts.map +1 -1
  525. package/dist/modules/tool-helpers/tool-def.js +3 -1
  526. package/dist/modules/tool-helpers/tool-def.js.map +1 -1
  527. package/dist/modules/tool-helpers/tool-handler.d.ts +17 -2
  528. package/dist/modules/tool-helpers/tool-handler.d.ts.map +1 -1
  529. package/dist/modules/tool-helpers/tool-handler.js +21 -2
  530. package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
  531. package/dist/modules/tool-helpers/tool.contract.d.ts +12 -2
  532. package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
  533. package/dist/modules/tool-helpers/tool.contract.js.map +1 -1
  534. package/dist/modules/tool-helpers/validate-token.d.ts +3 -2
  535. package/dist/modules/tool-helpers/validate-token.d.ts.map +1 -1
  536. package/dist/modules/tool-helpers/validate-token.js +2 -2
  537. package/dist/modules/tool-helpers/validate-token.js.map +1 -1
  538. package/dist/modules/tool-manuals/index.d.ts +8 -3
  539. package/dist/modules/tool-manuals/index.d.ts.map +1 -1
  540. package/dist/modules/tool-manuals/index.js +4 -2
  541. package/dist/modules/tool-manuals/index.js.map +1 -1
  542. package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts +2 -2
  543. package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts.map +1 -1
  544. package/dist/modules/tool-manuals/pending-tools.service.d.ts +2 -2
  545. package/dist/modules/tool-manuals/pending-tools.service.d.ts.map +1 -1
  546. package/dist/modules/tool-manuals/tool-delete.service.d.ts +5 -6
  547. package/dist/modules/tool-manuals/tool-delete.service.d.ts.map +1 -1
  548. package/dist/modules/tool-manuals/tool-delete.service.js.map +1 -1
  549. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts +19 -6
  550. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts.map +1 -1
  551. package/dist/modules/tool-manuals/tool-manuals.routes.d.ts +12 -6
  552. package/dist/modules/tool-manuals/tool-manuals.routes.d.ts.map +1 -1
  553. package/dist/modules/tool-manuals/tool-manuals.routes.js +43 -6
  554. package/dist/modules/tool-manuals/tool-manuals.routes.js.map +1 -1
  555. package/dist/modules/tool-manuals/tool-manuals.service.d.ts +16 -9
  556. package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
  557. package/dist/modules/tool-manuals/tool-manuals.service.js +23 -15
  558. package/dist/modules/tool-manuals/tool-manuals.service.js.map +1 -1
  559. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts +3 -3
  560. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
  561. package/dist/modules/tool-manuals/tool-manuals.tools.js +26 -12
  562. package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
  563. package/dist/modules/tool-registry/description-length.js +2 -2
  564. package/dist/modules/tool-registry/description-length.js.map +1 -1
  565. package/dist/modules/tool-registry/index.d.ts +8 -0
  566. package/dist/modules/tool-registry/index.d.ts.map +1 -0
  567. package/dist/modules/tool-registry/index.js +8 -0
  568. package/dist/modules/tool-registry/index.js.map +1 -0
  569. package/dist/modules/tool-registry/manual.routes.d.ts +44 -2
  570. package/dist/modules/tool-registry/manual.routes.d.ts.map +1 -1
  571. package/dist/modules/tool-registry/manual.routes.js +38 -11
  572. package/dist/modules/tool-registry/manual.routes.js.map +1 -1
  573. package/dist/modules/tool-registry/read-only-hints.contract.d.ts +52 -0
  574. package/dist/modules/tool-registry/read-only-hints.contract.d.ts.map +1 -0
  575. package/dist/modules/tool-registry/read-only-hints.contract.js +2 -0
  576. package/dist/modules/tool-registry/read-only-hints.contract.js.map +1 -0
  577. package/dist/modules/tool-registry/read-only-hints.d.ts +89 -0
  578. package/dist/modules/tool-registry/read-only-hints.d.ts.map +1 -0
  579. package/dist/modules/tool-registry/read-only-hints.js +212 -0
  580. package/dist/modules/tool-registry/read-only-hints.js.map +1 -0
  581. package/dist/modules/tool-registry/tool.contract.d.ts +15 -0
  582. package/dist/modules/tool-registry/tool.contract.d.ts.map +1 -1
  583. package/dist/modules/tool-registry/tool.contract.js +10 -1
  584. package/dist/modules/tool-registry/tool.contract.js.map +1 -1
  585. package/dist/modules/update-check/update-check.routes.d.ts +2 -2
  586. package/dist/modules/update-check/update-check.routes.d.ts.map +1 -1
  587. package/dist/modules/update-check/update-check.routes.js +1 -1
  588. package/dist/modules/update-check/update-check.routes.js.map +1 -1
  589. package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts +9 -104
  590. package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts.map +1 -1
  591. package/dist/modules/workflow/agent-tools/change-request-read-shape.js +8 -118
  592. package/dist/modules/workflow/agent-tools/change-request-read-shape.js.map +1 -1
  593. package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts +16 -17
  594. package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts.map +1 -1
  595. package/dist/modules/workflow/agent-tools/change-request-read.tools.js +19 -86
  596. package/dist/modules/workflow/agent-tools/change-request-read.tools.js.map +1 -1
  597. package/dist/modules/workflow/agent-tools/change-request-summary.d.ts +5 -1
  598. package/dist/modules/workflow/agent-tools/change-request-summary.d.ts.map +1 -1
  599. package/dist/modules/workflow/agent-tools/change-request-summary.js +10 -1
  600. package/dist/modules/workflow/agent-tools/change-request-summary.js.map +1 -1
  601. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts +7 -5
  602. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -1
  603. package/dist/modules/workflow/agent-tools/workflow.tools.js +60 -77
  604. package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -1
  605. package/dist/modules/workflow/change-request-hooks.d.ts +1 -1
  606. package/dist/modules/workflow/event-bus.d.ts.map +1 -1
  607. package/dist/modules/workflow/event-bus.js +3 -1
  608. package/dist/modules/workflow/event-bus.js.map +1 -1
  609. package/dist/modules/workflow/events-delivery.d.ts +120 -0
  610. package/dist/modules/workflow/events-delivery.d.ts.map +1 -0
  611. package/dist/modules/workflow/events-delivery.js +202 -0
  612. package/dist/modules/workflow/events-delivery.js.map +1 -0
  613. package/dist/modules/workflow/events.routes.d.ts +16 -7
  614. package/dist/modules/workflow/events.routes.d.ts.map +1 -1
  615. package/dist/modules/workflow/events.routes.js +23 -4
  616. package/dist/modules/workflow/events.routes.js.map +1 -1
  617. package/dist/modules/workflow/file-lock.service.d.ts +1 -1
  618. package/dist/modules/workflow/file-lock.service.d.ts.map +1 -1
  619. package/dist/modules/workflow/file-lock.service.js +1 -1
  620. package/dist/modules/workflow/file-lock.service.js.map +1 -1
  621. package/dist/modules/workflow/git/git.service.d.ts +4 -4
  622. package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
  623. package/dist/modules/workflow/git/git.service.js +23 -41
  624. package/dist/modules/workflow/git/git.service.js.map +1 -1
  625. package/dist/modules/workflow/git/node-git-runner.js +1 -1
  626. package/dist/modules/workflow/git/node-git-runner.js.map +1 -1
  627. package/dist/modules/workflow/git/pull-request.service.d.ts +6 -7
  628. package/dist/modules/workflow/git/pull-request.service.d.ts.map +1 -1
  629. package/dist/modules/workflow/git/pull-request.service.js +40 -33
  630. package/dist/modules/workflow/git/pull-request.service.js.map +1 -1
  631. package/dist/modules/workflow/index.d.ts +14 -2
  632. package/dist/modules/workflow/index.d.ts.map +1 -1
  633. package/dist/modules/workflow/index.js +11 -2
  634. package/dist/modules/workflow/index.js.map +1 -1
  635. package/dist/modules/workflow/pending-commits.service.d.ts +1 -1
  636. package/dist/modules/workflow/pending-commits.service.d.ts.map +1 -1
  637. package/dist/modules/workflow/pending-commits.service.js +1 -1
  638. package/dist/modules/workflow/pending-commits.service.js.map +1 -1
  639. package/dist/modules/workflow/read-on-branch.d.ts +1 -1
  640. package/dist/modules/workflow/read-on-branch.d.ts.map +1 -1
  641. package/dist/modules/workflow/recovery-bot.d.ts +1 -1
  642. package/dist/modules/workflow/recovery-bot.d.ts.map +1 -1
  643. package/dist/modules/workflow/recovery-bot.js +1 -1
  644. package/dist/modules/workflow/recovery-bot.js.map +1 -1
  645. package/dist/modules/workflow/review-workflow/approval-lock.d.ts +1 -1
  646. package/dist/modules/workflow/review-workflow/approval-lock.d.ts.map +1 -1
  647. package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts +4 -20
  648. package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts.map +1 -1
  649. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts +4 -8
  650. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +1 -1
  651. package/dist/modules/workflow/review-workflow/review-workflow.service.js +3 -138
  652. package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +1 -1
  653. package/dist/modules/workflow/workflow.routes.d.ts +5 -5
  654. package/dist/modules/workflow/workflow.routes.d.ts.map +1 -1
  655. package/dist/modules/workflow/workflow.routes.js +42 -94
  656. package/dist/modules/workflow/workflow.routes.js.map +1 -1
  657. package/dist/modules/workflow/workflow.service.d.ts +41 -50
  658. package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
  659. package/dist/modules/workflow/workflow.service.js +221 -154
  660. package/dist/modules/workflow/workflow.service.js.map +1 -1
  661. package/dist/modules/workspace/agent-access.gate.d.ts +3 -3
  662. package/dist/modules/workspace/agent-access.gate.d.ts.map +1 -1
  663. package/dist/modules/workspace/agent-download.builder.d.ts +1 -1
  664. package/dist/modules/workspace/agent-download.builder.d.ts.map +1 -1
  665. package/dist/modules/workspace/agent-download.builder.js +1 -1
  666. package/dist/modules/workspace/agent-download.builder.js.map +1 -1
  667. package/dist/modules/workspace/agent-upload.routes.d.ts.map +1 -1
  668. package/dist/modules/workspace/agent-upload.routes.js +19 -0
  669. package/dist/modules/workspace/agent-upload.routes.js.map +1 -1
  670. package/dist/modules/workspace/agent-upload.store.d.ts +11 -0
  671. package/dist/modules/workspace/agent-upload.store.d.ts.map +1 -1
  672. package/dist/modules/workspace/agent-upload.store.js +18 -0
  673. package/dist/modules/workspace/agent-upload.store.js.map +1 -1
  674. package/dist/modules/workspace/file-readers/doc-extract.service.d.ts +82 -14
  675. package/dist/modules/workspace/file-readers/doc-extract.service.d.ts.map +1 -1
  676. package/dist/modules/workspace/file-readers/doc-extract.service.js +109 -36
  677. package/dist/modules/workspace/file-readers/doc-extract.service.js.map +1 -1
  678. package/dist/modules/workspace/file-readers/doc-extract.types.d.ts +9 -2
  679. package/dist/modules/workspace/file-readers/doc-extract.types.d.ts.map +1 -1
  680. package/dist/modules/workspace/file-readers/doc-extract.types.js.map +1 -1
  681. package/dist/modules/workspace/file-readers/document-extractor.contract.d.ts +41 -0
  682. package/dist/modules/workspace/file-readers/document-extractor.contract.d.ts.map +1 -0
  683. package/dist/modules/workspace/file-readers/document-extractor.contract.js +5 -0
  684. package/dist/modules/workspace/file-readers/document-extractor.contract.js.map +1 -0
  685. package/dist/modules/workspace/file-readers/document-extractors.d.ts +9 -0
  686. package/dist/modules/workspace/file-readers/document-extractors.d.ts.map +1 -0
  687. package/dist/modules/workspace/file-readers/document-extractors.js +26 -0
  688. package/dist/modules/workspace/file-readers/document-extractors.js.map +1 -0
  689. package/dist/modules/workspace/file-readers/document-formats.d.ts +12 -0
  690. package/dist/modules/workspace/file-readers/document-formats.d.ts.map +1 -0
  691. package/dist/modules/workspace/file-readers/document-formats.js +11 -0
  692. package/dist/modules/workspace/file-readers/document-formats.js.map +1 -0
  693. package/dist/modules/workspace/file-readers/document-reader.d.ts +21 -17
  694. package/dist/modules/workspace/file-readers/document-reader.d.ts.map +1 -1
  695. package/dist/modules/workspace/file-readers/document-reader.js +38 -34
  696. package/dist/modules/workspace/file-readers/document-reader.js.map +1 -1
  697. package/dist/modules/workspace/file-readers/extract-in-worker.d.ts +60 -0
  698. package/dist/modules/workspace/file-readers/extract-in-worker.d.ts.map +1 -0
  699. package/dist/modules/workspace/file-readers/extract-in-worker.js +140 -0
  700. package/dist/modules/workspace/file-readers/extract-in-worker.js.map +1 -0
  701. package/dist/modules/workspace/file-readers/extract-pdf.d.ts +2 -0
  702. package/dist/modules/workspace/file-readers/extract-pdf.d.ts.map +1 -1
  703. package/dist/modules/workspace/file-readers/extract-pdf.js +20 -3
  704. package/dist/modules/workspace/file-readers/extract-pdf.js.map +1 -1
  705. package/dist/modules/workspace/file-readers/extract.worker.d.ts +2 -0
  706. package/dist/modules/workspace/file-readers/extract.worker.d.ts.map +1 -0
  707. package/dist/modules/workspace/file-readers/extract.worker.js +5 -0
  708. package/dist/modules/workspace/file-readers/extract.worker.js.map +1 -0
  709. package/dist/modules/workspace/file-readers/extraction-cache.d.ts +21 -5
  710. package/dist/modules/workspace/file-readers/extraction-cache.d.ts.map +1 -1
  711. package/dist/modules/workspace/file-readers/extraction-cache.js +24 -10
  712. package/dist/modules/workspace/file-readers/extraction-cache.js.map +1 -1
  713. package/dist/modules/workspace/file-readers/extraction-worker.d.ts +42 -0
  714. package/dist/modules/workspace/file-readers/extraction-worker.d.ts.map +1 -0
  715. package/dist/modules/workspace/file-readers/extraction-worker.js +69 -0
  716. package/dist/modules/workspace/file-readers/extraction-worker.js.map +1 -0
  717. package/dist/modules/workspace/file-readers/file-reader.d.ts +13 -4
  718. package/dist/modules/workspace/file-readers/file-reader.d.ts.map +1 -1
  719. package/dist/modules/workspace/file-readers/file-reader.js.map +1 -1
  720. package/dist/modules/workspace/file-readers/file-reader.registry.d.ts +3 -2
  721. package/dist/modules/workspace/file-readers/file-reader.registry.d.ts.map +1 -1
  722. package/dist/modules/workspace/file-readers/file-reader.registry.js +6 -20
  723. package/dist/modules/workspace/file-readers/file-reader.registry.js.map +1 -1
  724. package/dist/modules/workspace/first-run.js +1 -1
  725. package/dist/modules/workspace/first-run.js.map +1 -1
  726. package/dist/modules/workspace/git-internals.middleware.d.ts +1 -1
  727. package/dist/modules/workspace/git-internals.middleware.d.ts.map +1 -1
  728. package/dist/modules/workspace/git-internals.middleware.js +1 -1
  729. package/dist/modules/workspace/git-internals.middleware.js.map +1 -1
  730. package/dist/modules/workspace/index.d.ts +24 -0
  731. package/dist/modules/workspace/index.d.ts.map +1 -1
  732. package/dist/modules/workspace/index.js +21 -0
  733. package/dist/modules/workspace/index.js.map +1 -1
  734. package/dist/modules/workspace/kb-repository.d.ts.map +1 -1
  735. package/dist/modules/workspace/kb-repository.js +1 -1
  736. package/dist/modules/workspace/kb-repository.js.map +1 -1
  737. package/dist/modules/workspace/not-found.d.ts +1 -1
  738. package/dist/modules/workspace/not-found.d.ts.map +1 -1
  739. package/dist/modules/workspace/not-found.js +1 -1
  740. package/dist/modules/workspace/not-found.js.map +1 -1
  741. package/dist/modules/workspace/nul-scan.d.ts +19 -0
  742. package/dist/modules/workspace/nul-scan.d.ts.map +1 -0
  743. package/dist/modules/workspace/nul-scan.js +55 -0
  744. package/dist/modules/workspace/nul-scan.js.map +1 -0
  745. package/dist/modules/workspace/pattern-matcher.contract.d.ts +111 -28
  746. package/dist/modules/workspace/pattern-matcher.contract.d.ts.map +1 -1
  747. package/dist/modules/workspace/pattern-matcher.contract.js +31 -14
  748. package/dist/modules/workspace/pattern-matcher.contract.js.map +1 -1
  749. package/dist/modules/workspace/ripgrep-search.d.ts +54 -0
  750. package/dist/modules/workspace/ripgrep-search.d.ts.map +1 -0
  751. package/dist/modules/workspace/ripgrep-search.js +657 -0
  752. package/dist/modules/workspace/ripgrep-search.js.map +1 -0
  753. package/dist/modules/workspace/ripgrep-version.d.ts +15 -0
  754. package/dist/modules/workspace/ripgrep-version.d.ts.map +1 -0
  755. package/dist/modules/workspace/ripgrep-version.js +31 -0
  756. package/dist/modules/workspace/ripgrep-version.js.map +1 -0
  757. package/dist/modules/workspace/routine-write-policy.js +1 -1
  758. package/dist/modules/workspace/routine-write-policy.js.map +1 -1
  759. package/dist/modules/workspace/startup/beside-checkout.d.ts +8 -5
  760. package/dist/modules/workspace/startup/beside-checkout.d.ts.map +1 -1
  761. package/dist/modules/workspace/startup/beside-checkout.js +14 -5
  762. package/dist/modules/workspace/startup/beside-checkout.js.map +1 -1
  763. package/dist/modules/workspace/startup/kb-git.js +1 -1
  764. package/dist/modules/workspace/startup/kb-git.js.map +1 -1
  765. package/dist/modules/workspace/startup/kb-startup-runner.d.ts.map +1 -1
  766. package/dist/modules/workspace/startup/kb-startup-runner.js +1 -2
  767. package/dist/modules/workspace/startup/kb-startup-runner.js.map +1 -1
  768. package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js +2 -2
  769. package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js.map +1 -1
  770. package/dist/modules/workspace/startup/steps/personal-spaces.step.js +2 -2
  771. package/dist/modules/workspace/startup/steps/personal-spaces.step.js.map +1 -1
  772. package/dist/modules/workspace/startup/steps/plugin-layout.js +1 -1
  773. package/dist/modules/workspace/startup/steps/plugin-layout.js.map +1 -1
  774. package/dist/modules/workspace/startup/steps/roles-yaml.step.js +1 -1
  775. package/dist/modules/workspace/startup/steps/roles-yaml.step.js.map +1 -1
  776. package/dist/modules/workspace/startup/steps/seed-tree.js +2 -2
  777. package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
  778. package/dist/modules/workspace/startup/steps/template-files.step.d.ts +1 -1
  779. package/dist/modules/workspace/startup/steps/template-files.step.d.ts.map +1 -1
  780. package/dist/modules/workspace/startup/steps/template-files.step.js +2 -2
  781. package/dist/modules/workspace/startup/steps/template-files.step.js.map +1 -1
  782. package/dist/modules/workspace/startup/steps/template-source.js +2 -2
  783. package/dist/modules/workspace/startup/steps/template-source.js.map +1 -1
  784. package/dist/modules/workspace/worker-pool.d.ts +99 -0
  785. package/dist/modules/workspace/worker-pool.d.ts.map +1 -0
  786. package/dist/modules/workspace/worker-pool.js +156 -0
  787. package/dist/modules/workspace/worker-pool.js.map +1 -0
  788. package/dist/modules/workspace/workspace-tmp.d.ts +146 -0
  789. package/dist/modules/workspace/workspace-tmp.d.ts.map +1 -0
  790. package/dist/modules/workspace/workspace-tmp.js +435 -0
  791. package/dist/modules/workspace/workspace-tmp.js.map +1 -0
  792. package/dist/modules/workspace/workspace.routes.d.ts +7 -8
  793. package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
  794. package/dist/modules/workspace/workspace.routes.js +9 -32
  795. package/dist/modules/workspace/workspace.routes.js.map +1 -1
  796. package/dist/modules/workspace/workspace.service.d.ts +48 -7
  797. package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
  798. package/dist/modules/workspace/workspace.service.js +89 -12
  799. package/dist/modules/workspace/workspace.service.js.map +1 -1
  800. package/dist/modules/workspace/workspace.tools.d.ts +7 -7
  801. package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
  802. package/dist/modules/workspace/workspace.tools.js +502 -140
  803. package/dist/modules/workspace/workspace.tools.js.map +1 -1
  804. package/dist/modules/workspace/write-denial.d.ts +4 -4
  805. package/dist/modules/workspace/write-denial.d.ts.map +1 -1
  806. package/dist/modules/workspace/write-denial.js +2 -3
  807. package/dist/modules/workspace/write-denial.js.map +1 -1
  808. package/dist/modules/write-access/index.d.ts +8 -0
  809. package/dist/modules/write-access/index.d.ts.map +1 -0
  810. package/dist/modules/write-access/index.js +7 -0
  811. package/dist/modules/write-access/index.js.map +1 -0
  812. package/dist/shared/path-order.d.ts +28 -8
  813. package/dist/shared/path-order.d.ts.map +1 -1
  814. package/dist/shared/path-order.js +37 -8
  815. package/dist/shared/path-order.js.map +1 -1
  816. package/migrations/0020_change_request_body_is_the_description.sql +20 -0
  817. package/migrations/0021_data_migrations_ledger.sql +11 -0
  818. package/migrations/0022_session_version.sql +6 -0
  819. package/migrations/0023_agent_path.sql +3 -0
  820. package/migrations/meta/0020_snapshot.json +2321 -0
  821. package/migrations/meta/0021_snapshot.json +2353 -0
  822. package/migrations/meta/0022_snapshot.json +2360 -0
  823. package/migrations/meta/0023_snapshot.json +2378 -0
  824. package/migrations/meta/_journal.json +28 -0
  825. package/package.json +3 -3
  826. package/src/__tests__/pg-scratch.test.ts +69 -0
  827. package/src/__tests__/pg-scratch.ts +31 -0
  828. package/src/__tests__/slow-ripgrep.ts +65 -0
  829. package/src/core/__tests__/boot-without-ripgrep.test.ts +34 -0
  830. package/src/core/__tests__/catalog-revision.test.ts +89 -0
  831. package/src/core/__tests__/damaged-document.tools.test.ts +374 -0
  832. package/src/core/__tests__/gated-boot.test.ts +8 -1
  833. package/src/core/__tests__/lifecycle.test.ts +46 -13
  834. package/src/core/__tests__/public-config.test.ts +5 -0
  835. package/src/core/catalog-revision.ts +24 -2
  836. package/src/core/core-ports.ts +42 -0
  837. package/src/core/create-core-server.ts +45 -3
  838. package/src/core/create-core-services.ts +81 -17
  839. package/src/core/lifecycle.ts +36 -2
  840. package/src/core/public-config.ts +10 -0
  841. package/src/index.ts +1 -1
  842. package/src/modules/access/__tests__/access-control.admin-root-floor.test.ts +12 -0
  843. package/src/modules/access/__tests__/access-control.colliding-name-cases.test.ts +113 -0
  844. package/src/modules/access/__tests__/access-control.frontmatter-head.test.ts +117 -0
  845. package/src/modules/access/__tests__/access-control.group-named-admin.test.ts +122 -0
  846. package/src/modules/access/__tests__/access-control.preview-relocation.test.ts +50 -0
  847. package/src/modules/access/__tests__/access-declarations.test.ts +19 -0
  848. package/src/modules/access/__tests__/access-groups.test.ts +55 -22
  849. package/src/modules/access/__tests__/access-mutation.service.test.ts +85 -59
  850. package/src/modules/access/__tests__/access-requests.routes.test.ts +29 -15
  851. package/src/modules/access/__tests__/access-restrict-here.test.ts +7 -5
  852. package/src/modules/access/__tests__/access.routes.admins.test.ts +1 -0
  853. package/src/modules/access/__tests__/access.routes.batch.test.ts +2 -0
  854. package/src/modules/access/__tests__/access.routes.folder-governs.test.ts +2 -0
  855. package/src/modules/access/__tests__/access.routes.group-grant.test.ts +50 -14
  856. package/src/modules/access/__tests__/access.routes.overrides.test.ts +2 -1
  857. package/src/modules/access/__tests__/access.routes.proposal-branch.test.ts +1 -0
  858. package/src/modules/access/__tests__/access.routes.prospective.test.ts +2 -0
  859. package/src/modules/access/__tests__/access.routes.revoke.test.ts +18 -13
  860. package/src/modules/access/__tests__/access.routes.unknown-email.test.ts +2 -0
  861. package/src/modules/access/__tests__/grant-sources.test.ts +20 -15
  862. package/src/modules/access/__tests__/groups-admin.routes.test.ts +61 -0
  863. package/src/modules/access/__tests__/groups-admin.service.test.ts +211 -18
  864. package/src/modules/access/__tests__/reference-scan.test.ts +366 -14
  865. package/src/modules/access/__tests__/roles-admin.security.test.ts +1 -1
  866. package/src/modules/access/__tests__/roles-admin.service.test.ts +43 -22
  867. package/src/modules/access/__tests__/roles-capabilities.test.ts +6 -2
  868. package/src/modules/access/__tests__/roles.routes.test.ts +1 -1
  869. package/src/modules/access/access-control.interface.ts +17 -10
  870. package/src/modules/access/access-control.service.ts +161 -76
  871. package/src/modules/access/access-declarations.ts +1 -1
  872. package/src/modules/access/access-mutation.service.ts +58 -57
  873. package/src/modules/access/access-requests.contract.ts +1 -1
  874. package/src/modules/access/access-requests.routes.ts +10 -15
  875. package/src/modules/access/access-requests.service.ts +29 -71
  876. package/src/modules/access/access-view.ts +13 -11
  877. package/src/modules/access/access.routes.ts +51 -43
  878. package/src/modules/access/admin-locked-commit.ts +3 -2
  879. package/src/modules/access/capability-registry.ts +1 -1
  880. package/src/modules/access/change-read-gate.ts +3 -5
  881. package/src/modules/access/creator-access.ts +3 -5
  882. package/src/modules/access/directory-sync-bot.ts +2 -2
  883. package/src/modules/access/groups-admin.routes.ts +7 -5
  884. package/src/modules/access/groups-admin.service.ts +116 -47
  885. package/src/modules/access/groups-edit.ts +3 -3
  886. package/src/modules/access/index.ts +17 -0
  887. package/src/modules/access/reference-scan.ts +320 -47
  888. package/src/modules/access/roles-admin.service.ts +45 -31
  889. package/src/modules/access/roles-edit.ts +1 -1
  890. package/src/modules/access/synced-groups-committer.ts +4 -4
  891. package/src/modules/access/synced-groups-writer.ts +3 -3
  892. package/src/modules/access/user-access-removal.service.ts +3 -6
  893. package/src/modules/access-model/__tests__/access-grammar.test.ts +38 -1
  894. package/src/modules/access-model/__tests__/access-splice.test.ts +50 -8
  895. package/src/modules/access-model/access-grammar.ts +65 -20
  896. package/src/modules/access-model/access-splice.ts +31 -23
  897. package/src/modules/access-model/group-files.ts +5 -0
  898. package/src/modules/access-model/index.ts +21 -5
  899. package/src/modules/access-model/roles-yaml-guard.ts +1 -1
  900. package/src/modules/admin/admin-access.routes.ts +1 -1
  901. package/src/modules/admin/admin-access.service.ts +2 -2
  902. package/src/modules/admin/index.ts +7 -0
  903. package/src/modules/agent-guide/__tests__/agent-guide.test.ts +36 -0
  904. package/src/modules/agent-guide/agent-guide.tools.ts +17 -8
  905. package/src/modules/agent-guide/agent-guide.ts +1 -1
  906. package/src/modules/agent-guide/index.ts +1 -1
  907. package/src/modules/agent-instructions/__tests__/shared-file-rules.test.ts +1 -0
  908. package/src/modules/agent-instructions/compose.ts +3 -1
  909. package/src/modules/agent-instructions/read-preamble.ts +1 -1
  910. package/src/modules/agent-instructions/shared-file-rules.ts +17 -1
  911. package/src/modules/agent-scope/__tests__/agent-surfaces.connect-as.test.ts +421 -0
  912. package/src/modules/agent-scope/__tests__/connection-scope.test.ts +46 -0
  913. package/src/modules/agent-scope/__tests__/in-memory-kb.ts +148 -0
  914. package/src/modules/agent-scope/agent-scope.contract.ts +83 -0
  915. package/src/modules/agent-scope/connection-scope.ts +199 -0
  916. package/src/modules/agent-scope/index.ts +15 -0
  917. package/src/modules/audit/agent-audit.service.ts +5 -3
  918. package/src/modules/audit/agent-connection.routes.ts +1 -1
  919. package/src/modules/audit/agent-rest-audit.middleware.ts +1 -1
  920. package/src/modules/audit/audit.contract.ts +6 -0
  921. package/src/modules/audit/audit.routes.ts +4 -4
  922. package/src/modules/auth/__tests__/auth.middleware.test.ts +30 -2
  923. package/src/modules/auth/__tests__/auth.routes.test.ts +71 -5
  924. package/src/modules/auth/__tests__/auth.service.test.ts +90 -9
  925. package/src/modules/auth/__tests__/password-change-sessions.pg.test.ts +269 -0
  926. package/src/modules/auth/account-admission.ts +19 -0
  927. package/src/modules/auth/account-erasure.service.ts +4 -9
  928. package/src/modules/auth/account-switch-lock.ts +2 -2
  929. package/src/modules/auth/account.routes.ts +3 -3
  930. package/src/modules/auth/auth.middleware.ts +45 -4
  931. package/src/modules/auth/auth.routes.ts +46 -29
  932. package/src/modules/auth/auth.service.ts +139 -38
  933. package/src/modules/auth/index.ts +5 -0
  934. package/src/modules/auth/oidc-auth-provider.ts +3 -10
  935. package/src/modules/code-mode/code-mode.tool.ts +1 -1
  936. package/src/modules/connection-probe/connection-probe.service.ts +3 -6
  937. package/src/modules/database/__tests__/legacy-change-request-body.test.ts +118 -0
  938. package/src/modules/database/__tests__/legacy-request-bodies.pg.test.ts +258 -0
  939. package/src/modules/database/__tests__/pii-backfill.pg.test.ts +15 -18
  940. package/src/modules/database/__tests__/session-version-migration.pg.test.ts +133 -0
  941. package/src/modules/database/core-schema.ts +76 -36
  942. package/src/modules/database/index.ts +9 -0
  943. package/src/modules/database/migrate.ts +79 -3
  944. package/src/modules/declared-variables/__tests__/declared-variables.route.test.ts +44 -1
  945. package/src/modules/declared-variables/declared-variables.routes.ts +14 -3
  946. package/src/modules/diff/diff.routes.ts +5 -5
  947. package/src/modules/diff/diff.service.ts +2 -2
  948. package/src/modules/diff/index.ts +6 -0
  949. package/src/modules/embed/__tests__/embed.tools.test.ts +12 -0
  950. package/src/modules/embed/account-link.service.ts +2 -2
  951. package/src/modules/embed/embed.routes.ts +2 -2
  952. package/src/modules/embed/embed.service.ts +1 -1
  953. package/src/modules/embed/embed.tools.ts +11 -9
  954. package/src/modules/github-app/github-app.connection.ts +1 -1
  955. package/src/modules/github-app/github-app.routes.ts +3 -3
  956. package/src/modules/kb-fs/__tests__/locking-filesystem.test.ts +25 -0
  957. package/src/modules/kb-fs/__tests__/repo-path.test.ts +53 -8
  958. package/src/modules/kb-fs/index.ts +13 -0
  959. package/src/modules/kb-fs/locking-filesystem.ts +8 -2
  960. package/src/modules/kb-fs/repo-path.ts +33 -7
  961. package/src/modules/kb-fs/tmp-ref.ts +81 -0
  962. package/src/modules/kb-sync/kb-sync.routes.ts +3 -3
  963. package/src/modules/kb-sync/kb-sync.service.ts +1 -1
  964. package/src/modules/kb-sync/sync-auth.ts +1 -1
  965. package/src/modules/kb-sync/sync-payload.ts +1 -1
  966. package/src/modules/marketplace/git-http.routes.ts +1 -1
  967. package/src/modules/marketplace/github-facade/github-facade-admin.routes.ts +1 -1
  968. package/src/modules/marketplace/github-facade/github-facade-codes.store.ts +2 -2
  969. package/src/modules/marketplace/github-facade/github-facade-credentials.service.ts +2 -2
  970. package/src/modules/marketplace/github-facade/github-facade.routes.ts +2 -2
  971. package/src/modules/marketplace/github-facade/github-facade.service.ts +2 -2
  972. package/src/modules/marketplace/marketplace-repo.service.ts +2 -2
  973. package/src/modules/mcp/__tests__/connect-as.pg.test.ts +137 -0
  974. package/src/modules/mcp/__tests__/mcp-auth.middleware.test.ts +29 -5
  975. package/src/modules/mcp/__tests__/mcp-routes-harness.ts +8 -0
  976. package/src/modules/mcp/__tests__/mcp.connect-as.test.ts +195 -0
  977. package/src/modules/mcp/__tests__/mcp.routes.connect-as.test.ts +192 -0
  978. package/src/modules/mcp/__tests__/oauth-consent.connect-as.test.ts +146 -0
  979. package/src/modules/mcp/__tests__/read-only-hint.e2e.test.ts +213 -0
  980. package/src/modules/mcp/index.ts +7 -0
  981. package/src/modules/mcp/mcp-auth.middleware.ts +25 -9
  982. package/src/modules/mcp/mcp.routes.ts +42 -8
  983. package/src/modules/mcp/mcp.service.ts +136 -29
  984. package/src/modules/mcp/oauth/bevel-oauth-provider.ts +48 -10
  985. package/src/modules/mcp/oauth/oauth-consent.routes.ts +42 -2
  986. package/src/modules/onboarding/onboarding.routes.ts +1 -1
  987. package/src/modules/onboarding/starter-pack.service.ts +5 -6
  988. package/src/modules/plugins/__tests__/bundle-dialect.e2e.test.ts +2 -1
  989. package/src/modules/plugins/__tests__/plugin-links.service.test.ts +2 -1
  990. package/src/modules/plugins/__tests__/plugins.tools.test.ts +38 -2
  991. package/src/modules/plugins/compile/compile-marketplace.ts +2 -2
  992. package/src/modules/plugins/compile/marketplace-compiler.service.ts +3 -3
  993. package/src/modules/plugins/discovery/bundle-dialect/registry.ts +1 -1
  994. package/src/modules/plugins/index.ts +3 -1
  995. package/src/modules/plugins/join-proposals.ts +2 -2
  996. package/src/modules/plugins/join-request-jobs.service.ts +3 -3
  997. package/src/modules/plugins/join-request-records.store.ts +2 -2
  998. package/src/modules/plugins/join-requests.service.ts +4 -4
  999. package/src/modules/plugins/plugin-links.service.ts +10 -11
  1000. package/src/modules/plugins/plugin-links.ts +23 -6
  1001. package/src/modules/plugins/plugin-provision.service.ts +4 -5
  1002. package/src/modules/plugins/plugin-rename.service.ts +3 -3
  1003. package/src/modules/plugins/plugins.contract.ts +1 -1
  1004. package/src/modules/plugins/plugins.routes.ts +39 -8
  1005. package/src/modules/plugins/plugins.service.ts +5 -5
  1006. package/src/modules/plugins/plugins.tools.ts +4 -4
  1007. package/src/modules/plugins/teams.routes.ts +3 -3
  1008. package/src/modules/secrets-vault/__tests__/connect-pending.route.test.ts +113 -0
  1009. package/src/modules/secrets-vault/db-secrets-vault.service.ts +2 -2
  1010. package/src/modules/secrets-vault/index.ts +2 -0
  1011. package/src/modules/secrets-vault/secrets-vault.routes.ts +27 -7
  1012. package/src/modules/settings/__tests__/deployment-settings.service.test.ts +88 -1
  1013. package/src/modules/settings/connection-check.ts +1 -1
  1014. package/src/modules/settings/deployment-settings.service.ts +44 -4
  1015. package/src/modules/settings/git-root-folders.ts +1 -1
  1016. package/src/modules/settings/index.ts +12 -0
  1017. package/src/modules/settings/setup.routes.ts +5 -4
  1018. package/src/modules/skills/__tests__/allowed-tools-warn.tools.test.ts +2 -2
  1019. package/src/modules/skills/__tests__/skill-access-requests.routes.test.ts +6 -3
  1020. package/src/modules/skills/__tests__/skills.service.test.ts +34 -0
  1021. package/src/modules/skills/allowed-tools-check.ts +2 -6
  1022. package/src/modules/skills/index.ts +9 -2
  1023. package/src/modules/skills/pending-skills.service.ts +3 -4
  1024. package/src/modules/skills/skill-access-requests.routes.ts +10 -17
  1025. package/src/modules/skills/skills.contract.ts +17 -0
  1026. package/src/modules/skills/skills.routes.ts +1 -1
  1027. package/src/modules/skills/skills.service.ts +7 -3
  1028. package/src/modules/skills/skills.tools.ts +49 -22
  1029. package/src/modules/tool-auth/__tests__/external-api-key.service.test.ts +4 -0
  1030. package/src/modules/tool-auth/connection-key-rejection.ts +1 -1
  1031. package/src/modules/tool-auth/connection-keys-admin.routes.ts +2 -2
  1032. package/src/modules/tool-auth/external-api-key.interface.ts +11 -1
  1033. package/src/modules/tool-auth/external-api-key.service.ts +7 -4
  1034. package/src/modules/tool-auth/index.ts +14 -0
  1035. package/src/modules/tool-auth/internal-token.service.ts +10 -0
  1036. package/src/modules/tool-auth/tool-auth.middleware.ts +48 -6
  1037. package/src/modules/tool-helpers/__tests__/agent-roles-write.test.ts +2 -2
  1038. package/src/modules/tool-helpers/__tests__/can-write.tools.test.ts +5 -3
  1039. package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +2 -2
  1040. package/src/modules/tool-helpers/default-branch-write.ts +1 -1
  1041. package/src/modules/tool-helpers/index.ts +5 -1
  1042. package/src/modules/tool-helpers/route-argument-check.ts +1 -1
  1043. package/src/modules/tool-helpers/route-tool-schemas.ts +1 -1
  1044. package/src/modules/tool-helpers/tool-context.ts +18 -10
  1045. package/src/modules/tool-helpers/tool-def.ts +7 -3
  1046. package/src/modules/tool-helpers/tool-handler.ts +36 -2
  1047. package/src/modules/tool-helpers/tool.contract.ts +12 -2
  1048. package/src/modules/tool-helpers/validate-token.ts +5 -4
  1049. package/src/modules/tool-manuals/__tests__/tool-manuals.archive.route.test.ts +80 -4
  1050. package/src/modules/tool-manuals/__tests__/tool-manuals.service.test.ts +42 -0
  1051. package/src/modules/tool-manuals/__tests__/tool-manuals.tools.test.ts +3 -3
  1052. package/src/modules/tool-manuals/index.ts +12 -2
  1053. package/src/modules/tool-manuals/mcp-server-edit.service.ts +2 -2
  1054. package/src/modules/tool-manuals/pending-tools.service.ts +2 -2
  1055. package/src/modules/tool-manuals/tool-delete.service.ts +5 -6
  1056. package/src/modules/tool-manuals/tool-manuals.contract.ts +18 -6
  1057. package/src/modules/tool-manuals/tool-manuals.routes.ts +45 -8
  1058. package/src/modules/tool-manuals/tool-manuals.service.ts +34 -18
  1059. package/src/modules/tool-manuals/tool-manuals.tools.ts +32 -17
  1060. package/src/modules/tool-registry/__tests__/read-only-hints.test.ts +439 -0
  1061. package/src/modules/tool-registry/__tests__/tool-description-length.test.ts +2 -2
  1062. package/src/modules/tool-registry/__tests__/tool-registry.test.ts +9 -2
  1063. package/src/modules/tool-registry/description-length.ts +2 -2
  1064. package/src/modules/tool-registry/index.ts +22 -0
  1065. package/src/modules/tool-registry/manual.routes.ts +38 -11
  1066. package/src/modules/tool-registry/read-only-hints.contract.ts +54 -0
  1067. package/src/modules/tool-registry/read-only-hints.ts +225 -0
  1068. package/src/modules/tool-registry/tool.contract.ts +18 -0
  1069. package/src/modules/update-check/update-check.routes.ts +2 -2
  1070. package/src/modules/workflow/__tests__/event-bus.test.ts +14 -2
  1071. package/src/modules/workflow/__tests__/events-delivery.test.ts +778 -0
  1072. package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +85 -22
  1073. package/src/modules/workflow/__tests__/workflow.service.sync.test.ts +1 -1
  1074. package/src/modules/workflow/__tests__/workflow.service.update-change-request.pg.test.ts +120 -0
  1075. package/src/modules/workflow/__tests__/workflow.service.update-change-request.test.ts +346 -0
  1076. package/src/modules/workflow/agent-tools/__tests__/change-request-read-shape.test.ts +32 -209
  1077. package/src/modules/workflow/agent-tools/__tests__/change-request-read.tools.test.ts +16 -245
  1078. package/src/modules/workflow/agent-tools/__tests__/update-change-request.parity.test.ts +306 -0
  1079. package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +87 -60
  1080. package/src/modules/workflow/agent-tools/change-request-read-shape.ts +18 -153
  1081. package/src/modules/workflow/agent-tools/change-request-read.tools.ts +24 -96
  1082. package/src/modules/workflow/agent-tools/change-request-summary.ts +16 -2
  1083. package/src/modules/workflow/agent-tools/workflow.tools.ts +63 -84
  1084. package/src/modules/workflow/change-request-hooks.ts +1 -1
  1085. package/src/modules/workflow/event-bus.ts +3 -1
  1086. package/src/modules/workflow/events-delivery.ts +278 -0
  1087. package/src/modules/workflow/events.routes.ts +30 -9
  1088. package/src/modules/workflow/file-lock.service.ts +2 -2
  1089. package/src/modules/workflow/git/__tests__/git.service.list-branches.test.ts +130 -3
  1090. package/src/modules/workflow/git/__tests__/pull-request.service.getPrDetail.test.ts +24 -9
  1091. package/src/modules/workflow/git/git.service.ts +34 -56
  1092. package/src/modules/workflow/git/node-git-runner.ts +1 -1
  1093. package/src/modules/workflow/git/pull-request.service.ts +34 -29
  1094. package/src/modules/workflow/index.ts +15 -2
  1095. package/src/modules/workflow/pending-commits.service.ts +2 -2
  1096. package/src/modules/workflow/read-on-branch.ts +1 -1
  1097. package/src/modules/workflow/recovery-bot.ts +2 -2
  1098. package/src/modules/workflow/review-workflow/approval-lock.ts +1 -1
  1099. package/src/modules/workflow/review-workflow/review-workflow.interface.ts +3 -35
  1100. package/src/modules/workflow/review-workflow/review-workflow.service.ts +6 -165
  1101. package/src/modules/workflow/workflow.routes.ts +46 -100
  1102. package/src/modules/workflow/workflow.service.ts +277 -191
  1103. package/src/modules/workspace/__tests__/agent-downloads.test.ts +2 -1
  1104. package/src/modules/workspace/__tests__/agent-uploads.test.ts +87 -1
  1105. package/src/modules/workspace/__tests__/escape-sequences.routes.test.ts +2 -1
  1106. package/src/modules/workspace/__tests__/file-stat-access.test.ts +2 -1
  1107. package/src/modules/workspace/__tests__/git-internals.security.test.ts +4 -3
  1108. package/src/modules/workspace/__tests__/holds-nul.test.ts +66 -0
  1109. package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +5 -4
  1110. package/src/modules/workspace/__tests__/ripgrep-search.test.ts +570 -0
  1111. package/src/modules/workspace/__tests__/ripgrep-version.test.ts +29 -0
  1112. package/src/modules/workspace/__tests__/worker-pool.test.ts +118 -0
  1113. package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +3 -2
  1114. package/src/modules/workspace/__tests__/workspace-tmp.tools.test.ts +928 -0
  1115. package/src/modules/workspace/__tests__/workspace.routes.read-gate.test.ts +17 -37
  1116. package/src/modules/workspace/__tests__/workspace.service.ensure-remotes-fetched.test.ts +30 -0
  1117. package/src/modules/workspace/__tests__/workspace.service.read-filter.test.ts +20 -8
  1118. package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +4 -3
  1119. package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +24 -11
  1120. package/src/modules/workspace/__tests__/workspace.tools.test.ts +423 -117
  1121. package/src/modules/workspace/agent-access.gate.ts +3 -3
  1122. package/src/modules/workspace/agent-download.builder.ts +1 -1
  1123. package/src/modules/workspace/agent-upload.routes.ts +19 -0
  1124. package/src/modules/workspace/agent-upload.store.ts +18 -0
  1125. package/src/modules/workspace/file-readers/README.md +9 -0
  1126. package/src/modules/workspace/file-readers/__tests__/doc-extract.service.test.ts +175 -0
  1127. package/src/modules/workspace/file-readers/__tests__/doc-extract.test.ts +21 -16
  1128. package/src/modules/workspace/file-readers/__tests__/extract-in-worker.test.ts +229 -0
  1129. package/src/modules/workspace/file-readers/__tests__/file-reader.registry.test.ts +2 -1
  1130. package/src/modules/workspace/file-readers/__tests__/fixtures/damaged-pdf.ts +34 -0
  1131. package/src/modules/workspace/file-readers/__tests__/fixtures/misbehaving-extract.worker.ts +57 -0
  1132. package/src/modules/workspace/file-readers/__tests__/fixtures/pdf-in-trouble.worker.ts +20 -0
  1133. package/src/modules/workspace/file-readers/__tests__/fixtures/unloadable-extract.worker.ts +2 -0
  1134. package/src/modules/workspace/file-readers/doc-extract.service.ts +144 -36
  1135. package/src/modules/workspace/file-readers/doc-extract.types.ts +13 -3
  1136. package/src/modules/workspace/file-readers/document-extractor.contract.ts +42 -0
  1137. package/src/modules/workspace/file-readers/document-extractors.ts +28 -0
  1138. package/src/modules/workspace/file-readers/document-formats.ts +13 -0
  1139. package/src/modules/workspace/file-readers/document-reader.ts +40 -36
  1140. package/src/modules/workspace/file-readers/extract-in-worker.ts +183 -0
  1141. package/src/modules/workspace/file-readers/extract-pdf.ts +23 -4
  1142. package/src/modules/workspace/file-readers/extract.worker.ts +5 -0
  1143. package/src/modules/workspace/file-readers/extraction-cache.ts +33 -12
  1144. package/src/modules/workspace/file-readers/extraction-worker.ts +86 -0
  1145. package/src/modules/workspace/file-readers/file-reader.registry.ts +6 -20
  1146. package/src/modules/workspace/file-readers/file-reader.ts +14 -4
  1147. package/src/modules/workspace/first-run.ts +1 -1
  1148. package/src/modules/workspace/git-internals.middleware.ts +1 -1
  1149. package/src/modules/workspace/index.ts +37 -0
  1150. package/src/modules/workspace/kb-repository.ts +3 -2
  1151. package/src/modules/workspace/not-found.ts +1 -1
  1152. package/src/modules/workspace/nul-scan.ts +50 -0
  1153. package/src/modules/workspace/pattern-matcher.contract.ts +124 -33
  1154. package/src/modules/workspace/ripgrep-search.ts +715 -0
  1155. package/src/modules/workspace/ripgrep-version.ts +35 -0
  1156. package/src/modules/workspace/routine-write-policy.ts +1 -1
  1157. package/src/modules/workspace/startup/__tests__/beside-checkout.test.ts +11 -0
  1158. package/src/modules/workspace/startup/beside-checkout.ts +13 -5
  1159. package/src/modules/workspace/startup/kb-git.ts +1 -1
  1160. package/src/modules/workspace/startup/kb-startup-runner.ts +1 -2
  1161. package/src/modules/workspace/startup/steps/groups-to-plugins.step.ts +3 -3
  1162. package/src/modules/workspace/startup/steps/personal-spaces.step.ts +2 -2
  1163. package/src/modules/workspace/startup/steps/plugin-layout.ts +1 -1
  1164. package/src/modules/workspace/startup/steps/roles-yaml.step.ts +1 -1
  1165. package/src/modules/workspace/startup/steps/seed-tree.ts +2 -2
  1166. package/src/modules/workspace/startup/steps/template-files.step.ts +2 -2
  1167. package/src/modules/workspace/startup/steps/template-source.ts +2 -2
  1168. package/src/modules/workspace/worker-pool.ts +192 -0
  1169. package/src/modules/workspace/workspace-tmp.ts +457 -0
  1170. package/src/modules/workspace/workspace.routes.ts +15 -39
  1171. package/src/modules/workspace/workspace.service.ts +96 -22
  1172. package/src/modules/workspace/workspace.tools.ts +550 -186
  1173. package/src/modules/workspace/write-denial.ts +4 -5
  1174. package/src/modules/write-access/index.ts +7 -0
  1175. package/src/shared/__tests__/module-boundaries.lint.test.ts +301 -0
  1176. package/src/shared/path-order.ts +37 -8
  1177. package/starter-packs/engineering/Plugins/engineering-starter/access.md +1 -1
  1178. package/starter-packs/general/Plugins/general-starter/access.md +1 -1
  1179. package/starter-packs/operations/Plugins/operations-starter/access.md +1 -1
  1180. package/starter-packs/sales/Plugins/sales-starter/access.md +1 -1
  1181. package/starter-packs/support/Plugins/support-starter/access.md +1 -1
  1182. package/dist/modules/workspace/bounded-matcher.d.ts +0 -79
  1183. package/dist/modules/workspace/bounded-matcher.d.ts.map +0 -1
  1184. package/dist/modules/workspace/bounded-matcher.js +0 -261
  1185. package/dist/modules/workspace/bounded-matcher.js.map +0 -1
  1186. package/src/modules/workflow/__tests__/format-affected-owners.test.ts +0 -85
  1187. package/src/modules/workspace/__tests__/bounded-matcher.test.ts +0 -213
  1188. package/src/modules/workspace/bounded-matcher.ts +0 -328
@@ -0,0 +1,146 @@
1
+ import { type Stats } from 'node:fs';
2
+ import { type ITreeWalker } from '../../shared/fs.contract.js';
3
+ /**
4
+ * A workspace's `tmp/` folder, reached through a reserved ref.
5
+ *
6
+ * Every workspace directory holds its checkout and, beside it, a `tmp/`
7
+ * folder: the chat stages attachments there, the SharePoint reader stages
8
+ * documents there, and nothing in it is ever committed. The file tools place
9
+ * every path under the checkout (see `kb-fs/repo-path.ts`), so the folder is
10
+ * named by a REF instead — `__tmp__/<path>` — which `read_file`, `file_stat`,
11
+ * `grep` and `copy_file` (as its source) accept beside a repository path, and
12
+ * every other tool refuses (`kb-fs/tmp-ref.ts`, the one admission gate every
13
+ * tool's path inputs pass). A plain `tmp/…` path is not that ref and never
14
+ * will be: `tmp` is a legal folder name inside a repository, and the
15
+ * normaliser's rule is what keeps every other path in it.
16
+ *
17
+ * The ref is scoped twice. To the WORKSPACE: it is resolved against the
18
+ * workspace of the branch the call names, exactly like a repository path. And
19
+ * to the CALLER: what a person stages lands under their own folder,
20
+ * `tmp/<owner id>/` ({@link stageTmpRef}, the one way in), and a ref resolves
21
+ * inside the caller's own folder and nowhere else ({@link resolveTmpRef}). A
22
+ * file somebody else staged is therefore not there — the plain not-found,
23
+ * the same answer as for a file that never existed — rather than something an
24
+ * access rule has to refuse: the folder is outside the repository, where no
25
+ * `access.md` governs anything, and the only person a staged attachment is
26
+ * for is the one who attached it. The ref names ONE file — no folder, no
27
+ * listing — and nothing outside the caller's folder is reachable through it,
28
+ * links included. Every resolution goes through {@link resolveTmpRef}; there
29
+ * is no second reader of the folder.
30
+ *
31
+ * Entries live for {@link TMP_MAX_AGE_MS} after their last modification, then
32
+ * the platform's periodic sweep removes them ({@link sweepTmpFolder},
33
+ * scheduled by {@link TmpSweeper}) — or sooner, when a distribution clears a
34
+ * workspace's whole `tmp/` after a run of its own (`clearTmp`): "up to seven
35
+ * days" is the promise, not "seven days".
36
+ */
37
+ /** The folder the ref reaches, beside the checkout in every workspace directory. */
38
+ export declare const WORKSPACE_TMP_DIR = "tmp";
39
+ /** How long an entry of a `tmp/` folder lives after its last modification: seven days. */
40
+ export declare const TMP_MAX_AGE_MS: number;
41
+ /** How often the platform sweeps every workspace's `tmp/` folder: hourly. */
42
+ export declare const TMP_SWEEP_INTERVAL_MS: number;
43
+ /**
44
+ * THE resolution of a ref, against one owner's folder in one workspace
45
+ * directory: the file's absolute path and its stat, or a refusal. Every read
46
+ * of the folder starts here.
47
+ *
48
+ * - The lexical rules first ({@link tmpRefSegments}), before the disk is
49
+ * asked anything.
50
+ * - Nothing there — the owner's folder included, which a person who has
51
+ * staged nothing does not have — is a {@link PathNotFoundError} naming the
52
+ * REF, never the path on disk: the answer every file tool turns into its
53
+ * ordinary 404. What another person staged is "nothing there" too. Every
54
+ * other failure names the ref alone as well ({@link tmpRefFailure}).
55
+ * - The file's REAL path must lie inside the owner's folder's real path, so a
56
+ * link — anywhere along the ref — that leads out of it (into another
57
+ * owner's folder included) is refused rather than followed. A link that
58
+ * stays inside is the file it points at.
59
+ * - A folder is refused by the rule, never listed.
60
+ */
61
+ export declare function resolveTmpRef(workspaceDir: string, ownerId: string, ref: string): Promise<{
62
+ absolutePath: string;
63
+ stat: Stats;
64
+ }>;
65
+ /** The bytes of the one file a ref names in `ownerId`'s folder of `workspaceDir`'s tmp (see {@link resolveTmpRef}). */
66
+ export declare function readTmpRef(workspaceDir: string, ownerId: string, ref: string): Promise<Buffer>;
67
+ /** What `file_stat` reports about a staged file: the fields a repository file's stat carries. */
68
+ export interface TmpFileStat {
69
+ /** The file's own name, the last segment of the ref. */
70
+ name: string;
71
+ size: number;
72
+ createdAt: Date;
73
+ modifiedAt: Date;
74
+ }
75
+ /** The stat of the one file a ref names (see {@link resolveTmpRef}). */
76
+ export declare function statTmpRef(workspaceDir: string, ownerId: string, ref: string): Promise<TmpFileStat>;
77
+ /**
78
+ * Stage `bytes` at `relativePath` in `ownerId`'s folder of `workspaceDir`'s
79
+ * tmp, and answer the ref the owner reads it back with: the ONE way a file
80
+ * gets into the folder the ref reaches, so the convention — one folder per
81
+ * owner, the file's path inside it — is this function's and no stager's.
82
+ * `relativePath` obeys a ref's own rules (one file, no `..`, no absolute
83
+ * path, no backslash, no control character); the refusal names the rule.
84
+ * Replaces the FILE at the path: a staged file is the stager's own scratch,
85
+ * and the chat names uploads by their content. Never writes through a link:
86
+ * not one standing where `tmp/` or the owner's folder should be, not one on
87
+ * the way, and not one at the file's own name (judged by `lstat`, which is
88
+ * what every platform has; the check and the write are two steps, as they
89
+ * are everywhere else in this file).
90
+ */
91
+ export declare function stageTmpRef(workspaceDir: string, ownerId: string, relativePath: string, bytes: Uint8Array): Promise<string>;
92
+ /**
93
+ * Remove every file of one `tmp/` folder, at any depth, whose last
94
+ * modification is older than `maxAgeMs`, and every folder in it that the
95
+ * sweep leaves empty and that was itself older than that before the sweep
96
+ * touched it. Judged per FILE, because the stagers keep a long-lived folder
97
+ * each (`chat-uploads/`, …) whose own mtime moves with every new upload: a
98
+ * folder judged as a whole would keep an old file for as long as anyone kept
99
+ * uploading beside it. Everything is judged by its own `lstat`, and a link is
100
+ * removed as the link, never followed. The `tmp/` folder itself stays. A
101
+ * folder that is not there is nothing to sweep. Returns the paths removed,
102
+ * relative to `tmp/`.
103
+ *
104
+ * The tree is read by THE walk (`walker`, see `shared/fs.contract.ts`), not a
105
+ * loop of its own: its files, its other entries (a link, a socket — never
106
+ * entered) and its folders are collected, each folder's age read as it is
107
+ * listed, so before anything in it goes. A folder that cannot be listed is
108
+ * the walk's hole: logged, and walked around. The removals follow the walk —
109
+ * the entries first, then the folders deepest first, so a folder emptied by
110
+ * the sweep is judged after its contents.
111
+ *
112
+ * `signal` ends the sweep early: once it is aborted the walk stops listing
113
+ * and nothing more is removed — it is asked again right before each removal,
114
+ * after every awaited look — and what is already gone is returned.
115
+ */
116
+ export declare function sweepTmpFolder(walker: ITreeWalker, workspaceDir: string, maxAgeMs: number, now: number, signal?: AbortSignal): Promise<string[]>;
117
+ /**
118
+ * The periodic sweep of every workspace's `tmp/` folder, on a timer.
119
+ *
120
+ * Started with the graph (`startCore`) and stopped with it (`stopCore`):
121
+ * stopping clears the timer and CANCELS the sweep in flight — its signal is
122
+ * aborted, so it removes nothing more and ends at the next entry it would
123
+ * have looked at — and `drainSweep` waits for it to end. `stopCore` bounds
124
+ * that wait by its own deadline, like every other drain there: a sweep stuck
125
+ * inside one filesystem call (a hung mount) can outlive the wait, but it
126
+ * removes nothing once that call returns. The first sweep runs at start, not
127
+ * one interval later, so what a previous process left past its age goes
128
+ * without waiting. The timer is `unref`'d: nothing here is worth keeping a
129
+ * process alive for.
130
+ */
131
+ export declare class TmpSweeper {
132
+ private readonly sweep;
133
+ private timer;
134
+ private sweeping;
135
+ private stop;
136
+ constructor(sweep: (signal: AbortSignal) => Promise<unknown>);
137
+ /** Sweep now, and every `intervalMs` after. Idempotent. */
138
+ startSweeping(intervalMs?: number): void;
139
+ /** Clear the timer and cancel the sweep in flight; {@link drainSweep} waits for it to end. */
140
+ stopSweeping(): void;
141
+ /** Wait for the sweep in flight, if any, to end. */
142
+ drainSweep(): Promise<void>;
143
+ /** One sweep, unless one is still running; its failure is logged. */
144
+ private tick;
145
+ }
146
+ //# sourceMappingURL=workspace-tmp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-tmp.d.ts","sourceRoot":"","sources":["../../../src/modules/workspace/workspace-tmp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAMrD,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAM1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC,0FAA0F;AAC1F,eAAO,MAAM,cAAc,QAA0B,CAAC;AAEtD,6EAA6E;AAC7E,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAiGpD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CA8BhD;AAED,uHAAuH;AACvH,wBAAsB,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOpG;AAED,iGAAiG;AACjG,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,wEAAwE;AACxE,wBAAsB,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAGzG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BjI;AA2BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAqEnB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,UAAU;IAKT,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJlC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,IAAI,CAAgC;gBAEf,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC;IAE7E,2DAA2D;IAC3D,aAAa,CAAC,UAAU,GAAE,MAA8B,GAAG,IAAI;IAQ/D,8FAA8F;IAC9F,YAAY,IAAI,IAAI;IAOpB,oDAAoD;IAC9C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,qEAAqE;IACrE,OAAO,CAAC,IAAI;CAUb"}
@@ -0,0 +1,435 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { PathNotFoundError, WorkflowDomainError, WorkflowValidationError } from '../../shared/domain-errors.js';
4
+ import { assertWithinDirectory } from '../../shared/path-containment.js';
5
+ import { sanitizedPath } from '../../shared/printable.js';
6
+ import { hasControlCharacter, TMP_REF_PREFIX } from '../kb-fs/index.js';
7
+ import { isAbsence } from '../../shared/fs.contract.js';
8
+ import { logger } from '../../shared/logging.js';
9
+ import { lstatOrNull } from '../../shared/rename-no-replace.js';
10
+ const log = logger('workspace-tmp');
11
+ /**
12
+ * A workspace's `tmp/` folder, reached through a reserved ref.
13
+ *
14
+ * Every workspace directory holds its checkout and, beside it, a `tmp/`
15
+ * folder: the chat stages attachments there, the SharePoint reader stages
16
+ * documents there, and nothing in it is ever committed. The file tools place
17
+ * every path under the checkout (see `kb-fs/repo-path.ts`), so the folder is
18
+ * named by a REF instead — `__tmp__/<path>` — which `read_file`, `file_stat`,
19
+ * `grep` and `copy_file` (as its source) accept beside a repository path, and
20
+ * every other tool refuses (`kb-fs/tmp-ref.ts`, the one admission gate every
21
+ * tool's path inputs pass). A plain `tmp/…` path is not that ref and never
22
+ * will be: `tmp` is a legal folder name inside a repository, and the
23
+ * normaliser's rule is what keeps every other path in it.
24
+ *
25
+ * The ref is scoped twice. To the WORKSPACE: it is resolved against the
26
+ * workspace of the branch the call names, exactly like a repository path. And
27
+ * to the CALLER: what a person stages lands under their own folder,
28
+ * `tmp/<owner id>/` ({@link stageTmpRef}, the one way in), and a ref resolves
29
+ * inside the caller's own folder and nowhere else ({@link resolveTmpRef}). A
30
+ * file somebody else staged is therefore not there — the plain not-found,
31
+ * the same answer as for a file that never existed — rather than something an
32
+ * access rule has to refuse: the folder is outside the repository, where no
33
+ * `access.md` governs anything, and the only person a staged attachment is
34
+ * for is the one who attached it. The ref names ONE file — no folder, no
35
+ * listing — and nothing outside the caller's folder is reachable through it,
36
+ * links included. Every resolution goes through {@link resolveTmpRef}; there
37
+ * is no second reader of the folder.
38
+ *
39
+ * Entries live for {@link TMP_MAX_AGE_MS} after their last modification, then
40
+ * the platform's periodic sweep removes them ({@link sweepTmpFolder},
41
+ * scheduled by {@link TmpSweeper}) — or sooner, when a distribution clears a
42
+ * workspace's whole `tmp/` after a run of its own (`clearTmp`): "up to seven
43
+ * days" is the promise, not "seven days".
44
+ */
45
+ /** The folder the ref reaches, beside the checkout in every workspace directory. */
46
+ export const WORKSPACE_TMP_DIR = 'tmp';
47
+ /** How long an entry of a `tmp/` folder lives after its last modification: seven days. */
48
+ export const TMP_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
49
+ /** How often the platform sweeps every workspace's `tmp/` folder: hourly. */
50
+ export const TMP_SWEEP_INTERVAL_MS = 60 * 60 * 1000;
51
+ /** A ref that breaks one of the rules, with the rule named. */
52
+ function invalidRef(ref, rule) {
53
+ const shown = sanitizedPath(ref);
54
+ return new WorkflowValidationError(`"${shown}" is not a valid tmp ref: ${rule}`, { kind: 'tmp-ref-invalid', path: shown });
55
+ }
56
+ /**
57
+ * The folder of one owner inside a workspace's `tmp/`: `tmp/<owner id>/`.
58
+ * The id is an account id, which the platform mints and which is one path
59
+ * segment by construction; one that is not — empty, a separator in it, a
60
+ * `.`/`..`, a control character — is a programming error, never a file to
61
+ * look for, and is refused as one.
62
+ */
63
+ function ownerFolder(workspaceDir, ownerId) {
64
+ if (ownerId === '' ||
65
+ ownerId === '.' ||
66
+ ownerId === '..' ||
67
+ ownerId.includes('/') ||
68
+ ownerId.includes('\\') ||
69
+ hasControlCharacter(ownerId) ||
70
+ ownerId.length > 255) {
71
+ throw new Error(`Invalid tmp owner id "${sanitizedPath(ownerId)}": an owner's tmp folder is one path segment.`);
72
+ }
73
+ return path.join(workspaceDir, WORKSPACE_TMP_DIR, ownerId);
74
+ }
75
+ /**
76
+ * What a failed look at the folder answers, naming the REF and never the path
77
+ * on disk — the raw error (which carries that path) is the server log's, not
78
+ * the caller's: nothing there is the ordinary not-found; a loop of links is
79
+ * refused by the link rule; anything else (a permission, an I/O error) is a
80
+ * 500 that says the ref could not be read.
81
+ */
82
+ function tmpRefFailure(ref, err) {
83
+ if (isAbsence(err))
84
+ return new PathNotFoundError(ref);
85
+ const shown = sanitizedPath(ref);
86
+ const code = err?.code;
87
+ if (code === 'ELOOP') {
88
+ return invalidRef(ref, 'it goes through a link that cannot be followed (a link that leads back to itself).');
89
+ }
90
+ log.warn('could not read a tmp ref:', { err, ref: shown });
91
+ return new WorkflowDomainError(`"${shown}" could not be read from the workspace's tmp folder.`, 500, {
92
+ kind: 'tmp-ref-unreadable',
93
+ path: shown,
94
+ });
95
+ }
96
+ /**
97
+ * The ref's path inside the `tmp/` folder, as segments — or the refusal that
98
+ * names the rule it breaks. Lexical only: the folder and link rules need the
99
+ * disk and are {@link resolveTmpRef}'s.
100
+ */
101
+ function tmpRefSegments(ref) {
102
+ const rest = ref.startsWith(TMP_REF_PREFIX) ? ref.slice(TMP_REF_PREFIX.length) : '';
103
+ // First, because the refusal below would otherwise quote the character
104
+ // that forges a second line — and a line break is a separator to git and
105
+ // to every line-oriented log this ref may reach.
106
+ if (hasControlCharacter(ref)) {
107
+ throw invalidRef(ref, 'it contains a control character (a line break, a NUL or another invisible byte), which is part of no file name.');
108
+ }
109
+ if (rest === '') {
110
+ throw invalidRef(ref, `it names the tmp folder itself. A tmp ref names one file: \`${TMP_REF_PREFIX}<path to the file>\`.`);
111
+ }
112
+ if (rest.startsWith('/') || /^[A-Za-z]:/.test(rest)) {
113
+ throw invalidRef(ref, 'the path after the prefix is absolute. It is a path inside the workspace\'s tmp folder, written without a leading slash.');
114
+ }
115
+ if (rest.includes('\\')) {
116
+ throw invalidRef(ref, 'it contains a backslash. Separate folders with `/`.');
117
+ }
118
+ if (rest.endsWith('/')) {
119
+ throw invalidRef(ref, 'it ends with `/`, which names a folder. A tmp ref names one file; the tmp folder is not listed.');
120
+ }
121
+ const segments = rest.split('/');
122
+ if (segments.some((segment) => segment === '' || segment === '.' || segment === '..')) {
123
+ throw invalidRef(ref, 'it contains a `.` or `..` segment (or an empty one). A tmp ref names one file inside the workspace\'s tmp folder and cannot climb out of it.');
124
+ }
125
+ return segments;
126
+ }
127
+ /**
128
+ * `folder` is absent, or a real directory — never a link, never a file. The
129
+ * `tmp/` folder and an owner's folder are judged by this before anything
130
+ * resolves or lands under them: a link standing in either place would carry
131
+ * the whole folder somewhere else, and a real-path containment check judged
132
+ * against the link's target would not notice.
133
+ */
134
+ async function assertOwnFolder(folder, ref, failed) {
135
+ const stat = await lstatOrNull(folder).catch(failed);
136
+ if (stat !== null && !stat.isDirectory()) {
137
+ throw invalidRef(ref, "its tmp folder is not a folder of this workspace's own (a link or a file stands where it should be).");
138
+ }
139
+ }
140
+ /**
141
+ * THE resolution of a ref, against one owner's folder in one workspace
142
+ * directory: the file's absolute path and its stat, or a refusal. Every read
143
+ * of the folder starts here.
144
+ *
145
+ * - The lexical rules first ({@link tmpRefSegments}), before the disk is
146
+ * asked anything.
147
+ * - Nothing there — the owner's folder included, which a person who has
148
+ * staged nothing does not have — is a {@link PathNotFoundError} naming the
149
+ * REF, never the path on disk: the answer every file tool turns into its
150
+ * ordinary 404. What another person staged is "nothing there" too. Every
151
+ * other failure names the ref alone as well ({@link tmpRefFailure}).
152
+ * - The file's REAL path must lie inside the owner's folder's real path, so a
153
+ * link — anywhere along the ref — that leads out of it (into another
154
+ * owner's folder included) is refused rather than followed. A link that
155
+ * stays inside is the file it points at.
156
+ * - A folder is refused by the rule, never listed.
157
+ */
158
+ export async function resolveTmpRef(workspaceDir, ownerId, ref) {
159
+ const segments = tmpRefSegments(ref);
160
+ const ownerDir = ownerFolder(workspaceDir, ownerId);
161
+ const absent = (err) => {
162
+ throw tmpRefFailure(ref, err);
163
+ };
164
+ // `tmp/` and the owner's folder must BE folders of this workspace, not
165
+ // links to ones somewhere else: the containment below is judged against
166
+ // the owner's folder's real path, which a link would move along with it.
167
+ await assertOwnFolder(path.join(workspaceDir, WORKSPACE_TMP_DIR), ref, absent);
168
+ await assertOwnFolder(ownerDir, ref, absent);
169
+ if ((await lstatOrNull(ownerDir).catch(absent)) === null)
170
+ throw new PathNotFoundError(ref);
171
+ const realOwnerDir = await fs.realpath(ownerDir).catch(absent);
172
+ const real = await fs.realpath(path.join(ownerDir, ...segments)).catch(absent);
173
+ // THE containment check (shared/path-containment.ts), on the real paths;
174
+ // its refusal is answered as the link rule, naming the ref. The folder
175
+ // itself passes it, and is refused below as a folder.
176
+ try {
177
+ assertWithinDirectory(real, realOwnerDir);
178
+ }
179
+ catch {
180
+ throw invalidRef(ref, 'it goes through a link that leads out of your tmp folder, and links out of it are never followed.');
181
+ }
182
+ const stat = await fs.stat(real).catch(absent);
183
+ if (stat.isDirectory()) {
184
+ throw invalidRef(ref, 'it names a folder. A tmp ref names one file; the tmp folder is not listed.');
185
+ }
186
+ if (!stat.isFile()) {
187
+ throw invalidRef(ref, 'it names something that is not a file.');
188
+ }
189
+ return { absolutePath: real, stat };
190
+ }
191
+ /** The bytes of the one file a ref names in `ownerId`'s folder of `workspaceDir`'s tmp (see {@link resolveTmpRef}). */
192
+ export async function readTmpRef(workspaceDir, ownerId, ref) {
193
+ const { absolutePath } = await resolveTmpRef(workspaceDir, ownerId, ref);
194
+ return fs.readFile(absolutePath).catch((err) => {
195
+ // Swept or replaced between the resolve and the read: the same answer a
196
+ // moment later would give, still naming the ref.
197
+ throw tmpRefFailure(ref, err);
198
+ });
199
+ }
200
+ /** The stat of the one file a ref names (see {@link resolveTmpRef}). */
201
+ export async function statTmpRef(workspaceDir, ownerId, ref) {
202
+ const { stat } = await resolveTmpRef(workspaceDir, ownerId, ref);
203
+ return { name: ref.slice(ref.lastIndexOf('/') + 1), size: stat.size, createdAt: stat.birthtime, modifiedAt: stat.mtime };
204
+ }
205
+ /**
206
+ * Stage `bytes` at `relativePath` in `ownerId`'s folder of `workspaceDir`'s
207
+ * tmp, and answer the ref the owner reads it back with: the ONE way a file
208
+ * gets into the folder the ref reaches, so the convention — one folder per
209
+ * owner, the file's path inside it — is this function's and no stager's.
210
+ * `relativePath` obeys a ref's own rules (one file, no `..`, no absolute
211
+ * path, no backslash, no control character); the refusal names the rule.
212
+ * Replaces the FILE at the path: a staged file is the stager's own scratch,
213
+ * and the chat names uploads by their content. Never writes through a link:
214
+ * not one standing where `tmp/` or the owner's folder should be, not one on
215
+ * the way, and not one at the file's own name (judged by `lstat`, which is
216
+ * what every platform has; the check and the write are two steps, as they
217
+ * are everywhere else in this file).
218
+ */
219
+ export async function stageTmpRef(workspaceDir, ownerId, relativePath, bytes) {
220
+ const ref = TMP_REF_PREFIX + relativePath;
221
+ const segments = tmpRefSegments(ref);
222
+ const ownerDir = ownerFolder(workspaceDir, ownerId);
223
+ const rethrow = (err) => {
224
+ throw err;
225
+ };
226
+ await assertOwnFolder(path.join(workspaceDir, WORKSPACE_TMP_DIR), ref, rethrow);
227
+ await assertOwnFolder(ownerDir, ref, rethrow);
228
+ // The workspace directory itself may not exist yet: a staged file belongs
229
+ // beside the checkout whether or not the branch is cloned, and the
230
+ // directory's path is the root's own (`workspaceDirWithinRoot`), nothing
231
+ // the ref names — so it is simply made.
232
+ await fs.mkdir(workspaceDir, { recursive: true });
233
+ // The folders on the way — `tmp/` and the owner's folder included, when a
234
+ // first staging has yet to make them — made one at a time and each judged
235
+ // before the next is entered: never through a link, which a recursive
236
+ // mkdir would follow, creating folders wherever the link leads before
237
+ // anything could refuse it. The one rule for the whole path, the folders
238
+ // already there included.
239
+ await makeFoldersWithin(workspaceDir, [WORKSPACE_TMP_DIR, ownerId, ...segments.slice(0, -1)], ref);
240
+ const target = path.join(ownerDir, ...segments);
241
+ // The name itself: a file to replace, nothing yet, or something that is
242
+ // neither — a link (which a write would follow) or a folder — refused.
243
+ const standing = await lstatOrNull(target);
244
+ if (standing !== null && !standing.isFile()) {
245
+ throw invalidRef(ref, 'it names something that is not a file.');
246
+ }
247
+ await fs.writeFile(target, bytes);
248
+ return ref;
249
+ }
250
+ /**
251
+ * The folders of `segments` under `base`, each one entered only once it is
252
+ * known to be a real directory of the owner's folder: a missing one is made
253
+ * (and judged again, since another stage may have made it meanwhile), and a
254
+ * link or a file standing in its place is refused as the link rule — before
255
+ * any folder is made beyond it, so a link on the way creates nothing where it
256
+ * leads. `lstat`, as everywhere in this file, so a link is seen as a link.
257
+ */
258
+ async function makeFoldersWithin(base, segments, ref) {
259
+ let at = base;
260
+ for (const segment of segments) {
261
+ at = path.join(at, segment);
262
+ let standing = await lstatOrNull(at);
263
+ if (standing === null) {
264
+ await fs.mkdir(at).catch((err) => {
265
+ if (err.code !== 'EEXIST')
266
+ throw err;
267
+ });
268
+ standing = await lstatOrNull(at);
269
+ }
270
+ if (standing === null || !standing.isDirectory()) {
271
+ throw invalidRef(ref, 'it goes through a link that leads out of your tmp folder, and links out of it are never followed.');
272
+ }
273
+ }
274
+ }
275
+ /**
276
+ * Remove every file of one `tmp/` folder, at any depth, whose last
277
+ * modification is older than `maxAgeMs`, and every folder in it that the
278
+ * sweep leaves empty and that was itself older than that before the sweep
279
+ * touched it. Judged per FILE, because the stagers keep a long-lived folder
280
+ * each (`chat-uploads/`, …) whose own mtime moves with every new upload: a
281
+ * folder judged as a whole would keep an old file for as long as anyone kept
282
+ * uploading beside it. Everything is judged by its own `lstat`, and a link is
283
+ * removed as the link, never followed. The `tmp/` folder itself stays. A
284
+ * folder that is not there is nothing to sweep. Returns the paths removed,
285
+ * relative to `tmp/`.
286
+ *
287
+ * The tree is read by THE walk (`walker`, see `shared/fs.contract.ts`), not a
288
+ * loop of its own: its files, its other entries (a link, a socket — never
289
+ * entered) and its folders are collected, each folder's age read as it is
290
+ * listed, so before anything in it goes. A folder that cannot be listed is
291
+ * the walk's hole: logged, and walked around. The removals follow the walk —
292
+ * the entries first, then the folders deepest first, so a folder emptied by
293
+ * the sweep is judged after its contents.
294
+ *
295
+ * `signal` ends the sweep early: once it is aborted the walk stops listing
296
+ * and nothing more is removed — it is asked again right before each removal,
297
+ * after every awaited look — and what is already gone is returned.
298
+ */
299
+ export async function sweepTmpFolder(walker, workspaceDir, maxAgeMs, now, signal) {
300
+ const tmpDir = path.join(workspaceDir, WORKSPACE_TMP_DIR);
301
+ // `lstat` the folder itself: a `tmp` that is a link is not a folder of
302
+ // this workspace's to sweep (the walk would follow it). Not there is
303
+ // nothing to sweep.
304
+ if ((await lstatOrNull(tmpDir))?.isDirectory() !== true)
305
+ return [];
306
+ const join = (dir, name) => (dir === '' ? name : `${dir}/${name}`);
307
+ const entries = [];
308
+ const oldDirs = [];
309
+ const stopped = () => signal?.aborted === true;
310
+ // The entry's own `lstat` (shared/rename-no-replace.ts), or null when it is
311
+ // gone; any other failure spoils that one entry: logged, and left alone.
312
+ const entryStat = async (rel) => {
313
+ try {
314
+ return await lstatOrNull(path.join(tmpDir, rel));
315
+ }
316
+ catch (err) {
317
+ log.warn('could not stat a tmp entry:', { err, entry: sanitizedPath(rel) });
318
+ return null;
319
+ }
320
+ };
321
+ await walker.walk(tmpDir, { until: stopped }, [
322
+ {
323
+ async onDir(rel) {
324
+ if (rel === '')
325
+ return;
326
+ // Its age is read BEFORE its contents go: removing them moves it.
327
+ const stat = await entryStat(rel);
328
+ if (stat && now - stat.mtimeMs > maxAgeMs)
329
+ oldDirs.push(rel);
330
+ },
331
+ onFile(dir, name) {
332
+ entries.push(join(dir, name));
333
+ },
334
+ onOther(dir, entry) {
335
+ entries.push(join(dir, entry.name));
336
+ },
337
+ onHole(rel, err) {
338
+ log.warn('could not list a tmp folder:', { err, folder: sanitizedPath(rel) });
339
+ },
340
+ },
341
+ ]);
342
+ const removed = [];
343
+ const attempt = async (rel, remove) => {
344
+ try {
345
+ await remove(path.join(tmpDir, rel));
346
+ removed.push(rel);
347
+ }
348
+ catch (err) {
349
+ // Gone mid-sweep is what the sweep wanted, and a folder something is
350
+ // still in stays; anything else spoils one entry, not the sweep.
351
+ const code = err?.code;
352
+ if (!isAbsence(err) && code !== 'ENOTEMPTY' && code !== 'EEXIST') {
353
+ log.warn('could not sweep a tmp entry:', { err, entry: sanitizedPath(rel) });
354
+ }
355
+ }
356
+ };
357
+ for (const rel of entries) {
358
+ if (stopped())
359
+ return removed;
360
+ const stat = await entryStat(rel);
361
+ if (!stat || now - stat.mtimeMs <= maxAgeMs)
362
+ continue;
363
+ // Asked again AFTER the awaited look: a stop that came while it ran
364
+ // removes nothing more, this entry included.
365
+ if (stopped())
366
+ return removed;
367
+ // A file, or a link removed as the link.
368
+ await attempt(rel, (abs) => fs.unlink(abs));
369
+ }
370
+ // Walk order lists a folder before what is in it, so the reverse is deepest first.
371
+ for (const rel of oldDirs.reverse()) {
372
+ if (stopped())
373
+ return removed;
374
+ await attempt(rel, (abs) => fs.rmdir(abs));
375
+ }
376
+ return removed;
377
+ }
378
+ /**
379
+ * The periodic sweep of every workspace's `tmp/` folder, on a timer.
380
+ *
381
+ * Started with the graph (`startCore`) and stopped with it (`stopCore`):
382
+ * stopping clears the timer and CANCELS the sweep in flight — its signal is
383
+ * aborted, so it removes nothing more and ends at the next entry it would
384
+ * have looked at — and `drainSweep` waits for it to end. `stopCore` bounds
385
+ * that wait by its own deadline, like every other drain there: a sweep stuck
386
+ * inside one filesystem call (a hung mount) can outlive the wait, but it
387
+ * removes nothing once that call returns. The first sweep runs at start, not
388
+ * one interval later, so what a previous process left past its age goes
389
+ * without waiting. The timer is `unref`'d: nothing here is worth keeping a
390
+ * process alive for.
391
+ */
392
+ export class TmpSweeper {
393
+ sweep;
394
+ timer = null;
395
+ sweeping = null;
396
+ stop = null;
397
+ constructor(sweep) {
398
+ this.sweep = sweep;
399
+ }
400
+ /** Sweep now, and every `intervalMs` after. Idempotent. */
401
+ startSweeping(intervalMs = TMP_SWEEP_INTERVAL_MS) {
402
+ if (this.timer)
403
+ return;
404
+ this.stop = new AbortController();
405
+ this.tick();
406
+ this.timer = setInterval(() => this.tick(), intervalMs);
407
+ this.timer.unref?.();
408
+ }
409
+ /** Clear the timer and cancel the sweep in flight; {@link drainSweep} waits for it to end. */
410
+ stopSweeping() {
411
+ if (this.timer)
412
+ clearInterval(this.timer);
413
+ this.timer = null;
414
+ this.stop?.abort();
415
+ this.stop = null;
416
+ }
417
+ /** Wait for the sweep in flight, if any, to end. */
418
+ async drainSweep() {
419
+ await this.sweeping;
420
+ }
421
+ /** One sweep, unless one is still running; its failure is logged. */
422
+ tick() {
423
+ if (this.sweeping || !this.stop)
424
+ return;
425
+ const running = this.sweep(this.stop.signal)
426
+ .then(() => undefined)
427
+ .catch((err) => log.warn('could not sweep the workspaces\' tmp folders:', { err }))
428
+ .finally(() => {
429
+ if (this.sweeping === running)
430
+ this.sweeping = null;
431
+ });
432
+ this.sweeping = running;
433
+ }
434
+ }
435
+ //# sourceMappingURL=workspace-tmp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-tmp.js","sourceRoot":"","sources":["../../../src/modules/workspace/workspace-tmp.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,14 @@
1
1
  import { type ITreeWalker } from '../../shared/fs.contract.js';
2
- import type { IAdminAccessService } from '../admin/admin.interface.js';
2
+ import type { IAdminAccessService } from '../admin/index.js';
3
3
  import express from 'express';
4
4
  import type { IWorkflowService } from '@bevel-software/platform-shared';
5
- import type { KbContext } from '../../shared/kb-context.js';
6
5
  import { type WorkspaceService } from './workspace.service.js';
7
- import type { AuthService } from '../auth/auth.service.js';
8
- import type { IAccessControl } from '../access/access-control.interface.js';
9
- import type { ICreatorAccess } from '../access-model/creator.js';
10
- import type { IChangeReadGate } from '../access-model/change-gate.js';
11
- import type { WorkflowEventBus } from '../workflow/event-bus.js';
12
- import '../auth/auth.middleware.js';
6
+ import type { KbContext } from '../../shared/kb-context.js';
7
+ import type { AuthService } from '../auth/index.js';
8
+ import type { IAccessControl } from '../access/index.js';
9
+ import type { ICreatorAccess, IChangeReadGate } from '../access-model/index.js';
10
+ import type { WorkflowEventBus } from '../workflow/index.js';
11
+ import '../auth/index.js';
13
12
  import type { SkillSaveCheck } from './workspace.tools.js';
14
13
  /**
15
14
  * Workspaces are per-branch (PLAN §3). Any authenticated user can access
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/workspace/workspace.routes.ts"],"names":[],"mappings":"AAKA,OAAO,EAA8B,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAY,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAiBlF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAQjE,OAAO,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAwB3D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,gBAAgB,EACjC,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,EAAE,cAAc,EAC7B,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,cAAc,EAC7B,WAAW,EAAE,mBAAmB,EAChC,IAAI,EAAE,WAAW;AACjB,4GAA4G;AAC5G,cAAc,CAAC,EAAE,cAAc;AAC/B;;;;;GAKG;AACH,UAAU,CAAC,EAAE,eAAe,GAC3B,OAAO,CAAC,MAAM,CAwgDhB"}
1
+ {"version":3,"file":"workspace.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/workspace/workspace.routes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAY,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAelF,OAAO,EAA8D,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE3H,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAQ7D,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAwB3D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,gBAAgB,EACjC,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,EAAE,cAAc,EAC7B,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,cAAc,EAC7B,WAAW,EAAE,mBAAmB,EAChC,IAAI,EAAE,WAAW;AACjB,4GAA4G;AAC5G,cAAc,CAAC,EAAE,cAAc;AAC/B;;;;;GAKG;AACH,UAAU,CAAC,EAAE,eAAe,GAC3B,OAAO,CAAC,MAAM,CAm/ChB"}