@hotmeshio/long-tail 0.1.4 → 0.1.6

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 (663) hide show
  1. package/README.md +35 -5
  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 +4 -7
  12. package/{services → build/lib}/db/schemas/001_schema.sql +3 -0
  13. package/{services → build/lib}/db/schemas/011_system_workflow_configs.sql +7 -0
  14. package/build/lib/db/schemas/015_knowledge.sql +23 -0
  15. package/build/lib/db/schemas/016_streamable_http.sql +7 -0
  16. package/build/{services → lib}/telemetry/honeycomb.d.ts +2 -2
  17. package/build/{services → lib}/telemetry/honeycomb.js +2 -2
  18. package/build/modules/defaults.d.ts +2 -0
  19. package/build/modules/defaults.js +3 -1
  20. package/build/routes/controlplane.js +1 -1
  21. package/build/routes/dba.js +4 -0
  22. package/build/routes/docs.d.ts +2 -0
  23. package/build/routes/docs.js +105 -0
  24. package/build/routes/escalations/bulk.js +120 -202
  25. package/build/routes/escalations/resolve.js +1 -1
  26. package/build/routes/escalations/single.js +1 -1
  27. package/build/routes/files.js +1 -1
  28. package/build/routes/index.js +2 -0
  29. package/build/routes/insight.js +65 -1
  30. package/build/routes/mcp.js +26 -3
  31. package/build/routes/oauth.js +1 -1
  32. package/build/routes/settings.js +4 -4
  33. package/build/routes/workflows/discovery.js +3 -3
  34. package/build/routes/workflows/invocation.js +1 -1
  35. package/build/routes/yaml-workflows/cron.d.ts +2 -0
  36. package/build/routes/yaml-workflows/cron.js +117 -0
  37. package/build/routes/yaml-workflows/crud.js +39 -1
  38. package/build/routes/yaml-workflows/deployment.js +9 -9
  39. package/build/routes/yaml-workflows/index.js +4 -1
  40. package/build/services/auth/bot-api-key.js +1 -1
  41. package/build/services/auth/index.d.ts +4 -0
  42. package/build/services/auth/index.js +17 -0
  43. package/build/services/auth/service-token.js +1 -1
  44. package/build/services/config/provider.js +1 -1
  45. package/build/services/config/read.js +1 -1
  46. package/build/services/config/write.js +1 -1
  47. package/build/services/controlplane/index.js +3 -4
  48. package/build/services/controlplane/quorum-bridge.js +2 -2
  49. package/build/services/cron/index.d.ts +17 -0
  50. package/build/services/cron/index.js +98 -6
  51. package/build/services/dba.d.ts +4 -0
  52. package/build/services/dba.js +3 -6
  53. package/build/services/escalation/bulk.js +1 -1
  54. package/build/services/escalation/crud.js +1 -1
  55. package/build/services/escalation/queries.js +1 -1
  56. package/build/services/export/client.js +2 -5
  57. package/build/services/export/index.js +14 -2
  58. package/build/services/hotmesh-utils.js +1 -1
  59. package/build/services/iam/bots.js +6 -12
  60. package/build/services/iam/context.d.ts +1 -1
  61. package/build/services/iam/context.js +5 -5
  62. package/build/services/iam/credentials.js +1 -1
  63. package/build/services/iam/ephemeral.js +8 -15
  64. package/build/services/iam/principal.js +3 -10
  65. package/build/services/iam/resolve.js +1 -1
  66. package/build/services/iam/sql.d.ts +10 -0
  67. package/build/services/iam/sql.js +42 -0
  68. package/build/services/insight/index.d.ts +12 -0
  69. package/build/services/insight/index.js +34 -6
  70. package/build/services/interceptor/activities/escalation.js +1 -1
  71. package/build/services/interceptor/activities/task.js +9 -6
  72. package/build/services/interceptor/activities/workflow.js +4 -5
  73. package/build/services/interceptor/activity-interceptor.d.ts +1 -1
  74. package/build/services/interceptor/activity-interceptor.js +5 -5
  75. package/build/services/interceptor/completion.js +1 -1
  76. package/build/services/interceptor/escalation.js +1 -1
  77. package/build/services/interceptor/index.js +4 -4
  78. package/build/services/interceptor/lifecycle.js +1 -1
  79. package/build/services/maintenance/index.js +4 -5
  80. package/build/services/mcp/adapter.js +1 -16
  81. package/build/services/mcp/client/connection.d.ts +10 -1
  82. package/build/services/mcp/client/connection.js +51 -3
  83. package/build/services/mcp/client/tools.js +1 -1
  84. package/build/services/mcp/db-server/index.js +1 -1
  85. package/build/services/mcp/db-server/schemas.d.ts +2 -2
  86. package/build/services/mcp/db-server/tools.js +17 -4
  87. package/build/services/mcp/db.d.ts +1 -1
  88. package/build/services/mcp/db.js +11 -1
  89. package/build/services/mcp/playwright-server/index.js +1 -1
  90. package/build/services/mcp/playwright-server/lifecycle.js +1 -1
  91. package/build/services/mcp/playwright-server/schemas.d.ts +2 -2
  92. package/build/services/mcp/playwright-server/tools.js +1 -1
  93. package/build/services/mcp/server.js +1 -1
  94. package/build/services/mcp/sql.d.ts +7 -1
  95. package/build/services/mcp/sql.js +36 -3
  96. package/build/services/mcp/types.d.ts +3 -1
  97. package/build/services/mcp/workflow-compiler-server.js +1 -1
  98. package/build/services/mcp/workflow-server.js +1 -1
  99. package/build/services/mcp-runs/execution-builder.js +8 -6
  100. package/build/services/mcp-runs/queries.js +2 -2
  101. package/build/services/mcp-runs/sql.d.ts +4 -1
  102. package/build/services/mcp-runs/sql.js +23 -2
  103. package/build/services/namespace/index.js +1 -1
  104. package/build/services/oauth/db.js +9 -37
  105. package/build/services/oauth/index.js +1 -1
  106. package/build/services/oauth/providers/registry.js +1 -1
  107. package/build/services/oauth/sql.d.ts +7 -0
  108. package/build/services/oauth/sql.js +32 -0
  109. package/build/services/orchestrator/index.js +3 -3
  110. package/build/services/role/index.js +1 -1
  111. package/build/services/task/crud.js +1 -1
  112. package/build/services/task/process.js +1 -1
  113. package/build/services/task/resolve.js +1 -1
  114. package/build/services/user/auth.js +1 -1
  115. package/build/services/user/crud.js +1 -1
  116. package/build/services/user/rbac.js +1 -1
  117. package/build/services/user/roles.js +1 -1
  118. package/build/services/user/sql.d.ts +2 -0
  119. package/build/services/user/sql.js +3 -1
  120. package/build/services/yaml-workflow/db-utils.js +1 -1
  121. package/build/services/yaml-workflow/db.d.ts +3 -0
  122. package/build/services/yaml-workflow/db.js +25 -1
  123. package/build/services/yaml-workflow/deployer-helpers.js +1 -1
  124. package/build/services/yaml-workflow/deployer.js +4 -4
  125. package/build/services/yaml-workflow/generator.js +1 -1
  126. package/build/services/yaml-workflow/input-analyzer-helpers.d.ts +6 -0
  127. package/build/services/yaml-workflow/input-analyzer-helpers.js +36 -7
  128. package/build/services/yaml-workflow/input-analyzer.js +16 -3
  129. package/build/services/yaml-workflow/invoke.d.ts +19 -0
  130. package/build/services/yaml-workflow/invoke.js +80 -0
  131. package/build/services/yaml-workflow/pipeline/analyze.js +1 -1
  132. package/build/services/yaml-workflow/pipeline/build/dag.js +11 -6
  133. package/build/services/yaml-workflow/pipeline/build/wiring.d.ts +1 -1
  134. package/build/services/yaml-workflow/pipeline/build/wiring.js +89 -2
  135. package/build/services/yaml-workflow/pipeline/compile/llm-call.js +1 -1
  136. package/build/services/yaml-workflow/pipeline/extract.js +5 -3
  137. package/build/services/yaml-workflow/pipeline/index.d.ts +5 -0
  138. package/build/services/yaml-workflow/pipeline/index.js +22 -0
  139. package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
  140. package/build/services/yaml-workflow/pipeline/prompts.js +44 -1
  141. package/build/services/yaml-workflow/pipeline/validate.js +2 -2
  142. package/build/services/yaml-workflow/sql.d.ts +3 -0
  143. package/build/services/yaml-workflow/sql.js +16 -1
  144. package/build/services/yaml-workflow/types.d.ts +13 -1
  145. package/build/services/yaml-workflow/workers/callbacks.js +10 -2
  146. package/build/services/yaml-workflow/workers/events.js +2 -2
  147. package/build/services/yaml-workflow/workers/register.js +37 -9
  148. package/build/start/adapters.js +7 -7
  149. package/build/start/index.js +4 -4
  150. package/build/start/server.js +1 -1
  151. package/build/start/workers.d.ts +1 -2
  152. package/build/start/workers.js +8 -7
  153. package/build/system/activities/claude-code.js +1 -1
  154. package/build/system/activities/file-storage.js +1 -1
  155. package/build/system/activities/knowledge.d.ts +58 -0
  156. package/build/system/activities/knowledge.js +128 -0
  157. package/build/system/activities/sql.d.ts +9 -0
  158. package/build/system/activities/sql.js +41 -0
  159. package/build/system/activities/triage/context.js +1 -1
  160. package/build/system/activities/triage/discovery.d.ts +2 -14
  161. package/build/system/activities/triage/discovery.js +5 -161
  162. package/build/system/activities/triage/llm.d.ts +1 -8
  163. package/build/system/activities/triage/llm.js +2 -28
  164. package/build/system/activities/triage/tools.d.ts +1 -17
  165. package/build/system/activities/triage/tools.js +8 -167
  166. package/build/system/index.js +11 -4
  167. package/build/system/mcp-servers/admin/escalations.d.ts +5 -0
  168. package/build/system/mcp-servers/admin/escalations.js +149 -0
  169. package/build/system/mcp-servers/admin/index.d.ts +31 -0
  170. package/build/system/mcp-servers/admin/index.js +80 -0
  171. package/build/system/mcp-servers/admin/maintenance.d.ts +5 -0
  172. package/build/system/mcp-servers/admin/maintenance.js +58 -0
  173. package/build/system/mcp-servers/admin/mcp-servers.d.ts +5 -0
  174. package/build/system/mcp-servers/admin/mcp-servers.js +146 -0
  175. package/build/system/mcp-servers/admin/schemas.d.ts +411 -0
  176. package/build/system/mcp-servers/admin/schemas.js +177 -0
  177. package/build/system/mcp-servers/admin/tasks.d.ts +5 -0
  178. package/build/system/mcp-servers/admin/tasks.js +112 -0
  179. package/build/system/mcp-servers/admin/users.d.ts +5 -0
  180. package/build/system/mcp-servers/admin/users.js +167 -0
  181. package/build/system/mcp-servers/admin/workflow-config.d.ts +9 -0
  182. package/build/system/mcp-servers/admin/workflow-config.js +118 -0
  183. package/build/system/mcp-servers/admin/workflows.d.ts +6 -0
  184. package/build/system/mcp-servers/admin/workflows.js +138 -0
  185. package/build/system/mcp-servers/admin/yaml-workflows.d.ts +8 -0
  186. package/build/system/mcp-servers/admin/yaml-workflows.js +237 -0
  187. package/build/system/mcp-servers/claude-code.js +1 -1
  188. package/build/system/mcp-servers/db-query/index.js +1 -1
  189. package/build/system/mcp-servers/db-query/schemas.d.ts +2 -2
  190. package/build/system/mcp-servers/db-query/tools.js +17 -4
  191. package/build/system/mcp-servers/docs.d.ts +5 -0
  192. package/build/system/mcp-servers/docs.js +147 -0
  193. package/build/system/mcp-servers/file-storage.js +1 -1
  194. package/build/system/mcp-servers/http-fetch.js +1 -1
  195. package/build/system/mcp-servers/human-queue.js +1 -1
  196. package/build/system/mcp-servers/knowledge.d.ts +4 -0
  197. package/build/system/mcp-servers/knowledge.js +137 -0
  198. package/build/system/mcp-servers/oauth.js +1 -1
  199. package/build/system/mcp-servers/playwright/browser-lifecycle.js +1 -1
  200. package/build/system/mcp-servers/playwright/index.js +1 -1
  201. package/build/system/mcp-servers/playwright/schemas.d.ts +21 -10
  202. package/build/system/mcp-servers/playwright/schemas.js +3 -0
  203. package/build/system/mcp-servers/playwright/tools-navigation.js +22 -9
  204. package/build/system/mcp-servers/playwright/tools-run-script.js +20 -3
  205. package/build/system/mcp-servers/playwright/vision-helper.d.ts +12 -0
  206. package/build/system/mcp-servers/playwright/vision-helper.js +81 -0
  207. package/build/system/mcp-servers/playwright-cli/helpers.js +2 -2
  208. package/build/system/mcp-servers/playwright-cli/index.js +1 -1
  209. package/build/system/mcp-servers/playwright-cli/schemas.d.ts +10 -10
  210. package/build/system/mcp-servers/playwright-cli/schemas.js +1 -1
  211. package/build/system/mcp-servers/playwright-cli/tools-auth.js +1 -1
  212. package/build/system/mcp-servers/playwright-cli/tools-capture.js +9 -3
  213. package/build/system/mcp-servers/translation.d.ts +14 -0
  214. package/build/system/mcp-servers/translation.js +130 -0
  215. package/build/system/mcp-servers/vision-prompts.d.ts +2 -0
  216. package/build/system/mcp-servers/vision-prompts.js +9 -0
  217. package/build/system/mcp-servers/{document-vision.d.ts → vision.d.ts} +3 -4
  218. package/build/system/mcp-servers/vision.js +258 -0
  219. package/build/system/mcp-servers/workflow-compiler.js +1 -1
  220. package/build/system/mcp-servers/workflow.js +1 -1
  221. package/build/system/seed/index.js +13 -2
  222. package/build/system/seed/server-definitions.d.ts +1961 -322
  223. package/build/system/seed/server-definitions.js +68 -34
  224. package/build/system/seed/tool-manifests-admin.d.ts +1645 -0
  225. package/build/system/seed/tool-manifests-admin.js +45 -0
  226. package/build/system/seed/tool-manifests-browser.d.ts +1 -1
  227. package/build/system/seed/tool-manifests-browser.js +3 -3
  228. package/build/system/seed/tool-manifests-data.d.ts +62 -21
  229. package/build/system/seed/tool-manifests-data.js +55 -17
  230. package/build/system/seed/tool-manifests-knowledge.d.ts +171 -0
  231. package/build/system/seed/tool-manifests-knowledge.js +94 -0
  232. package/build/system/seed/tool-manifests-workflows.d.ts +7 -0
  233. package/build/system/seed/tool-manifests-workflows.js +10 -3
  234. package/build/system/workflows/mcp-deterministic/index.js +1 -1
  235. package/build/system/workflows/mcp-query/activities/discovery.d.ts +2 -20
  236. package/build/system/workflows/mcp-query/activities/discovery.js +5 -163
  237. package/build/system/workflows/mcp-query/activities/llm.d.ts +1 -7
  238. package/build/system/workflows/mcp-query/activities/llm.js +2 -27
  239. package/build/system/workflows/mcp-query/activities/tool-executor.d.ts +0 -4
  240. package/build/system/workflows/mcp-query/activities/tool-executor.js +2 -106
  241. package/build/system/workflows/mcp-query/activities/tool-loader.d.ts +0 -9
  242. package/build/system/workflows/mcp-query/activities/tool-loader.js +2 -87
  243. package/build/system/workflows/mcp-query/index.js +55 -5
  244. package/build/system/workflows/mcp-query/prompts.d.ts +1 -2
  245. package/build/system/workflows/mcp-query/prompts.js +5 -32
  246. package/build/system/workflows/mcp-query/strategy-advisors.d.ts +3 -14
  247. package/build/system/workflows/mcp-query/strategy-advisors.js +4 -107
  248. package/build/system/workflows/mcp-query/types.d.ts +2 -10
  249. package/build/system/workflows/mcp-query/types.js +0 -1
  250. package/build/system/workflows/mcp-query-router/index.js +1 -1
  251. package/build/system/workflows/mcp-triage/index.d.ts +2 -2
  252. package/build/system/workflows/mcp-triage/index.js +39 -7
  253. package/build/system/workflows/mcp-triage/prompts.js +7 -14
  254. package/build/system/workflows/mcp-triage-deterministic/index.js +1 -1
  255. package/build/system/workflows/mcp-triage-router/index.js +1 -1
  256. package/build/system/workflows/mcp-workflow-builder/activities/caches.d.ts +5 -0
  257. package/build/system/workflows/mcp-workflow-builder/activities/caches.js +8 -0
  258. package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +2 -0
  259. package/build/system/workflows/mcp-workflow-builder/activities/index.js +7 -0
  260. package/build/system/workflows/mcp-workflow-builder/activities/llm.d.ts +2 -0
  261. package/build/system/workflows/mcp-workflow-builder/activities/llm.js +25 -0
  262. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +5 -0
  263. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +8 -0
  264. package/build/system/workflows/mcp-workflow-builder/index.d.ts +16 -0
  265. package/build/system/workflows/mcp-workflow-builder/index.js +229 -0
  266. package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +8 -0
  267. package/build/system/workflows/mcp-workflow-builder/prompts.js +247 -0
  268. package/build/system/workflows/shared/discovery.d.ts +35 -0
  269. package/build/system/workflows/shared/discovery.js +175 -0
  270. package/build/system/workflows/shared/index.d.ts +7 -0
  271. package/build/system/workflows/shared/index.js +18 -0
  272. package/build/system/workflows/shared/llm-caller.d.ts +8 -0
  273. package/build/system/workflows/shared/llm-caller.js +31 -0
  274. package/build/system/workflows/shared/prompts.d.ts +2 -0
  275. package/build/system/workflows/shared/prompts.js +32 -0
  276. package/build/system/workflows/shared/strategy-advisors.d.ts +14 -0
  277. package/build/system/workflows/shared/strategy-advisors.js +109 -0
  278. package/build/system/workflows/shared/tool-executor.d.ts +11 -0
  279. package/build/system/workflows/shared/tool-executor.js +111 -0
  280. package/build/system/workflows/shared/tool-loader.d.ts +19 -0
  281. package/build/system/workflows/shared/tool-loader.js +97 -0
  282. package/build/system/workflows/shared/types.d.ts +9 -0
  283. package/build/system/workflows/shared/types.js +2 -0
  284. package/build/system/workflows/tool-result-guard.d.ts +14 -0
  285. package/build/system/workflows/tool-result-guard.js +78 -0
  286. package/build/tsconfig.tsbuildinfo +1 -1
  287. package/build/types/mcp.d.ts +4 -3
  288. package/build/types/user.d.ts +2 -0
  289. package/build/types/yaml-workflow.d.ts +6 -2
  290. package/build/vitest.config.d.ts +1 -1
  291. package/build/vitest.integration.config.d.ts +1 -1
  292. package/build/workers/index.js +2 -8
  293. package/dashboard/dist/assets/AdminDashboard-BXkKGkb5.js +2 -0
  294. package/dashboard/dist/assets/AdminDashboard-BXkKGkb5.js.map +1 -0
  295. package/dashboard/dist/assets/AvailableEscalationsPage-DcH592mc.js +2 -0
  296. package/dashboard/dist/assets/AvailableEscalationsPage-DcH592mc.js.map +1 -0
  297. package/dashboard/dist/assets/BotPicker-A6LtzyuO.js +2 -0
  298. package/dashboard/dist/assets/{BotPicker-D6FYW1Gt.js.map → BotPicker-A6LtzyuO.js.map} +1 -1
  299. package/dashboard/dist/assets/CollapsibleSection-C7nL2_mv.js +2 -0
  300. package/dashboard/dist/assets/{CollapsibleSection-Cxk4wvjT.js.map → CollapsibleSection-C7nL2_mv.js.map} +1 -1
  301. package/dashboard/dist/assets/ConfirmDeleteModal-CWFwJrSl.js +2 -0
  302. package/dashboard/dist/assets/{ConfirmDeleteModal-FSXyKjaB.js.map → ConfirmDeleteModal-CWFwJrSl.js.map} +1 -1
  303. package/dashboard/dist/assets/CopyableId-DbZ5c3jh.js +2 -0
  304. package/dashboard/dist/assets/{CopyableId-CBdxWfp8.js.map → CopyableId-DbZ5c3jh.js.map} +1 -1
  305. package/dashboard/dist/assets/CredentialsPage-ClWkmLPu.js +2 -0
  306. package/dashboard/dist/assets/CredentialsPage-ClWkmLPu.js.map +1 -0
  307. package/dashboard/dist/assets/CustomDurationPicker-CtH2hReF.js +2 -0
  308. package/dashboard/dist/assets/{CustomDurationPicker-CAninCbl.js.map → CustomDurationPicker-CtH2hReF.js.map} +1 -1
  309. package/dashboard/dist/assets/DataTable-CM5ZcpPi.js +2 -0
  310. package/dashboard/dist/assets/DataTable-CM5ZcpPi.js.map +1 -0
  311. package/dashboard/dist/assets/ElapsedCell-CwqavyeC.js +2 -0
  312. package/dashboard/dist/assets/ElapsedCell-CwqavyeC.js.map +1 -0
  313. package/dashboard/dist/assets/EmptyState-BBn78pmm.js +2 -0
  314. package/dashboard/dist/assets/{EmptyState-2CmV-IaS.js.map → EmptyState-BBn78pmm.js.map} +1 -1
  315. package/dashboard/dist/assets/EscalationsOverview-BcJ2E3X7.js +2 -0
  316. package/dashboard/dist/assets/{EscalationsOverview-GXYFPASS.js.map → EscalationsOverview-BcJ2E3X7.js.map} +1 -1
  317. package/dashboard/dist/assets/EventTable-C1en_KZ0.js +2 -0
  318. package/dashboard/dist/assets/{EventTable-B01oJf6Y.js.map → EventTable-C1en_KZ0.js.map} +1 -1
  319. package/dashboard/dist/assets/FilterBar-CZTlrLQT.js +2 -0
  320. package/dashboard/dist/assets/{FilterBar-Ck4K4rzu.js.map → FilterBar-CZTlrLQT.js.map} +1 -1
  321. package/dashboard/dist/assets/ListToolbar-Cdbsapig.js +2 -0
  322. package/dashboard/dist/assets/ListToolbar-Cdbsapig.js.map +1 -0
  323. package/dashboard/dist/assets/McpOverview-CSpEJxKa.js +2 -0
  324. package/dashboard/dist/assets/{McpOverview-JkvRcX2e.js.map → McpOverview-CSpEJxKa.js.map} +1 -1
  325. package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js +5 -0
  326. package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js.map +1 -0
  327. package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js +2 -0
  328. package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js.map +1 -0
  329. package/dashboard/dist/assets/McpRunDetailPage-9xdxgG4d.js +2 -0
  330. package/dashboard/dist/assets/McpRunDetailPage-9xdxgG4d.js.map +1 -0
  331. package/dashboard/dist/assets/McpRunsPage-wWLqHsd4.js +2 -0
  332. package/dashboard/dist/assets/McpRunsPage-wWLqHsd4.js.map +1 -0
  333. package/dashboard/dist/assets/Modal-kB_P7ZOr.js +2 -0
  334. package/dashboard/dist/assets/{Modal-B4rbIVAn.js.map → Modal-kB_P7ZOr.js.map} +1 -1
  335. package/dashboard/dist/assets/OperatorDashboard-jc0vrgDI.js +2 -0
  336. package/dashboard/dist/assets/OperatorDashboard-jc0vrgDI.js.map +1 -0
  337. package/dashboard/dist/assets/PageHeader-NkOeBR05.js +2 -0
  338. package/dashboard/dist/assets/PageHeader-NkOeBR05.js.map +1 -0
  339. package/dashboard/dist/assets/PageHeaderWithStats-ywNhrmFK.js +2 -0
  340. package/dashboard/dist/assets/PageHeaderWithStats-ywNhrmFK.js.map +1 -0
  341. package/dashboard/dist/assets/PriorityBadge-B2MQbSxy.js +2 -0
  342. package/dashboard/dist/assets/{PriorityBadge-DfQY9St9.js.map → PriorityBadge-B2MQbSxy.js.map} +1 -1
  343. package/dashboard/dist/assets/ProcessDetailPage-B7z7IdqE.js +2 -0
  344. package/dashboard/dist/assets/ProcessDetailPage-B7z7IdqE.js.map +1 -0
  345. package/dashboard/dist/assets/ProcessesListPage-C-uHadO6.js +2 -0
  346. package/dashboard/dist/assets/ProcessesListPage-C-uHadO6.js.map +1 -0
  347. package/dashboard/dist/assets/RolePill-C1dgC-fK.js +2 -0
  348. package/dashboard/dist/assets/{RolePill-BTPa8L-P.js.map → RolePill-C1dgC-fK.js.map} +1 -1
  349. package/dashboard/dist/assets/RolesPage-BSxrD1vm.js +2 -0
  350. package/dashboard/dist/assets/RolesPage-BSxrD1vm.js.map +1 -0
  351. package/dashboard/dist/assets/RowActions-lYaHGI-v.js +2 -0
  352. package/dashboard/dist/assets/{RowActions-Dg-Fsm5O.js.map → RowActions-lYaHGI-v.js.map} +1 -1
  353. package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js +2 -0
  354. package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js.map +1 -0
  355. package/dashboard/dist/assets/StatCard-v2TiITVr.js +2 -0
  356. package/dashboard/dist/assets/{StatCard-DlgF0CJC.js.map → StatCard-v2TiITVr.js.map} +1 -1
  357. package/dashboard/dist/assets/StatusBadge-DWlxevgG.js +2 -0
  358. package/dashboard/dist/assets/StatusBadge-DWlxevgG.js.map +1 -0
  359. package/dashboard/dist/assets/StepIndicator-CRM4ft28.js +2 -0
  360. package/dashboard/dist/assets/StepIndicator-CRM4ft28.js.map +1 -0
  361. package/dashboard/dist/assets/StickyPagination-CF0EToEU.js +2 -0
  362. package/dashboard/dist/assets/{StickyPagination-F9FZsRy9.js.map → StickyPagination-CF0EToEU.js.map} +1 -1
  363. package/dashboard/dist/assets/SwimlaneTimeline-CNlj7fgg.js +2 -0
  364. package/dashboard/dist/assets/SwimlaneTimeline-CNlj7fgg.js.map +1 -0
  365. package/dashboard/dist/assets/TagInput-CH8qMGhC.js +2 -0
  366. package/dashboard/dist/assets/TagInput-CH8qMGhC.js.map +1 -0
  367. package/dashboard/dist/assets/TaskDetailPage-CdWo-6mu.js +2 -0
  368. package/dashboard/dist/assets/TaskDetailPage-CdWo-6mu.js.map +1 -0
  369. package/dashboard/dist/assets/TaskQueuePill-BPj4ogVG.js +2 -0
  370. package/dashboard/dist/assets/{TaskQueuePill-awmtb0qw.js.map → TaskQueuePill-BPj4ogVG.js.map} +1 -1
  371. package/dashboard/dist/assets/TasksListPage-CtRkMpKU.js +2 -0
  372. package/dashboard/dist/assets/{TasksListPage-C_QF23c1.js.map → TasksListPage-CtRkMpKU.js.map} +1 -1
  373. package/dashboard/dist/assets/TimeAgo-Di1a3X5P.js +2 -0
  374. package/dashboard/dist/assets/TimeAgo-Di1a3X5P.js.map +1 -0
  375. package/dashboard/dist/assets/TimestampCell-CqrXql-S.js +2 -0
  376. package/dashboard/dist/assets/TimestampCell-CqrXql-S.js.map +1 -0
  377. package/dashboard/dist/assets/UserName-BUFYCnRa.js +2 -0
  378. package/dashboard/dist/assets/{UserName-DaP4YAKr.js.map → UserName-BUFYCnRa.js.map} +1 -1
  379. package/dashboard/dist/assets/WorkflowExecutionPage-25iusMml.js +2 -0
  380. package/dashboard/dist/assets/WorkflowExecutionPage-25iusMml.js.map +1 -0
  381. package/dashboard/dist/assets/WorkflowPill-DPKOcbf4.js +2 -0
  382. package/dashboard/dist/assets/WorkflowPill-DPKOcbf4.js.map +1 -0
  383. package/dashboard/dist/assets/WorkflowsDashboard-BgxslssH.js +2 -0
  384. package/dashboard/dist/assets/WorkflowsDashboard-BgxslssH.js.map +1 -0
  385. package/dashboard/dist/assets/WorkflowsOverview-Doe5L-Re.js +2 -0
  386. package/dashboard/dist/assets/{WorkflowsOverview-D9OzzQqw.js.map → WorkflowsOverview-Doe5L-Re.js.map} +1 -1
  387. package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js +2 -0
  388. package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js.map +1 -0
  389. package/dashboard/dist/assets/{bots-BkKVMbUW.js → bots-Bi2_O1Ts.js} +2 -2
  390. package/dashboard/dist/assets/{bots-BkKVMbUW.js.map → bots-Bi2_O1Ts.js.map} +1 -1
  391. package/dashboard/dist/assets/constants-BHkpVaqx.js +2 -0
  392. package/dashboard/dist/assets/constants-BHkpVaqx.js.map +1 -0
  393. package/dashboard/dist/assets/escalation-Ck1KlLkT.js +2 -0
  394. package/dashboard/dist/assets/escalation-Ck1KlLkT.js.map +1 -0
  395. package/dashboard/dist/assets/escalation-columns-ohDsj2eJ.js +2 -0
  396. package/dashboard/dist/assets/{escalation-columns-D6aqStaY.js.map → escalation-columns-ohDsj2eJ.js.map} +1 -1
  397. package/dashboard/dist/assets/helpers-BoD2SgUY.js +2 -0
  398. package/dashboard/dist/assets/helpers-BoD2SgUY.js.map +1 -0
  399. package/dashboard/dist/assets/index-BEtLIsML.js +2 -0
  400. package/dashboard/dist/assets/index-BEtLIsML.js.map +1 -0
  401. package/dashboard/dist/assets/index-Bn2xHDr8.js +5 -0
  402. package/dashboard/dist/assets/index-Bn2xHDr8.js.map +1 -0
  403. package/dashboard/dist/assets/index-BpT-6WgJ.js +2 -0
  404. package/dashboard/dist/assets/{index-DTPzZr_X.js.map → index-BpT-6WgJ.js.map} +1 -1
  405. package/dashboard/dist/assets/index-CZrJ09p-.js +2 -0
  406. package/dashboard/dist/assets/index-CZrJ09p-.js.map +1 -0
  407. package/dashboard/dist/assets/index-D3NyVADW.js +2 -0
  408. package/dashboard/dist/assets/index-D3NyVADW.js.map +1 -0
  409. package/dashboard/dist/assets/index-D7zYZOnH.js +2 -0
  410. package/dashboard/dist/assets/index-D7zYZOnH.js.map +1 -0
  411. package/dashboard/dist/assets/index-DOkHXmyf.js +17 -0
  412. package/dashboard/dist/assets/index-DOkHXmyf.js.map +1 -0
  413. package/dashboard/dist/assets/index-DYyLF-Qb.js +281 -0
  414. package/dashboard/dist/assets/index-DYyLF-Qb.js.map +1 -0
  415. package/dashboard/dist/assets/index-Dk2Q51o0.js +2 -0
  416. package/dashboard/dist/assets/index-Dk2Q51o0.js.map +1 -0
  417. package/dashboard/dist/assets/index-FuohTtaM.js +6 -0
  418. package/dashboard/dist/assets/index-FuohTtaM.js.map +1 -0
  419. package/dashboard/dist/assets/index-PyCTS05D.css +1 -0
  420. package/dashboard/dist/assets/mcp-CJtYjA7A.js +2 -0
  421. package/dashboard/dist/assets/mcp-CJtYjA7A.js.map +1 -0
  422. package/dashboard/dist/assets/mcp-query-jQJQrs_7.js +2 -0
  423. package/dashboard/dist/assets/mcp-query-jQJQrs_7.js.map +1 -0
  424. package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js → mcp-runs-DUWm9Z4V.js} +2 -2
  425. package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js.map → mcp-runs-DUWm9Z4V.js.map} +1 -1
  426. package/dashboard/dist/assets/namespaces-BM5P2qmL.js +2 -0
  427. package/dashboard/dist/assets/{namespaces-BgbaC3ow.js.map → namespaces-BM5P2qmL.js.map} +1 -1
  428. package/dashboard/dist/assets/{roles-ZNrqqnQl.js → roles-lv0shpjJ.js} +2 -2
  429. package/dashboard/dist/assets/{roles-ZNrqqnQl.js.map → roles-lv0shpjJ.js.map} +1 -1
  430. package/dashboard/dist/assets/settings-Wlq92mRo.js +2 -0
  431. package/dashboard/dist/assets/{settings-eBRSE0mQ.js.map → settings-Wlq92mRo.js.map} +1 -1
  432. package/dashboard/dist/assets/tasks-BFGm4PuE.js +2 -0
  433. package/dashboard/dist/assets/{tasks-tRqClPns.js.map → tasks-BFGm4PuE.js.map} +1 -1
  434. package/dashboard/dist/assets/useEventHooks-DIE6ue4x.js +2 -0
  435. package/dashboard/dist/assets/useEventHooks-DIE6ue4x.js.map +1 -0
  436. package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js +2 -0
  437. package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js.map +1 -0
  438. package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js → useFilterParams-BUyLHcx_.js} +2 -2
  439. package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js.map → useFilterParams-BUyLHcx_.js.map} +1 -1
  440. package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js → useYamlActivityEvents-DCwSO73t.js} +2 -2
  441. package/dashboard/dist/assets/useYamlActivityEvents-DCwSO73t.js.map +1 -0
  442. package/dashboard/dist/assets/{users-tMvNyOo8.js → users-tA5-K0wA.js} +2 -2
  443. package/dashboard/dist/assets/{users-tMvNyOo8.js.map → users-tA5-K0wA.js.map} +1 -1
  444. package/dashboard/dist/assets/vendor-icons-BiIug1SK.js +402 -0
  445. package/dashboard/dist/assets/vendor-icons-BiIug1SK.js.map +1 -0
  446. package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
  447. package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
  448. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +26 -0
  449. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +1 -0
  450. package/dashboard/dist/assets/{workflows-Cc4VHcrp.js → workflows-CfLc15Wr.js} +2 -2
  451. package/dashboard/dist/assets/{workflows-Cc4VHcrp.js.map → workflows-CfLc15Wr.js.map} +1 -1
  452. package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js +2 -0
  453. package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js.map +1 -0
  454. package/dashboard/dist/index.html +5 -5
  455. package/docs/api/dba.md +81 -0
  456. package/docs/api/escalations.md +575 -0
  457. package/docs/api/exports.md +170 -0
  458. package/docs/api/maintenance.md +93 -0
  459. package/docs/api/mcp-runs.md +128 -0
  460. package/docs/api/mcp-servers.md +253 -0
  461. package/docs/api/namespaces.md +48 -0
  462. package/docs/api/roles.md +390 -0
  463. package/docs/api/service-accounts.md +188 -0
  464. package/docs/api/settings.md +33 -0
  465. package/docs/api/tasks.md +167 -0
  466. package/docs/api/users.md +180 -0
  467. package/docs/api/workflows.md +616 -0
  468. package/docs/api/yaml-workflows.md +312 -0
  469. package/docs/architecture.md +221 -0
  470. package/docs/auth.md +181 -0
  471. package/docs/cloud.md +272 -0
  472. package/docs/compilation.md +136 -0
  473. package/docs/contributing.md +56 -0
  474. package/docs/dashboard.md +145 -0
  475. package/docs/data.md +478 -0
  476. package/docs/escalation-strategies.md +263 -0
  477. package/docs/events.md +251 -0
  478. package/docs/iam.md +222 -0
  479. package/docs/img/01-login.png +0 -0
  480. package/docs/img/02-dashboard-home.png +0 -0
  481. package/docs/img/03-processes-list.png +0 -0
  482. package/docs/img/04-escalations-list.png +0 -0
  483. package/docs/img/05-mcp-servers.png +0 -0
  484. package/docs/img/06-mcp-pipelines.png +0 -0
  485. package/docs/img/07-workflows-list.png +0 -0
  486. package/docs/img/compilation/01-query-submit.png +0 -0
  487. package/docs/img/compilation/02-mcp-servers.png +0 -0
  488. package/docs/img/compilation/03-query-completed.png +0 -0
  489. package/docs/img/compilation/04-wizard-original.png +0 -0
  490. package/docs/img/compilation/05-wizard-timeline.png +0 -0
  491. package/docs/img/compilation/06-wizard-profile.png +0 -0
  492. package/docs/img/compilation/07-wizard-deploy.png +0 -0
  493. package/docs/img/compilation/08-wizard-test-modal.png +0 -0
  494. package/docs/img/compilation/09-wizard-test-compare.png +0 -0
  495. package/docs/img/compilation/10-wizard-verify.png +0 -0
  496. package/docs/logging.md +110 -0
  497. package/docs/maintenance.md +221 -0
  498. package/docs/mcp.md +985 -0
  499. package/docs/oauth-and-delegation.md +469 -0
  500. package/docs/telemetry.md +144 -0
  501. package/docs/workflows.md +695 -0
  502. package/package.json +8 -9
  503. package/build/services/db/index.d.ts +0 -3
  504. package/build/services/mcp/vision-server.d.ts +0 -15
  505. package/build/services/mcp/vision-server.js +0 -214
  506. package/build/system/mcp-servers/document-vision.js +0 -228
  507. package/build/system/mcp-servers/prompts.d.ts +0 -4
  508. package/build/system/mcp-servers/prompts.js +0 -10
  509. package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js +0 -2
  510. package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js.map +0 -1
  511. package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js +0 -2
  512. package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js.map +0 -1
  513. package/dashboard/dist/assets/BotPicker-D6FYW1Gt.js +0 -2
  514. package/dashboard/dist/assets/CollapsibleSection-Cxk4wvjT.js +0 -2
  515. package/dashboard/dist/assets/ConfirmDeleteModal-FSXyKjaB.js +0 -2
  516. package/dashboard/dist/assets/CopyableId-CBdxWfp8.js +0 -2
  517. package/dashboard/dist/assets/CredentialsPage-Ikzsot0w.js +0 -2
  518. package/dashboard/dist/assets/CredentialsPage-Ikzsot0w.js.map +0 -1
  519. package/dashboard/dist/assets/CustomDurationPicker-CAninCbl.js +0 -2
  520. package/dashboard/dist/assets/DataTable-BDn1WBHS.js +0 -2
  521. package/dashboard/dist/assets/DataTable-BDn1WBHS.js.map +0 -1
  522. package/dashboard/dist/assets/EmptyState-2CmV-IaS.js +0 -2
  523. package/dashboard/dist/assets/EscalationsOverview-GXYFPASS.js +0 -2
  524. package/dashboard/dist/assets/EventTable-B01oJf6Y.js +0 -2
  525. package/dashboard/dist/assets/Field-DuFBAYhu.js +0 -2
  526. package/dashboard/dist/assets/Field-DuFBAYhu.js.map +0 -1
  527. package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +0 -2
  528. package/dashboard/dist/assets/McpOverview-JkvRcX2e.js +0 -2
  529. package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js +0 -2
  530. package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js.map +0 -1
  531. package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js +0 -2
  532. package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js.map +0 -1
  533. package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js +0 -2
  534. package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js.map +0 -1
  535. package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js +0 -2
  536. package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js.map +0 -1
  537. package/dashboard/dist/assets/Modal-B4rbIVAn.js +0 -2
  538. package/dashboard/dist/assets/OperatorDashboard-B56il28q.js +0 -2
  539. package/dashboard/dist/assets/OperatorDashboard-B56il28q.js.map +0 -1
  540. package/dashboard/dist/assets/PageHeader-CpWFly5S.js +0 -2
  541. package/dashboard/dist/assets/PageHeader-CpWFly5S.js.map +0 -1
  542. package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +0 -2
  543. package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js +0 -2
  544. package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js.map +0 -1
  545. package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js +0 -2
  546. package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js.map +0 -1
  547. package/dashboard/dist/assets/RolePill-BTPa8L-P.js +0 -2
  548. package/dashboard/dist/assets/RolesPage-9grZW7yR.js +0 -2
  549. package/dashboard/dist/assets/RolesPage-9grZW7yR.js.map +0 -1
  550. package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +0 -2
  551. package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js +0 -4
  552. package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js.map +0 -1
  553. package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
  554. package/dashboard/dist/assets/StatusBadge-TlC4jiig.js +0 -2
  555. package/dashboard/dist/assets/StatusBadge-TlC4jiig.js.map +0 -1
  556. package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +0 -2
  557. package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js +0 -2
  558. package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js.map +0 -1
  559. package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js +0 -2
  560. package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js.map +0 -1
  561. package/dashboard/dist/assets/TaskQueuePill-awmtb0qw.js +0 -2
  562. package/dashboard/dist/assets/TasksListPage-C_QF23c1.js +0 -2
  563. package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js +0 -2
  564. package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js.map +0 -1
  565. package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js +0 -2
  566. package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js.map +0 -1
  567. package/dashboard/dist/assets/UserName-DaP4YAKr.js +0 -2
  568. package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js +0 -5
  569. package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js.map +0 -1
  570. package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js +0 -2
  571. package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js.map +0 -1
  572. package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js +0 -2
  573. package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js.map +0 -1
  574. package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js +0 -2
  575. package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js.map +0 -1
  576. package/dashboard/dist/assets/WorkflowsOverview-D9OzzQqw.js +0 -2
  577. package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js +0 -3
  578. package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js.map +0 -1
  579. package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js +0 -2
  580. package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js.map +0 -1
  581. package/dashboard/dist/assets/constants-CgaZfe5d.js +0 -2
  582. package/dashboard/dist/assets/constants-CgaZfe5d.js.map +0 -1
  583. package/dashboard/dist/assets/escalation-columns-D6aqStaY.js +0 -2
  584. package/dashboard/dist/assets/escalation-qalymbKB.js +0 -2
  585. package/dashboard/dist/assets/escalation-qalymbKB.js.map +0 -1
  586. package/dashboard/dist/assets/format-gXZXQ-HJ.js +0 -2
  587. package/dashboard/dist/assets/format-gXZXQ-HJ.js.map +0 -1
  588. package/dashboard/dist/assets/helpers-0gSleuzT.js +0 -2
  589. package/dashboard/dist/assets/helpers-0gSleuzT.js.map +0 -1
  590. package/dashboard/dist/assets/index-BWvMHed7.js +0 -6
  591. package/dashboard/dist/assets/index-BWvMHed7.js.map +0 -1
  592. package/dashboard/dist/assets/index-BaszoPO_.css +0 -1
  593. package/dashboard/dist/assets/index-Cn2jyj9A.js +0 -2
  594. package/dashboard/dist/assets/index-Cn2jyj9A.js.map +0 -1
  595. package/dashboard/dist/assets/index-D8VH6K8B.js +0 -54
  596. package/dashboard/dist/assets/index-D8VH6K8B.js.map +0 -1
  597. package/dashboard/dist/assets/index-D9SYwJsi.js +0 -3
  598. package/dashboard/dist/assets/index-D9SYwJsi.js.map +0 -1
  599. package/dashboard/dist/assets/index-DTPzZr_X.js +0 -2
  600. package/dashboard/dist/assets/index-D_6AB5BE.js +0 -2
  601. package/dashboard/dist/assets/index-D_6AB5BE.js.map +0 -1
  602. package/dashboard/dist/assets/index-S9Ks2Lj2.js +0 -2
  603. package/dashboard/dist/assets/index-S9Ks2Lj2.js.map +0 -1
  604. package/dashboard/dist/assets/index-X85K5bHC.js +0 -17
  605. package/dashboard/dist/assets/index-X85K5bHC.js.map +0 -1
  606. package/dashboard/dist/assets/index-rjmgHlSH.js +0 -2
  607. package/dashboard/dist/assets/index-rjmgHlSH.js.map +0 -1
  608. package/dashboard/dist/assets/mcp-blCW6IL7.js +0 -2
  609. package/dashboard/dist/assets/mcp-blCW6IL7.js.map +0 -1
  610. package/dashboard/dist/assets/mcp-query-DoAyPbjC.js +0 -2
  611. package/dashboard/dist/assets/mcp-query-DoAyPbjC.js.map +0 -1
  612. package/dashboard/dist/assets/namespaces-BgbaC3ow.js +0 -2
  613. package/dashboard/dist/assets/settings-eBRSE0mQ.js +0 -2
  614. package/dashboard/dist/assets/tasks-tRqClPns.js +0 -2
  615. package/dashboard/dist/assets/useNatsEvents-Xr43X1fG.js +0 -2
  616. package/dashboard/dist/assets/useNatsEvents-Xr43X1fG.js.map +0 -1
  617. package/dashboard/dist/assets/useYamlActivityEvents-BO51u8tm.js.map +0 -1
  618. package/dashboard/dist/assets/vendor-icons-ZTAKVwGc.js +0 -292
  619. package/dashboard/dist/assets/vendor-icons-ZTAKVwGc.js.map +0 -1
  620. package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
  621. package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
  622. package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js +0 -22
  623. package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js.map +0 -1
  624. package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js +0 -2
  625. package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js.map +0 -1
  626. package/services/db/README.md +0 -8
  627. /package/build/{services → lib}/db/migrate.d.ts +0 -0
  628. /package/{services → build/lib}/db/schemas/002_seed.sql +0 -0
  629. /package/{services → build/lib}/db/schemas/003_workflow_discovery.sql +0 -0
  630. /package/{services → build/lib}/db/schemas/004_query_router.sql +0 -0
  631. /package/{services → build/lib}/db/schemas/005_triage_router.sql +0 -0
  632. /package/{services → build/lib}/db/schemas/006_oauth.sql +0 -0
  633. /package/{services → build/lib}/db/schemas/007_security.sql +0 -0
  634. /package/{services → build/lib}/db/schemas/008_bot_accounts.sql +0 -0
  635. /package/{services → build/lib}/db/schemas/009_audit_trail.sql +0 -0
  636. /package/{services → build/lib}/db/schemas/010_credential_providers.sql +0 -0
  637. /package/{services → build/lib}/db/schemas/012_drop_modality.sql +0 -0
  638. /package/{services → build/lib}/db/schemas/013_execute_as.sql +0 -0
  639. /package/{services → build/lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
  640. /package/build/{services → lib}/events/index.d.ts +0 -0
  641. /package/build/{services → lib}/events/index.js +0 -0
  642. /package/build/{services → lib}/events/memory.d.ts +0 -0
  643. /package/build/{services → lib}/events/memory.js +0 -0
  644. /package/build/{services → lib}/events/nats.d.ts +0 -0
  645. /package/build/{services → lib}/events/nats.js +0 -0
  646. /package/build/{services → lib}/events/publish.d.ts +0 -0
  647. /package/build/{services → lib}/events/publish.js +0 -0
  648. /package/build/{services → lib}/events/socketio.d.ts +0 -0
  649. /package/build/{services → lib}/events/socketio.js +0 -0
  650. /package/build/{services → lib}/logger/index.d.ts +0 -0
  651. /package/build/{services → lib}/logger/index.js +0 -0
  652. /package/build/{services → lib}/logger/pino.d.ts +0 -0
  653. /package/build/{services → lib}/logger/pino.js +0 -0
  654. /package/build/{services → lib}/storage/index.d.ts +0 -0
  655. /package/build/{services → lib}/storage/index.js +0 -0
  656. /package/build/{services → lib}/storage/local.d.ts +0 -0
  657. /package/build/{services → lib}/storage/local.js +0 -0
  658. /package/build/{services → lib}/storage/s3.d.ts +0 -0
  659. /package/build/{services → lib}/storage/s3.js +0 -0
  660. /package/build/{services → lib}/storage/types.d.ts +0 -0
  661. /package/build/{services → lib}/storage/types.js +0 -0
  662. /package/build/{services → lib}/telemetry/index.d.ts +0 -0
  663. /package/build/{services → lib}/telemetry/index.js +0 -0
@@ -0,0 +1,175 @@
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.findCompiledWorkflows = findCompiledWorkflows;
37
+ exports.evaluateWorkflowMatch = evaluateWorkflowMatch;
38
+ exports.extractWorkflowInputs = extractWorkflowInputs;
39
+ const llm_1 = require("../../../services/llm");
40
+ const defaults_1 = require("../../../modules/defaults");
41
+ const logger_1 = require("../../../lib/logger");
42
+ const yamlDb = __importStar(require("../../../services/yaml-workflow/db"));
43
+ const prompts_1 = require("./prompts");
44
+ /**
45
+ * Ranked discovery of compiled YAML workflows via FTS + tag overlap.
46
+ *
47
+ * Callers pass their own module-level caches so each pipeline keeps
48
+ * isolated cache instances.
49
+ */
50
+ async function findCompiledWorkflows(prompt, caches, logPrefix = 'shared') {
51
+ const keywords = prompt
52
+ .toLowerCase()
53
+ .replace(/[^a-z0-9\s-]/g, ' ')
54
+ .split(/\s+/)
55
+ .filter((w) => w.length > 2 && !defaults_1.STOP_WORDS.has(w));
56
+ logger_1.loggerRegistry.debug(`[${logPrefix}:findCompiledWorkflows] keywords: [${keywords.join(',')}]`);
57
+ let workflows;
58
+ try {
59
+ workflows = await yamlDb.discoverWorkflows(prompt, keywords, undefined, 5);
60
+ logger_1.loggerRegistry.info(`[${logPrefix}:findCompiledWorkflows] ${workflows.length} candidate(s) found`);
61
+ }
62
+ catch (err) {
63
+ logger_1.loggerRegistry.warn(`[${logPrefix}:findCompiledWorkflows] discovery failed: ${err.message}`);
64
+ return { inventory: '', toolIds: [], candidates: [] };
65
+ }
66
+ if (workflows.length === 0) {
67
+ return { inventory: '', toolIds: [], candidates: [] };
68
+ }
69
+ const toolIds = [];
70
+ const inventoryLines = [];
71
+ const candidates = [];
72
+ for (const wf of workflows) {
73
+ const qualifiedName = `yaml__${wf.name.replace(/[^a-zA-Z0-9]/g, '_')}`;
74
+ caches.yamlWorkflowMap.set(qualifiedName, wf.name);
75
+ caches.toolDefCache.set(qualifiedName, {
76
+ type: 'function',
77
+ function: {
78
+ name: qualifiedName,
79
+ description: `[COMPILED WORKFLOW] ${wf.description || wf.name} — deterministic, no LLM needed. ` +
80
+ `Tags: ${wf.tags.join(', ')}`,
81
+ parameters: (wf.input_schema || { type: 'object', properties: {} }),
82
+ },
83
+ });
84
+ toolIds.push(qualifiedName);
85
+ const activityCount = wf.activity_manifest.filter((a) => a.type === 'worker').length;
86
+ inventoryLines.push(`★ ${wf.name} [compiled, ${activityCount} steps, tags: ${wf.tags.join(', ')}]: ${wf.description || 'deterministic workflow'}`);
87
+ candidates.push({
88
+ name: wf.name,
89
+ description: wf.description,
90
+ original_prompt: wf.original_prompt,
91
+ category: wf.category,
92
+ tags: wf.tags,
93
+ input_schema: wf.input_schema,
94
+ tool_names: wf.activity_manifest
95
+ .filter((a) => a.type === 'worker' && a.mcp_tool_name)
96
+ .map((a) => a.mcp_tool_name),
97
+ fts_rank: wf.fts_rank || 0,
98
+ });
99
+ }
100
+ return { inventory: inventoryLines.join('\n'), toolIds, candidates };
101
+ }
102
+ /**
103
+ * LLM-as-judge: does a compiled workflow match the user's intent?
104
+ * One cheap call (secondary model, ~200 tokens) to potentially skip
105
+ * the entire agentic loop.
106
+ */
107
+ async function evaluateWorkflowMatch(prompt, candidates, logPrefix = 'shared') {
108
+ logger_1.loggerRegistry.debug(`[${logPrefix}:evaluateWorkflowMatch] ${candidates.length} candidate(s)`);
109
+ if (candidates.length === 0) {
110
+ return { matched: false, workflowName: null, confidence: 0 };
111
+ }
112
+ const candidateText = candidates.map((c, i) => `${i + 1}. **${c.name}** (category: ${c.category || 'general'})\n` +
113
+ ` Description: ${c.description || 'N/A'}\n` +
114
+ ` Original prompt: "${c.original_prompt || 'N/A'}"\n` +
115
+ ` Tools: ${c.tool_names.join(', ')}\n` +
116
+ ` Input: ${JSON.stringify(c.input_schema).slice(0, 300)}`).join('\n\n');
117
+ try {
118
+ const response = await (0, llm_1.callLLM)({
119
+ model: defaults_1.LLM_MODEL_SECONDARY,
120
+ max_tokens: 200,
121
+ temperature: 0,
122
+ messages: [
123
+ { role: 'system', content: prompts_1.WORKFLOW_MATCH_PROMPT },
124
+ { role: 'user', content: `## User Request\n${prompt}\n\n## Candidate Workflows\n${candidateText}` },
125
+ ],
126
+ });
127
+ const raw = response.content || '{}';
128
+ const cleaned = raw.replace(/^```(?:json)?\s*/m, '').replace(/\s*```$/m, '').trim();
129
+ const result = JSON.parse(cleaned);
130
+ if (result.match && result.confidence >= 0.7) {
131
+ logger_1.loggerRegistry.info(`[${logPrefix}:evaluateWorkflowMatch] MATCHED: ${result.workflow_name} (confidence: ${result.confidence})`);
132
+ return { matched: true, workflowName: result.workflow_name, confidence: result.confidence };
133
+ }
134
+ logger_1.loggerRegistry.info(`[${logPrefix}:evaluateWorkflowMatch] no match (confidence: ${result.confidence || 0})`);
135
+ return { matched: false, workflowName: null, confidence: result.confidence || 0 };
136
+ }
137
+ catch (err) {
138
+ logger_1.loggerRegistry.warn(`[${logPrefix}:evaluateWorkflowMatch] error: ${err.message}`);
139
+ return { matched: false, workflowName: null, confidence: 0 };
140
+ }
141
+ }
142
+ /**
143
+ * Extract structured inputs from the user's prompt using the matched
144
+ * workflow's input_schema. Acts as a second confirmation gate — if the
145
+ * LLM can't map the prompt to the schema, the match is rejected.
146
+ */
147
+ async function extractWorkflowInputs(prompt, inputSchema, workflowName) {
148
+ try {
149
+ const response = await (0, llm_1.callLLM)({
150
+ model: defaults_1.LLM_MODEL_SECONDARY,
151
+ max_tokens: 500,
152
+ temperature: 0,
153
+ messages: [
154
+ { role: 'system', content: prompts_1.EXTRACT_INPUTS_PROMPT },
155
+ {
156
+ role: 'user',
157
+ content: `## User Request\n${prompt}\n\n` +
158
+ `## Workflow: ${workflowName}\n` +
159
+ `## Input Schema\n${JSON.stringify(inputSchema, null, 2)}`,
160
+ },
161
+ ],
162
+ });
163
+ const raw = response.content || '{}';
164
+ const cleaned = raw.replace(/^```(?:json)?\s*/m, '').replace(/\s*```$/m, '').trim();
165
+ const result = JSON.parse(cleaned);
166
+ if (result._extraction_failed) {
167
+ return { inputs: null, extracted: false };
168
+ }
169
+ delete result._extraction_failed;
170
+ return { inputs: result, extracted: true };
171
+ }
172
+ catch {
173
+ return { inputs: null, extracted: false };
174
+ }
175
+ }
@@ -0,0 +1,7 @@
1
+ export { callWorkflowLLM } from './llm-caller';
2
+ export { findCompiledWorkflows, evaluateWorkflowMatch, extractWorkflowInputs } from './discovery';
3
+ export { loadToolsFromServers } from './tool-loader';
4
+ export { callTool } from './tool-executor';
5
+ export { generateStrategySection } from './strategy-advisors';
6
+ export { WORKFLOW_MATCH_PROMPT, EXTRACT_INPUTS_PROMPT } from './prompts';
7
+ export type { ServerInfo } from './types';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EXTRACT_INPUTS_PROMPT = exports.WORKFLOW_MATCH_PROMPT = exports.generateStrategySection = exports.callTool = exports.loadToolsFromServers = exports.extractWorkflowInputs = exports.evaluateWorkflowMatch = exports.findCompiledWorkflows = exports.callWorkflowLLM = void 0;
4
+ var llm_caller_1 = require("./llm-caller");
5
+ Object.defineProperty(exports, "callWorkflowLLM", { enumerable: true, get: function () { return llm_caller_1.callWorkflowLLM; } });
6
+ var discovery_1 = require("./discovery");
7
+ Object.defineProperty(exports, "findCompiledWorkflows", { enumerable: true, get: function () { return discovery_1.findCompiledWorkflows; } });
8
+ Object.defineProperty(exports, "evaluateWorkflowMatch", { enumerable: true, get: function () { return discovery_1.evaluateWorkflowMatch; } });
9
+ Object.defineProperty(exports, "extractWorkflowInputs", { enumerable: true, get: function () { return discovery_1.extractWorkflowInputs; } });
10
+ var tool_loader_1 = require("./tool-loader");
11
+ Object.defineProperty(exports, "loadToolsFromServers", { enumerable: true, get: function () { return tool_loader_1.loadToolsFromServers; } });
12
+ var tool_executor_1 = require("./tool-executor");
13
+ Object.defineProperty(exports, "callTool", { enumerable: true, get: function () { return tool_executor_1.callTool; } });
14
+ var strategy_advisors_1 = require("./strategy-advisors");
15
+ Object.defineProperty(exports, "generateStrategySection", { enumerable: true, get: function () { return strategy_advisors_1.generateStrategySection; } });
16
+ var prompts_1 = require("./prompts");
17
+ Object.defineProperty(exports, "WORKFLOW_MATCH_PROMPT", { enumerable: true, get: function () { return prompts_1.WORKFLOW_MATCH_PROMPT; } });
18
+ Object.defineProperty(exports, "EXTRACT_INPUTS_PROMPT", { enumerable: true, get: function () { return prompts_1.EXTRACT_INPUTS_PROMPT; } });
@@ -0,0 +1,8 @@
1
+ import { type ToolDefinition, type LLMResponse } from '../../../services/llm';
2
+ /**
3
+ * Call the LLM with messages and optional tool IDs.
4
+ *
5
+ * Tool IDs are resolved from the caller's module-level toolDefCache so
6
+ * that only lightweight string arrays flow through the durable pipe.
7
+ */
8
+ export declare function callWorkflowLLM(messages: any[], toolIds: string[] | undefined, toolDefCache: Map<string, ToolDefinition>, logPrefix: string): Promise<LLMResponse>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callWorkflowLLM = callWorkflowLLM;
4
+ const llm_1 = require("../../../services/llm");
5
+ const defaults_1 = require("../../../modules/defaults");
6
+ const logger_1 = require("../../../lib/logger");
7
+ /**
8
+ * Call the LLM with messages and optional tool IDs.
9
+ *
10
+ * Tool IDs are resolved from the caller's module-level toolDefCache so
11
+ * that only lightweight string arrays flow through the durable pipe.
12
+ */
13
+ async function callWorkflowLLM(messages, toolIds, toolDefCache, logPrefix) {
14
+ let tools;
15
+ if (toolIds?.length) {
16
+ tools = toolIds
17
+ .map((id) => toolDefCache.get(id))
18
+ .filter((t) => !!t);
19
+ }
20
+ const t0 = Date.now();
21
+ const response = await (0, llm_1.callLLM)({
22
+ model: defaults_1.LLM_MODEL_PRIMARY,
23
+ messages,
24
+ temperature: 0,
25
+ ...(tools?.length ? { tools } : {}),
26
+ ...(!tools?.length ? { max_tokens: defaults_1.LLM_MAX_TOKENS_DEFAULT } : {}),
27
+ });
28
+ const usage = response.usage;
29
+ logger_1.loggerRegistry.info(`[${logPrefix}:callLLM] ${Date.now() - t0}ms | in=${usage?.prompt_tokens} out=${usage?.completion_tokens} total=${usage?.total_tokens} | tool_calls=${response.tool_calls?.length || 0}`);
30
+ return response;
31
+ }
@@ -0,0 +1,2 @@
1
+ export declare const WORKFLOW_MATCH_PROMPT = "You are a strict workflow matching evaluator. Given a user request and a list of compiled workflows, determine if any workflow is a PRECISE match for the request.\n\nA workflow matches ONLY if:\n1. **Scope alignment**: The workflow does approximately what the user asked \u2014 not significantly more, not significantly less.\n2. **Intent alignment**: The workflow's purpose (description, original prompt) closely matches the user's goal \u2014 not just the same topic or domain.\n3. **Input compatibility**: The user's request provides enough information to populate the workflow's required inputs.\n\nBe CONSERVATIVE. If the user's request is a subset or superset of what the workflow does, it is NOT a match. When in doubt, return match: false \u2014 the system will fall back to a dynamic execution that handles the exact request.\n\nRespond with ONLY a JSON object:\n{\n \"match\": true or false,\n \"workflow_name\": \"name-of-best-match\" or null,\n \"confidence\": 0.0 to 1.0,\n \"reasoning\": \"Brief explanation of why this is or isn't a scope match\"\n}";
2
+ export declare const EXTRACT_INPUTS_PROMPT = "You are an input extraction engine. Given a user's natural-language request and a workflow's input schema, extract the structured inputs the workflow needs.\n\nRules:\n- Extract ONLY values explicitly stated or clearly implied in the user's request.\n- Match each extracted value to the correct field in the input schema, paying attention to the field's **description** \u2014 not just its name.\n- Use the field descriptions to understand what each input represents and extract the semantically correct value from the request.\n- If a required field cannot be populated from the request, set \"_extraction_failed\" to true.\n- Do NOT invent, guess, or use default values for fields the user didn't mention.\n- Return ONLY a JSON object whose keys match the input schema's property names.\n- Include \"_extraction_failed\": true if any required field is missing, or \"_extraction_failed\": false if all required fields are satisfied.";
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ // ── Shared prompts used by both mcpQuery and mcpTriage discovery pipelines ──
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.EXTRACT_INPUTS_PROMPT = exports.WORKFLOW_MATCH_PROMPT = void 0;
5
+ exports.WORKFLOW_MATCH_PROMPT = `\
6
+ You are a strict workflow matching evaluator. Given a user request and a list of compiled workflows, determine if any workflow is a PRECISE match for the request.
7
+
8
+ A workflow matches ONLY if:
9
+ 1. **Scope alignment**: The workflow does approximately what the user asked — not significantly more, not significantly less.
10
+ 2. **Intent alignment**: The workflow's purpose (description, original prompt) closely matches the user's goal — not just the same topic or domain.
11
+ 3. **Input compatibility**: The user's request provides enough information to populate the workflow's required inputs.
12
+
13
+ Be CONSERVATIVE. If the user's request is a subset or superset of what the workflow does, it is NOT a match. When in doubt, return match: false — the system will fall back to a dynamic execution that handles the exact request.
14
+
15
+ Respond with ONLY a JSON object:
16
+ {
17
+ "match": true or false,
18
+ "workflow_name": "name-of-best-match" or null,
19
+ "confidence": 0.0 to 1.0,
20
+ "reasoning": "Brief explanation of why this is or isn't a scope match"
21
+ }`;
22
+ exports.EXTRACT_INPUTS_PROMPT = `\
23
+ You are an input extraction engine. Given a user's natural-language request and a workflow's input schema, extract the structured inputs the workflow needs.
24
+
25
+ Rules:
26
+ - Extract ONLY values explicitly stated or clearly implied in the user's request.
27
+ - Match each extracted value to the correct field in the input schema, paying attention to the field's **description** — not just its name.
28
+ - Use the field descriptions to understand what each input represents and extract the semantically correct value from the request.
29
+ - If a required field cannot be populated from the request, set "_extraction_failed" to true.
30
+ - Do NOT invent, guess, or use default values for fields the user didn't mention.
31
+ - Return ONLY a JSON object whose keys match the input schema's property names.
32
+ - Include "_extraction_failed": true if any required field is missing, or "_extraction_failed": false if all required fields are satisfied.`;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Strategy advisors — inspect loaded tool inventory and emit concrete,
3
+ * tool-name-specific prompt sections so the LLM makes optimal tool choices.
4
+ *
5
+ * No tool names are hardcoded in the generic system prompt. Instead,
6
+ * advisors run at tool-loading time and produce guidance referencing
7
+ * the actual qualified names the LLM will see.
8
+ */
9
+ import type { ServerInfo } from './types';
10
+ /**
11
+ * Run all strategy advisors against the loaded server inventory
12
+ * and return a combined strategy section for the LLM prompt.
13
+ */
14
+ export declare function generateStrategySection(servers: ServerInfo[]): string;
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * Strategy advisors — inspect loaded tool inventory and emit concrete,
4
+ * tool-name-specific prompt sections so the LLM makes optimal tool choices.
5
+ *
6
+ * No tool names are hardcoded in the generic system prompt. Instead,
7
+ * advisors run at tool-loading time and produce guidance referencing
8
+ * the actual qualified names the LLM will see.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.generateStrategySection = generateStrategySection;
12
+ // ── Advisors ────────────────────────────────────────────────────────────────
13
+ /**
14
+ * Detects overlapping server categories (e.g., two browser-automation servers)
15
+ * and emits concrete "USE THIS / AVOID THAT" guidance with actual tool names.
16
+ */
17
+ function overlappingCategoryAdvisor(servers) {
18
+ // Group by category
19
+ const byCategory = new Map();
20
+ for (const s of servers) {
21
+ const category = s.metadata?.category;
22
+ if (!category)
23
+ continue;
24
+ const group = byCategory.get(category) || [];
25
+ group.push(s);
26
+ byCategory.set(category, group);
27
+ }
28
+ const sections = [];
29
+ for (const [category, group] of byCategory) {
30
+ if (group.length < 2)
31
+ continue;
32
+ // Determine high vs low level: explicit metadata.level, then tool-count heuristic
33
+ let highLevel = null;
34
+ let lowLevel = null;
35
+ const withLevel = group.filter(s => s.metadata?.level);
36
+ if (withLevel.length >= 2) {
37
+ highLevel = withLevel.find(s => s.metadata?.level === 'high') || null;
38
+ lowLevel = withLevel.find(s => s.metadata?.level === 'low') || null;
39
+ }
40
+ if (!highLevel || !lowLevel) {
41
+ // Heuristic: fewer tools = higher-level (composite)
42
+ const sorted = [...group].sort((a, b) => a.toolCount - b.toolCount);
43
+ highLevel = highLevel || sorted[0];
44
+ lowLevel = lowLevel || sorted[sorted.length - 1];
45
+ }
46
+ if (highLevel === lowLevel)
47
+ continue;
48
+ const categoryLabel = category.replace(/-/g, ' ').replace(/\b\w/g, c => c.toUpperCase());
49
+ const hiSlug = highLevel.slug;
50
+ const loSlug = lowLevel.slug;
51
+ const hiTools = highLevel.toolNames.map(t => `${hiSlug}__${t}`);
52
+ const loTools = lowLevel.toolNames.map(t => `${loSlug}__${t}`);
53
+ sections.push(`## ${categoryLabel} — Tool Selection (CRITICAL)
54
+
55
+ You have TWO ${categoryLabel.toLowerCase()} servers. One is high-level (composite), the other low-level (primitives).
56
+
57
+ **USE: ${highLevel.name}** (${highLevel.toolCount} composite tools)
58
+ Tools: ${hiTools.join(', ')}
59
+ ${highLevel.description ? `> ${highLevel.description}` : ''}
60
+ Each tool handles a complete workflow in ONE call. Session management is automatic.
61
+
62
+ **AVOID: ${lowLevel.name}** (${lowLevel.toolCount} primitive tools)
63
+ Tools: ${loTools.join(', ')}
64
+ These are individual primitives requiring manual session management. Using these when the composite tools can do the job causes 5-10x more calls and session failures.
65
+
66
+ **RULE: ALWAYS use ${hiSlug}__* tools. NEVER use ${loSlug}__* tools unless no ${hiSlug}__* tool can accomplish the task.**`);
67
+ }
68
+ return sections.join('\n\n');
69
+ }
70
+ /**
71
+ * Detects the human-queue server and emits guidance to use escalate_and_wait
72
+ * instead of escalate_to_human + check_resolution polling.
73
+ */
74
+ function humanQueueAdvisor(servers) {
75
+ const hq = servers.find((s) => s.toolNames.includes('escalate_and_wait') && s.toolNames.includes('escalate_to_human'));
76
+ if (!hq)
77
+ return '';
78
+ const slug = hq.slug;
79
+ return (`## Human Queue — Tool Selection
80
+ When you need input from a human before continuing (credentials, approval, data):
81
+ USE: ${slug}__escalate_and_wait — pauses the workflow until the human responds. Specify a form_schema describing what fields you need (use format:"password" for sensitive values).
82
+ AVOID: ${slug}__escalate_to_human + ${slug}__check_resolution polling loop — burns tool rounds and may exhaust your budget.`);
83
+ }
84
+ /**
85
+ * Scans for batch-capable tools (accepting array inputs) and notes them
86
+ * as preferred over repeated single-item calls.
87
+ */
88
+ function batchPreferenceAdvisor(servers) {
89
+ // This advisor is lightweight — it just identifies tools with array params
90
+ // from their names/descriptions. The overlapping category advisor handles
91
+ // the primary use case. This catches additional patterns.
92
+ return '';
93
+ }
94
+ // ── Public API ──────────────────────────────────────────────────────────────
95
+ const advisors = [
96
+ overlappingCategoryAdvisor,
97
+ humanQueueAdvisor,
98
+ batchPreferenceAdvisor,
99
+ ];
100
+ /**
101
+ * Run all strategy advisors against the loaded server inventory
102
+ * and return a combined strategy section for the LLM prompt.
103
+ */
104
+ function generateStrategySection(servers) {
105
+ const sections = advisors
106
+ .map(advisor => advisor(servers))
107
+ .filter(s => s.length > 0);
108
+ return sections.join('\n\n');
109
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Call any tool by its qualified name — handles both YAML workflows
3
+ * (yaml__* prefix) and raw MCP tools (server_slug__tool_name).
4
+ *
5
+ * Callers pass their own module-level caches so each pipeline
6
+ * (mcpQuery, mcpTriage) keeps its own isolated cache instances.
7
+ */
8
+ export declare function callTool(qualifiedName: string, args: Record<string, any>, caches: {
9
+ toolServerMap: Map<string, string>;
10
+ yamlWorkflowMap: Map<string, string>;
11
+ }): Promise<any>;
@@ -0,0 +1,111 @@
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.callTool = callTool;
37
+ const context_1 = require("../../../services/iam/context");
38
+ const ephemeral_1 = require("../../../services/iam/ephemeral");
39
+ const mcpClient = __importStar(require("../../../services/mcp/client"));
40
+ const mcpDbService = __importStar(require("../../../services/mcp/db"));
41
+ const yamlDb = __importStar(require("../../../services/yaml-workflow/db"));
42
+ const yamlDeployer = __importStar(require("../../../services/yaml-workflow/deployer"));
43
+ /**
44
+ * Call any tool by its qualified name — handles both YAML workflows
45
+ * (yaml__* prefix) and raw MCP tools (server_slug__tool_name).
46
+ *
47
+ * Callers pass their own module-level caches so each pipeline
48
+ * (mcpQuery, mcpTriage) keeps its own isolated cache instances.
49
+ */
50
+ async function callTool(qualifiedName, args, caches) {
51
+ // Check if this is a compiled YAML workflow
52
+ const yamlWorkflowName = caches.yamlWorkflowMap.get(qualifiedName);
53
+ if (yamlWorkflowName) {
54
+ try {
55
+ const wf = await yamlDb.getYamlWorkflowByName(yamlWorkflowName);
56
+ if (!wf || wf.status !== 'active') {
57
+ return { error: `Compiled workflow "${yamlWorkflowName}" is not active` };
58
+ }
59
+ const toolCtx = (0, context_1.getToolContext)();
60
+ const scopedArgs = toolCtx?.principal.id
61
+ ? {
62
+ ...args,
63
+ _scope: {
64
+ principal: toolCtx.principal,
65
+ ...(toolCtx.initiatingPrincipal ? { initiatingPrincipal: toolCtx.initiatingPrincipal } : {}),
66
+ scopes: toolCtx.credentials.scopes,
67
+ },
68
+ }
69
+ : args;
70
+ const { job_id, result } = await yamlDeployer.invokeYamlWorkflowSync(wf.app_id, wf.graph_topic, scopedArgs, undefined, wf.graph_topic);
71
+ return { job_id, workflow: yamlWorkflowName, status: 'completed', result };
72
+ }
73
+ catch (err) {
74
+ return { error: err.message, tool: qualifiedName, args };
75
+ }
76
+ }
77
+ // Exchange ephemeral credential tokens right before the MCP call
78
+ args = await (0, ephemeral_1.exchangeTokensInArgs)(args);
79
+ // Standard MCP tool routing
80
+ const serverName = caches.toolServerMap.get(qualifiedName);
81
+ const separatorIdx = qualifiedName.indexOf('__');
82
+ const toolName = separatorIdx >= 0
83
+ ? qualifiedName.slice(separatorIdx + 2)
84
+ : qualifiedName;
85
+ const toolCtx = (0, context_1.getToolContext)();
86
+ const authContext = toolCtx?.principal.id
87
+ ? { userId: toolCtx.principal.id, delegationToken: toolCtx.credentials.delegationToken }
88
+ : undefined;
89
+ if (serverName) {
90
+ try {
91
+ return await mcpClient.callServerTool(serverName, toolName, args, authContext);
92
+ }
93
+ catch (err) {
94
+ return { error: err.message, tool: qualifiedName, args };
95
+ }
96
+ }
97
+ // Fallback: scan all connected servers
98
+ const { servers } = await mcpDbService.listMcpServers({ limit: 100 });
99
+ for (const server of servers) {
100
+ const manifest = server.tool_manifest || [];
101
+ if (manifest.some((t) => t.name === toolName)) {
102
+ try {
103
+ return await mcpClient.callServerTool(server.name, toolName, args, authContext);
104
+ }
105
+ catch (err) {
106
+ return { error: err.message, tool: qualifiedName, args };
107
+ }
108
+ }
109
+ }
110
+ return { error: `Unknown tool: ${qualifiedName} (no server found)`, tool: qualifiedName };
111
+ }
@@ -0,0 +1,19 @@
1
+ import type { ToolDefinition } from '../../../services/llm';
2
+ /**
3
+ * Discover MCP servers, cache tool definitions, and return a lightweight
4
+ * summary for the durable pipe.
5
+ *
6
+ * Callers pass their own module-level caches so each pipeline keeps
7
+ * isolated cache instances. Optional `baseTags` are merged before querying.
8
+ */
9
+ export declare function loadToolsFromServers(tags: string[] | undefined, caches: {
10
+ toolServerMap: Map<string, string>;
11
+ toolDefCache: Map<string, ToolDefinition>;
12
+ }, opts?: {
13
+ baseTags?: string[];
14
+ logPrefix?: string;
15
+ }): Promise<{
16
+ toolIds: string[];
17
+ inventory: string;
18
+ strategy: string;
19
+ }>;
@@ -0,0 +1,97 @@
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.loadToolsFromServers = loadToolsFromServers;
37
+ const logger_1 = require("../../../lib/logger");
38
+ const mcpDbService = __importStar(require("../../../services/mcp/db"));
39
+ const strategy_advisors_1 = require("./strategy-advisors");
40
+ /**
41
+ * Discover MCP servers, cache tool definitions, and return a lightweight
42
+ * summary for the durable pipe.
43
+ *
44
+ * Callers pass their own module-level caches so each pipeline keeps
45
+ * isolated cache instances. Optional `baseTags` are merged before querying.
46
+ */
47
+ async function loadToolsFromServers(tags, caches, opts) {
48
+ const prefix = opts?.logPrefix || 'shared';
49
+ let servers;
50
+ if (tags?.length || opts?.baseTags?.length) {
51
+ const combinedTags = [...new Set([...(opts?.baseTags || []), ...(tags || [])])];
52
+ servers = await mcpDbService.findServersByTags(combinedTags, 'any');
53
+ }
54
+ else {
55
+ const result = await mcpDbService.listMcpServers({ limit: 100 });
56
+ servers = result.servers;
57
+ }
58
+ const toolIds = [];
59
+ const inventoryLines = [];
60
+ const serverInfos = [];
61
+ for (const server of servers) {
62
+ const manifest = server.tool_manifest || [];
63
+ const slug = server.name.replace(/[^a-zA-Z0-9]/g, '_');
64
+ const serverTags = server.tags?.length ? server.tags.join(', ') : 'general';
65
+ const toolNames = [];
66
+ for (const t of manifest) {
67
+ const qualifiedName = `${slug}__${t.name}`;
68
+ caches.toolServerMap.set(qualifiedName, server.name);
69
+ caches.toolDefCache.set(qualifiedName, {
70
+ type: 'function',
71
+ function: {
72
+ name: qualifiedName,
73
+ description: `[${server.name}] ${t.description || ''}`,
74
+ parameters: (t.inputSchema || { type: 'object', properties: {} }),
75
+ },
76
+ });
77
+ toolIds.push(qualifiedName);
78
+ toolNames.push(t.name);
79
+ }
80
+ inventoryLines.push(`• ${server.name} [${serverTags}] (${manifest.length} tools): ${toolNames.join(', ')}`);
81
+ if (server.compile_hints) {
82
+ inventoryLines.push(` Hints: ${server.compile_hints}`);
83
+ }
84
+ serverInfos.push({
85
+ name: server.name,
86
+ description: server.description || null,
87
+ tags: server.tags || [],
88
+ metadata: server.metadata || null,
89
+ toolNames,
90
+ toolCount: manifest.length,
91
+ slug,
92
+ });
93
+ }
94
+ const strategy = (0, strategy_advisors_1.generateStrategySection)(serverInfos);
95
+ logger_1.loggerRegistry.info(`[${prefix}:loadTools] ${servers.length} servers, ${toolIds.length} tools loaded`);
96
+ return { toolIds, inventory: inventoryLines.join('\n'), strategy };
97
+ }
@@ -0,0 +1,9 @@
1
+ export interface ServerInfo {
2
+ name: string;
3
+ description: string | null;
4
+ tags: string[];
5
+ metadata: Record<string, any> | null;
6
+ toolNames: string[];
7
+ toolCount: number;
8
+ slug: string;
9
+ }