@hotmeshio/long-tail 0.1.4 → 0.1.5

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 (613) hide show
  1. package/README.md +1 -1
  2. package/build/examples/seed.js +1 -1
  3. package/build/examples/workflows/basic-echo/activities.d.ts +2 -2
  4. package/build/examples/workflows/basic-echo/activities.js +7 -7
  5. package/build/examples/workflows/basic-echo/index.js +1 -1
  6. package/build/examples/workflows/kitchen-sink/index.js +2 -2
  7. package/build/index.d.ts +11 -10
  8. package/build/index.js +13 -12
  9. package/build/lib/db/index.d.ts +18 -0
  10. package/build/{services → lib}/db/index.js +9 -0
  11. package/build/{services → lib}/db/migrate.js +3 -3
  12. package/build/{services → lib}/telemetry/honeycomb.d.ts +2 -2
  13. package/build/{services → lib}/telemetry/honeycomb.js +2 -2
  14. package/build/modules/defaults.d.ts +2 -0
  15. package/build/modules/defaults.js +3 -1
  16. package/build/routes/controlplane.js +1 -1
  17. package/build/routes/dba.js +4 -0
  18. package/build/routes/docs.d.ts +2 -0
  19. package/build/routes/docs.js +87 -0
  20. package/build/routes/escalations/bulk.js +120 -202
  21. package/build/routes/escalations/resolve.js +1 -1
  22. package/build/routes/escalations/single.js +1 -1
  23. package/build/routes/files.js +1 -1
  24. package/build/routes/index.js +2 -0
  25. package/build/routes/insight.js +2 -1
  26. package/build/routes/mcp.js +3 -2
  27. package/build/routes/oauth.js +1 -1
  28. package/build/routes/settings.js +4 -4
  29. package/build/routes/workflows/discovery.js +3 -3
  30. package/build/routes/workflows/invocation.js +1 -1
  31. package/build/routes/yaml-workflows/crud.js +1 -1
  32. package/build/routes/yaml-workflows/deployment.js +25 -0
  33. package/build/services/auth/bot-api-key.js +1 -1
  34. package/build/services/auth/index.d.ts +4 -0
  35. package/build/services/auth/index.js +17 -0
  36. package/build/services/auth/service-token.js +1 -1
  37. package/build/services/config/provider.js +1 -1
  38. package/build/services/config/read.js +1 -1
  39. package/build/services/config/write.js +1 -1
  40. package/build/services/controlplane/index.js +3 -4
  41. package/build/services/controlplane/quorum-bridge.js +2 -2
  42. package/build/services/cron/index.js +4 -5
  43. package/build/services/dba.d.ts +4 -0
  44. package/build/services/dba.js +3 -6
  45. package/build/services/escalation/bulk.js +1 -1
  46. package/build/services/escalation/crud.js +1 -1
  47. package/build/services/escalation/queries.js +1 -1
  48. package/build/services/export/client.js +2 -5
  49. package/build/services/export/index.js +14 -2
  50. package/build/services/hotmesh-utils.js +1 -1
  51. package/build/services/iam/bots.js +6 -12
  52. package/build/services/iam/context.d.ts +1 -1
  53. package/build/services/iam/context.js +5 -5
  54. package/build/services/iam/credentials.js +1 -1
  55. package/build/services/iam/ephemeral.js +8 -15
  56. package/build/services/iam/principal.js +3 -10
  57. package/build/services/iam/resolve.js +1 -1
  58. package/build/services/iam/sql.d.ts +10 -0
  59. package/build/services/iam/sql.js +42 -0
  60. package/build/services/insight/index.d.ts +1 -0
  61. package/build/services/insight/index.js +4 -6
  62. package/build/services/interceptor/activities/escalation.js +1 -1
  63. package/build/services/interceptor/activities/task.js +9 -6
  64. package/build/services/interceptor/activities/workflow.js +4 -5
  65. package/build/services/interceptor/activity-interceptor.d.ts +1 -1
  66. package/build/services/interceptor/activity-interceptor.js +5 -5
  67. package/build/services/interceptor/completion.js +1 -1
  68. package/build/services/interceptor/escalation.js +1 -1
  69. package/build/services/interceptor/index.js +4 -4
  70. package/build/services/interceptor/lifecycle.js +1 -1
  71. package/build/services/maintenance/index.js +4 -5
  72. package/build/services/mcp/adapter.js +1 -16
  73. package/build/services/mcp/client/connection.d.ts +1 -1
  74. package/build/services/mcp/client/connection.js +2 -2
  75. package/build/services/mcp/client/tools.js +1 -1
  76. package/build/services/mcp/db-server/index.js +1 -1
  77. package/build/services/mcp/db-server/tools.js +17 -4
  78. package/build/services/mcp/db.js +1 -1
  79. package/build/services/mcp/playwright-server/index.js +1 -1
  80. package/build/services/mcp/playwright-server/lifecycle.js +1 -1
  81. package/build/services/mcp/playwright-server/schemas.d.ts +2 -2
  82. package/build/services/mcp/playwright-server/tools.js +1 -1
  83. package/build/services/mcp/server.js +1 -1
  84. package/build/services/mcp/sql.d.ts +6 -0
  85. package/build/services/mcp/sql.js +34 -1
  86. package/build/services/mcp/workflow-compiler-server.js +1 -1
  87. package/build/services/mcp/workflow-server.js +1 -1
  88. package/build/services/mcp-runs/execution-builder.js +8 -6
  89. package/build/services/mcp-runs/queries.js +2 -2
  90. package/build/services/mcp-runs/sql.d.ts +4 -1
  91. package/build/services/mcp-runs/sql.js +23 -2
  92. package/build/services/namespace/index.js +1 -1
  93. package/build/services/oauth/db.js +9 -37
  94. package/build/services/oauth/index.js +1 -1
  95. package/build/services/oauth/providers/registry.js +1 -1
  96. package/build/services/oauth/sql.d.ts +7 -0
  97. package/build/services/oauth/sql.js +32 -0
  98. package/build/services/orchestrator/index.js +3 -3
  99. package/build/services/role/index.js +1 -1
  100. package/build/services/task/crud.js +1 -1
  101. package/build/services/task/process.js +1 -1
  102. package/build/services/task/resolve.js +1 -1
  103. package/build/services/user/auth.js +1 -1
  104. package/build/services/user/crud.js +1 -1
  105. package/build/services/user/rbac.js +1 -1
  106. package/build/services/user/roles.js +1 -1
  107. package/build/services/user/sql.d.ts +2 -0
  108. package/build/services/user/sql.js +3 -1
  109. package/build/services/yaml-workflow/db-utils.js +1 -1
  110. package/build/services/yaml-workflow/db.js +1 -1
  111. package/build/services/yaml-workflow/deployer-helpers.js +1 -1
  112. package/build/services/yaml-workflow/deployer.js +4 -4
  113. package/build/services/yaml-workflow/generator.js +1 -1
  114. package/build/services/yaml-workflow/input-analyzer-helpers.d.ts +6 -0
  115. package/build/services/yaml-workflow/input-analyzer-helpers.js +36 -7
  116. package/build/services/yaml-workflow/input-analyzer.js +16 -3
  117. package/build/services/yaml-workflow/pipeline/analyze.js +1 -1
  118. package/build/services/yaml-workflow/pipeline/build/dag.js +10 -5
  119. package/build/services/yaml-workflow/pipeline/compile/llm-call.js +1 -1
  120. package/build/services/yaml-workflow/pipeline/extract.js +5 -3
  121. package/build/services/yaml-workflow/pipeline/index.d.ts +5 -0
  122. package/build/services/yaml-workflow/pipeline/index.js +22 -0
  123. package/build/services/yaml-workflow/pipeline/validate.js +2 -2
  124. package/build/services/yaml-workflow/workers/callbacks.js +1 -1
  125. package/build/services/yaml-workflow/workers/events.js +2 -2
  126. package/build/services/yaml-workflow/workers/register.js +8 -8
  127. package/build/start/adapters.js +7 -7
  128. package/build/start/index.js +4 -4
  129. package/build/start/server.js +1 -1
  130. package/build/start/workers.d.ts +1 -2
  131. package/build/start/workers.js +8 -7
  132. package/build/system/activities/claude-code.js +1 -1
  133. package/build/system/activities/file-storage.js +1 -1
  134. package/build/system/activities/knowledge.d.ts +58 -0
  135. package/build/system/activities/knowledge.js +128 -0
  136. package/build/system/activities/sql.d.ts +9 -0
  137. package/build/system/activities/sql.js +41 -0
  138. package/build/system/activities/triage/context.js +1 -1
  139. package/build/system/activities/triage/discovery.d.ts +2 -14
  140. package/build/system/activities/triage/discovery.js +5 -161
  141. package/build/system/activities/triage/llm.d.ts +1 -8
  142. package/build/system/activities/triage/llm.js +2 -28
  143. package/build/system/activities/triage/tools.d.ts +1 -17
  144. package/build/system/activities/triage/tools.js +8 -167
  145. package/build/system/index.js +5 -4
  146. package/build/system/mcp-servers/admin/escalations.d.ts +5 -0
  147. package/build/system/mcp-servers/admin/escalations.js +149 -0
  148. package/build/system/mcp-servers/admin/index.d.ts +31 -0
  149. package/build/system/mcp-servers/admin/index.js +80 -0
  150. package/build/system/mcp-servers/admin/maintenance.d.ts +5 -0
  151. package/build/system/mcp-servers/admin/maintenance.js +58 -0
  152. package/build/system/mcp-servers/admin/mcp-servers.d.ts +5 -0
  153. package/build/system/mcp-servers/admin/mcp-servers.js +146 -0
  154. package/build/system/mcp-servers/admin/schemas.d.ts +411 -0
  155. package/build/system/mcp-servers/admin/schemas.js +177 -0
  156. package/build/system/mcp-servers/admin/tasks.d.ts +5 -0
  157. package/build/system/mcp-servers/admin/tasks.js +112 -0
  158. package/build/system/mcp-servers/admin/users.d.ts +5 -0
  159. package/build/system/mcp-servers/admin/users.js +167 -0
  160. package/build/system/mcp-servers/admin/workflow-config.d.ts +9 -0
  161. package/build/system/mcp-servers/admin/workflow-config.js +118 -0
  162. package/build/system/mcp-servers/admin/workflows.d.ts +6 -0
  163. package/build/system/mcp-servers/admin/workflows.js +138 -0
  164. package/build/system/mcp-servers/admin/yaml-workflows.d.ts +8 -0
  165. package/build/system/mcp-servers/admin/yaml-workflows.js +237 -0
  166. package/build/system/mcp-servers/claude-code.js +1 -1
  167. package/build/system/mcp-servers/db-query/index.js +1 -1
  168. package/build/system/mcp-servers/db-query/tools.js +17 -4
  169. package/build/system/mcp-servers/docs.d.ts +5 -0
  170. package/build/system/mcp-servers/docs.js +147 -0
  171. package/build/system/mcp-servers/file-storage.js +1 -1
  172. package/build/system/mcp-servers/http-fetch.js +1 -1
  173. package/build/system/mcp-servers/human-queue.js +1 -1
  174. package/build/system/mcp-servers/knowledge.d.ts +4 -0
  175. package/build/system/mcp-servers/knowledge.js +137 -0
  176. package/build/system/mcp-servers/oauth.js +1 -1
  177. package/build/system/mcp-servers/playwright/browser-lifecycle.js +1 -1
  178. package/build/system/mcp-servers/playwright/index.js +1 -1
  179. package/build/system/mcp-servers/playwright/schemas.d.ts +19 -8
  180. package/build/system/mcp-servers/playwright/schemas.js +3 -0
  181. package/build/system/mcp-servers/playwright/tools-navigation.js +22 -9
  182. package/build/system/mcp-servers/playwright/tools-run-script.js +20 -3
  183. package/build/system/mcp-servers/playwright/vision-helper.d.ts +12 -0
  184. package/build/system/mcp-servers/playwright/vision-helper.js +81 -0
  185. package/build/system/mcp-servers/playwright-cli/helpers.js +2 -2
  186. package/build/system/mcp-servers/playwright-cli/index.js +1 -1
  187. package/build/system/mcp-servers/playwright-cli/schemas.d.ts +28 -28
  188. package/build/system/mcp-servers/playwright-cli/schemas.js +1 -1
  189. package/build/system/mcp-servers/playwright-cli/tools-auth.js +1 -1
  190. package/build/system/mcp-servers/playwright-cli/tools-capture.js +4 -2
  191. package/build/system/mcp-servers/translation.d.ts +14 -0
  192. package/build/system/mcp-servers/translation.js +130 -0
  193. package/build/system/mcp-servers/vision-prompts.d.ts +2 -0
  194. package/build/system/mcp-servers/vision-prompts.js +9 -0
  195. package/build/system/mcp-servers/{document-vision.d.ts → vision.d.ts} +3 -4
  196. package/build/system/mcp-servers/vision.js +221 -0
  197. package/build/system/mcp-servers/workflow-compiler.js +1 -1
  198. package/build/system/mcp-servers/workflow.js +1 -1
  199. package/build/system/seed/index.js +13 -2
  200. package/build/system/seed/server-definitions.d.ts +1954 -322
  201. package/build/system/seed/server-definitions.js +65 -34
  202. package/build/system/seed/tool-manifests-admin.d.ts +1645 -0
  203. package/build/system/seed/tool-manifests-admin.js +45 -0
  204. package/build/system/seed/tool-manifests-browser.d.ts +1 -1
  205. package/build/system/seed/tool-manifests-browser.js +3 -3
  206. package/build/system/seed/tool-manifests-data.d.ts +62 -21
  207. package/build/system/seed/tool-manifests-data.js +55 -17
  208. package/build/system/seed/tool-manifests-knowledge.d.ts +171 -0
  209. package/build/system/seed/tool-manifests-knowledge.js +94 -0
  210. package/build/system/workflows/mcp-deterministic/index.js +1 -1
  211. package/build/system/workflows/mcp-query/activities/discovery.d.ts +2 -20
  212. package/build/system/workflows/mcp-query/activities/discovery.js +5 -163
  213. package/build/system/workflows/mcp-query/activities/llm.d.ts +1 -7
  214. package/build/system/workflows/mcp-query/activities/llm.js +2 -27
  215. package/build/system/workflows/mcp-query/activities/tool-executor.d.ts +0 -4
  216. package/build/system/workflows/mcp-query/activities/tool-executor.js +2 -106
  217. package/build/system/workflows/mcp-query/activities/tool-loader.d.ts +0 -9
  218. package/build/system/workflows/mcp-query/activities/tool-loader.js +2 -87
  219. package/build/system/workflows/mcp-query/index.js +55 -5
  220. package/build/system/workflows/mcp-query/prompts.d.ts +1 -2
  221. package/build/system/workflows/mcp-query/prompts.js +5 -32
  222. package/build/system/workflows/mcp-query/strategy-advisors.d.ts +3 -14
  223. package/build/system/workflows/mcp-query/strategy-advisors.js +4 -107
  224. package/build/system/workflows/mcp-query/types.d.ts +2 -10
  225. package/build/system/workflows/mcp-query/types.js +0 -1
  226. package/build/system/workflows/mcp-query-router/index.js +1 -1
  227. package/build/system/workflows/mcp-triage/index.d.ts +2 -2
  228. package/build/system/workflows/mcp-triage/index.js +39 -7
  229. package/build/system/workflows/mcp-triage/prompts.js +7 -14
  230. package/build/system/workflows/mcp-triage-deterministic/index.js +1 -1
  231. package/build/system/workflows/mcp-triage-router/index.js +1 -1
  232. package/build/system/workflows/shared/discovery.d.ts +35 -0
  233. package/build/system/workflows/shared/discovery.js +175 -0
  234. package/build/system/workflows/shared/index.d.ts +7 -0
  235. package/build/system/workflows/shared/index.js +18 -0
  236. package/build/system/workflows/shared/llm-caller.d.ts +8 -0
  237. package/build/system/workflows/shared/llm-caller.js +31 -0
  238. package/build/system/workflows/shared/prompts.d.ts +2 -0
  239. package/build/system/workflows/shared/prompts.js +32 -0
  240. package/build/system/workflows/shared/strategy-advisors.d.ts +14 -0
  241. package/build/system/workflows/shared/strategy-advisors.js +109 -0
  242. package/build/system/workflows/shared/tool-executor.d.ts +11 -0
  243. package/build/system/workflows/shared/tool-executor.js +111 -0
  244. package/build/system/workflows/shared/tool-loader.d.ts +19 -0
  245. package/build/system/workflows/shared/tool-loader.js +94 -0
  246. package/build/system/workflows/shared/types.d.ts +9 -0
  247. package/build/system/workflows/shared/types.js +2 -0
  248. package/build/system/workflows/tool-result-guard.d.ts +14 -0
  249. package/build/system/workflows/tool-result-guard.js +78 -0
  250. package/build/tsconfig.tsbuildinfo +1 -1
  251. package/build/types/user.d.ts +2 -0
  252. package/build/vitest.config.d.ts +1 -1
  253. package/build/vitest.integration.config.d.ts +1 -1
  254. package/build/workers/index.js +2 -8
  255. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +2 -0
  256. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js.map +1 -0
  257. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +2 -0
  258. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +1 -0
  259. package/dashboard/dist/assets/BotPicker-C51nKFEu.js +2 -0
  260. package/dashboard/dist/assets/{BotPicker-D6FYW1Gt.js.map → BotPicker-C51nKFEu.js.map} +1 -1
  261. package/dashboard/dist/assets/CollapsibleSection-BSyfd8uL.js +2 -0
  262. package/dashboard/dist/assets/{CollapsibleSection-Cxk4wvjT.js.map → CollapsibleSection-BSyfd8uL.js.map} +1 -1
  263. package/dashboard/dist/assets/ConfirmDeleteModal-CBdhia5T.js +2 -0
  264. package/dashboard/dist/assets/{ConfirmDeleteModal-FSXyKjaB.js.map → ConfirmDeleteModal-CBdhia5T.js.map} +1 -1
  265. package/dashboard/dist/assets/CopyableId-dGlewBCS.js +2 -0
  266. package/dashboard/dist/assets/{CopyableId-CBdxWfp8.js.map → CopyableId-dGlewBCS.js.map} +1 -1
  267. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +2 -0
  268. package/dashboard/dist/assets/{CredentialsPage-Ikzsot0w.js.map → CredentialsPage-CoBNFSAu.js.map} +1 -1
  269. package/dashboard/dist/assets/CustomDurationPicker-BataWFj8.js +2 -0
  270. package/dashboard/dist/assets/{CustomDurationPicker-CAninCbl.js.map → CustomDurationPicker-BataWFj8.js.map} +1 -1
  271. package/dashboard/dist/assets/DataTable-B3uf5CCo.js +2 -0
  272. package/dashboard/dist/assets/DataTable-B3uf5CCo.js.map +1 -0
  273. package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js +2 -0
  274. package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js.map +1 -0
  275. package/dashboard/dist/assets/EmptyState-BChBJNGS.js +2 -0
  276. package/dashboard/dist/assets/{EmptyState-2CmV-IaS.js.map → EmptyState-BChBJNGS.js.map} +1 -1
  277. package/dashboard/dist/assets/EscalationsOverview-CxUv8xjG.js +2 -0
  278. package/dashboard/dist/assets/{EscalationsOverview-GXYFPASS.js.map → EscalationsOverview-CxUv8xjG.js.map} +1 -1
  279. package/dashboard/dist/assets/EventTable-CVt8B0BZ.js +2 -0
  280. package/dashboard/dist/assets/{EventTable-B01oJf6Y.js.map → EventTable-CVt8B0BZ.js.map} +1 -1
  281. package/dashboard/dist/assets/FilterBar-CShf0oe7.js +2 -0
  282. package/dashboard/dist/assets/{FilterBar-Ck4K4rzu.js.map → FilterBar-CShf0oe7.js.map} +1 -1
  283. package/dashboard/dist/assets/McpOverview-CbaZRnJl.js +2 -0
  284. package/dashboard/dist/assets/{McpOverview-JkvRcX2e.js.map → McpOverview-CbaZRnJl.js.map} +1 -1
  285. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +5 -0
  286. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +1 -0
  287. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +2 -0
  288. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +1 -0
  289. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +2 -0
  290. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +1 -0
  291. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +2 -0
  292. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +1 -0
  293. package/dashboard/dist/assets/Modal-CI5RBPOQ.js +2 -0
  294. package/dashboard/dist/assets/{Modal-B4rbIVAn.js.map → Modal-CI5RBPOQ.js.map} +1 -1
  295. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +2 -0
  296. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +1 -0
  297. package/dashboard/dist/assets/PageHeader-SMD9qtOO.js +2 -0
  298. package/dashboard/dist/assets/PageHeader-SMD9qtOO.js.map +1 -0
  299. package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js +2 -0
  300. package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js.map +1 -0
  301. package/dashboard/dist/assets/PriorityBadge-CQ0EsLTA.js +2 -0
  302. package/dashboard/dist/assets/{PriorityBadge-DfQY9St9.js.map → PriorityBadge-CQ0EsLTA.js.map} +1 -1
  303. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +2 -0
  304. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +1 -0
  305. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +2 -0
  306. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +1 -0
  307. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +2 -0
  308. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +1 -0
  309. package/dashboard/dist/assets/RolePill-Crj4TH5p.js +2 -0
  310. package/dashboard/dist/assets/{RolePill-BTPa8L-P.js.map → RolePill-Crj4TH5p.js.map} +1 -1
  311. package/dashboard/dist/assets/RolesPage-C_RInUwS.js +2 -0
  312. package/dashboard/dist/assets/RolesPage-C_RInUwS.js.map +1 -0
  313. package/dashboard/dist/assets/RowActions-Cp5HyK_w.js +2 -0
  314. package/dashboard/dist/assets/{RowActions-Dg-Fsm5O.js.map → RowActions-Cp5HyK_w.js.map} +1 -1
  315. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +2 -0
  316. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +1 -0
  317. package/dashboard/dist/assets/StatCard-BKZLSgNV.js +2 -0
  318. package/dashboard/dist/assets/{StatCard-DlgF0CJC.js.map → StatCard-BKZLSgNV.js.map} +1 -1
  319. package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js +2 -0
  320. package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js.map +1 -0
  321. package/dashboard/dist/assets/StickyPagination-CTosgiU2.js +2 -0
  322. package/dashboard/dist/assets/{StickyPagination-F9FZsRy9.js.map → StickyPagination-CTosgiU2.js.map} +1 -1
  323. package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js +2 -0
  324. package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js.map +1 -0
  325. package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js +2 -0
  326. package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js.map +1 -0
  327. package/dashboard/dist/assets/TaskQueuePill-BtJbZTT0.js +2 -0
  328. package/dashboard/dist/assets/{TaskQueuePill-awmtb0qw.js.map → TaskQueuePill-BtJbZTT0.js.map} +1 -1
  329. package/dashboard/dist/assets/TasksListPage-DtFLUEhg.js +2 -0
  330. package/dashboard/dist/assets/{TasksListPage-C_QF23c1.js.map → TasksListPage-DtFLUEhg.js.map} +1 -1
  331. package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js +2 -0
  332. package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js.map +1 -0
  333. package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js +2 -0
  334. package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js.map +1 -0
  335. package/dashboard/dist/assets/UserName-DU9qeg13.js +2 -0
  336. package/dashboard/dist/assets/{UserName-DaP4YAKr.js.map → UserName-DU9qeg13.js.map} +1 -1
  337. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +2 -0
  338. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +1 -0
  339. package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js +2 -0
  340. package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js.map +1 -0
  341. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +2 -0
  342. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +1 -0
  343. package/dashboard/dist/assets/WorkflowsOverview-CPuvA4t3.js +2 -0
  344. package/dashboard/dist/assets/{WorkflowsOverview-D9OzzQqw.js.map → WorkflowsOverview-CPuvA4t3.js.map} +1 -1
  345. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +2 -0
  346. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +1 -0
  347. package/dashboard/dist/assets/{bots-BkKVMbUW.js → bots-BPiZXf2h.js} +2 -2
  348. package/dashboard/dist/assets/{bots-BkKVMbUW.js.map → bots-BPiZXf2h.js.map} +1 -1
  349. package/dashboard/dist/assets/constants-BHkpVaqx.js +2 -0
  350. package/dashboard/dist/assets/constants-BHkpVaqx.js.map +1 -0
  351. package/dashboard/dist/assets/escalation-DTY_OKRh.js +2 -0
  352. package/dashboard/dist/assets/escalation-DTY_OKRh.js.map +1 -0
  353. package/dashboard/dist/assets/escalation-columns-C91fHSkp.js +2 -0
  354. package/dashboard/dist/assets/{escalation-columns-D6aqStaY.js.map → escalation-columns-C91fHSkp.js.map} +1 -1
  355. package/dashboard/dist/assets/helpers-DBUZ9pnG.js +2 -0
  356. package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +1 -0
  357. package/dashboard/dist/assets/index-BOeA-gfK.js +17 -0
  358. package/dashboard/dist/assets/{index-X85K5bHC.js.map → index-BOeA-gfK.js.map} +1 -1
  359. package/dashboard/dist/assets/index-BZ6K_kmL.js +3 -0
  360. package/dashboard/dist/assets/index-BZ6K_kmL.js.map +1 -0
  361. package/dashboard/dist/assets/index-Bpm0yeoi.js +2 -0
  362. package/dashboard/dist/assets/index-Bpm0yeoi.js.map +1 -0
  363. package/dashboard/dist/assets/index-BtOwLI0K.js +2 -0
  364. package/dashboard/dist/assets/{index-DTPzZr_X.js.map → index-BtOwLI0K.js.map} +1 -1
  365. package/dashboard/dist/assets/index-CBF3ZvRZ.js +6 -0
  366. package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +1 -0
  367. package/dashboard/dist/assets/index-CDWOfCmi.js +2 -0
  368. package/dashboard/dist/assets/index-CDWOfCmi.js.map +1 -0
  369. package/dashboard/dist/assets/index-Ce6sL__n.js +2 -0
  370. package/dashboard/dist/assets/index-Ce6sL__n.js.map +1 -0
  371. package/dashboard/dist/assets/index-DSzSoku1.js +283 -0
  372. package/dashboard/dist/assets/index-DSzSoku1.js.map +1 -0
  373. package/dashboard/dist/assets/index-D_qEAYrg.js +2 -0
  374. package/dashboard/dist/assets/index-D_qEAYrg.js.map +1 -0
  375. package/dashboard/dist/assets/index-gCy9XX3W.css +1 -0
  376. package/dashboard/dist/assets/mcp-BzVpaaKF.js +2 -0
  377. package/dashboard/dist/assets/{mcp-blCW6IL7.js.map → mcp-BzVpaaKF.js.map} +1 -1
  378. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +2 -0
  379. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +1 -0
  380. package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js → mcp-runs-DmXYJD19.js} +2 -2
  381. package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js.map → mcp-runs-DmXYJD19.js.map} +1 -1
  382. package/dashboard/dist/assets/namespaces-DoGa7jc7.js +2 -0
  383. package/dashboard/dist/assets/{namespaces-BgbaC3ow.js.map → namespaces-DoGa7jc7.js.map} +1 -1
  384. package/dashboard/dist/assets/{roles-ZNrqqnQl.js → roles-wCdQ2Z7k.js} +2 -2
  385. package/dashboard/dist/assets/{roles-ZNrqqnQl.js.map → roles-wCdQ2Z7k.js.map} +1 -1
  386. package/dashboard/dist/assets/settings-DDe_L7JT.js +2 -0
  387. package/dashboard/dist/assets/{settings-eBRSE0mQ.js.map → settings-DDe_L7JT.js.map} +1 -1
  388. package/dashboard/dist/assets/tasks-3Hih8Bt7.js +2 -0
  389. package/dashboard/dist/assets/{tasks-tRqClPns.js.map → tasks-3Hih8Bt7.js.map} +1 -1
  390. package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js → useFilterParams-BUyLHcx_.js} +2 -2
  391. package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js.map → useFilterParams-BUyLHcx_.js.map} +1 -1
  392. package/dashboard/dist/assets/{useNatsEvents-Xr43X1fG.js → useNatsEvents-DeGKHFTX.js} +2 -2
  393. package/dashboard/dist/assets/{useNatsEvents-Xr43X1fG.js.map → useNatsEvents-DeGKHFTX.js.map} +1 -1
  394. package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js → useYamlActivityEvents-B5dHec6Y.js} +2 -2
  395. package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js.map → useYamlActivityEvents-B5dHec6Y.js.map} +1 -1
  396. package/dashboard/dist/assets/{users-tMvNyOo8.js → users-BTagPmGW.js} +2 -2
  397. package/dashboard/dist/assets/{users-tMvNyOo8.js.map → users-BTagPmGW.js.map} +1 -1
  398. package/dashboard/dist/assets/{vendor-icons-ZTAKVwGc.js → vendor-icons-DCLlGYO9.js} +112 -57
  399. package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +1 -0
  400. package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
  401. package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
  402. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +26 -0
  403. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +1 -0
  404. package/dashboard/dist/assets/{workflows-Cc4VHcrp.js → workflows-B20dR3NE.js} +2 -2
  405. package/dashboard/dist/assets/{workflows-Cc4VHcrp.js.map → workflows-B20dR3NE.js.map} +1 -1
  406. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +2 -0
  407. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js.map +1 -0
  408. package/dashboard/dist/index.html +5 -5
  409. package/docs/api/dba.md +81 -0
  410. package/docs/api/escalations.md +575 -0
  411. package/docs/api/exports.md +170 -0
  412. package/docs/api/maintenance.md +93 -0
  413. package/docs/api/mcp-runs.md +128 -0
  414. package/docs/api/mcp-servers.md +195 -0
  415. package/docs/api/namespaces.md +48 -0
  416. package/docs/api/roles.md +390 -0
  417. package/docs/api/service-accounts.md +188 -0
  418. package/docs/api/settings.md +33 -0
  419. package/docs/api/tasks.md +167 -0
  420. package/docs/api/users.md +180 -0
  421. package/docs/api/workflows.md +616 -0
  422. package/docs/api/yaml-workflows.md +312 -0
  423. package/docs/architecture.md +221 -0
  424. package/docs/auth.md +181 -0
  425. package/docs/cloud.md +272 -0
  426. package/docs/compilation.md +136 -0
  427. package/docs/contributing.md +56 -0
  428. package/docs/dashboard.md +145 -0
  429. package/docs/data.md +478 -0
  430. package/docs/escalation-strategies.md +264 -0
  431. package/docs/events.md +251 -0
  432. package/docs/iam.md +222 -0
  433. package/docs/img/01-login.png +0 -0
  434. package/docs/img/02-dashboard-home.png +0 -0
  435. package/docs/img/03-processes-list.png +0 -0
  436. package/docs/img/04-escalations-list.png +0 -0
  437. package/docs/img/05-mcp-servers.png +0 -0
  438. package/docs/img/06-mcp-pipelines.png +0 -0
  439. package/docs/img/07-workflows-list.png +0 -0
  440. package/docs/img/compilation/01-query-submit.png +0 -0
  441. package/docs/img/compilation/02-mcp-servers.png +0 -0
  442. package/docs/img/compilation/03-query-completed.png +0 -0
  443. package/docs/img/compilation/04-wizard-original.png +0 -0
  444. package/docs/img/compilation/05-wizard-timeline.png +0 -0
  445. package/docs/img/compilation/06-wizard-profile.png +0 -0
  446. package/docs/img/compilation/07-wizard-deploy.png +0 -0
  447. package/docs/img/compilation/08-wizard-test-modal.png +0 -0
  448. package/docs/img/compilation/09-wizard-test-compare.png +0 -0
  449. package/docs/img/compilation/10-wizard-verify.png +0 -0
  450. package/docs/logging.md +110 -0
  451. package/docs/maintenance.md +221 -0
  452. package/docs/mcp.md +715 -0
  453. package/docs/oauth-and-delegation.md +469 -0
  454. package/docs/telemetry.md +144 -0
  455. package/docs/workflows.md +695 -0
  456. package/lib/db/schemas/015_knowledge.sql +23 -0
  457. package/package.json +8 -9
  458. package/build/services/db/index.d.ts +0 -3
  459. package/build/services/mcp/vision-server.d.ts +0 -15
  460. package/build/services/mcp/vision-server.js +0 -214
  461. package/build/system/mcp-servers/document-vision.js +0 -228
  462. package/build/system/mcp-servers/prompts.d.ts +0 -4
  463. package/build/system/mcp-servers/prompts.js +0 -10
  464. package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js +0 -2
  465. package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js.map +0 -1
  466. package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js +0 -2
  467. package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js.map +0 -1
  468. package/dashboard/dist/assets/BotPicker-D6FYW1Gt.js +0 -2
  469. package/dashboard/dist/assets/CollapsibleSection-Cxk4wvjT.js +0 -2
  470. package/dashboard/dist/assets/ConfirmDeleteModal-FSXyKjaB.js +0 -2
  471. package/dashboard/dist/assets/CopyableId-CBdxWfp8.js +0 -2
  472. package/dashboard/dist/assets/CredentialsPage-Ikzsot0w.js +0 -2
  473. package/dashboard/dist/assets/CustomDurationPicker-CAninCbl.js +0 -2
  474. package/dashboard/dist/assets/DataTable-BDn1WBHS.js +0 -2
  475. package/dashboard/dist/assets/DataTable-BDn1WBHS.js.map +0 -1
  476. package/dashboard/dist/assets/EmptyState-2CmV-IaS.js +0 -2
  477. package/dashboard/dist/assets/EscalationsOverview-GXYFPASS.js +0 -2
  478. package/dashboard/dist/assets/EventTable-B01oJf6Y.js +0 -2
  479. package/dashboard/dist/assets/Field-DuFBAYhu.js +0 -2
  480. package/dashboard/dist/assets/Field-DuFBAYhu.js.map +0 -1
  481. package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +0 -2
  482. package/dashboard/dist/assets/McpOverview-JkvRcX2e.js +0 -2
  483. package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js +0 -2
  484. package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js.map +0 -1
  485. package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js +0 -2
  486. package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js.map +0 -1
  487. package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js +0 -2
  488. package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js.map +0 -1
  489. package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js +0 -2
  490. package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js.map +0 -1
  491. package/dashboard/dist/assets/Modal-B4rbIVAn.js +0 -2
  492. package/dashboard/dist/assets/OperatorDashboard-B56il28q.js +0 -2
  493. package/dashboard/dist/assets/OperatorDashboard-B56il28q.js.map +0 -1
  494. package/dashboard/dist/assets/PageHeader-CpWFly5S.js +0 -2
  495. package/dashboard/dist/assets/PageHeader-CpWFly5S.js.map +0 -1
  496. package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +0 -2
  497. package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js +0 -2
  498. package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js.map +0 -1
  499. package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js +0 -2
  500. package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js.map +0 -1
  501. package/dashboard/dist/assets/RolePill-BTPa8L-P.js +0 -2
  502. package/dashboard/dist/assets/RolesPage-9grZW7yR.js +0 -2
  503. package/dashboard/dist/assets/RolesPage-9grZW7yR.js.map +0 -1
  504. package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +0 -2
  505. package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js +0 -4
  506. package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js.map +0 -1
  507. package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
  508. package/dashboard/dist/assets/StatusBadge-TlC4jiig.js +0 -2
  509. package/dashboard/dist/assets/StatusBadge-TlC4jiig.js.map +0 -1
  510. package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +0 -2
  511. package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js +0 -2
  512. package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js.map +0 -1
  513. package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js +0 -2
  514. package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js.map +0 -1
  515. package/dashboard/dist/assets/TaskQueuePill-awmtb0qw.js +0 -2
  516. package/dashboard/dist/assets/TasksListPage-C_QF23c1.js +0 -2
  517. package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js +0 -2
  518. package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js.map +0 -1
  519. package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js +0 -2
  520. package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js.map +0 -1
  521. package/dashboard/dist/assets/UserName-DaP4YAKr.js +0 -2
  522. package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js +0 -5
  523. package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js.map +0 -1
  524. package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js +0 -2
  525. package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js.map +0 -1
  526. package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js +0 -2
  527. package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js.map +0 -1
  528. package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js +0 -2
  529. package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js.map +0 -1
  530. package/dashboard/dist/assets/WorkflowsOverview-D9OzzQqw.js +0 -2
  531. package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js +0 -3
  532. package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js.map +0 -1
  533. package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js +0 -2
  534. package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js.map +0 -1
  535. package/dashboard/dist/assets/constants-CgaZfe5d.js +0 -2
  536. package/dashboard/dist/assets/constants-CgaZfe5d.js.map +0 -1
  537. package/dashboard/dist/assets/escalation-columns-D6aqStaY.js +0 -2
  538. package/dashboard/dist/assets/escalation-qalymbKB.js +0 -2
  539. package/dashboard/dist/assets/escalation-qalymbKB.js.map +0 -1
  540. package/dashboard/dist/assets/format-gXZXQ-HJ.js +0 -2
  541. package/dashboard/dist/assets/format-gXZXQ-HJ.js.map +0 -1
  542. package/dashboard/dist/assets/helpers-0gSleuzT.js +0 -2
  543. package/dashboard/dist/assets/helpers-0gSleuzT.js.map +0 -1
  544. package/dashboard/dist/assets/index-BWvMHed7.js +0 -6
  545. package/dashboard/dist/assets/index-BWvMHed7.js.map +0 -1
  546. package/dashboard/dist/assets/index-BaszoPO_.css +0 -1
  547. package/dashboard/dist/assets/index-Cn2jyj9A.js +0 -2
  548. package/dashboard/dist/assets/index-Cn2jyj9A.js.map +0 -1
  549. package/dashboard/dist/assets/index-D8VH6K8B.js +0 -54
  550. package/dashboard/dist/assets/index-D8VH6K8B.js.map +0 -1
  551. package/dashboard/dist/assets/index-D9SYwJsi.js +0 -3
  552. package/dashboard/dist/assets/index-D9SYwJsi.js.map +0 -1
  553. package/dashboard/dist/assets/index-DTPzZr_X.js +0 -2
  554. package/dashboard/dist/assets/index-D_6AB5BE.js +0 -2
  555. package/dashboard/dist/assets/index-D_6AB5BE.js.map +0 -1
  556. package/dashboard/dist/assets/index-S9Ks2Lj2.js +0 -2
  557. package/dashboard/dist/assets/index-S9Ks2Lj2.js.map +0 -1
  558. package/dashboard/dist/assets/index-X85K5bHC.js +0 -17
  559. package/dashboard/dist/assets/index-rjmgHlSH.js +0 -2
  560. package/dashboard/dist/assets/index-rjmgHlSH.js.map +0 -1
  561. package/dashboard/dist/assets/mcp-blCW6IL7.js +0 -2
  562. package/dashboard/dist/assets/mcp-query-DoAyPbjC.js +0 -2
  563. package/dashboard/dist/assets/mcp-query-DoAyPbjC.js.map +0 -1
  564. package/dashboard/dist/assets/namespaces-BgbaC3ow.js +0 -2
  565. package/dashboard/dist/assets/settings-eBRSE0mQ.js +0 -2
  566. package/dashboard/dist/assets/tasks-tRqClPns.js +0 -2
  567. package/dashboard/dist/assets/vendor-icons-ZTAKVwGc.js.map +0 -1
  568. package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
  569. package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
  570. package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js +0 -22
  571. package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js.map +0 -1
  572. package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js +0 -2
  573. package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js.map +0 -1
  574. /package/build/{services → lib}/db/migrate.d.ts +0 -0
  575. /package/build/{services → lib}/events/index.d.ts +0 -0
  576. /package/build/{services → lib}/events/index.js +0 -0
  577. /package/build/{services → lib}/events/memory.d.ts +0 -0
  578. /package/build/{services → lib}/events/memory.js +0 -0
  579. /package/build/{services → lib}/events/nats.d.ts +0 -0
  580. /package/build/{services → lib}/events/nats.js +0 -0
  581. /package/build/{services → lib}/events/publish.d.ts +0 -0
  582. /package/build/{services → lib}/events/publish.js +0 -0
  583. /package/build/{services → lib}/events/socketio.d.ts +0 -0
  584. /package/build/{services → lib}/events/socketio.js +0 -0
  585. /package/build/{services → lib}/logger/index.d.ts +0 -0
  586. /package/build/{services → lib}/logger/index.js +0 -0
  587. /package/build/{services → lib}/logger/pino.d.ts +0 -0
  588. /package/build/{services → lib}/logger/pino.js +0 -0
  589. /package/build/{services → lib}/storage/index.d.ts +0 -0
  590. /package/build/{services → lib}/storage/index.js +0 -0
  591. /package/build/{services → lib}/storage/local.d.ts +0 -0
  592. /package/build/{services → lib}/storage/local.js +0 -0
  593. /package/build/{services → lib}/storage/s3.d.ts +0 -0
  594. /package/build/{services → lib}/storage/s3.js +0 -0
  595. /package/build/{services → lib}/storage/types.d.ts +0 -0
  596. /package/build/{services → lib}/storage/types.js +0 -0
  597. /package/build/{services → lib}/telemetry/index.d.ts +0 -0
  598. /package/build/{services → lib}/telemetry/index.js +0 -0
  599. /package/{services → lib}/db/README.md +0 -0
  600. /package/{services → lib}/db/schemas/001_schema.sql +0 -0
  601. /package/{services → lib}/db/schemas/002_seed.sql +0 -0
  602. /package/{services → lib}/db/schemas/003_workflow_discovery.sql +0 -0
  603. /package/{services → lib}/db/schemas/004_query_router.sql +0 -0
  604. /package/{services → lib}/db/schemas/005_triage_router.sql +0 -0
  605. /package/{services → lib}/db/schemas/006_oauth.sql +0 -0
  606. /package/{services → lib}/db/schemas/007_security.sql +0 -0
  607. /package/{services → lib}/db/schemas/008_bot_accounts.sql +0 -0
  608. /package/{services → lib}/db/schemas/009_audit_trail.sql +0 -0
  609. /package/{services → lib}/db/schemas/010_credential_providers.sql +0 -0
  610. /package/{services → lib}/db/schemas/011_system_workflow_configs.sql +0 -0
  611. /package/{services → lib}/db/schemas/012_drop_modality.sql +0 -0
  612. /package/{services → lib}/db/schemas/013_execute_as.sql +0 -0
  613. /package/{services → lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
@@ -39,12 +39,41 @@ const taskService = __importStar(require("../../services/task"));
39
39
  const userService = __importStar(require("../../services/user"));
40
40
  const workers_1 = require("../../workers");
41
41
  const defaults_1 = require("../../modules/defaults");
42
- const publish_1 = require("../../services/events/publish");
42
+ const publish_1 = require("../../lib/events/publish");
43
+ // ── Shared helpers ──────────────────────────────────────────────────────────
44
+ function validateIds(ids) {
45
+ return Array.isArray(ids) && ids.length > 0;
46
+ }
47
+ async function requireBulkPermission(userId, ids, res) {
48
+ const isSuperAdminUser = await userService.isSuperAdmin(userId);
49
+ if (isSuperAdminUser)
50
+ return true;
51
+ const roles = await escalationService.getEscalationRoles(ids);
52
+ for (const role of roles) {
53
+ const canManage = await userService.isGroupAdmin(userId, role);
54
+ if (!canManage) {
55
+ res.status(403).json({ error: `Insufficient permissions for role "${role}"` });
56
+ return false;
57
+ }
58
+ }
59
+ return true;
60
+ }
61
+ function publishBulkClaimEvents(ids, assignedTo) {
62
+ for (const id of ids) {
63
+ (0, publish_1.publishEscalationEvent)({
64
+ type: 'escalation.claimed',
65
+ source: 'api',
66
+ workflowId: '',
67
+ workflowName: '',
68
+ taskQueue: '',
69
+ escalationId: id,
70
+ status: 'claimed',
71
+ data: { assigned_to: assignedTo, bulk: true },
72
+ });
73
+ }
74
+ }
75
+ // ── Routes ──────────────────────────────────────────────────────────────────
43
76
  function registerBulkRoutes(router) {
44
- /**
45
- * POST /api/escalations/release-expired
46
- * Optional cleanup of stale assignment data.
47
- */
48
77
  router.post('/release-expired', async (_req, res) => {
49
78
  try {
50
79
  const released = await escalationService.releaseExpiredClaims();
@@ -54,38 +83,15 @@ function registerBulkRoutes(router) {
54
83
  res.status(500).json({ error: err.message });
55
84
  }
56
85
  });
57
- /**
58
- * PATCH /api/escalations/priority
59
- * Bulk update priority for selected escalations.
60
- * Body: { ids: string[], priority: 1|2|3|4 }
61
- * Requires admin/superadmin permission for the escalation roles.
62
- */
63
86
  router.patch('/priority', async (req, res) => {
64
87
  try {
65
- const userId = req.auth.userId;
66
88
  const { ids, priority } = req.body || {};
67
- if (!Array.isArray(ids) || ids.length === 0) {
68
- res.status(400).json({ error: 'ids must be a non-empty array' });
69
- return;
70
- }
71
- if (![1, 2, 3, 4].includes(priority)) {
72
- res.status(400).json({ error: 'priority must be 1, 2, 3, or 4' });
89
+ if (!validateIds(ids))
90
+ return res.status(400).json({ error: 'ids must be a non-empty array' });
91
+ if (![1, 2, 3, 4].includes(priority))
92
+ return res.status(400).json({ error: 'priority must be 1, 2, 3, or 4' });
93
+ if (!await requireBulkPermission(req.auth.userId, ids, res))
73
94
  return;
74
- }
75
- // Permission check: superadmin can update any; admin only for their roles
76
- const isSuperAdminUser = await userService.isSuperAdmin(userId);
77
- if (!isSuperAdminUser) {
78
- const roles = await escalationService.getEscalationRoles(ids);
79
- for (const role of roles) {
80
- const canManage = await userService.isGroupAdmin(userId, role);
81
- if (!canManage) {
82
- res.status(403).json({
83
- error: `Insufficient permissions for role "${role}"`,
84
- });
85
- return;
86
- }
87
- }
88
- }
89
95
  const updated = await escalationService.updateEscalationsPriority(ids, priority);
90
96
  res.json({ updated });
91
97
  }
@@ -93,138 +99,62 @@ function registerBulkRoutes(router) {
93
99
  res.status(500).json({ error: err.message });
94
100
  }
95
101
  });
96
- /**
97
- * POST /api/escalations/bulk-claim
98
- * Bulk claim selected escalations for the authenticated user.
99
- * Body: { ids: string[], durationMinutes?: number }
100
- */
101
102
  router.post('/bulk-claim', async (req, res) => {
102
103
  try {
103
104
  const userId = req.auth.userId;
104
105
  const { ids, durationMinutes } = req.body || {};
105
- if (!Array.isArray(ids) || ids.length === 0) {
106
- res.status(400).json({ error: 'ids must be a non-empty array' });
106
+ if (!validateIds(ids))
107
+ return res.status(400).json({ error: 'ids must be a non-empty array' });
108
+ if (!await requireBulkPermission(userId, ids, res))
107
109
  return;
108
- }
109
- const isSuperAdminUser = await userService.isSuperAdmin(userId);
110
- if (!isSuperAdminUser) {
111
- const roles = await escalationService.getEscalationRoles(ids);
112
- for (const role of roles) {
113
- const canManage = await userService.isGroupAdmin(userId, role);
114
- if (!canManage) {
115
- res.status(403).json({ error: `Insufficient permissions for role "${role}"` });
116
- return;
117
- }
118
- }
119
- }
120
110
  const result = await escalationService.bulkClaimEscalations(ids, userId, durationMinutes ?? 30);
121
111
  res.json(result);
122
- if (result.claimed > 0) {
123
- for (const id of ids) {
124
- (0, publish_1.publishEscalationEvent)({
125
- type: 'escalation.claimed',
126
- source: 'api',
127
- workflowId: '',
128
- workflowName: '',
129
- taskQueue: '',
130
- escalationId: id,
131
- status: 'claimed',
132
- data: { assigned_to: userId, bulk: true },
133
- });
134
- }
135
- }
112
+ if (result.claimed > 0)
113
+ publishBulkClaimEvents(ids, userId);
136
114
  }
137
115
  catch (err) {
138
116
  res.status(500).json({ error: err.message });
139
117
  }
140
118
  });
141
- /**
142
- * POST /api/escalations/bulk-assign
143
- * Bulk assign selected escalations to a specific user.
144
- * Body: { ids: string[], targetUserId: string, durationMinutes?: number }
145
- * Superadmin: can assign anyone. Admin: target must hold escalation role.
146
- */
147
119
  router.post('/bulk-assign', async (req, res) => {
148
120
  try {
149
121
  const userId = req.auth.userId;
150
122
  const { ids, targetUserId, durationMinutes } = req.body || {};
151
- if (!Array.isArray(ids) || ids.length === 0) {
152
- res.status(400).json({ error: 'ids must be a non-empty array' });
123
+ if (!validateIds(ids))
124
+ return res.status(400).json({ error: 'ids must be a non-empty array' });
125
+ if (!targetUserId || typeof targetUserId !== 'string')
126
+ return res.status(400).json({ error: 'targetUserId is required' });
127
+ if (!await requireBulkPermission(userId, ids, res))
153
128
  return;
154
- }
155
- if (!targetUserId || typeof targetUserId !== 'string') {
156
- res.status(400).json({ error: 'targetUserId is required' });
157
- return;
158
- }
129
+ // Non-superadmin: target user must hold each escalation's role
159
130
  const isSuperAdminUser = await userService.isSuperAdmin(userId);
160
- const roles = await escalationService.getEscalationRoles(ids);
161
131
  if (!isSuperAdminUser) {
162
- // Caller must be group admin for each escalation's role
163
- for (const role of roles) {
164
- const canManage = await userService.isGroupAdmin(userId, role);
165
- if (!canManage) {
166
- res.status(403).json({ error: `Insufficient permissions for role "${role}"` });
167
- return;
168
- }
169
- }
170
- // Target user must hold each escalation's role
132
+ const roles = await escalationService.getEscalationRoles(ids);
171
133
  for (const role of roles) {
172
134
  const targetHasRole = await userService.hasRole(targetUserId, role);
173
135
  if (!targetHasRole) {
174
- res.status(400).json({ error: `Target user does not hold the "${role}" role` });
175
- return;
136
+ return res.status(400).json({ error: `Target user does not hold the "${role}" role` });
176
137
  }
177
138
  }
178
139
  }
179
140
  const result = await escalationService.bulkAssignEscalations(ids, targetUserId, durationMinutes ?? 30);
180
141
  res.json(result);
181
- if (result.assigned > 0) {
182
- for (const id of ids) {
183
- (0, publish_1.publishEscalationEvent)({
184
- type: 'escalation.claimed',
185
- source: 'api',
186
- workflowId: '',
187
- workflowName: '',
188
- taskQueue: '',
189
- escalationId: id,
190
- status: 'claimed',
191
- data: { assigned_to: targetUserId, bulk: true },
192
- });
193
- }
194
- }
142
+ if (result.assigned > 0)
143
+ publishBulkClaimEvents(ids, targetUserId);
195
144
  }
196
145
  catch (err) {
197
146
  res.status(500).json({ error: err.message });
198
147
  }
199
148
  });
200
- /**
201
- * PATCH /api/escalations/bulk-escalate
202
- * Bulk reassign selected escalations to a different role.
203
- * Body: { ids: string[], targetRole: string }
204
- */
205
149
  router.patch('/bulk-escalate', async (req, res) => {
206
150
  try {
207
- const userId = req.auth.userId;
208
151
  const { ids, targetRole } = req.body || {};
209
- if (!Array.isArray(ids) || ids.length === 0) {
210
- res.status(400).json({ error: 'ids must be a non-empty array' });
152
+ if (!validateIds(ids))
153
+ return res.status(400).json({ error: 'ids must be a non-empty array' });
154
+ if (!targetRole || typeof targetRole !== 'string')
155
+ return res.status(400).json({ error: 'targetRole is required' });
156
+ if (!await requireBulkPermission(req.auth.userId, ids, res))
211
157
  return;
212
- }
213
- if (!targetRole || typeof targetRole !== 'string') {
214
- res.status(400).json({ error: 'targetRole is required' });
215
- return;
216
- }
217
- const isSuperAdminUser = await userService.isSuperAdmin(userId);
218
- if (!isSuperAdminUser) {
219
- const roles = await escalationService.getEscalationRoles(ids);
220
- for (const role of roles) {
221
- const canManage = await userService.isGroupAdmin(userId, role);
222
- if (!canManage) {
223
- res.status(403).json({ error: `Insufficient permissions for role "${role}"` });
224
- return;
225
- }
226
- }
227
- }
228
158
  const updated = await escalationService.bulkEscalateToRole(ids, targetRole);
229
159
  res.json({ updated });
230
160
  }
@@ -232,87 +162,18 @@ function registerBulkRoutes(router) {
232
162
  res.status(500).json({ error: err.message });
233
163
  }
234
164
  });
235
- /**
236
- * POST /api/escalations/bulk-triage
237
- * Bulk resolve selected escalations and start AI triage workflows.
238
- * Body: { ids: string[], hint?: string }
239
- */
240
165
  router.post('/bulk-triage', async (req, res) => {
241
166
  try {
242
- const userId = req.auth.userId;
243
167
  const { ids, hint } = req.body || {};
244
- if (!Array.isArray(ids) || ids.length === 0) {
245
- res.status(400).json({ error: 'ids must be a non-empty array' });
168
+ if (!validateIds(ids))
169
+ return res.status(400).json({ error: 'ids must be a non-empty array' });
170
+ if (!await requireBulkPermission(req.auth.userId, ids, res))
246
171
  return;
247
- }
248
- const isSuperAdminUser = await userService.isSuperAdmin(userId);
249
- if (!isSuperAdminUser) {
250
- const roles = await escalationService.getEscalationRoles(ids);
251
- for (const role of roles) {
252
- const canManage = await userService.isGroupAdmin(userId, role);
253
- if (!canManage) {
254
- res.status(403).json({ error: `Insufficient permissions for role "${role}"` });
255
- return;
256
- }
257
- }
258
- }
259
172
  const resolved = await escalationService.bulkResolveForTriage(ids, hint);
260
173
  const client = (0, workers_1.createClient)();
261
174
  const workflowIds = [];
262
175
  for (const escalation of resolved) {
263
- let escalationPayload = {};
264
- if (escalation.escalation_payload) {
265
- try {
266
- escalationPayload = JSON.parse(escalation.escalation_payload);
267
- }
268
- catch { }
269
- }
270
- let envelope = {};
271
- if (escalation.envelope) {
272
- try {
273
- envelope = JSON.parse(escalation.envelope);
274
- }
275
- catch { }
276
- }
277
- const triageWorkflowId = `triage-${escalation.id}-${Date.now()}`;
278
- const triageEnvelope = {
279
- data: {
280
- escalationId: escalation.id,
281
- originId: escalation.origin_id ?? undefined,
282
- originalWorkflowType: escalation.workflow_type,
283
- originalTaskQueue: escalation.task_queue,
284
- originalTaskId: escalation.task_id,
285
- escalationPayload,
286
- resolverPayload: {
287
- _lt: { needsTriage: true, ...(hint ? { hint } : {}) },
288
- },
289
- },
290
- metadata: envelope.metadata || {},
291
- lt: { ...(envelope.lt || {}), userId: req.auth?.userId },
292
- };
293
- const routing = escalation.task_id
294
- ? (await taskService.getTask(escalation.task_id))?.metadata
295
- : null;
296
- await taskService.createTask({
297
- workflow_id: triageWorkflowId,
298
- workflow_type: 'mcpTriage',
299
- lt_type: 'mcpTriage',
300
- task_queue: 'long-tail-system',
301
- signal_id: `lt-triage-${triageWorkflowId}`,
302
- parent_workflow_id: routing?.parentWorkflowId || triageWorkflowId,
303
- origin_id: escalation.origin_id || triageWorkflowId,
304
- parent_id: escalation.parent_id ?? undefined,
305
- envelope: JSON.stringify(triageEnvelope),
306
- metadata: routing || undefined,
307
- });
308
- await client.workflow.start({
309
- workflowName: 'mcpTriage',
310
- args: [triageEnvelope],
311
- taskQueue: 'long-tail-system',
312
- workflowId: triageWorkflowId,
313
- expire: defaults_1.JOB_EXPIRE_SECS,
314
- entity: 'mcpTriage',
315
- });
176
+ const triageWorkflowId = await startTriageWorkflow(escalation, hint, req.auth?.userId, client);
316
177
  workflowIds.push(triageWorkflowId);
317
178
  }
318
179
  res.json({ triaged: resolved.length, workflows: workflowIds });
@@ -322,3 +183,60 @@ function registerBulkRoutes(router) {
322
183
  }
323
184
  });
324
185
  }
186
+ // ── Triage workflow launcher ────────────────────────────────────────────────
187
+ async function startTriageWorkflow(escalation, hint, userId, client) {
188
+ let escalationPayload = {};
189
+ if (escalation.escalation_payload) {
190
+ try {
191
+ escalationPayload = JSON.parse(escalation.escalation_payload);
192
+ }
193
+ catch { }
194
+ }
195
+ let envelope = {};
196
+ if (escalation.envelope) {
197
+ try {
198
+ envelope = JSON.parse(escalation.envelope);
199
+ }
200
+ catch { }
201
+ }
202
+ const triageWorkflowId = `triage-${escalation.id}-${Date.now()}`;
203
+ const triageEnvelope = {
204
+ data: {
205
+ escalationId: escalation.id,
206
+ originId: escalation.origin_id ?? undefined,
207
+ originalWorkflowType: escalation.workflow_type,
208
+ originalTaskQueue: escalation.task_queue,
209
+ originalTaskId: escalation.task_id,
210
+ escalationPayload,
211
+ resolverPayload: {
212
+ _lt: { needsTriage: true, ...(hint ? { hint } : {}) },
213
+ },
214
+ },
215
+ metadata: envelope.metadata || {},
216
+ lt: { ...(envelope.lt || {}), userId },
217
+ };
218
+ const routing = escalation.task_id
219
+ ? (await taskService.getTask(escalation.task_id))?.metadata
220
+ : null;
221
+ await taskService.createTask({
222
+ workflow_id: triageWorkflowId,
223
+ workflow_type: 'mcpTriage',
224
+ lt_type: 'mcpTriage',
225
+ task_queue: 'long-tail-system',
226
+ signal_id: `lt-triage-${triageWorkflowId}`,
227
+ parent_workflow_id: routing?.parentWorkflowId || triageWorkflowId,
228
+ origin_id: escalation.origin_id || triageWorkflowId,
229
+ parent_id: escalation.parent_id ?? undefined,
230
+ envelope: JSON.stringify(triageEnvelope),
231
+ metadata: routing || undefined,
232
+ });
233
+ await client.workflow.start({
234
+ workflowName: 'mcpTriage',
235
+ args: [triageEnvelope],
236
+ taskQueue: 'long-tail-system',
237
+ workflowId: triageWorkflowId,
238
+ expire: defaults_1.JOB_EXPIRE_SECS,
239
+ entity: 'mcpTriage',
240
+ });
241
+ return triageWorkflowId;
242
+ }
@@ -37,7 +37,7 @@ exports.registerResolveRoutes = registerResolveRoutes;
37
37
  const escalationService = __importStar(require("../../services/escalation"));
38
38
  const taskService = __importStar(require("../../services/task"));
39
39
  const escalation_strategy_1 = require("../../services/escalation-strategy");
40
- const publish_1 = require("../../services/events/publish");
40
+ const publish_1 = require("../../lib/events/publish");
41
41
  const ephemeral_1 = require("../../services/iam/ephemeral");
42
42
  const deployer_1 = require("../../services/yaml-workflow/deployer");
43
43
  const workers_1 = require("../../workers");
@@ -37,7 +37,7 @@ exports.registerSingleRoutes = registerSingleRoutes;
37
37
  const escalationService = __importStar(require("../../services/escalation"));
38
38
  const userService = __importStar(require("../../services/user"));
39
39
  const roleService = __importStar(require("../../services/role"));
40
- const publish_1 = require("../../services/events/publish");
40
+ const publish_1 = require("../../lib/events/publish");
41
41
  function registerSingleRoutes(router) {
42
42
  /**
43
43
  * PATCH /api/escalations/:id/escalate
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const express_1 = require("express");
7
7
  const path_1 = __importDefault(require("path"));
8
- const storage_1 = require("../services/storage");
8
+ const storage_1 = require("../lib/storage");
9
9
  const router = (0, express_1.Router)();
10
10
  const MIME_TYPES = {
11
11
  '.png': 'image/png',
@@ -25,6 +25,7 @@ const namespaces_1 = __importDefault(require("./namespaces"));
25
25
  const files_1 = __importDefault(require("./files"));
26
26
  const controlplane_1 = __importDefault(require("./controlplane"));
27
27
  const bot_accounts_1 = __importDefault(require("./bot-accounts"));
28
+ const docs_1 = __importDefault(require("./docs"));
28
29
  const router = (0, express_1.Router)();
29
30
  // Public routes (no auth required — they handle their own auth)
30
31
  router.use('/auth', auth_2.default);
@@ -49,4 +50,5 @@ router.use('/mcp-runs', mcp_runs_1.default);
49
50
  router.use('/namespaces', namespaces_1.default);
50
51
  router.use('/controlplane', controlplane_1.default);
51
52
  router.use('/bot-accounts', bot_accounts_1.default);
53
+ router.use('/docs', docs_1.default);
52
54
  exports.default = router;
@@ -10,7 +10,7 @@ const router = (0, express_1.Router)();
10
10
  */
11
11
  router.post('/mcp-query', async (req, res) => {
12
12
  try {
13
- const { prompt, tags, wait, direct } = req.body;
13
+ const { prompt, tags, wait, direct, context } = req.body;
14
14
  if (!prompt || typeof prompt !== 'string') {
15
15
  res.status(400).json({ error: 'prompt is required' });
16
16
  return;
@@ -24,6 +24,7 @@ router.post('/mcp-query', async (req, res) => {
24
24
  tags,
25
25
  wait,
26
26
  direct,
27
+ context,
27
28
  userId: req.auth?.userId,
28
29
  });
29
30
  res.json(result);
@@ -243,8 +243,9 @@ router.post('/servers/:id/tools/:toolName/call', async (req, res) => {
243
243
  res.status(400).json({ error: 'MCP adapter not registered' });
244
244
  return;
245
245
  }
246
- const authContext = req.auth?.userId
247
- ? { userId: req.auth.userId }
246
+ const executeAs = req.body.execute_as;
247
+ const authContext = (executeAs || req.auth?.userId)
248
+ ? { userId: executeAs || req.auth?.userId }
248
249
  : undefined;
249
250
  const result = await adapter.callTool(req.params.id, req.params.toolName, req.body.arguments || {}, authContext);
250
251
  res.json({ result });
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setOAuthConfig = setOAuthConfig;
4
4
  const express_1 = require("express");
5
5
  const auth_1 = require("../modules/auth");
6
- const logger_1 = require("../services/logger");
6
+ const logger_1 = require("../lib/logger");
7
7
  const oauth_1 = require("../services/oauth");
8
8
  const user_1 = require("../services/user");
9
9
  const router = (0, express_1.Router)();
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const express_1 = require("express");
4
- const telemetry_1 = require("../services/telemetry");
5
- const events_1 = require("../services/events");
6
- const nats_1 = require("../services/events/nats");
7
- const socketio_1 = require("../services/events/socketio");
4
+ const telemetry_1 = require("../lib/telemetry");
5
+ const events_1 = require("../lib/events");
6
+ const nats_1 = require("../lib/events/nats");
7
+ const socketio_1 = require("../lib/events/socketio");
8
8
  const defaults_1 = require("../modules/defaults");
9
9
  const router = (0, express_1.Router)();
10
10
  /**
@@ -36,8 +36,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const express_1 = require("express");
37
37
  const configService = __importStar(require("../../services/config"));
38
38
  const cron_1 = require("../../services/cron");
39
- const db_1 = require("../../services/db");
39
+ const db_1 = require("../../lib/db");
40
40
  const registry_1 = require("../../services/workers/registry");
41
+ const sql_1 = require("../../services/mcp-runs/sql");
41
42
  const router = (0, express_1.Router)();
42
43
  // ── Active workers ───────────────────────────────────────────────────────────
43
44
  /**
@@ -78,9 +79,8 @@ router.get('/discovered', async (req, res) => {
78
79
  // 1. Active workers from in-memory registry
79
80
  const activeWorkers = (0, registry_1.getRegisteredWorkers)();
80
81
  // 2. Historical entities from durable.jobs
81
- const DISTINCT_ENTITIES = `SELECT DISTINCT entity FROM durable.jobs WHERE entity IS NOT NULL AND entity != '' ORDER BY entity`;
82
82
  const pool = (0, db_1.getPool)();
83
- const { rows: entityRows } = await pool.query(DISTINCT_ENTITIES);
83
+ const { rows: entityRows } = await pool.query(sql_1.DISTINCT_ENTITIES_DURABLE);
84
84
  const historicalEntities = new Set(entityRows.map((r) => r.entity));
85
85
  // 3. Registered configs
86
86
  const configs = await configService.listWorkflowConfigs();
@@ -136,7 +136,7 @@ router.post('/:workflowId/terminate', async (req, res) => {
136
136
  return;
137
137
  const client = (0, workers_1.createClient)();
138
138
  const handle = await client.workflow.getHandle(resolved.taskQueue, resolved.workflowName, req.params.workflowId);
139
- await handle.interrupt();
139
+ await handle.terminate();
140
140
  res.json({ terminated: true, workflowId: req.params.workflowId });
141
141
  }
142
142
  catch (err) {
@@ -128,7 +128,7 @@ router.post('/', async (req, res) => {
128
128
  }
129
129
  catch (err) {
130
130
  if (err.message?.includes('duplicate key') || err.code === '23505') {
131
- res.status(409).json({ error: 'A YAML workflow with that name already exists' });
131
+ res.status(409).json({ error: 'A tool with that name already exists' });
132
132
  return;
133
133
  }
134
134
  res.status(500).json({ error: err.message });
@@ -134,6 +134,31 @@ router.post('/:id/invoke', async (req, res) => {
134
134
  return;
135
135
  }
136
136
  const data = req.body.data || {};
137
+ // Inject _scope so compiled workflow activities have identity context
138
+ const executeAs = req.body.execute_as;
139
+ const userId = req.auth?.userId;
140
+ if (!data._scope) {
141
+ const { resolvePrincipal } = await Promise.resolve().then(() => __importStar(require('../../services/iam/principal')));
142
+ if (executeAs) {
143
+ const [botPrincipal, invokerPrincipal] = await Promise.all([
144
+ resolvePrincipal(executeAs),
145
+ userId ? resolvePrincipal(userId) : Promise.resolve(null),
146
+ ]);
147
+ if (botPrincipal) {
148
+ data._scope = {
149
+ principal: botPrincipal,
150
+ scopes: ['mcp:tool:call'],
151
+ ...(invokerPrincipal ? { initiatedBy: userId, initiatingPrincipal: invokerPrincipal } : {}),
152
+ };
153
+ }
154
+ }
155
+ else if (userId) {
156
+ const principal = await resolvePrincipal(userId);
157
+ if (principal) {
158
+ data._scope = { principal, scopes: ['mcp:tool:call'] };
159
+ }
160
+ }
161
+ }
137
162
  if (req.body.sync) {
138
163
  const { job_id, result } = await yamlDeployer.invokeYamlWorkflowSync(wf.app_id, wf.graph_topic, data, req.body.timeout, wf.graph_topic);
139
164
  res.json({ job_id, result });
@@ -42,7 +42,7 @@ exports.revokeBotApiKey = revokeBotApiKey;
42
42
  exports.listBotApiKeys = listBotApiKeys;
43
43
  const crypto = __importStar(require("crypto"));
44
44
  const bcryptjs_1 = __importDefault(require("bcryptjs"));
45
- const db_1 = require("../db");
45
+ const db_1 = require("../../lib/db");
46
46
  const TOKEN_PREFIX = 'lt_bot_';
47
47
  const INSERT_KEY = `
48
48
  INSERT INTO lt_bot_api_keys (name, user_id, key_hash, scopes, expires_at)
@@ -0,0 +1,4 @@
1
+ export { generateBotApiKey, validateBotApiKey, revokeBotApiKey, listBotApiKeys, } from './bot-api-key';
2
+ export type { BotApiKeyRecord } from './bot-api-key';
3
+ export { createDelegationToken, validateDelegationToken, requireScope, } from './delegation';
4
+ export { generateServiceToken, validateServiceToken, revokeServiceToken, listServiceTokens, } from './service-token';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listServiceTokens = exports.revokeServiceToken = exports.validateServiceToken = exports.generateServiceToken = exports.requireScope = exports.validateDelegationToken = exports.createDelegationToken = exports.listBotApiKeys = exports.revokeBotApiKey = exports.validateBotApiKey = exports.generateBotApiKey = void 0;
4
+ var bot_api_key_1 = require("./bot-api-key");
5
+ Object.defineProperty(exports, "generateBotApiKey", { enumerable: true, get: function () { return bot_api_key_1.generateBotApiKey; } });
6
+ Object.defineProperty(exports, "validateBotApiKey", { enumerable: true, get: function () { return bot_api_key_1.validateBotApiKey; } });
7
+ Object.defineProperty(exports, "revokeBotApiKey", { enumerable: true, get: function () { return bot_api_key_1.revokeBotApiKey; } });
8
+ Object.defineProperty(exports, "listBotApiKeys", { enumerable: true, get: function () { return bot_api_key_1.listBotApiKeys; } });
9
+ var delegation_1 = require("./delegation");
10
+ Object.defineProperty(exports, "createDelegationToken", { enumerable: true, get: function () { return delegation_1.createDelegationToken; } });
11
+ Object.defineProperty(exports, "validateDelegationToken", { enumerable: true, get: function () { return delegation_1.validateDelegationToken; } });
12
+ Object.defineProperty(exports, "requireScope", { enumerable: true, get: function () { return delegation_1.requireScope; } });
13
+ var service_token_1 = require("./service-token");
14
+ Object.defineProperty(exports, "generateServiceToken", { enumerable: true, get: function () { return service_token_1.generateServiceToken; } });
15
+ Object.defineProperty(exports, "validateServiceToken", { enumerable: true, get: function () { return service_token_1.validateServiceToken; } });
16
+ Object.defineProperty(exports, "revokeServiceToken", { enumerable: true, get: function () { return service_token_1.revokeServiceToken; } });
17
+ Object.defineProperty(exports, "listServiceTokens", { enumerable: true, get: function () { return service_token_1.listServiceTokens; } });
@@ -42,7 +42,7 @@ exports.revokeServiceToken = revokeServiceToken;
42
42
  exports.listServiceTokens = listServiceTokens;
43
43
  const crypto = __importStar(require("crypto"));
44
44
  const bcryptjs_1 = __importDefault(require("bcryptjs"));
45
- const db_1 = require("../db");
45
+ const db_1 = require("../../lib/db");
46
46
  const TOKEN_PREFIX = 'lt_svc_';
47
47
  const INSERT_TOKEN = `
48
48
  INSERT INTO lt_service_tokens (name, token_hash, server_id, scopes, expires_at)
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getProviderData = getProviderData;
4
- const db_1 = require("../db");
4
+ const db_1 = require("../../lib/db");
5
5
  const sql_1 = require("./sql");
6
6
  async function getProviderData(consumes, originId) {
7
7
  if (!consumes.length || !originId)
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getWorkflowConfig = getWorkflowConfig;
4
4
  exports.listWorkflowConfigs = listWorkflowConfigs;
5
- const db_1 = require("../db");
5
+ const db_1 = require("../../lib/db");
6
6
  const sql_1 = require("./sql");
7
7
  async function getWorkflowConfig(workflowType) {
8
8
  const pool = (0, db_1.getPool)();