@hotmeshio/long-tail 0.23.1 → 0.24.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 (562) hide show
  1. package/build/adapters/express.d.ts +9 -1
  2. package/build/adapters/express.js +32 -41
  3. package/build/api/auth-sso.d.ts +1 -1
  4. package/build/api/bot-accounts.d.ts +2 -0
  5. package/build/api/bot-accounts.js +4 -0
  6. package/build/api/capabilities.d.ts +7 -2
  7. package/build/api/capabilities.js +13 -2
  8. package/build/api/escalations/analytics.js +5 -0
  9. package/build/api/escalations/bulk.d.ts +2 -0
  10. package/build/api/escalations/bulk.js +9 -4
  11. package/build/api/escalations/helpers.d.ts +5 -0
  12. package/build/api/escalations/helpers.js +7 -0
  13. package/build/api/escalations/index.d.ts +1 -0
  14. package/build/api/escalations/index.js +4 -1
  15. package/build/api/escalations/list.d.ts +5 -0
  16. package/build/api/escalations/list.js +19 -5
  17. package/build/api/escalations/metadata.js +3 -0
  18. package/build/api/escalations/related.d.ts +18 -0
  19. package/build/api/escalations/related.js +205 -0
  20. package/build/api/escalations/single.d.ts +3 -2
  21. package/build/api/escalations/single.js +8 -3
  22. package/build/api/mcp/tools.d.ts +12 -0
  23. package/build/api/mcp/tools.js +113 -9
  24. package/build/api/roles.js +4 -0
  25. package/build/api/scan-codes/choice.js +31 -7
  26. package/build/api/scan-codes/present.js +5 -1
  27. package/build/api/settings.d.ts +1 -1
  28. package/build/api/settings.js +12 -1
  29. package/build/api/tasks.d.ts +3 -3
  30. package/build/api/tasks.js +30 -7
  31. package/build/api/workflows/input-lookups.js +1 -1
  32. package/build/api/workflows/invocable.js +2 -2
  33. package/build/api/workflows/invocation.js +1 -1
  34. package/build/api/yaml-workflows/deploy.d.ts +10 -2
  35. package/build/api/yaml-workflows/deploy.js +42 -2
  36. package/build/lib/db/schemas/038_oauth_server.sql +46 -0
  37. package/build/lib/events/browser-view.d.ts +15 -0
  38. package/build/lib/events/browser-view.js +101 -0
  39. package/build/lib/events/nats-ws-filter.d.ts +29 -0
  40. package/build/lib/events/nats-ws-filter.js +94 -0
  41. package/build/lib/events/nats-ws-proxy.d.ts +2 -0
  42. package/build/lib/events/nats-ws-proxy.js +39 -5
  43. package/build/lib/events/nats-ws-server-filter.d.ts +16 -0
  44. package/build/lib/events/nats-ws-server-filter.js +56 -0
  45. package/build/lib/events/nats-ws-ticket.d.ts +10 -0
  46. package/build/lib/events/nats-ws-ticket.js +42 -0
  47. package/build/lib/events/socketio.d.ts +10 -1
  48. package/build/lib/events/socketio.js +10 -3
  49. package/build/lib/http/index.d.ts +27 -0
  50. package/build/lib/http/index.js +55 -0
  51. package/build/modules/auth.d.ts +15 -24
  52. package/build/modules/auth.js +43 -126
  53. package/build/modules/capabilities.d.ts +62 -0
  54. package/build/modules/capabilities.js +188 -0
  55. package/build/modules/config.d.ts +14 -0
  56. package/build/modules/config.js +20 -0
  57. package/build/modules/defaults.d.ts +10 -0
  58. package/build/modules/defaults.js +12 -1
  59. package/build/modules/display.d.ts +15 -0
  60. package/build/modules/display.js +27 -0
  61. package/build/modules/mcp-auth.d.ts +11 -0
  62. package/build/modules/mcp-auth.js +56 -0
  63. package/build/modules/oauth-server.d.ts +18 -0
  64. package/build/modules/oauth-server.js +40 -0
  65. package/build/routes/agents.js +46 -14
  66. package/build/routes/announcements.js +2 -2
  67. package/build/routes/auth-sso.js +2 -2
  68. package/build/routes/auth.js +2 -2
  69. package/build/routes/bot-accounts.js +26 -3
  70. package/build/routes/capabilities.js +4 -4
  71. package/build/routes/controlplane.js +2 -2
  72. package/build/routes/dba.js +2 -2
  73. package/build/routes/delegation.js +2 -2
  74. package/build/routes/diagnostics.js +2 -2
  75. package/build/routes/docs.js +2 -2
  76. package/build/routes/domain.js +2 -2
  77. package/build/routes/escalations/accumulate.d.ts +1 -1
  78. package/build/routes/escalations/acting.d.ts +1 -1
  79. package/build/routes/escalations/analytics.d.ts +1 -1
  80. package/build/routes/escalations/bulk.d.ts +1 -1
  81. package/build/routes/escalations/facets.d.ts +1 -1
  82. package/build/routes/escalations/index.js +5 -2
  83. package/build/routes/escalations/list.d.ts +1 -1
  84. package/build/routes/escalations/list.js +2 -0
  85. package/build/routes/escalations/metadata.d.ts +1 -1
  86. package/build/routes/escalations/related.d.ts +7 -0
  87. package/build/routes/escalations/related.js +60 -0
  88. package/build/routes/escalations/resolve.d.ts +1 -1
  89. package/build/routes/escalations/single.d.ts +1 -1
  90. package/build/routes/escalations/single.js +1 -1
  91. package/build/routes/exports.js +14 -13
  92. package/build/routes/file-browser.js +9 -8
  93. package/build/routes/files.js +2 -2
  94. package/build/routes/index.js +4 -2
  95. package/build/routes/insight.js +5 -4
  96. package/build/routes/knowledge.js +2 -2
  97. package/build/routes/maintenance.js +2 -2
  98. package/build/routes/mcp-endpoint.d.ts +3 -1
  99. package/build/routes/mcp-endpoint.js +18 -8
  100. package/build/routes/mcp.js +35 -15
  101. package/build/routes/me.js +2 -2
  102. package/build/routes/namespaces.js +4 -3
  103. package/build/routes/nats-credentials.js +27 -3
  104. package/build/routes/oauth-server/authorize.d.ts +2 -0
  105. package/build/routes/oauth-server/authorize.js +108 -0
  106. package/build/routes/oauth-server/grants.d.ts +2 -0
  107. package/build/routes/oauth-server/grants.js +35 -0
  108. package/build/routes/oauth-server/index.d.ts +8 -0
  109. package/build/routes/oauth-server/index.js +52 -0
  110. package/build/routes/oauth-server/registration.d.ts +2 -0
  111. package/build/routes/oauth-server/registration.js +38 -0
  112. package/build/routes/oauth-server/token.d.ts +2 -0
  113. package/build/routes/oauth-server/token.js +100 -0
  114. package/build/routes/oauth-well-known.d.ts +8 -0
  115. package/build/routes/oauth-well-known.js +31 -0
  116. package/build/routes/oauth.js +2 -2
  117. package/build/routes/overview.js +2 -2
  118. package/build/routes/personas.js +2 -2
  119. package/build/routes/pipelines.js +6 -5
  120. package/build/routes/roles.js +2 -2
  121. package/build/routes/scan-codes.js +2 -2
  122. package/build/routes/settings.js +2 -2
  123. package/build/routes/tasks.js +5 -5
  124. package/build/routes/topics.js +21 -9
  125. package/build/routes/users.js +25 -22
  126. package/build/routes/workflow-sets.js +13 -12
  127. package/build/routes/workflows/config.js +15 -2
  128. package/build/routes/workflows/discovery.js +2 -2
  129. package/build/routes/workflows/index.js +2 -2
  130. package/build/routes/workflows/invocation.js +11 -10
  131. package/build/routes/yaml-workflows/cron.js +19 -6
  132. package/build/routes/yaml-workflows/crud.js +13 -12
  133. package/build/routes/yaml-workflows/deployment.js +11 -10
  134. package/build/routes/yaml-workflows/index.js +2 -2
  135. package/build/routes/yaml-workflows/versions.js +2 -2
  136. package/build/scripts/consolidation-sim.d.ts +25 -0
  137. package/build/scripts/consolidation-sim.js +141 -0
  138. package/build/sdk/index.d.ts +12 -0
  139. package/build/sdk/index.js +2 -0
  140. package/build/services/agent/authority.d.ts +14 -0
  141. package/build/services/agent/authority.js +53 -0
  142. package/build/services/auth/bot-api-key.d.ts +2 -0
  143. package/build/services/auth/bot-api-key.js +10 -0
  144. package/build/services/auth/oauth-server/access-token.d.ts +36 -0
  145. package/build/services/auth/oauth-server/access-token.js +80 -0
  146. package/build/services/auth/oauth-server/authorization.d.ts +47 -0
  147. package/build/services/auth/oauth-server/authorization.js +54 -0
  148. package/build/services/auth/oauth-server/constants.d.ts +11 -0
  149. package/build/services/auth/oauth-server/constants.js +16 -0
  150. package/build/services/auth/oauth-server/index.d.ts +3 -0
  151. package/build/services/auth/oauth-server/index.js +26 -0
  152. package/build/services/auth/oauth-server/metadata.d.ts +21 -0
  153. package/build/services/auth/oauth-server/metadata.js +53 -0
  154. package/build/services/auth/oauth-server/registration.d.ts +42 -0
  155. package/build/services/auth/oauth-server/registration.js +134 -0
  156. package/build/services/auth/oauth-server/sql.d.ts +34 -0
  157. package/build/services/auth/oauth-server/sql.js +123 -0
  158. package/build/services/auth/oauth-server/store.d.ts +74 -0
  159. package/build/services/auth/oauth-server/store.js +151 -0
  160. package/build/services/auth/sql.d.ts +1 -0
  161. package/build/services/auth/sql.js +3 -1
  162. package/build/services/escalation/grouped-list.d.ts +19 -0
  163. package/build/services/escalation/grouped-list.js +54 -0
  164. package/build/services/escalation/index.d.ts +4 -0
  165. package/build/services/escalation/index.js +9 -1
  166. package/build/services/escalation/queries.d.ts +17 -13
  167. package/build/services/escalation/queries.js +38 -42
  168. package/build/services/escalation/read-scope-sql.d.ts +13 -0
  169. package/build/services/escalation/read-scope-sql.js +19 -0
  170. package/build/services/escalation/related.d.ts +58 -0
  171. package/build/services/escalation/related.js +196 -0
  172. package/build/services/export/index.d.ts +10 -0
  173. package/build/services/export/index.js +27 -0
  174. package/build/services/invocation-access.d.ts +25 -4
  175. package/build/services/invocation-access.js +39 -7
  176. package/build/services/mcp/client/connection-dispatch.d.ts +6 -1
  177. package/build/services/mcp/client/connection-dispatch.js +3 -2
  178. package/build/services/mcp/client/connection-lifecycle.d.ts +10 -2
  179. package/build/services/mcp/client/connection-lifecycle.js +45 -7
  180. package/build/services/mcp/client/connection-test.js +2 -6
  181. package/build/services/mcp/client/connection.d.ts +1 -1
  182. package/build/services/mcp/client/connection.js +3 -1
  183. package/build/services/mcp/client/index.d.ts +2 -2
  184. package/build/services/mcp/client/index.js +4 -1
  185. package/build/services/mcp/client/network-transport.d.ts +12 -0
  186. package/build/services/mcp/client/network-transport.js +20 -0
  187. package/build/services/mcp/client/tools.d.ts +13 -0
  188. package/build/services/mcp/client/tools.js +18 -0
  189. package/build/services/mcp/db-server/index.js +2 -1
  190. package/build/services/mcp/external-server.d.ts +9 -4
  191. package/build/services/mcp/external-server.js +34 -11
  192. package/build/services/mcp/playwright-server/index.js +2 -1
  193. package/build/services/mcp/registered-tools.d.ts +3 -0
  194. package/build/services/mcp/registered-tools.js +7 -0
  195. package/build/services/mcp/server-lifecycle.js +2 -1
  196. package/build/services/role/index.js +6 -0
  197. package/build/services/role/seed.js +4 -0
  198. package/build/services/scan-code/validate-facts.d.ts +1 -1
  199. package/build/services/scan-code/validate-facts.js +12 -1
  200. package/build/services/workflow-invocation.d.ts +16 -3
  201. package/build/services/workflow-invocation.js +42 -10
  202. package/build/services/yaml-workflow/deployer.d.ts +10 -2
  203. package/build/services/yaml-workflow/deployer.js +17 -5
  204. package/build/services/yaml-workflow/invoke.js +27 -26
  205. package/build/shared/form-validation/x-lt-scan.d.ts +8 -0
  206. package/build/shared/form-validation/x-lt-scan.js +20 -1
  207. package/build/shared/list-schema/index.d.ts +3 -0
  208. package/build/shared/list-schema/index.js +27 -0
  209. package/build/shared/list-schema/template.d.ts +14 -0
  210. package/build/shared/list-schema/template.js +85 -0
  211. package/build/shared/list-schema/types.d.ts +154 -0
  212. package/build/shared/list-schema/types.js +55 -0
  213. package/build/shared/list-schema/validate.d.ts +12 -0
  214. package/build/shared/list-schema/validate.js +204 -0
  215. package/build/shared/roles/segment.d.ts +22 -0
  216. package/build/shared/roles/segment.js +42 -0
  217. package/build/start/adapters.js +2 -0
  218. package/build/start/config.js +7 -0
  219. package/build/start/index.js +4 -22
  220. package/build/start/server.d.ts +6 -4
  221. package/build/start/server.js +11 -35
  222. package/build/start/socket-auth.js +2 -1
  223. package/build/start/workers.js +1 -1
  224. package/build/system/mcp-servers/admin/agent-subscriptions.js +24 -1
  225. package/build/system/mcp-servers/admin/agents.js +25 -2
  226. package/build/system/mcp-servers/admin/announcements.js +3 -2
  227. package/build/system/mcp-servers/admin/bot-accounts.js +37 -5
  228. package/build/system/mcp-servers/admin/escalations.d.ts +3 -5
  229. package/build/system/mcp-servers/admin/escalations.js +74 -70
  230. package/build/system/mcp-servers/admin/exports.js +7 -1
  231. package/build/system/mcp-servers/admin/index.js +24 -25
  232. package/build/system/mcp-servers/admin/overview.d.ts +2 -2
  233. package/build/system/mcp-servers/admin/run-read.d.ts +2 -0
  234. package/build/system/mcp-servers/admin/run-read.js +5 -0
  235. package/build/system/mcp-servers/admin/scan-codes.d.ts +2 -2
  236. package/build/system/mcp-servers/admin/scan-codes.js +5 -11
  237. package/build/system/mcp-servers/admin/schemas.d.ts +20 -20
  238. package/build/system/mcp-servers/admin/tasks.js +7 -2
  239. package/build/system/mcp-servers/admin/users.js +39 -4
  240. package/build/system/mcp-servers/admin/workflow-config.js +12 -1
  241. package/build/system/mcp-servers/admin/workflows.js +27 -5
  242. package/build/system/mcp-servers/admin/yaml-workflows.js +7 -1
  243. package/build/system/mcp-servers/caller-auth.d.ts +18 -0
  244. package/build/system/mcp-servers/caller-auth.js +29 -0
  245. package/build/system/mcp-servers/claude-code.js +2 -1
  246. package/build/system/mcp-servers/db-query/index.js +2 -1
  247. package/build/system/mcp-servers/file-storage.js +2 -1
  248. package/build/system/mcp-servers/http-fetch.js +2 -1
  249. package/build/system/mcp-servers/human-queue.js +7 -3
  250. package/build/system/mcp-servers/oauth.js +31 -4
  251. package/build/system/mcp-servers/schema-exchange.js +2 -1
  252. package/build/system/mcp-servers/vision.d.ts +1 -0
  253. package/build/system/mcp-servers/vision.js +17 -7
  254. package/build/system/seed/tool-manifests-admin.d.ts +2 -17985
  255. package/build/system/seed/tool-manifests-admin.js +121 -121
  256. package/build/system/seed/tool-manifests-data.d.ts +8 -374
  257. package/build/system/seed/tool-manifests-data.js +22 -4
  258. package/build/system/seed/tool-manifests-escalation.d.ts +2 -352
  259. package/build/system/seed/tool-manifests-escalation.js +11 -1
  260. package/build/system/seed/tool-manifests-events.d.ts +2 -116
  261. package/build/system/seed/tool-manifests-events.js +6 -2
  262. package/build/system/seed/tool-manifests-knowledge.d.ts +2 -221
  263. package/build/system/seed/tool-manifests-knowledge.js +41 -1
  264. package/build/system/seed/tool-manifests-workflows.d.ts +2 -71
  265. package/build/system/seed/tool-manifests-workflows.js +3 -1
  266. package/build/system/workflows/shared/principal-tools.d.ts +20 -0
  267. package/build/system/workflows/shared/principal-tools.js +64 -0
  268. package/build/system/workflows/shared/tool-executor.js +21 -11
  269. package/build/system/workflows/shared/tool-loader.js +8 -1
  270. package/build/tsconfig.tsbuildinfo +1 -1
  271. package/build/types/auth.d.ts +1 -1
  272. package/build/types/capability.d.ts +14 -0
  273. package/build/types/capability.js +2 -0
  274. package/build/types/events.d.ts +1 -1
  275. package/build/types/index.d.ts +5 -3
  276. package/build/types/index.js +2 -1
  277. package/build/types/mcp.d.ts +3 -1
  278. package/build/types/oauth-server.d.ts +52 -0
  279. package/build/types/oauth-server.js +2 -0
  280. package/build/types/scan-code/constants.d.ts +7 -0
  281. package/build/types/scan-code/constants.js +7 -1
  282. package/build/types/scan-code/response.d.ts +3 -2
  283. package/build/types/scan-code/rule.d.ts +6 -1
  284. package/build/types/startup.d.ts +23 -7
  285. package/build/vitest.config.js +2 -1
  286. package/build/vitest.fast.config.d.ts +2 -0
  287. package/build/vitest.fast.config.js +20 -0
  288. package/build/vitest.llm.config.d.ts +2 -0
  289. package/build/vitest.llm.config.js +16 -0
  290. package/dashboard/dist/assets/{AdminDashboard-DKrqLGjn.js → AdminDashboard-B3mkMIOT.js} +2 -2
  291. package/dashboard/dist/assets/{AdminDashboard-DKrqLGjn.js.map → AdminDashboard-B3mkMIOT.js.map} +1 -1
  292. package/dashboard/dist/assets/{AgentConfigPage-BoQhRW6U.js → AgentConfigPage-CQj2B678.js} +2 -2
  293. package/dashboard/dist/assets/{AgentConfigPage-BoQhRW6U.js.map → AgentConfigPage-CQj2B678.js.map} +1 -1
  294. package/dashboard/dist/assets/{AgentDetailPage-DZhzuZmO.js → AgentDetailPage-CzrD8JJI.js} +3 -3
  295. package/dashboard/dist/assets/{AgentDetailPage-DZhzuZmO.js.map → AgentDetailPage-CzrD8JJI.js.map} +1 -1
  296. package/dashboard/dist/assets/{AgentsPage-5MynmbWX.js → AgentsPage-jg2OFwyW.js} +2 -2
  297. package/dashboard/dist/assets/{AgentsPage-5MynmbWX.js.map → AgentsPage-jg2OFwyW.js.map} +1 -1
  298. package/dashboard/dist/assets/AvailableEscalationsPage-IS28XBRe.js +2 -0
  299. package/dashboard/dist/assets/AvailableEscalationsPage-IS28XBRe.js.map +1 -0
  300. package/dashboard/dist/assets/{BotPicker-C3LR6Sqy.js → BotPicker-DvEJFpwS.js} +2 -2
  301. package/dashboard/dist/assets/{BotPicker-C3LR6Sqy.js.map → BotPicker-DvEJFpwS.js.map} +1 -1
  302. package/dashboard/dist/assets/{BulkAssignModal-COjoOIIH.js → BulkAssignModal-BoQCi-YC.js} +2 -2
  303. package/dashboard/dist/assets/{BulkAssignModal-COjoOIIH.js.map → BulkAssignModal-BoQCi-YC.js.map} +1 -1
  304. package/dashboard/dist/assets/CapabilitiesPage-kwlrcb_t.js +2 -0
  305. package/dashboard/dist/assets/{CapabilitiesPage-DKxLvOfB.js.map → CapabilitiesPage-kwlrcb_t.js.map} +1 -1
  306. package/dashboard/dist/assets/{CollapsibleSection-Cz5sRx-r.js → CollapsibleSection-UMIV4KIj.js} +2 -2
  307. package/dashboard/dist/assets/{CollapsibleSection-Cz5sRx-r.js.map → CollapsibleSection-UMIV4KIj.js.map} +1 -1
  308. package/dashboard/dist/assets/ConfirmDeleteModal-C5puwMg7.js +2 -0
  309. package/dashboard/dist/assets/ConfirmDeleteModal-C5puwMg7.js.map +1 -0
  310. package/dashboard/dist/assets/ConnectedAppsPage-drZa65kP.js +2 -0
  311. package/dashboard/dist/assets/ConnectedAppsPage-drZa65kP.js.map +1 -0
  312. package/dashboard/dist/assets/CountdownTimer-LG03dVgR.js +2 -0
  313. package/dashboard/dist/assets/CountdownTimer-LG03dVgR.js.map +1 -0
  314. package/dashboard/dist/assets/{CredentialsPage-DhiHiPsG.js → CredentialsPage-CaFQ6vLb.js} +2 -2
  315. package/dashboard/dist/assets/{CredentialsPage-DhiHiPsG.js.map → CredentialsPage-CaFQ6vLb.js.map} +1 -1
  316. package/dashboard/dist/assets/{CronLabel-C9SkawB-.js → CronLabel-Co5j7tzW.js} +2 -2
  317. package/dashboard/dist/assets/{CronLabel-C9SkawB-.js.map → CronLabel-Co5j7tzW.js.map} +1 -1
  318. package/dashboard/dist/assets/DataTable-FjFhx0SE.js +2 -0
  319. package/dashboard/dist/assets/DataTable-FjFhx0SE.js.map +1 -0
  320. package/dashboard/dist/assets/{ElapsedCell-BeK1SUDK.js → ElapsedCell-WJyE9G0T.js} +2 -2
  321. package/dashboard/dist/assets/{ElapsedCell-BeK1SUDK.js.map → ElapsedCell-WJyE9G0T.js.map} +1 -1
  322. package/dashboard/dist/assets/{EntityTimelinePanel-BThdefKj.js → EntityTimelinePanel-CDFFfX9d.js} +2 -2
  323. package/dashboard/dist/assets/{EntityTimelinePanel-BThdefKj.js.map → EntityTimelinePanel-CDFFfX9d.js.map} +1 -1
  324. package/dashboard/dist/assets/{EscalationListSchemaPage-DlDIYb-p.js → EscalationListSchemaPage-CMrUlaKI.js} +3 -3
  325. package/dashboard/dist/assets/{EscalationListSchemaPage-DlDIYb-p.js.map → EscalationListSchemaPage-CMrUlaKI.js.map} +1 -1
  326. package/dashboard/dist/assets/{EscalationSchemaPage-CQt-Embr.js → EscalationSchemaPage-Dx2Lyfrz.js} +3 -3
  327. package/dashboard/dist/assets/{EscalationSchemaPage-CQt-Embr.js.map → EscalationSchemaPage-Dx2Lyfrz.js.map} +1 -1
  328. package/dashboard/dist/assets/EscalationTimeline-d3nvshOk.js +2 -0
  329. package/dashboard/dist/assets/EscalationTimeline-d3nvshOk.js.map +1 -0
  330. package/dashboard/dist/assets/{EscalationTitleSelect-Dewrv8wX.js → EscalationTitleSelect-DWQieOM9.js} +2 -2
  331. package/dashboard/dist/assets/{EscalationTitleSelect-Dewrv8wX.js.map → EscalationTitleSelect-DWQieOM9.js.map} +1 -1
  332. package/dashboard/dist/assets/{EscalationsOverview-BzH-Y-5x.js → EscalationsOverview-BX8Cpi0X.js} +2 -2
  333. package/dashboard/dist/assets/{EscalationsOverview-BzH-Y-5x.js.map → EscalationsOverview-BX8Cpi0X.js.map} +1 -1
  334. package/dashboard/dist/assets/{EventTable-C97m6IZv.js → EventTable-D1-ITVXS.js} +2 -2
  335. package/dashboard/dist/assets/{EventTable-C97m6IZv.js.map → EventTable-D1-ITVXS.js.map} +1 -1
  336. package/dashboard/dist/assets/{FilterBar-D-6xVHIw.js → FilterBar-ABC9ctin.js} +2 -2
  337. package/dashboard/dist/assets/{FilterBar-D-6xVHIw.js.map → FilterBar-ABC9ctin.js.map} +1 -1
  338. package/dashboard/dist/assets/FormattedValue-k27T4bG7.js +2 -0
  339. package/dashboard/dist/assets/FormattedValue-k27T4bG7.js.map +1 -0
  340. package/dashboard/dist/assets/{GraphInvokePage-Bwi8EF9Y.js → GraphInvokePage-DKUErxWc.js} +2 -2
  341. package/dashboard/dist/assets/{GraphInvokePage-Bwi8EF9Y.js.map → GraphInvokePage-DKUErxWc.js.map} +1 -1
  342. package/dashboard/dist/assets/{HomePage-Z_Q03C0z.js → HomePage-C6u9dIpR.js} +2 -2
  343. package/dashboard/dist/assets/{HomePage-Z_Q03C0z.js.map → HomePage-C6u9dIpR.js.map} +1 -1
  344. package/dashboard/dist/assets/{ListToolbar-_jWTw5no.js → ListToolbar-gA5rFzkz.js} +2 -2
  345. package/dashboard/dist/assets/{ListToolbar-_jWTw5no.js.map → ListToolbar-gA5rFzkz.js.map} +1 -1
  346. package/dashboard/dist/assets/{McpOverview-CjqTuP0N.js → McpOverview-BOPo3J_i.js} +2 -2
  347. package/dashboard/dist/assets/{McpOverview-CjqTuP0N.js.map → McpOverview-BOPo3J_i.js.map} +1 -1
  348. package/dashboard/dist/assets/{McpQueryDetailPage-leCsje1U.js → McpQueryDetailPage-BRVVi0Zh.js} +2 -2
  349. package/dashboard/dist/assets/{McpQueryDetailPage-leCsje1U.js.map → McpQueryDetailPage-BRVVi0Zh.js.map} +1 -1
  350. package/dashboard/dist/assets/{McpQueryPage-C-PyXYX4.js → McpQueryPage-Dmbb6SAc.js} +2 -2
  351. package/dashboard/dist/assets/{McpQueryPage-C-PyXYX4.js.map → McpQueryPage-Dmbb6SAc.js.map} +1 -1
  352. package/dashboard/dist/assets/{McpRunDetailPage-JDrr3uUQ.js → McpRunDetailPage-bMXNO-6V.js} +2 -2
  353. package/dashboard/dist/assets/{McpRunDetailPage-JDrr3uUQ.js.map → McpRunDetailPage-bMXNO-6V.js.map} +1 -1
  354. package/dashboard/dist/assets/{McpRunsPage-DERXQLgZ.js → McpRunsPage-Bi9AMWja.js} +2 -2
  355. package/dashboard/dist/assets/{McpRunsPage-DERXQLgZ.js.map → McpRunsPage-Bi9AMWja.js.map} +1 -1
  356. package/dashboard/dist/assets/{OperationsPage-B2DA7n9m.js → OperationsPage-CvR74ZUJ.js} +3 -3
  357. package/dashboard/dist/assets/OperationsPage-CvR74ZUJ.js.map +1 -0
  358. package/dashboard/dist/assets/OperatorDashboard-DctmZw10.js +2 -0
  359. package/dashboard/dist/assets/OperatorDashboard-DctmZw10.js.map +1 -0
  360. package/dashboard/dist/assets/{PersonaDetailPage-ChXwJ6u5.js → PersonaDetailPage-Ubqm2rQH.js} +2 -2
  361. package/dashboard/dist/assets/{PersonaDetailPage-ChXwJ6u5.js.map → PersonaDetailPage-Ubqm2rQH.js.map} +1 -1
  362. package/dashboard/dist/assets/{PersonasPage-BFFxncSE.js → PersonasPage-BpFL2rpo.js} +2 -2
  363. package/dashboard/dist/assets/{PersonasPage-BFFxncSE.js.map → PersonasPage-BpFL2rpo.js.map} +1 -1
  364. package/dashboard/dist/assets/PortalPage-Dfc_Q02R.js +2 -0
  365. package/dashboard/dist/assets/PortalPage-Dfc_Q02R.js.map +1 -0
  366. package/dashboard/dist/assets/ProcessDetailPage-liJspvQh.js +2 -0
  367. package/dashboard/dist/assets/{ProcessDetailPage-D7EYwW-j.js.map → ProcessDetailPage-liJspvQh.js.map} +1 -1
  368. package/dashboard/dist/assets/{ProcessesListPage-CakYRtnE.js → ProcessesListPage-C3OM5ZUy.js} +2 -2
  369. package/dashboard/dist/assets/{ProcessesListPage-CakYRtnE.js.map → ProcessesListPage-C3OM5ZUy.js.map} +1 -1
  370. package/dashboard/dist/assets/ResolverForm-B1_x8Blv.js +8 -0
  371. package/dashboard/dist/assets/ResolverForm-B1_x8Blv.js.map +1 -0
  372. package/dashboard/dist/assets/{RoleDetailPage-CKbGwezP.js → RoleDetailPage-CrlYCh-R.js} +2 -2
  373. package/dashboard/dist/assets/{RoleDetailPage-CKbGwezP.js.map → RoleDetailPage-CrlYCh-R.js.map} +1 -1
  374. package/dashboard/dist/assets/{RolesPage-Czu7Zku4.js → RolesPage-BaazL_pt.js} +2 -2
  375. package/dashboard/dist/assets/{RolesPage-Czu7Zku4.js.map → RolesPage-BaazL_pt.js.map} +1 -1
  376. package/dashboard/dist/assets/{RunAsSelector-6BLScYTX.js → RunAsSelector-DxuV0fa1.js} +2 -2
  377. package/dashboard/dist/assets/{RunAsSelector-6BLScYTX.js.map → RunAsSelector-DxuV0fa1.js.map} +1 -1
  378. package/dashboard/dist/assets/{ScanCodesPage-Cv9q8Bvt.js → ScanCodesPage-C0mvmYTq.js} +2 -2
  379. package/dashboard/dist/assets/{ScanCodesPage-Cv9q8Bvt.js.map → ScanCodesPage-C0mvmYTq.js.map} +1 -1
  380. package/dashboard/dist/assets/{ScanSchemeDetailPage-BxazXYIc.js → ScanSchemeDetailPage-CiJgt5dZ.js} +2 -2
  381. package/dashboard/dist/assets/{ScanSchemeDetailPage-BxazXYIc.js.map → ScanSchemeDetailPage-CiJgt5dZ.js.map} +1 -1
  382. package/dashboard/dist/assets/ScanStationPage-DzGaXc40.js +2 -0
  383. package/dashboard/dist/assets/ScanStationPage-DzGaXc40.js.map +1 -0
  384. package/dashboard/dist/assets/{StickyPagination-DsdtYoXR.js → StickyPagination-CqbjVY6T.js} +2 -2
  385. package/dashboard/dist/assets/{StickyPagination-DsdtYoXR.js.map → StickyPagination-CqbjVY6T.js.map} +1 -1
  386. package/dashboard/dist/assets/{StreamMessageDetail-CT3FQoT3.js → StreamMessageDetail-wX3i0aqs.js} +2 -2
  387. package/dashboard/dist/assets/{StreamMessageDetail-CT3FQoT3.js.map → StreamMessageDetail-wX3i0aqs.js.map} +1 -1
  388. package/dashboard/dist/assets/{SwimlaneTimeline-C8TjkJ10.js → SwimlaneTimeline-C50PsFoV.js} +2 -2
  389. package/dashboard/dist/assets/{SwimlaneTimeline-C8TjkJ10.js.map → SwimlaneTimeline-C50PsFoV.js.map} +1 -1
  390. package/dashboard/dist/assets/{TaskDetailPage-DGUzdBFN.js → TaskDetailPage-bbNSv4Ae.js} +2 -2
  391. package/dashboard/dist/assets/{TaskDetailPage-DGUzdBFN.js.map → TaskDetailPage-bbNSv4Ae.js.map} +1 -1
  392. package/dashboard/dist/assets/{TasksListPage-BVIP6-EZ.js → TasksListPage-CDWnm_d9.js} +2 -2
  393. package/dashboard/dist/assets/{TasksListPage-BVIP6-EZ.js.map → TasksListPage-CDWnm_d9.js.map} +1 -1
  394. package/dashboard/dist/assets/{TimeAgo-C-rd9F9g.js → TimeAgo-BLjqlfoX.js} +2 -2
  395. package/dashboard/dist/assets/{TimeAgo-C-rd9F9g.js.map → TimeAgo-BLjqlfoX.js.map} +1 -1
  396. package/dashboard/dist/assets/{TimestampCell-DPbchDOI.js → TimestampCell-CnW0ENb5.js} +2 -2
  397. package/dashboard/dist/assets/{TimestampCell-DPbchDOI.js.map → TimestampCell-CnW0ENb5.js.map} +1 -1
  398. package/dashboard/dist/assets/{ToolTestPanel-DAUC8DHK.js → ToolTestPanel-DkMgCB-k.js} +2 -2
  399. package/dashboard/dist/assets/{ToolTestPanel-DAUC8DHK.js.map → ToolTestPanel-DkMgCB-k.js.map} +1 -1
  400. package/dashboard/dist/assets/{TopicDetailPage-70mMKBzG.js → TopicDetailPage-g3pljKKX.js} +2 -2
  401. package/dashboard/dist/assets/{TopicDetailPage-70mMKBzG.js.map → TopicDetailPage-g3pljKKX.js.map} +1 -1
  402. package/dashboard/dist/assets/{TopicsPage-CE3hBthn.js → TopicsPage-CVcCYdy-.js} +2 -2
  403. package/dashboard/dist/assets/{TopicsPage-CE3hBthn.js.map → TopicsPage-CVcCYdy-.js.map} +1 -1
  404. package/dashboard/dist/assets/{UserName-BDBDA-LR.js → UserName-D6zGIK2i.js} +2 -2
  405. package/dashboard/dist/assets/{UserName-BDBDA-LR.js.map → UserName-D6zGIK2i.js.map} +1 -1
  406. package/dashboard/dist/assets/{WorkflowExecutionPage-BbkLZ1co.js → WorkflowExecutionPage-B8g81FCJ.js} +2 -2
  407. package/dashboard/dist/assets/{WorkflowExecutionPage-BbkLZ1co.js.map → WorkflowExecutionPage-B8g81FCJ.js.map} +1 -1
  408. package/dashboard/dist/assets/{WorkflowsDashboard-Bp1L7Ggz.js → WorkflowsDashboard-nxT3bv6W.js} +2 -2
  409. package/dashboard/dist/assets/{WorkflowsDashboard-Bp1L7Ggz.js.map → WorkflowsDashboard-nxT3bv6W.js.map} +1 -1
  410. package/dashboard/dist/assets/{WorkflowsOverview-IeTKHAi4.js → WorkflowsOverview-grI-KAI2.js} +2 -2
  411. package/dashboard/dist/assets/{WorkflowsOverview-IeTKHAi4.js.map → WorkflowsOverview-grI-KAI2.js.map} +1 -1
  412. package/dashboard/dist/assets/{YamlWorkflowDetailPage-DtKCXnKt.js → YamlWorkflowDetailPage-BoZ-hfBE.js} +2 -2
  413. package/dashboard/dist/assets/{YamlWorkflowDetailPage-DtKCXnKt.js.map → YamlWorkflowDetailPage-BoZ-hfBE.js.map} +1 -1
  414. package/dashboard/dist/assets/{YamlWorkflowsPage-CEcZBV_3.js → YamlWorkflowsPage-Bf04rwRv.js} +2 -2
  415. package/dashboard/dist/assets/{YamlWorkflowsPage-CEcZBV_3.js.map → YamlWorkflowsPage-Bf04rwRv.js.map} +1 -1
  416. package/dashboard/dist/assets/{agents-BT-sEk81.js → agents-Dphpdi8l.js} +2 -2
  417. package/dashboard/dist/assets/{agents-BT-sEk81.js.map → agents-Dphpdi8l.js.map} +1 -1
  418. package/dashboard/dist/assets/{bots-DRoAdLek.js → bots-DIFE298x.js} +2 -2
  419. package/dashboard/dist/assets/{bots-DRoAdLek.js.map → bots-DIFE298x.js.map} +1 -1
  420. package/dashboard/dist/assets/{capabilities-Bc-nJk6y.js → capabilities-D7Y7LClY.js} +2 -2
  421. package/dashboard/dist/assets/{capabilities-Bc-nJk6y.js.map → capabilities-D7Y7LClY.js.map} +1 -1
  422. package/dashboard/dist/assets/{controlplane-aXceSIRf.js → controlplane-D1TGcYsS.js} +2 -2
  423. package/dashboard/dist/assets/{controlplane-aXceSIRf.js.map → controlplane-D1TGcYsS.js.map} +1 -1
  424. package/dashboard/dist/assets/escalation-columns-cwZE6xyo.js +2 -0
  425. package/dashboard/dist/assets/escalation-columns-cwZE6xyo.js.map +1 -0
  426. package/dashboard/dist/assets/{index-CuBGGwXf.js → index-BzYcUPdD.js} +2 -2
  427. package/dashboard/dist/assets/{index-CuBGGwXf.js.map → index-BzYcUPdD.js.map} +1 -1
  428. package/dashboard/dist/assets/index-CeCtqujG.js +67 -0
  429. package/dashboard/dist/assets/index-CeCtqujG.js.map +1 -0
  430. package/dashboard/dist/assets/{index-h2gX31B2.js → index-ChV7pBjM.js} +2 -2
  431. package/dashboard/dist/assets/{index-h2gX31B2.js.map → index-ChV7pBjM.js.map} +1 -1
  432. package/dashboard/dist/assets/index-CniRa65p.js +3 -0
  433. package/dashboard/dist/assets/index-CniRa65p.js.map +1 -0
  434. package/dashboard/dist/assets/index-CxdjT1Yk.js +2 -0
  435. package/dashboard/dist/assets/{index-BCFEQEMC.js.map → index-CxdjT1Yk.js.map} +1 -1
  436. package/dashboard/dist/assets/{index-CZyO9hRb.js → index-DAvi5_2T.js} +2 -2
  437. package/dashboard/dist/assets/{index-CZyO9hRb.js.map → index-DAvi5_2T.js.map} +1 -1
  438. package/dashboard/dist/assets/{index-Djsoi8DI.js → index-DN-kX7hL.js} +2 -2
  439. package/dashboard/dist/assets/{index-Djsoi8DI.js.map → index-DN-kX7hL.js.map} +1 -1
  440. package/dashboard/dist/assets/index-Dl_8hbYI.js +2 -0
  441. package/dashboard/dist/assets/index-Dl_8hbYI.js.map +1 -0
  442. package/dashboard/dist/assets/{index-DBxpyIw5.js → index-DpKOr311.js} +2 -2
  443. package/dashboard/dist/assets/{index-DBxpyIw5.js.map → index-DpKOr311.js.map} +1 -1
  444. package/dashboard/dist/assets/{index-Ba-s5Yb5.js → index-Dy1wWu2e.js} +2 -2
  445. package/dashboard/dist/assets/{index-Ba-s5Yb5.js.map → index-Dy1wWu2e.js.map} +1 -1
  446. package/dashboard/dist/assets/{index-DH03y-UT.js → index-HLu98Sqh.js} +2 -2
  447. package/dashboard/dist/assets/{index-DH03y-UT.js.map → index-HLu98Sqh.js.map} +1 -1
  448. package/dashboard/dist/assets/{index-C3VTJcrp.js → index-ag2pCAPu.js} +2 -2
  449. package/dashboard/dist/assets/{index-C3VTJcrp.js.map → index-ag2pCAPu.js.map} +1 -1
  450. package/dashboard/dist/assets/index-gkxPN7Vx.js +13 -0
  451. package/dashboard/dist/assets/{index-BEPKAjna.js.map → index-gkxPN7Vx.js.map} +1 -1
  452. package/dashboard/dist/assets/index-m9A3UYst.css +1 -0
  453. package/dashboard/dist/assets/{knowledge-BhW8V-Hq.js → knowledge-DnMs-SOJ.js} +2 -2
  454. package/dashboard/dist/assets/{knowledge-BhW8V-Hq.js.map → knowledge-DnMs-SOJ.js.map} +1 -1
  455. package/dashboard/dist/assets/{mcp-BYfSMQzh.js → mcp-CwW-K3r4.js} +2 -2
  456. package/dashboard/dist/assets/{mcp-BYfSMQzh.js.map → mcp-CwW-K3r4.js.map} +1 -1
  457. package/dashboard/dist/assets/{mcp-query-DUJoOk_q.js → mcp-query-BZt5e8_Q.js} +2 -2
  458. package/dashboard/dist/assets/{mcp-query-DUJoOk_q.js.map → mcp-query-BZt5e8_Q.js.map} +1 -1
  459. package/dashboard/dist/assets/{personas-jT1O_SB4.js → personas-UA-Xn60f.js} +2 -2
  460. package/dashboard/dist/assets/{personas-jT1O_SB4.js.map → personas-UA-Xn60f.js.map} +1 -1
  461. package/dashboard/dist/assets/{pipelines-Bp-wIaz2.js → pipelines-Cu3PARum.js} +2 -2
  462. package/dashboard/dist/assets/{pipelines-Bp-wIaz2.js.map → pipelines-Cu3PARum.js.map} +1 -1
  463. package/dashboard/dist/assets/{tasks-CCrvnXbz.js → tasks-BO6h8GJE.js} +2 -2
  464. package/dashboard/dist/assets/{tasks-CCrvnXbz.js.map → tasks-BO6h8GJE.js.map} +1 -1
  465. package/dashboard/dist/assets/{topics-Blft0I1L.js → topics-CWjCR-17.js} +2 -2
  466. package/dashboard/dist/assets/{topics-Blft0I1L.js.map → topics-CWjCR-17.js.map} +1 -1
  467. package/dashboard/dist/assets/{useDebouncedValue-BYqbcism.js → useDebouncedValue-6t0jx1RB.js} +2 -2
  468. package/dashboard/dist/assets/{useDebouncedValue-BYqbcism.js.map → useDebouncedValue-6t0jx1RB.js.map} +1 -1
  469. package/dashboard/dist/assets/{useNamespace-BfxJAUgG.js → useNamespace-CqpoQx6D.js} +2 -2
  470. package/dashboard/dist/assets/{useNamespace-BfxJAUgG.js.map → useNamespace-CqpoQx6D.js.map} +1 -1
  471. package/dashboard/dist/assets/{useYamlActivityEvents-BukJuWpb.js → useYamlActivityEvents-hmCQQwzB.js} +2 -2
  472. package/dashboard/dist/assets/{useYamlActivityEvents-BukJuWpb.js.map → useYamlActivityEvents-hmCQQwzB.js.map} +1 -1
  473. package/dashboard/dist/assets/validate-BIRn4a6d.js +2 -0
  474. package/dashboard/dist/assets/validate-BIRn4a6d.js.map +1 -0
  475. package/dashboard/dist/assets/{yaml-workflows-DeRWqMGk.js → yaml-workflows-ziUdZhKY.js} +2 -2
  476. package/dashboard/dist/assets/{yaml-workflows-DeRWqMGk.js.map → yaml-workflows-ziUdZhKY.js.map} +1 -1
  477. package/dashboard/dist/index.html +2 -2
  478. package/docs/agents.md +3 -1
  479. package/docs/api/http/agents.md +15 -1
  480. package/docs/api/http/escalations.md +49 -3
  481. package/docs/api/http/exports.md +3 -1
  482. package/docs/api/http/file-browser.md +3 -1
  483. package/docs/api/http/mcp-endpoint.md +5 -2
  484. package/docs/api/http/mcp-servers.md +34 -4
  485. package/docs/api/http/namespaces.md +2 -0
  486. package/docs/api/http/pipelines.md +2 -0
  487. package/docs/api/http/roles.md +11 -8
  488. package/docs/api/http/service-accounts.md +8 -2
  489. package/docs/api/http/settings.md +29 -2
  490. package/docs/api/http/tasks.md +3 -1
  491. package/docs/api/http/topics.md +7 -1
  492. package/docs/api/http/users.md +8 -2
  493. package/docs/api/http/workflows.md +25 -10
  494. package/docs/api/http/yaml-workflows.md +21 -0
  495. package/docs/api/mcp/admin.md +409 -49
  496. package/docs/api/mcp/file-storage.md +4 -0
  497. package/docs/api/mcp/http-fetch.md +6 -2
  498. package/docs/api/mcp/human-queue.md +53 -0
  499. package/docs/api/mcp/index.md +13 -10
  500. package/docs/api/mcp/knowledge.md +34 -0
  501. package/docs/api/mcp/oauth.md +1 -1
  502. package/docs/api/mcp/ortho.md +113 -0
  503. package/docs/api/mcp/vision.md +1 -1
  504. package/docs/api/sdk/bot-accounts.md +1 -0
  505. package/docs/api/sdk/escalations.md +18 -2
  506. package/docs/api/sdk/mcp.md +2 -2
  507. package/docs/api/sdk/settings.md +1 -1
  508. package/docs/api/sdk/tasks.md +2 -2
  509. package/docs/api/sdk/workflows.md +2 -2
  510. package/docs/api/sdk/yaml-workflows.md +1 -1
  511. package/docs/architecture.md +3 -1
  512. package/docs/auth.md +3 -2
  513. package/docs/cloud.md +7 -2
  514. package/docs/code-owned-configuration.md +12 -0
  515. package/docs/dashboard.md +16 -7
  516. package/docs/data.md +1 -1
  517. package/docs/escalation-strategies.md +9 -20
  518. package/docs/events.md +6 -0
  519. package/docs/hitl/portal.md +2 -0
  520. package/docs/hitl/x-lt-list-schema.md +88 -1
  521. package/docs/hitl/x-lt-scan.md +4 -1
  522. package/docs/iam.md +7 -5
  523. package/docs/mcp.md +159 -210
  524. package/docs/oauth-and-delegation.md +32 -21
  525. package/docs/scan-codes.md +7 -1
  526. package/docs/topics.md +2 -0
  527. package/docs/workflows.md +14 -112
  528. package/package.json +6 -3
  529. package/dashboard/dist/assets/AvailableEscalationsPage-CWMyy3IL.js +0 -2
  530. package/dashboard/dist/assets/AvailableEscalationsPage-CWMyy3IL.js.map +0 -1
  531. package/dashboard/dist/assets/CapabilitiesPage-DKxLvOfB.js +0 -2
  532. package/dashboard/dist/assets/ConfirmDeleteModal-Beq1vQtY.js +0 -2
  533. package/dashboard/dist/assets/ConfirmDeleteModal-Beq1vQtY.js.map +0 -1
  534. package/dashboard/dist/assets/CountdownTimer-BUBl_4mP.js +0 -2
  535. package/dashboard/dist/assets/CountdownTimer-BUBl_4mP.js.map +0 -1
  536. package/dashboard/dist/assets/DataTable-spX1dFyb.js +0 -2
  537. package/dashboard/dist/assets/DataTable-spX1dFyb.js.map +0 -1
  538. package/dashboard/dist/assets/EscalationListView-DTIVuym4.js +0 -2
  539. package/dashboard/dist/assets/EscalationListView-DTIVuym4.js.map +0 -1
  540. package/dashboard/dist/assets/EscalationTimeline-DNKNp6pL.js +0 -2
  541. package/dashboard/dist/assets/EscalationTimeline-DNKNp6pL.js.map +0 -1
  542. package/dashboard/dist/assets/OperationsPage-B2DA7n9m.js.map +0 -1
  543. package/dashboard/dist/assets/OperatorDashboard-C8RtPv8P.js +0 -2
  544. package/dashboard/dist/assets/OperatorDashboard-C8RtPv8P.js.map +0 -1
  545. package/dashboard/dist/assets/PortalPage-Xk1zVneM.js +0 -2
  546. package/dashboard/dist/assets/PortalPage-Xk1zVneM.js.map +0 -1
  547. package/dashboard/dist/assets/ProcessDetailPage-D7EYwW-j.js +0 -2
  548. package/dashboard/dist/assets/ResolverForm-BwVOJUpJ.js +0 -8
  549. package/dashboard/dist/assets/ResolverForm-BwVOJUpJ.js.map +0 -1
  550. package/dashboard/dist/assets/ScanStationPage-Cg8LCFR7.js +0 -2
  551. package/dashboard/dist/assets/ScanStationPage-Cg8LCFR7.js.map +0 -1
  552. package/dashboard/dist/assets/escalation-columns-Bf09Q89t.js +0 -2
  553. package/dashboard/dist/assets/escalation-columns-Bf09Q89t.js.map +0 -1
  554. package/dashboard/dist/assets/index-BCFEQEMC.js +0 -2
  555. package/dashboard/dist/assets/index-BEPKAjna.js +0 -13
  556. package/dashboard/dist/assets/index-BUYokcrl.js +0 -67
  557. package/dashboard/dist/assets/index-BUYokcrl.js.map +0 -1
  558. package/dashboard/dist/assets/index-CcgmR-7-.js +0 -2
  559. package/dashboard/dist/assets/index-CcgmR-7-.js.map +0 -1
  560. package/dashboard/dist/assets/index-D1mKf_qz.js +0 -3
  561. package/dashboard/dist/assets/index-D1mKf_qz.js.map +0 -1
  562. package/dashboard/dist/assets/index-DcppjzP5.css +0 -1
@@ -33,10 +33,18 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const express_1 = require("express");
36
+ const http_1 = require("../lib/http");
37
37
  const auth_1 = require("../modules/auth");
38
+ const capabilities_1 = require("../modules/capabilities");
38
39
  const api = __importStar(require("../api/bot-accounts"));
39
- const router = (0, express_1.Router)();
40
+ const router = (0, http_1.Router)();
41
+ /** Answer a refused decision with 403; true when the request may go on. */
42
+ function allowed(decision, res) {
43
+ if (decision.allowed)
44
+ return true;
45
+ res.status(403).json({ error: decision.error });
46
+ return false;
47
+ }
40
48
  // All bot account routes require admin access
41
49
  router.use(auth_1.requireBuilder);
42
50
  // ── Bot CRUD ─────────────────────────────────────────────────────────────────
@@ -69,6 +77,8 @@ router.get('/:id', async (req, res) => {
69
77
  */
70
78
  router.post('/', async (req, res) => {
71
79
  const { name, description, display_name, roles } = req.body || {};
80
+ if (!allowed(await (0, capabilities_1.mayGrantRoles)(req.auth.userId, roles), res))
81
+ return;
72
82
  const result = await api.createBot({ name, description, display_name, roles }, req.auth ? { userId: req.auth.userId } : undefined);
73
83
  res.status(result.status).json(result.data ?? { error: result.error });
74
84
  });
@@ -78,6 +88,8 @@ router.post('/', async (req, res) => {
78
88
  * Body: { display_name?, description?, status? }
79
89
  */
80
90
  router.put('/:id', async (req, res) => {
91
+ if (!allowed(await (0, capabilities_1.mayManageAccount)(req.auth.userId, String(req.params.id)), res))
92
+ return;
81
93
  const result = await api.updateBot({ id: req.params.id, ...(req.body || {}) });
82
94
  res.status(result.status).json(result.data ?? { error: result.error });
83
95
  });
@@ -86,6 +98,8 @@ router.put('/:id', async (req, res) => {
86
98
  * Delete a bot account.
87
99
  */
88
100
  router.delete('/:id', async (req, res) => {
101
+ if (!allowed(await (0, capabilities_1.mayManageAccount)(req.auth.userId, String(req.params.id)), res))
102
+ return;
89
103
  const result = await api.deleteBot({ id: req.params.id });
90
104
  res.status(result.status).json(result.data ?? { error: result.error });
91
105
  });
@@ -105,6 +119,8 @@ router.get('/:id/roles', async (req, res) => {
105
119
  */
106
120
  router.post('/:id/roles', async (req, res) => {
107
121
  const { role, type } = req.body || {};
122
+ if (!allowed(await (0, capabilities_1.mayGrantRole)(req.auth.userId, { role, type }), res))
123
+ return;
108
124
  const result = await api.addBotRole({ id: req.params.id, role, type });
109
125
  res.status(result.status).json(result.data ?? { error: result.error });
110
126
  });
@@ -113,6 +129,8 @@ router.post('/:id/roles', async (req, res) => {
113
129
  * Remove a role from a bot.
114
130
  */
115
131
  router.delete('/:id/roles/:role', async (req, res) => {
132
+ if (!allowed(await (0, capabilities_1.mayRevokeRole)(req.auth.userId, String(req.params.id), String(req.params.role)), res))
133
+ return;
116
134
  const result = await api.removeBotRole({ id: req.params.id, role: req.params.role });
117
135
  res.status(result.status).json(result.data ?? { error: result.error });
118
136
  });
@@ -132,6 +150,8 @@ router.get('/:id/api-keys', async (req, res) => {
132
150
  * Returns the raw key ONCE — it cannot be retrieved again.
133
151
  */
134
152
  router.post('/:id/api-keys', async (req, res) => {
153
+ if (!allowed(await (0, capabilities_1.mayManageAccount)(req.auth.userId, String(req.params.id)), res))
154
+ return;
135
155
  const { name, scopes, expires_at } = req.body || {};
136
156
  const result = await api.createBotKey({
137
157
  id: req.params.id,
@@ -146,7 +166,10 @@ router.post('/:id/api-keys', async (req, res) => {
146
166
  * Revoke (delete) a bot API key.
147
167
  */
148
168
  router.delete('/:id/api-keys/:keyId', async (req, res) => {
149
- const result = await api.revokeBotKey({ keyId: req.params.keyId });
169
+ const botId = String(req.params.id);
170
+ if (!allowed(await (0, capabilities_1.mayManageAccount)(req.auth.userId, botId), res))
171
+ return;
172
+ const result = await api.revokeBotKey({ keyId: String(req.params.keyId), botId });
150
173
  res.status(result.status).json(result.data ?? { error: result.error });
151
174
  });
152
175
  exports.default = router;
@@ -33,15 +33,15 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const express_1 = require("express");
36
+ const http_1 = require("../lib/http");
37
37
  const api = __importStar(require("../api/capabilities"));
38
- const router = (0, express_1.Router)();
38
+ const router = (0, http_1.Router)();
39
39
  /**
40
40
  * GET /api/capabilities
41
41
  * List all platform capabilities grouped by category.
42
42
  */
43
- router.get('/', async (_req, res) => {
44
- const result = await api.listCapabilities();
43
+ router.get('/', async (req, res) => {
44
+ const result = await api.listCapabilities(req.auth);
45
45
  res.status(result.status).json(result.data ?? { error: result.error });
46
46
  });
47
47
  exports.default = router;
@@ -33,10 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const express_1 = require("express");
36
+ const http_1 = require("../lib/http");
37
37
  const auth_1 = require("../modules/auth");
38
38
  const api = __importStar(require("../api/controlplane"));
39
- const router = (0, express_1.Router)();
39
+ const router = (0, http_1.Router)();
40
40
  /**
41
41
  * GET /api/controlplane/apps
42
42
  * List available HotMesh application namespaces.
@@ -33,10 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const express_1 = require("express");
36
+ const http_1 = require("../lib/http");
37
37
  const api = __importStar(require("../api/dba"));
38
38
  const auth_1 = require("../modules/auth");
39
- const router = (0, express_1.Router)();
39
+ const router = (0, http_1.Router)();
40
40
  /**
41
41
  * POST /api/dba/prune
42
42
  * Prune expired jobs, streams, and execution artifacts.
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const express_1 = require("express");
3
+ const http_1 = require("../lib/http");
4
4
  const delegation_1 = require("../services/auth/delegation");
5
5
  const service_token_1 = require("../services/auth/service-token");
6
6
  const oauth_1 = require("../services/oauth");
7
- const router = (0, express_1.Router)();
7
+ const router = (0, http_1.Router)();
8
8
  /**
9
9
  * GET /api/delegation/oauth/:provider/token
10
10
  *
@@ -33,10 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const express_1 = require("express");
36
+ const http_1 = require("../lib/http");
37
37
  const api = __importStar(require("../api/diagnostics"));
38
38
  const auth_1 = require("../modules/auth");
39
- const router = (0, express_1.Router)();
39
+ const router = (0, http_1.Router)();
40
40
  const VALID_SECTIONS = new Set(['events', 'streams']);
41
41
  /** Parse a comma-separated `include` query param into the recognized heavy sections. */
42
42
  function parseInclude(raw) {
@@ -33,10 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const express_1 = require("express");
36
+ const http_1 = require("../lib/http");
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
- const router = (0, express_1.Router)();
39
+ const router = (0, http_1.Router)();
40
40
  function projectRoot() {
41
41
  const candidates = [
42
42
  path.join(__dirname, '..'),
@@ -33,10 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const express_1 = require("express");
36
+ const http_1 = require("../lib/http");
37
37
  const auth_1 = require("../modules/auth");
38
38
  const api = __importStar(require("../api/domain"));
39
- const router = (0, express_1.Router)();
39
+ const router = (0, http_1.Router)();
40
40
  /**
41
41
  * GET /api/domain
42
42
  * The deployment's domain dictionary: `{ doc, version, updated_at }`, or
@@ -1,4 +1,4 @@
1
- import type { Router } from 'express';
1
+ import type { Router } from '../../lib/http';
2
2
  /**
3
3
  * Open-accumulator routes. The literal single-segment paths are registered
4
4
  * before the parameterized routes so /:id never shadows them; the /:id/*
@@ -1,4 +1,4 @@
1
- import type { Request, Response } from 'express';
1
+ import type { Request, Response } from '../../lib/http';
2
2
  import type { LTApiAuth } from '../../types/sdk';
3
3
  /** The header a shared station device rides its badge grant on. */
4
4
  export declare const ACTING_TOKEN_HEADER = "x-lt-acting-token";
@@ -1,4 +1,4 @@
1
- import type { Router } from 'express';
1
+ import type { Router } from '../../lib/http';
2
2
  /**
3
3
  * Escalation analytics HTTP surface — grouped membership/dwell aggregates and
4
4
  * per-entity timelines over the interval time-series. Read-only; the api layer
@@ -1,2 +1,2 @@
1
- import { Router } from 'express';
1
+ import { Router } from '../../lib/http';
2
2
  export declare function registerBulkRoutes(router: Router): void;
@@ -1,4 +1,4 @@
1
- import { Router } from 'express';
1
+ import { Router } from '../../lib/http';
2
2
  /**
3
3
  * Faceted-routing HTTP surface — pond search + batch claim. Each operation targets a
4
4
  * single pond `role` and is RBAC-scoped to it (the api layer enforces the gate). These
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const express_1 = require("express");
3
+ const http_1 = require("../../lib/http");
4
4
  const list_1 = require("./list");
5
5
  const bulk_1 = require("./bulk");
6
6
  const metadata_1 = require("./metadata");
@@ -9,7 +9,8 @@ const single_1 = require("./single");
9
9
  const resolve_1 = require("./resolve");
10
10
  const facets_1 = require("./facets");
11
11
  const analytics_1 = require("./analytics");
12
- const router = (0, express_1.Router)();
12
+ const related_1 = require("./related");
13
+ const router = (0, http_1.Router)();
13
14
  // Registration order matters: literal paths before parameterized /:id routes.
14
15
  // GET /, /available, /types, /stats
15
16
  (0, list_1.registerListRoutes)(router);
@@ -26,6 +27,8 @@ const router = (0, express_1.Router)();
26
27
  (0, facets_1.registerFacetRoutes)(router);
27
28
  // POST /aggregate-by-facets, /timeline-by-facet
28
29
  (0, analytics_1.registerAnalyticsRoutes)(router);
30
+ // POST /related, /related/rows
31
+ (0, related_1.registerRelatedRoutes)(router);
29
32
  // PATCH /:id/escalate, GET /by-workflow/:workflowId,
30
33
  // GET /:id, POST /:id/claim, POST /:id/release
31
34
  (0, single_1.registerSingleRoutes)(router);
@@ -1,2 +1,2 @@
1
- import { Router } from 'express';
1
+ import { Router } from '../../lib/http';
2
2
  export declare function registerListRoutes(router: Router): void;
@@ -110,6 +110,7 @@ function registerListRoutes(router) {
110
110
  available: req.query.available != null ? req.query.available === 'true' : undefined,
111
111
  jeopardy: req.query.jeopardy === '1' || req.query.jeopardy === 'true' || undefined,
112
112
  include: req.query.include,
113
+ groupBy: req.query.groupBy || undefined,
113
114
  }, req.auth);
114
115
  res.status(result.status).json(result.data ?? { error: result.error });
115
116
  });
@@ -138,6 +139,7 @@ function registerListRoutes(router) {
138
139
  orderBy: jsonParam(req.query.orderBy),
139
140
  jeopardy: req.query.jeopardy === '1' || req.query.jeopardy === 'true' || undefined,
140
141
  include: req.query.include,
142
+ groupBy: req.query.groupBy || undefined,
141
143
  }, req.auth);
142
144
  res.status(result.status).json(result.data ?? { error: result.error });
143
145
  });
@@ -1,4 +1,4 @@
1
- import type { Router } from 'express';
1
+ import type { Router } from '../../lib/http';
2
2
  /**
3
3
  * Register metadata-based escalation lookup routes.
4
4
  * Must be registered BEFORE parameterized /:id routes.
@@ -0,0 +1,7 @@
1
+ import type { Router } from '../../lib/http';
2
+ /**
3
+ * Related sets for role list views. The role's stored list schema declares
4
+ * the sets; the caller names the role, the page's host rows, and the schema
5
+ * version it rendered. Results are scoped to the caller's read scope.
6
+ */
7
+ export declare function registerRelatedRoutes(router: Router): void;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.registerRelatedRoutes = registerRelatedRoutes;
37
+ const api = __importStar(require("../../api/escalations"));
38
+ /**
39
+ * Related sets for role list views. The role's stored list schema declares
40
+ * the sets; the caller names the role, the page's host rows, and the schema
41
+ * version it rendered. Results are scoped to the caller's read scope.
42
+ */
43
+ function registerRelatedRoutes(router) {
44
+ /**
45
+ * POST /api/escalations/related
46
+ * Body: { role, ids, version? }
47
+ */
48
+ router.post('/related', async (req, res) => {
49
+ const result = await api.getRelatedAggregates(req.body ?? {}, req.auth);
50
+ res.status(result.status).json(result.data ?? { error: result.error });
51
+ });
52
+ /**
53
+ * POST /api/escalations/related/rows
54
+ * Body: { role, id, set, version?, limit? }
55
+ */
56
+ router.post('/related/rows', async (req, res) => {
57
+ const result = await api.getRelatedRows(req.body ?? {}, req.auth);
58
+ res.status(result.status).json(result.data ?? { error: result.error });
59
+ });
60
+ }
@@ -1,2 +1,2 @@
1
- import { Router } from 'express';
1
+ import { Router } from '../../lib/http';
2
2
  export declare function registerResolveRoutes(router: Router): void;
@@ -1,2 +1,2 @@
1
- import { Router } from 'express';
1
+ import { Router } from '../../lib/http';
2
2
  export declare function registerSingleRoutes(router: Router): void;
@@ -53,7 +53,7 @@ function registerSingleRoutes(router) {
53
53
  router.get('/by-workflow/:workflowId', async (req, res) => {
54
54
  const result = await api.getEscalationsByWorkflowId({
55
55
  workflowId: req.params.workflowId,
56
- });
56
+ }, req.auth);
57
57
  res.status(result.status).json(result.data ?? { error: result.error });
58
58
  });
59
59
  // -- Parameterized routes (must come after literal paths) --
@@ -33,14 +33,15 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const express_1 = require("express");
36
+ const http_1 = require("../lib/http");
37
+ const auth_1 = require("../modules/auth");
37
38
  const api = __importStar(require("../api/exports"));
38
- const router = (0, express_1.Router)();
39
+ const router = (0, http_1.Router)();
39
40
  /**
40
41
  * GET /api/workflow-states/jobs
41
42
  * List workflow jobs with optional filtering and pagination.
42
43
  */
43
- router.get('/jobs', async (req, res) => {
44
+ router.get('/jobs', auth_1.requireBuilder, async (req, res) => {
44
45
  const app_id = (req.query.app_id || req.query.namespace);
45
46
  if (!app_id) {
46
47
  res.status(400).json({ error: 'app_id (or namespace) query parameter is required' });
@@ -63,7 +64,7 @@ router.get('/jobs', async (req, res) => {
63
64
  * GET /api/workflow-states/:workflowId
64
65
  * Export the full workflow state using HotMesh's durable export.
65
66
  */
66
- router.get('/:workflowId', async (req, res) => {
67
+ router.get('/:workflowId', auth_1.requireBuilder, async (req, res) => {
67
68
  const allow = req.query.allow
68
69
  ? req.query.allow.split(',')
69
70
  : undefined;
@@ -72,7 +73,7 @@ router.get('/:workflowId', async (req, res) => {
72
73
  : undefined;
73
74
  const values = req.query.values === 'false' ? false : undefined;
74
75
  const result = await api.exportWorkflowState({
75
- workflowId: req.params.workflowId,
76
+ workflowId: String(req.params.workflowId),
76
77
  allow,
77
78
  block,
78
79
  values,
@@ -83,9 +84,9 @@ router.get('/:workflowId', async (req, res) => {
83
84
  * GET /api/workflow-states/:workflowId/execution
84
85
  * Export workflow state as a structured execution event history.
85
86
  */
86
- router.get('/:workflowId/execution', async (req, res) => {
87
+ router.get('/:workflowId/execution', auth_1.requireWorkflowReader, async (req, res) => {
87
88
  const result = await api.exportWorkflowExecution({
88
- workflowId: req.params.workflowId,
89
+ workflowId: String(req.params.workflowId),
89
90
  excludeSystem: req.query.excludeSystem === 'true',
90
91
  omitResults: req.query.omitResults === 'true',
91
92
  mode: req.query.mode || undefined,
@@ -100,9 +101,9 @@ router.get('/:workflowId/execution', async (req, res) => {
100
101
  * The workflow's input and output envelopes — two narrow lookups, no event
101
102
  * stream. Output is null with status 'running' until the workflow completes.
102
103
  */
103
- router.get('/:workflowId/envelopes', async (req, res) => {
104
+ router.get('/:workflowId/envelopes', auth_1.requireBuilder, async (req, res) => {
104
105
  const result = await api.getWorkflowEnvelopes({
105
- workflowId: req.params.workflowId,
106
+ workflowId: String(req.params.workflowId),
106
107
  });
107
108
  res.status(result.status).json(result.data ?? { error: result.error });
108
109
  });
@@ -110,9 +111,9 @@ router.get('/:workflowId/envelopes', async (req, res) => {
110
111
  * GET /api/workflow-states/:workflowId/status
111
112
  * Return only the numeric status semaphore.
112
113
  */
113
- router.get('/:workflowId/status', async (req, res) => {
114
+ router.get('/:workflowId/status', auth_1.requireBuilder, async (req, res) => {
114
115
  const result = await api.getWorkflowStatus({
115
- workflowId: req.params.workflowId,
116
+ workflowId: String(req.params.workflowId),
116
117
  });
117
118
  res.status(result.status).json(result.data ?? { error: result.error });
118
119
  });
@@ -120,9 +121,9 @@ router.get('/:workflowId/status', async (req, res) => {
120
121
  * GET /api/workflow-states/:workflowId/state
121
122
  * Return the current job state of the workflow.
122
123
  */
123
- router.get('/:workflowId/state', async (req, res) => {
124
+ router.get('/:workflowId/state', auth_1.requireBuilder, async (req, res) => {
124
125
  const result = await api.getWorkflowState({
125
- workflowId: req.params.workflowId,
126
+ workflowId: String(req.params.workflowId),
126
127
  });
127
128
  res.status(result.status).json(result.data ?? { error: result.error });
128
129
  });
@@ -36,18 +36,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- const express_1 = require("express");
39
+ const http_1 = require("../lib/http");
40
+ const auth_1 = require("../modules/auth");
40
41
  const path_1 = __importDefault(require("path"));
41
42
  const api = __importStar(require("../api/files"));
42
43
  const storage_1 = require("../lib/storage");
43
44
  const mime_1 = require("../lib/storage/mime");
44
- const router = (0, express_1.Router)();
45
+ const router = (0, http_1.Router)();
45
46
  /**
46
47
  * GET /api/file-browser/browse
47
48
  * List files and directories at a given prefix.
48
49
  * Query: ?prefix=screenshots/&pageSize=100&continuationToken=...
49
50
  */
50
- router.get('/browse', async (req, res) => {
51
+ router.get('/browse', auth_1.requireBuilder, async (req, res) => {
51
52
  const result = await api.browseFiles({
52
53
  prefix: req.query.prefix,
53
54
  pageSize: req.query.pageSize ? parseInt(req.query.pageSize, 10) : undefined,
@@ -59,7 +60,7 @@ router.get('/browse', async (req, res) => {
59
60
  * GET /api/file-browser/metadata/*
60
61
  * Get metadata for a single file.
61
62
  */
62
- router.get('/metadata/{*filePath}', async (req, res) => {
63
+ router.get('/metadata/{*filePath}', auth_1.requireBuilder, async (req, res) => {
63
64
  const raw = req.params.filePath;
64
65
  const filePath = Array.isArray(raw) ? raw.join('/') : raw;
65
66
  if (!filePath) {
@@ -74,7 +75,7 @@ router.get('/metadata/{*filePath}', async (req, res) => {
74
75
  * Generate a time-limited signed URL for sharing.
75
76
  * Body: { path, expiresIn } — expiresIn in seconds (3600, 21600, 86400, 604800, 2592000)
76
77
  */
77
- router.post('/signed-url', async (req, res) => {
78
+ router.post('/signed-url', auth_1.requireBuilder, async (req, res) => {
78
79
  const { path: filePath, expiresIn } = req.body;
79
80
  if (!filePath || !expiresIn) {
80
81
  res.status(400).json({ error: 'path and expiresIn are required' });
@@ -90,7 +91,7 @@ router.post('/signed-url', async (req, res) => {
90
91
  * DELETE /api/file-browser/delete/*
91
92
  * Permanently delete a file.
92
93
  */
93
- router.delete('/delete/{*filePath}', async (req, res) => {
94
+ router.delete('/delete/{*filePath}', auth_1.requireBuilder, async (req, res) => {
94
95
  const raw = req.params.filePath;
95
96
  const filePath = Array.isArray(raw) ? raw.join('/') : raw;
96
97
  if (!filePath) {
@@ -104,7 +105,7 @@ router.delete('/delete/{*filePath}', async (req, res) => {
104
105
  * GET /api/file-browser/download/*
105
106
  * Download a file with Content-Disposition: attachment.
106
107
  */
107
- router.get('/download/{*filePath}', async (req, res) => {
108
+ router.get('/download/{*filePath}', auth_1.requireBuilder, async (req, res) => {
108
109
  const raw = req.params.filePath;
109
110
  const filePath = Array.isArray(raw) ? raw.join('/') : raw;
110
111
  if (!filePath) {
@@ -129,7 +130,7 @@ router.get('/download/{*filePath}', async (req, res) => {
129
130
  * Query: ?path=images/photo.png (target path including filename)
130
131
  * Body: raw file bytes (Content-Type should match the file type)
131
132
  */
132
- router.post('/upload', async (req, res) => {
133
+ router.post('/upload', auth_1.requireBuilder, async (req, res) => {
133
134
  const targetPath = req.query.path;
134
135
  if (!targetPath) {
135
136
  res.status(400).json({ error: 'path query parameter required (e.g., ?path=images/photo.png)' });
@@ -3,11 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const express_1 = require("express");
6
+ const http_1 = require("../lib/http");
7
7
  const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
8
8
  const storage_1 = require("../lib/storage");
9
9
  const mime_1 = require("../lib/storage/mime");
10
- const router = (0, express_1.Router)();
10
+ const router = (0, http_1.Router)();
11
11
  /**
12
12
  * GET /api/files/*
13
13
  * Serve files from managed file storage.
@@ -3,11 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const express_1 = require("express");
6
+ const http_1 = require("../lib/http");
7
7
  const auth_1 = require("../modules/auth");
8
8
  const auth_2 = __importDefault(require("./auth"));
9
9
  const auth_sso_1 = __importDefault(require("./auth-sso"));
10
10
  const oauth_1 = __importDefault(require("./oauth"));
11
+ const oauth_server_1 = __importDefault(require("./oauth-server"));
11
12
  const delegation_1 = __importDefault(require("./delegation"));
12
13
  const tasks_1 = __importDefault(require("./tasks"));
13
14
  const escalations_1 = __importDefault(require("./escalations"));
@@ -39,11 +40,12 @@ const nats_credentials_1 = __importDefault(require("./nats-credentials"));
39
40
  const scan_codes_1 = __importDefault(require("./scan-codes"));
40
41
  const domain_1 = __importDefault(require("./domain"));
41
42
  const announcements_1 = __importDefault(require("./announcements"));
42
- const router = (0, express_1.Router)();
43
+ const router = (0, http_1.Router)();
43
44
  // Public routes (no auth required — they handle their own auth)
44
45
  router.use('/auth', auth_2.default);
45
46
  router.use('/auth', auth_sso_1.default);
46
47
  router.use('/auth/oauth', oauth_1.default);
48
+ router.use('/oauth', oauth_server_1.default);
47
49
  router.use('/delegation', delegation_1.default);
48
50
  router.use('/files', files_1.default);
49
51
  router.use('/settings', settings_1.default);
@@ -33,9 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const express_1 = require("express");
36
+ const http_1 = require("../lib/http");
37
+ const auth_1 = require("../modules/auth");
37
38
  const api = __importStar(require("../api/insight"));
38
- const router = (0, express_1.Router)();
39
+ const router = (0, http_1.Router)();
39
40
  /**
40
41
  * POST /api/insight/mcp-query
41
42
  * Run a general-purpose MCP query using all available tools.
@@ -52,7 +53,7 @@ router.post('/mcp-query', async (req, res) => {
52
53
  * The LLM reasons about tool schemas and constructs the YAML declaratively.
53
54
  * Body: { prompt: string, tags?: string[], wait?: boolean, feedback?: string, prior_yaml?: string }
54
55
  */
55
- router.post('/build-workflow', async (req, res) => {
56
+ router.post('/build-workflow', auth_1.requireBuilder, async (req, res) => {
56
57
  const { prompt, tags, wait, feedback, prior_yaml, answers, prior_questions } = req.body;
57
58
  const result = await api.buildWorkflow({ prompt, tags, wait, feedback, prior_yaml, answers, prior_questions }, req.auth ? { userId: req.auth.userId } : undefined);
58
59
  res.status(result.status).json(result.data ?? { error: result.error });
@@ -62,7 +63,7 @@ router.post('/build-workflow', async (req, res) => {
62
63
  * Refine a previously built workflow using execution feedback.
63
64
  * Body: { prompt: string, prior_yaml: string, feedback: string, tags?: string[], wait?: boolean }
64
65
  */
65
- router.post('/build-workflow/refine', async (req, res) => {
66
+ router.post('/build-workflow/refine', auth_1.requireBuilder, async (req, res) => {
66
67
  const { prompt, prior_yaml, feedback, tags, wait } = req.body;
67
68
  const result = await api.refineWorkflow({ prompt, prior_yaml, feedback, tags, wait }, req.auth ? { userId: req.auth.userId } : undefined);
68
69
  res.status(result.status).json(result.data ?? { error: result.error });
@@ -33,10 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const express_1 = require("express");
36
+ const http_1 = require("../lib/http");
37
37
  const api = __importStar(require("../api/knowledge"));
38
38
  const auth_1 = require("../modules/auth");
39
- const router = (0, express_1.Router)();
39
+ const router = (0, http_1.Router)();
40
40
  // The knowledge store is a builder surface (superadmin or engineer) — the
41
41
  // same gate as the dashboard's Knowledge page. Members reach knowledge
42
42
  // content only through escalation lookup refs: an escalation's
@@ -33,10 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const express_1 = require("express");
36
+ const http_1 = require("../lib/http");
37
37
  const api = __importStar(require("../api/maintenance"));
38
38
  const auth_1 = require("../modules/auth");
39
- const router = (0, express_1.Router)();
39
+ const router = (0, http_1.Router)();
40
40
  /**
41
41
  * GET /api/config/maintenance
42
42
  * Return the current maintenance configuration.
@@ -6,7 +6,9 @@
6
6
  * streamable-http transport protocol.
7
7
  *
8
8
  * Stateless mode — each POST creates a fresh server+transport pair.
9
- * Auth via Bearer token (JWT or bot API key) in the Authorization header.
9
+ * Auth via Bearer token (JWT, bot API key, or OAuth access token) in the
10
+ * Authorization header.
11
+ * The caller sees only the tools whose manifest gate they hold.
10
12
  *
11
13
  * Mount at /mcp:
12
14
  * POST /mcp → JSON-RPC messages (initialize, tools/list, tools/call)