@hotmeshio/long-tail 0.1.3 → 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 (615) hide show
  1. package/README.md +118 -173
  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 +12 -10
  8. package/build/index.js +15 -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/register-tool.d.ts +11 -0
  84. package/build/services/mcp/register-tool.js +15 -0
  85. package/build/services/mcp/server.js +1 -1
  86. package/build/services/mcp/sql.d.ts +6 -0
  87. package/build/services/mcp/sql.js +34 -1
  88. package/build/services/mcp/workflow-compiler-server.js +1 -1
  89. package/build/services/mcp/workflow-server.js +1 -1
  90. package/build/services/mcp-runs/execution-builder.js +8 -6
  91. package/build/services/mcp-runs/queries.js +2 -2
  92. package/build/services/mcp-runs/sql.d.ts +4 -1
  93. package/build/services/mcp-runs/sql.js +23 -2
  94. package/build/services/namespace/index.js +1 -1
  95. package/build/services/oauth/db.js +9 -37
  96. package/build/services/oauth/index.js +1 -1
  97. package/build/services/oauth/providers/registry.js +1 -1
  98. package/build/services/oauth/sql.d.ts +7 -0
  99. package/build/services/oauth/sql.js +32 -0
  100. package/build/services/orchestrator/index.js +3 -3
  101. package/build/services/role/index.js +1 -1
  102. package/build/services/task/crud.js +1 -1
  103. package/build/services/task/process.js +1 -1
  104. package/build/services/task/resolve.js +1 -1
  105. package/build/services/user/auth.js +1 -1
  106. package/build/services/user/crud.js +1 -1
  107. package/build/services/user/rbac.js +1 -1
  108. package/build/services/user/roles.js +1 -1
  109. package/build/services/user/sql.d.ts +2 -0
  110. package/build/services/user/sql.js +3 -1
  111. package/build/services/yaml-workflow/db-utils.js +1 -1
  112. package/build/services/yaml-workflow/db.js +1 -1
  113. package/build/services/yaml-workflow/deployer-helpers.js +1 -1
  114. package/build/services/yaml-workflow/deployer.js +4 -4
  115. package/build/services/yaml-workflow/generator.js +1 -1
  116. package/build/services/yaml-workflow/input-analyzer-helpers.d.ts +6 -0
  117. package/build/services/yaml-workflow/input-analyzer-helpers.js +36 -7
  118. package/build/services/yaml-workflow/input-analyzer.js +16 -3
  119. package/build/services/yaml-workflow/pipeline/analyze.js +1 -1
  120. package/build/services/yaml-workflow/pipeline/build/dag.js +10 -5
  121. package/build/services/yaml-workflow/pipeline/compile/llm-call.js +1 -1
  122. package/build/services/yaml-workflow/pipeline/extract.js +5 -3
  123. package/build/services/yaml-workflow/pipeline/index.d.ts +5 -0
  124. package/build/services/yaml-workflow/pipeline/index.js +22 -0
  125. package/build/services/yaml-workflow/pipeline/validate.js +2 -2
  126. package/build/services/yaml-workflow/workers/callbacks.js +1 -1
  127. package/build/services/yaml-workflow/workers/events.js +2 -2
  128. package/build/services/yaml-workflow/workers/register.js +8 -8
  129. package/build/start/adapters.js +7 -7
  130. package/build/start/index.js +4 -4
  131. package/build/start/server.js +1 -1
  132. package/build/start/workers.d.ts +1 -2
  133. package/build/start/workers.js +8 -7
  134. package/build/system/activities/claude-code.js +1 -1
  135. package/build/system/activities/file-storage.js +1 -1
  136. package/build/system/activities/knowledge.d.ts +58 -0
  137. package/build/system/activities/knowledge.js +128 -0
  138. package/build/system/activities/sql.d.ts +9 -0
  139. package/build/system/activities/sql.js +41 -0
  140. package/build/system/activities/triage/context.js +1 -1
  141. package/build/system/activities/triage/discovery.d.ts +2 -14
  142. package/build/system/activities/triage/discovery.js +5 -161
  143. package/build/system/activities/triage/llm.d.ts +1 -8
  144. package/build/system/activities/triage/llm.js +2 -28
  145. package/build/system/activities/triage/tools.d.ts +1 -17
  146. package/build/system/activities/triage/tools.js +8 -167
  147. package/build/system/index.js +5 -4
  148. package/build/system/mcp-servers/admin/escalations.d.ts +5 -0
  149. package/build/system/mcp-servers/admin/escalations.js +149 -0
  150. package/build/system/mcp-servers/admin/index.d.ts +31 -0
  151. package/build/system/mcp-servers/admin/index.js +80 -0
  152. package/build/system/mcp-servers/admin/maintenance.d.ts +5 -0
  153. package/build/system/mcp-servers/admin/maintenance.js +58 -0
  154. package/build/system/mcp-servers/admin/mcp-servers.d.ts +5 -0
  155. package/build/system/mcp-servers/admin/mcp-servers.js +146 -0
  156. package/build/system/mcp-servers/admin/schemas.d.ts +411 -0
  157. package/build/system/mcp-servers/admin/schemas.js +177 -0
  158. package/build/system/mcp-servers/admin/tasks.d.ts +5 -0
  159. package/build/system/mcp-servers/admin/tasks.js +112 -0
  160. package/build/system/mcp-servers/admin/users.d.ts +5 -0
  161. package/build/system/mcp-servers/admin/users.js +167 -0
  162. package/build/system/mcp-servers/admin/workflow-config.d.ts +9 -0
  163. package/build/system/mcp-servers/admin/workflow-config.js +118 -0
  164. package/build/system/mcp-servers/admin/workflows.d.ts +6 -0
  165. package/build/system/mcp-servers/admin/workflows.js +138 -0
  166. package/build/system/mcp-servers/admin/yaml-workflows.d.ts +8 -0
  167. package/build/system/mcp-servers/admin/yaml-workflows.js +237 -0
  168. package/build/system/mcp-servers/claude-code.js +1 -1
  169. package/build/system/mcp-servers/db-query/index.js +1 -1
  170. package/build/system/mcp-servers/db-query/tools.js +17 -4
  171. package/build/system/mcp-servers/docs.d.ts +5 -0
  172. package/build/system/mcp-servers/docs.js +147 -0
  173. package/build/system/mcp-servers/file-storage.js +1 -1
  174. package/build/system/mcp-servers/http-fetch.js +1 -1
  175. package/build/system/mcp-servers/human-queue.js +1 -1
  176. package/build/system/mcp-servers/knowledge.d.ts +4 -0
  177. package/build/system/mcp-servers/knowledge.js +137 -0
  178. package/build/system/mcp-servers/oauth.js +1 -1
  179. package/build/system/mcp-servers/playwright/browser-lifecycle.js +1 -1
  180. package/build/system/mcp-servers/playwright/index.js +1 -1
  181. package/build/system/mcp-servers/playwright/schemas.d.ts +19 -8
  182. package/build/system/mcp-servers/playwright/schemas.js +3 -0
  183. package/build/system/mcp-servers/playwright/tools-navigation.js +22 -9
  184. package/build/system/mcp-servers/playwright/tools-run-script.js +20 -3
  185. package/build/system/mcp-servers/playwright/vision-helper.d.ts +12 -0
  186. package/build/system/mcp-servers/playwright/vision-helper.js +81 -0
  187. package/build/system/mcp-servers/playwright-cli/helpers.js +2 -2
  188. package/build/system/mcp-servers/playwright-cli/index.js +1 -1
  189. package/build/system/mcp-servers/playwright-cli/schemas.d.ts +28 -28
  190. package/build/system/mcp-servers/playwright-cli/schemas.js +1 -1
  191. package/build/system/mcp-servers/playwright-cli/tools-auth.js +1 -1
  192. package/build/system/mcp-servers/playwright-cli/tools-capture.js +4 -2
  193. package/build/system/mcp-servers/translation.d.ts +14 -0
  194. package/build/system/mcp-servers/translation.js +130 -0
  195. package/build/system/mcp-servers/vision-prompts.d.ts +2 -0
  196. package/build/system/mcp-servers/vision-prompts.js +9 -0
  197. package/build/system/mcp-servers/{document-vision.d.ts → vision.d.ts} +3 -4
  198. package/build/system/mcp-servers/vision.js +221 -0
  199. package/build/system/mcp-servers/workflow-compiler.js +1 -1
  200. package/build/system/mcp-servers/workflow.js +1 -1
  201. package/build/system/seed/index.js +13 -2
  202. package/build/system/seed/server-definitions.d.ts +1954 -322
  203. package/build/system/seed/server-definitions.js +65 -34
  204. package/build/system/seed/tool-manifests-admin.d.ts +1645 -0
  205. package/build/system/seed/tool-manifests-admin.js +45 -0
  206. package/build/system/seed/tool-manifests-browser.d.ts +1 -1
  207. package/build/system/seed/tool-manifests-browser.js +3 -3
  208. package/build/system/seed/tool-manifests-data.d.ts +62 -21
  209. package/build/system/seed/tool-manifests-data.js +55 -17
  210. package/build/system/seed/tool-manifests-knowledge.d.ts +171 -0
  211. package/build/system/seed/tool-manifests-knowledge.js +94 -0
  212. package/build/system/workflows/mcp-deterministic/index.js +1 -1
  213. package/build/system/workflows/mcp-query/activities/discovery.d.ts +2 -20
  214. package/build/system/workflows/mcp-query/activities/discovery.js +5 -163
  215. package/build/system/workflows/mcp-query/activities/llm.d.ts +1 -7
  216. package/build/system/workflows/mcp-query/activities/llm.js +2 -27
  217. package/build/system/workflows/mcp-query/activities/tool-executor.d.ts +0 -4
  218. package/build/system/workflows/mcp-query/activities/tool-executor.js +2 -106
  219. package/build/system/workflows/mcp-query/activities/tool-loader.d.ts +0 -9
  220. package/build/system/workflows/mcp-query/activities/tool-loader.js +2 -87
  221. package/build/system/workflows/mcp-query/index.js +55 -5
  222. package/build/system/workflows/mcp-query/prompts.d.ts +1 -2
  223. package/build/system/workflows/mcp-query/prompts.js +5 -32
  224. package/build/system/workflows/mcp-query/strategy-advisors.d.ts +3 -14
  225. package/build/system/workflows/mcp-query/strategy-advisors.js +4 -107
  226. package/build/system/workflows/mcp-query/types.d.ts +2 -10
  227. package/build/system/workflows/mcp-query/types.js +0 -1
  228. package/build/system/workflows/mcp-query-router/index.js +1 -1
  229. package/build/system/workflows/mcp-triage/index.d.ts +2 -2
  230. package/build/system/workflows/mcp-triage/index.js +39 -7
  231. package/build/system/workflows/mcp-triage/prompts.js +7 -14
  232. package/build/system/workflows/mcp-triage-deterministic/index.js +1 -1
  233. package/build/system/workflows/mcp-triage-router/index.js +1 -1
  234. package/build/system/workflows/shared/discovery.d.ts +35 -0
  235. package/build/system/workflows/shared/discovery.js +175 -0
  236. package/build/system/workflows/shared/index.d.ts +7 -0
  237. package/build/system/workflows/shared/index.js +18 -0
  238. package/build/system/workflows/shared/llm-caller.d.ts +8 -0
  239. package/build/system/workflows/shared/llm-caller.js +31 -0
  240. package/build/system/workflows/shared/prompts.d.ts +2 -0
  241. package/build/system/workflows/shared/prompts.js +32 -0
  242. package/build/system/workflows/shared/strategy-advisors.d.ts +14 -0
  243. package/build/system/workflows/shared/strategy-advisors.js +109 -0
  244. package/build/system/workflows/shared/tool-executor.d.ts +11 -0
  245. package/build/system/workflows/shared/tool-executor.js +111 -0
  246. package/build/system/workflows/shared/tool-loader.d.ts +19 -0
  247. package/build/system/workflows/shared/tool-loader.js +94 -0
  248. package/build/system/workflows/shared/types.d.ts +9 -0
  249. package/build/system/workflows/shared/types.js +2 -0
  250. package/build/system/workflows/tool-result-guard.d.ts +14 -0
  251. package/build/system/workflows/tool-result-guard.js +78 -0
  252. package/build/tsconfig.tsbuildinfo +1 -1
  253. package/build/types/user.d.ts +2 -0
  254. package/build/vitest.config.d.ts +1 -1
  255. package/build/vitest.integration.config.d.ts +1 -1
  256. package/build/workers/index.js +2 -8
  257. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +2 -0
  258. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js.map +1 -0
  259. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +2 -0
  260. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +1 -0
  261. package/dashboard/dist/assets/BotPicker-C51nKFEu.js +2 -0
  262. package/dashboard/dist/assets/{BotPicker-D6FYW1Gt.js.map → BotPicker-C51nKFEu.js.map} +1 -1
  263. package/dashboard/dist/assets/CollapsibleSection-BSyfd8uL.js +2 -0
  264. package/dashboard/dist/assets/{CollapsibleSection-Cxk4wvjT.js.map → CollapsibleSection-BSyfd8uL.js.map} +1 -1
  265. package/dashboard/dist/assets/ConfirmDeleteModal-CBdhia5T.js +2 -0
  266. package/dashboard/dist/assets/{ConfirmDeleteModal-FSXyKjaB.js.map → ConfirmDeleteModal-CBdhia5T.js.map} +1 -1
  267. package/dashboard/dist/assets/CopyableId-dGlewBCS.js +2 -0
  268. package/dashboard/dist/assets/{CopyableId-CBdxWfp8.js.map → CopyableId-dGlewBCS.js.map} +1 -1
  269. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +2 -0
  270. package/dashboard/dist/assets/{CredentialsPage-Ikzsot0w.js.map → CredentialsPage-CoBNFSAu.js.map} +1 -1
  271. package/dashboard/dist/assets/CustomDurationPicker-BataWFj8.js +2 -0
  272. package/dashboard/dist/assets/{CustomDurationPicker-CAninCbl.js.map → CustomDurationPicker-BataWFj8.js.map} +1 -1
  273. package/dashboard/dist/assets/DataTable-B3uf5CCo.js +2 -0
  274. package/dashboard/dist/assets/DataTable-B3uf5CCo.js.map +1 -0
  275. package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js +2 -0
  276. package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js.map +1 -0
  277. package/dashboard/dist/assets/EmptyState-BChBJNGS.js +2 -0
  278. package/dashboard/dist/assets/{EmptyState-2CmV-IaS.js.map → EmptyState-BChBJNGS.js.map} +1 -1
  279. package/dashboard/dist/assets/EscalationsOverview-CxUv8xjG.js +2 -0
  280. package/dashboard/dist/assets/{EscalationsOverview-GXYFPASS.js.map → EscalationsOverview-CxUv8xjG.js.map} +1 -1
  281. package/dashboard/dist/assets/EventTable-CVt8B0BZ.js +2 -0
  282. package/dashboard/dist/assets/{EventTable-B01oJf6Y.js.map → EventTable-CVt8B0BZ.js.map} +1 -1
  283. package/dashboard/dist/assets/FilterBar-CShf0oe7.js +2 -0
  284. package/dashboard/dist/assets/{FilterBar-Ck4K4rzu.js.map → FilterBar-CShf0oe7.js.map} +1 -1
  285. package/dashboard/dist/assets/McpOverview-CbaZRnJl.js +2 -0
  286. package/dashboard/dist/assets/{McpOverview-JkvRcX2e.js.map → McpOverview-CbaZRnJl.js.map} +1 -1
  287. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +5 -0
  288. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +1 -0
  289. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +2 -0
  290. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +1 -0
  291. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +2 -0
  292. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +1 -0
  293. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +2 -0
  294. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +1 -0
  295. package/dashboard/dist/assets/Modal-CI5RBPOQ.js +2 -0
  296. package/dashboard/dist/assets/{Modal-B4rbIVAn.js.map → Modal-CI5RBPOQ.js.map} +1 -1
  297. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +2 -0
  298. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +1 -0
  299. package/dashboard/dist/assets/PageHeader-SMD9qtOO.js +2 -0
  300. package/dashboard/dist/assets/PageHeader-SMD9qtOO.js.map +1 -0
  301. package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js +2 -0
  302. package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js.map +1 -0
  303. package/dashboard/dist/assets/PriorityBadge-CQ0EsLTA.js +2 -0
  304. package/dashboard/dist/assets/{PriorityBadge-DfQY9St9.js.map → PriorityBadge-CQ0EsLTA.js.map} +1 -1
  305. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +2 -0
  306. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +1 -0
  307. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +2 -0
  308. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +1 -0
  309. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +2 -0
  310. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +1 -0
  311. package/dashboard/dist/assets/RolePill-Crj4TH5p.js +2 -0
  312. package/dashboard/dist/assets/{RolePill-BTPa8L-P.js.map → RolePill-Crj4TH5p.js.map} +1 -1
  313. package/dashboard/dist/assets/RolesPage-C_RInUwS.js +2 -0
  314. package/dashboard/dist/assets/RolesPage-C_RInUwS.js.map +1 -0
  315. package/dashboard/dist/assets/RowActions-Cp5HyK_w.js +2 -0
  316. package/dashboard/dist/assets/{RowActions-Dg-Fsm5O.js.map → RowActions-Cp5HyK_w.js.map} +1 -1
  317. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +2 -0
  318. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +1 -0
  319. package/dashboard/dist/assets/StatCard-BKZLSgNV.js +2 -0
  320. package/dashboard/dist/assets/{StatCard-DlgF0CJC.js.map → StatCard-BKZLSgNV.js.map} +1 -1
  321. package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js +2 -0
  322. package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js.map +1 -0
  323. package/dashboard/dist/assets/StickyPagination-CTosgiU2.js +2 -0
  324. package/dashboard/dist/assets/{StickyPagination-F9FZsRy9.js.map → StickyPagination-CTosgiU2.js.map} +1 -1
  325. package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js +2 -0
  326. package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js.map +1 -0
  327. package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js +2 -0
  328. package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js.map +1 -0
  329. package/dashboard/dist/assets/TaskQueuePill-BtJbZTT0.js +2 -0
  330. package/dashboard/dist/assets/{TaskQueuePill-awmtb0qw.js.map → TaskQueuePill-BtJbZTT0.js.map} +1 -1
  331. package/dashboard/dist/assets/TasksListPage-DtFLUEhg.js +2 -0
  332. package/dashboard/dist/assets/{TasksListPage-C_QF23c1.js.map → TasksListPage-DtFLUEhg.js.map} +1 -1
  333. package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js +2 -0
  334. package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js.map +1 -0
  335. package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js +2 -0
  336. package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js.map +1 -0
  337. package/dashboard/dist/assets/UserName-DU9qeg13.js +2 -0
  338. package/dashboard/dist/assets/{UserName-DaP4YAKr.js.map → UserName-DU9qeg13.js.map} +1 -1
  339. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +2 -0
  340. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +1 -0
  341. package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js +2 -0
  342. package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js.map +1 -0
  343. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +2 -0
  344. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +1 -0
  345. package/dashboard/dist/assets/WorkflowsOverview-CPuvA4t3.js +2 -0
  346. package/dashboard/dist/assets/{WorkflowsOverview-D9OzzQqw.js.map → WorkflowsOverview-CPuvA4t3.js.map} +1 -1
  347. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +2 -0
  348. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +1 -0
  349. package/dashboard/dist/assets/{bots-BkKVMbUW.js → bots-BPiZXf2h.js} +2 -2
  350. package/dashboard/dist/assets/{bots-BkKVMbUW.js.map → bots-BPiZXf2h.js.map} +1 -1
  351. package/dashboard/dist/assets/constants-BHkpVaqx.js +2 -0
  352. package/dashboard/dist/assets/constants-BHkpVaqx.js.map +1 -0
  353. package/dashboard/dist/assets/escalation-DTY_OKRh.js +2 -0
  354. package/dashboard/dist/assets/escalation-DTY_OKRh.js.map +1 -0
  355. package/dashboard/dist/assets/escalation-columns-C91fHSkp.js +2 -0
  356. package/dashboard/dist/assets/{escalation-columns-D6aqStaY.js.map → escalation-columns-C91fHSkp.js.map} +1 -1
  357. package/dashboard/dist/assets/helpers-DBUZ9pnG.js +2 -0
  358. package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +1 -0
  359. package/dashboard/dist/assets/index-BOeA-gfK.js +17 -0
  360. package/dashboard/dist/assets/{index-X85K5bHC.js.map → index-BOeA-gfK.js.map} +1 -1
  361. package/dashboard/dist/assets/index-BZ6K_kmL.js +3 -0
  362. package/dashboard/dist/assets/index-BZ6K_kmL.js.map +1 -0
  363. package/dashboard/dist/assets/index-Bpm0yeoi.js +2 -0
  364. package/dashboard/dist/assets/index-Bpm0yeoi.js.map +1 -0
  365. package/dashboard/dist/assets/index-BtOwLI0K.js +2 -0
  366. package/dashboard/dist/assets/{index-DTPzZr_X.js.map → index-BtOwLI0K.js.map} +1 -1
  367. package/dashboard/dist/assets/index-CBF3ZvRZ.js +6 -0
  368. package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +1 -0
  369. package/dashboard/dist/assets/index-CDWOfCmi.js +2 -0
  370. package/dashboard/dist/assets/index-CDWOfCmi.js.map +1 -0
  371. package/dashboard/dist/assets/index-Ce6sL__n.js +2 -0
  372. package/dashboard/dist/assets/index-Ce6sL__n.js.map +1 -0
  373. package/dashboard/dist/assets/index-DSzSoku1.js +283 -0
  374. package/dashboard/dist/assets/index-DSzSoku1.js.map +1 -0
  375. package/dashboard/dist/assets/index-D_qEAYrg.js +2 -0
  376. package/dashboard/dist/assets/index-D_qEAYrg.js.map +1 -0
  377. package/dashboard/dist/assets/index-gCy9XX3W.css +1 -0
  378. package/dashboard/dist/assets/mcp-BzVpaaKF.js +2 -0
  379. package/dashboard/dist/assets/{mcp-blCW6IL7.js.map → mcp-BzVpaaKF.js.map} +1 -1
  380. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +2 -0
  381. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +1 -0
  382. package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js → mcp-runs-DmXYJD19.js} +2 -2
  383. package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js.map → mcp-runs-DmXYJD19.js.map} +1 -1
  384. package/dashboard/dist/assets/namespaces-DoGa7jc7.js +2 -0
  385. package/dashboard/dist/assets/{namespaces-BgbaC3ow.js.map → namespaces-DoGa7jc7.js.map} +1 -1
  386. package/dashboard/dist/assets/{roles-ZNrqqnQl.js → roles-wCdQ2Z7k.js} +2 -2
  387. package/dashboard/dist/assets/{roles-ZNrqqnQl.js.map → roles-wCdQ2Z7k.js.map} +1 -1
  388. package/dashboard/dist/assets/settings-DDe_L7JT.js +2 -0
  389. package/dashboard/dist/assets/{settings-eBRSE0mQ.js.map → settings-DDe_L7JT.js.map} +1 -1
  390. package/dashboard/dist/assets/tasks-3Hih8Bt7.js +2 -0
  391. package/dashboard/dist/assets/{tasks-tRqClPns.js.map → tasks-3Hih8Bt7.js.map} +1 -1
  392. package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js → useFilterParams-BUyLHcx_.js} +2 -2
  393. package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js.map → useFilterParams-BUyLHcx_.js.map} +1 -1
  394. package/dashboard/dist/assets/{useNatsEvents-Xr43X1fG.js → useNatsEvents-DeGKHFTX.js} +2 -2
  395. package/dashboard/dist/assets/{useNatsEvents-Xr43X1fG.js.map → useNatsEvents-DeGKHFTX.js.map} +1 -1
  396. package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js → useYamlActivityEvents-B5dHec6Y.js} +2 -2
  397. package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js.map → useYamlActivityEvents-B5dHec6Y.js.map} +1 -1
  398. package/dashboard/dist/assets/{users-tMvNyOo8.js → users-BTagPmGW.js} +2 -2
  399. package/dashboard/dist/assets/{users-tMvNyOo8.js.map → users-BTagPmGW.js.map} +1 -1
  400. package/dashboard/dist/assets/{vendor-icons-ZTAKVwGc.js → vendor-icons-DCLlGYO9.js} +112 -57
  401. package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +1 -0
  402. package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
  403. package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
  404. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +26 -0
  405. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +1 -0
  406. package/dashboard/dist/assets/{workflows-Cc4VHcrp.js → workflows-B20dR3NE.js} +2 -2
  407. package/dashboard/dist/assets/{workflows-Cc4VHcrp.js.map → workflows-B20dR3NE.js.map} +1 -1
  408. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +2 -0
  409. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js.map +1 -0
  410. package/dashboard/dist/index.html +5 -5
  411. package/docs/api/dba.md +81 -0
  412. package/docs/api/escalations.md +575 -0
  413. package/docs/api/exports.md +170 -0
  414. package/docs/api/maintenance.md +93 -0
  415. package/docs/api/mcp-runs.md +128 -0
  416. package/docs/api/mcp-servers.md +195 -0
  417. package/docs/api/namespaces.md +48 -0
  418. package/docs/api/roles.md +390 -0
  419. package/docs/api/service-accounts.md +188 -0
  420. package/docs/api/settings.md +33 -0
  421. package/docs/api/tasks.md +167 -0
  422. package/docs/api/users.md +180 -0
  423. package/docs/api/workflows.md +616 -0
  424. package/docs/api/yaml-workflows.md +312 -0
  425. package/docs/architecture.md +221 -0
  426. package/docs/auth.md +181 -0
  427. package/docs/cloud.md +272 -0
  428. package/docs/compilation.md +136 -0
  429. package/docs/contributing.md +56 -0
  430. package/docs/dashboard.md +145 -0
  431. package/docs/data.md +478 -0
  432. package/docs/escalation-strategies.md +264 -0
  433. package/docs/events.md +251 -0
  434. package/docs/iam.md +222 -0
  435. package/docs/img/01-login.png +0 -0
  436. package/docs/img/02-dashboard-home.png +0 -0
  437. package/docs/img/03-processes-list.png +0 -0
  438. package/docs/img/04-escalations-list.png +0 -0
  439. package/docs/img/05-mcp-servers.png +0 -0
  440. package/docs/img/06-mcp-pipelines.png +0 -0
  441. package/docs/img/07-workflows-list.png +0 -0
  442. package/docs/img/compilation/01-query-submit.png +0 -0
  443. package/docs/img/compilation/02-mcp-servers.png +0 -0
  444. package/docs/img/compilation/03-query-completed.png +0 -0
  445. package/docs/img/compilation/04-wizard-original.png +0 -0
  446. package/docs/img/compilation/05-wizard-timeline.png +0 -0
  447. package/docs/img/compilation/06-wizard-profile.png +0 -0
  448. package/docs/img/compilation/07-wizard-deploy.png +0 -0
  449. package/docs/img/compilation/08-wizard-test-modal.png +0 -0
  450. package/docs/img/compilation/09-wizard-test-compare.png +0 -0
  451. package/docs/img/compilation/10-wizard-verify.png +0 -0
  452. package/docs/logging.md +110 -0
  453. package/docs/maintenance.md +221 -0
  454. package/docs/mcp.md +715 -0
  455. package/docs/oauth-and-delegation.md +469 -0
  456. package/docs/telemetry.md +144 -0
  457. package/docs/workflows.md +695 -0
  458. package/lib/db/schemas/015_knowledge.sql +23 -0
  459. package/package.json +8 -9
  460. package/build/services/db/index.d.ts +0 -3
  461. package/build/services/mcp/vision-server.d.ts +0 -15
  462. package/build/services/mcp/vision-server.js +0 -214
  463. package/build/system/mcp-servers/document-vision.js +0 -228
  464. package/build/system/mcp-servers/prompts.d.ts +0 -4
  465. package/build/system/mcp-servers/prompts.js +0 -10
  466. package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js +0 -2
  467. package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js.map +0 -1
  468. package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js +0 -2
  469. package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js.map +0 -1
  470. package/dashboard/dist/assets/BotPicker-D6FYW1Gt.js +0 -2
  471. package/dashboard/dist/assets/CollapsibleSection-Cxk4wvjT.js +0 -2
  472. package/dashboard/dist/assets/ConfirmDeleteModal-FSXyKjaB.js +0 -2
  473. package/dashboard/dist/assets/CopyableId-CBdxWfp8.js +0 -2
  474. package/dashboard/dist/assets/CredentialsPage-Ikzsot0w.js +0 -2
  475. package/dashboard/dist/assets/CustomDurationPicker-CAninCbl.js +0 -2
  476. package/dashboard/dist/assets/DataTable-BDn1WBHS.js +0 -2
  477. package/dashboard/dist/assets/DataTable-BDn1WBHS.js.map +0 -1
  478. package/dashboard/dist/assets/EmptyState-2CmV-IaS.js +0 -2
  479. package/dashboard/dist/assets/EscalationsOverview-GXYFPASS.js +0 -2
  480. package/dashboard/dist/assets/EventTable-B01oJf6Y.js +0 -2
  481. package/dashboard/dist/assets/Field-DuFBAYhu.js +0 -2
  482. package/dashboard/dist/assets/Field-DuFBAYhu.js.map +0 -1
  483. package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +0 -2
  484. package/dashboard/dist/assets/McpOverview-JkvRcX2e.js +0 -2
  485. package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js +0 -2
  486. package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js.map +0 -1
  487. package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js +0 -2
  488. package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js.map +0 -1
  489. package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js +0 -2
  490. package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js.map +0 -1
  491. package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js +0 -2
  492. package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js.map +0 -1
  493. package/dashboard/dist/assets/Modal-B4rbIVAn.js +0 -2
  494. package/dashboard/dist/assets/OperatorDashboard-B56il28q.js +0 -2
  495. package/dashboard/dist/assets/OperatorDashboard-B56il28q.js.map +0 -1
  496. package/dashboard/dist/assets/PageHeader-CpWFly5S.js +0 -2
  497. package/dashboard/dist/assets/PageHeader-CpWFly5S.js.map +0 -1
  498. package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +0 -2
  499. package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js +0 -2
  500. package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js.map +0 -1
  501. package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js +0 -2
  502. package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js.map +0 -1
  503. package/dashboard/dist/assets/RolePill-BTPa8L-P.js +0 -2
  504. package/dashboard/dist/assets/RolesPage-9grZW7yR.js +0 -2
  505. package/dashboard/dist/assets/RolesPage-9grZW7yR.js.map +0 -1
  506. package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +0 -2
  507. package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js +0 -4
  508. package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js.map +0 -1
  509. package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
  510. package/dashboard/dist/assets/StatusBadge-TlC4jiig.js +0 -2
  511. package/dashboard/dist/assets/StatusBadge-TlC4jiig.js.map +0 -1
  512. package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +0 -2
  513. package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js +0 -2
  514. package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js.map +0 -1
  515. package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js +0 -2
  516. package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js.map +0 -1
  517. package/dashboard/dist/assets/TaskQueuePill-awmtb0qw.js +0 -2
  518. package/dashboard/dist/assets/TasksListPage-C_QF23c1.js +0 -2
  519. package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js +0 -2
  520. package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js.map +0 -1
  521. package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js +0 -2
  522. package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js.map +0 -1
  523. package/dashboard/dist/assets/UserName-DaP4YAKr.js +0 -2
  524. package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js +0 -5
  525. package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js.map +0 -1
  526. package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js +0 -2
  527. package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js.map +0 -1
  528. package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js +0 -2
  529. package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js.map +0 -1
  530. package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js +0 -2
  531. package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js.map +0 -1
  532. package/dashboard/dist/assets/WorkflowsOverview-D9OzzQqw.js +0 -2
  533. package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js +0 -3
  534. package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js.map +0 -1
  535. package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js +0 -2
  536. package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js.map +0 -1
  537. package/dashboard/dist/assets/constants-CgaZfe5d.js +0 -2
  538. package/dashboard/dist/assets/constants-CgaZfe5d.js.map +0 -1
  539. package/dashboard/dist/assets/escalation-columns-D6aqStaY.js +0 -2
  540. package/dashboard/dist/assets/escalation-qalymbKB.js +0 -2
  541. package/dashboard/dist/assets/escalation-qalymbKB.js.map +0 -1
  542. package/dashboard/dist/assets/format-gXZXQ-HJ.js +0 -2
  543. package/dashboard/dist/assets/format-gXZXQ-HJ.js.map +0 -1
  544. package/dashboard/dist/assets/helpers-0gSleuzT.js +0 -2
  545. package/dashboard/dist/assets/helpers-0gSleuzT.js.map +0 -1
  546. package/dashboard/dist/assets/index-BWvMHed7.js +0 -6
  547. package/dashboard/dist/assets/index-BWvMHed7.js.map +0 -1
  548. package/dashboard/dist/assets/index-BaszoPO_.css +0 -1
  549. package/dashboard/dist/assets/index-Cn2jyj9A.js +0 -2
  550. package/dashboard/dist/assets/index-Cn2jyj9A.js.map +0 -1
  551. package/dashboard/dist/assets/index-D8VH6K8B.js +0 -54
  552. package/dashboard/dist/assets/index-D8VH6K8B.js.map +0 -1
  553. package/dashboard/dist/assets/index-D9SYwJsi.js +0 -3
  554. package/dashboard/dist/assets/index-D9SYwJsi.js.map +0 -1
  555. package/dashboard/dist/assets/index-DTPzZr_X.js +0 -2
  556. package/dashboard/dist/assets/index-D_6AB5BE.js +0 -2
  557. package/dashboard/dist/assets/index-D_6AB5BE.js.map +0 -1
  558. package/dashboard/dist/assets/index-S9Ks2Lj2.js +0 -2
  559. package/dashboard/dist/assets/index-S9Ks2Lj2.js.map +0 -1
  560. package/dashboard/dist/assets/index-X85K5bHC.js +0 -17
  561. package/dashboard/dist/assets/index-rjmgHlSH.js +0 -2
  562. package/dashboard/dist/assets/index-rjmgHlSH.js.map +0 -1
  563. package/dashboard/dist/assets/mcp-blCW6IL7.js +0 -2
  564. package/dashboard/dist/assets/mcp-query-DoAyPbjC.js +0 -2
  565. package/dashboard/dist/assets/mcp-query-DoAyPbjC.js.map +0 -1
  566. package/dashboard/dist/assets/namespaces-BgbaC3ow.js +0 -2
  567. package/dashboard/dist/assets/settings-eBRSE0mQ.js +0 -2
  568. package/dashboard/dist/assets/tasks-tRqClPns.js +0 -2
  569. package/dashboard/dist/assets/vendor-icons-ZTAKVwGc.js.map +0 -1
  570. package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
  571. package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
  572. package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js +0 -22
  573. package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js.map +0 -1
  574. package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js +0 -2
  575. package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js.map +0 -1
  576. /package/build/{services → lib}/db/migrate.d.ts +0 -0
  577. /package/build/{services → lib}/events/index.d.ts +0 -0
  578. /package/build/{services → lib}/events/index.js +0 -0
  579. /package/build/{services → lib}/events/memory.d.ts +0 -0
  580. /package/build/{services → lib}/events/memory.js +0 -0
  581. /package/build/{services → lib}/events/nats.d.ts +0 -0
  582. /package/build/{services → lib}/events/nats.js +0 -0
  583. /package/build/{services → lib}/events/publish.d.ts +0 -0
  584. /package/build/{services → lib}/events/publish.js +0 -0
  585. /package/build/{services → lib}/events/socketio.d.ts +0 -0
  586. /package/build/{services → lib}/events/socketio.js +0 -0
  587. /package/build/{services → lib}/logger/index.d.ts +0 -0
  588. /package/build/{services → lib}/logger/index.js +0 -0
  589. /package/build/{services → lib}/logger/pino.d.ts +0 -0
  590. /package/build/{services → lib}/logger/pino.js +0 -0
  591. /package/build/{services → lib}/storage/index.d.ts +0 -0
  592. /package/build/{services → lib}/storage/index.js +0 -0
  593. /package/build/{services → lib}/storage/local.d.ts +0 -0
  594. /package/build/{services → lib}/storage/local.js +0 -0
  595. /package/build/{services → lib}/storage/s3.d.ts +0 -0
  596. /package/build/{services → lib}/storage/s3.js +0 -0
  597. /package/build/{services → lib}/storage/types.d.ts +0 -0
  598. /package/build/{services → lib}/storage/types.js +0 -0
  599. /package/build/{services → lib}/telemetry/index.d.ts +0 -0
  600. /package/build/{services → lib}/telemetry/index.js +0 -0
  601. /package/{services → lib}/db/README.md +0 -0
  602. /package/{services → lib}/db/schemas/001_schema.sql +0 -0
  603. /package/{services → lib}/db/schemas/002_seed.sql +0 -0
  604. /package/{services → lib}/db/schemas/003_workflow_discovery.sql +0 -0
  605. /package/{services → lib}/db/schemas/004_query_router.sql +0 -0
  606. /package/{services → lib}/db/schemas/005_triage_router.sql +0 -0
  607. /package/{services → lib}/db/schemas/006_oauth.sql +0 -0
  608. /package/{services → lib}/db/schemas/007_security.sql +0 -0
  609. /package/{services → lib}/db/schemas/008_bot_accounts.sql +0 -0
  610. /package/{services → lib}/db/schemas/009_audit_trail.sql +0 -0
  611. /package/{services → lib}/db/schemas/010_credential_providers.sql +0 -0
  612. /package/{services → lib}/db/schemas/011_system_workflow_configs.sql +0 -0
  613. /package/{services → lib}/db/schemas/012_drop_modality.sql +0 -0
  614. /package/{services → lib}/db/schemas/013_execute_as.sql +0 -0
  615. /package/{services → lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
@@ -0,0 +1,23 @@
1
+ -- Long Tail Knowledge Store
2
+ -- Persistent JSONB memory for autonomous agents. Each entry lives in a domain
3
+ -- (lightweight namespace) and is keyed by a human-readable string.
4
+
5
+ CREATE TABLE IF NOT EXISTS lt_knowledge (
6
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
7
+ domain TEXT NOT NULL,
8
+ key TEXT NOT NULL,
9
+ data JSONB NOT NULL DEFAULT '{}',
10
+ tags TEXT[] NOT NULL DEFAULT '{}',
11
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
12
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
13
+ UNIQUE(domain, key)
14
+ );
15
+
16
+ CREATE INDEX IF NOT EXISTS idx_lt_knowledge_domain ON lt_knowledge (domain);
17
+ CREATE INDEX IF NOT EXISTS idx_lt_knowledge_tags ON lt_knowledge USING GIN (tags);
18
+ CREATE INDEX IF NOT EXISTS idx_lt_knowledge_data ON lt_knowledge USING GIN (data);
19
+
20
+ DROP TRIGGER IF EXISTS lt_knowledge_updated_at ON lt_knowledge;
21
+ CREATE TRIGGER lt_knowledge_updated_at
22
+ BEFORE UPDATE ON lt_knowledge
23
+ FOR EACH ROW EXECUTE FUNCTION lt_set_updated_at();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hotmeshio/long-tail",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Long Tail Workflows — Durable AI workflows with human-in-the-loop escalation. Powered by PostgreSQL.",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",
@@ -10,7 +10,8 @@
10
10
  },
11
11
  "files": [
12
12
  "build/",
13
- "services/db/schemas/",
13
+ "docs/",
14
+ "lib/db/schemas/",
14
15
  "dashboard/dist/",
15
16
  "LICENSE",
16
17
  "README.md"
@@ -21,7 +22,7 @@
21
22
  "clean-build": "npm run clean && npm run build",
22
23
  "start": "ts-node index.ts",
23
24
  "start:dev": "ts-node-dev --respawn index.ts",
24
- "migrate": "ts-node services/db/migrate.ts",
25
+ "migrate": "ts-node lib/db/migrate.ts",
25
26
  "lint": "eslint . --ext .ts",
26
27
  "lint:fix": "eslint . --fix --ext .ts",
27
28
  "test": "vitest run",
@@ -60,11 +61,11 @@
60
61
  "dependencies": {
61
62
  "@anthropic-ai/sdk": "^0.82.0",
62
63
  "@aws-sdk/client-s3": "^3.1017.0",
63
- "@hotmeshio/hotmesh": "^0.13.0",
64
+ "@hotmeshio/hotmesh": "^0.14.1",
64
65
  "@modelcontextprotocol/sdk": "^1.27.1",
65
- "@opentelemetry/exporter-trace-otlp-proto": "^0.212.0",
66
+ "@opentelemetry/exporter-trace-otlp-proto": "^0.215.0",
66
67
  "@opentelemetry/resources": "^2.5.1",
67
- "@opentelemetry/sdk-node": "^0.212.0",
68
+ "@opentelemetry/sdk-node": "^0.215.0",
68
69
  "@opentelemetry/semantic-conventions": "^1.39.0",
69
70
  "arctic": "^3.7.0",
70
71
  "bcryptjs": "^2.4.3",
@@ -75,7 +76,6 @@
75
76
  "pg": "^8.13.0",
76
77
  "pino": "^9.6.0",
77
78
  "playwright": "^1.58.2",
78
- "sharp": "^0.34.5",
79
79
  "socket.io": "^4.8.3",
80
80
  "zod": "^3.25.76"
81
81
  },
@@ -86,12 +86,11 @@
86
86
  "@types/jsonwebtoken": "^9.0.10",
87
87
  "@types/node": "^20.19.33",
88
88
  "@types/pg": "^8.10.0",
89
- "@types/sharp": "^0.32.0",
90
89
  "dotenv": "^16.3.1",
91
90
  "rimraf": "^4.4.1",
92
91
  "ts-node": "^10.9.1",
93
92
  "ts-node-dev": "^2.0.0",
94
93
  "typescript": "^5.0.4",
95
- "vitest": "^4.1.2"
94
+ "vitest": "^3.2.4"
96
95
  }
97
96
  }
@@ -1,3 +0,0 @@
1
- import { Pool } from 'pg';
2
- export declare function getPool(): Pool;
3
- export declare function closePool(): Promise<void>;
@@ -1,15 +0,0 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- /**
3
- * Create the Document Vision MCP server.
4
- *
5
- * Returns a fresh McpServer instance each time. The MCP SDK only allows
6
- * one transport per server, so each consumer (triage activities, pipeline
7
- * workers, tests) needs its own instance to avoid "already connected" errors.
8
- */
9
- export declare function createVisionServer(options?: {
10
- name?: string;
11
- }): Promise<McpServer>;
12
- /**
13
- * Stop a Vision MCP server instance and release resources.
14
- */
15
- export declare function stopVisionServer(): Promise<void>;
@@ -1,214 +0,0 @@
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
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.createVisionServer = createVisionServer;
40
- exports.stopVisionServer = stopVisionServer;
41
- const fs = __importStar(require("fs"));
42
- const path = __importStar(require("path"));
43
- const sharp_1 = __importDefault(require("sharp"));
44
- const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
45
- const zod_1 = require("zod");
46
- const llm_1 = require("../llm");
47
- const defaults_1 = require("../../modules/defaults");
48
- const logger_1 = require("../logger");
49
- const prompts_1 = require("../../system/mcp-servers/prompts");
50
- // ── Resolve fixtures directory ──────────────────────────────────────────────
51
- function fixturesDir() {
52
- // Works from both ts-node (root) and compiled (build/) contexts
53
- const candidates = [
54
- path.join(__dirname, '..', '..', 'tests', 'fixtures'),
55
- path.join(__dirname, '..', '..', '..', 'tests', 'fixtures'),
56
- ];
57
- for (const dir of candidates) {
58
- if (fs.existsSync(dir))
59
- return dir;
60
- }
61
- return candidates[0];
62
- }
63
- // ── Schemas (extracted to break TS2589 deep-instantiation in registerTool generics) ──
64
- const listDocumentPagesSchema = zod_1.z.object({});
65
- const rotatePageSchema = zod_1.z.object({
66
- image_ref: zod_1.z.string().describe('Storage reference to the image to rotate'),
67
- degrees: zod_1.z.number().int().describe('Rotation degrees (90, 180, 270)'),
68
- });
69
- const translateContentSchema = zod_1.z.object({
70
- content: zod_1.z.string().describe('The content text to translate'),
71
- target_language: zod_1.z.string().describe('Target language code (e.g. "en", "es")'),
72
- });
73
- /**
74
- * List available document page images from storage.
75
- */
76
- async function listDocumentPages() {
77
- const dir = fixturesDir();
78
- if (!fs.existsSync(dir))
79
- return [];
80
- return fs.readdirSync(dir)
81
- .filter(f => f.endsWith('.png') || f.endsWith('.jpg'));
82
- }
83
- /**
84
- * Register all three vision tools on an McpServer instance.
85
- */
86
- function registerTools(srv) {
87
- // ── list_document_pages ─────────────────────────────────────────
88
- srv.registerTool('list_document_pages', {
89
- title: 'List Document Pages',
90
- description: 'List available document page images from storage. Returns an array of image references.',
91
- inputSchema: listDocumentPagesSchema,
92
- }, async (_args) => {
93
- const pages = await listDocumentPages();
94
- return {
95
- content: [{ type: 'text', text: JSON.stringify({ pages }) }],
96
- };
97
- });
98
- // ── rotate_page ───────────────────────────────────────────────
99
- srv.registerTool('rotate_page', {
100
- title: 'Rotate Page',
101
- description: 'Rotate a document page image by the given degrees using sharp. Writes the corrected image to storage and returns the new image reference.',
102
- inputSchema: rotatePageSchema,
103
- }, async (args) => {
104
- const dir = fixturesDir();
105
- const srcPath = path.join(dir, args.image_ref);
106
- if (!fs.existsSync(srcPath)) {
107
- return {
108
- content: [{
109
- type: 'text',
110
- text: JSON.stringify({ error: `Image not found: ${args.image_ref}` }),
111
- }],
112
- };
113
- }
114
- // Build output filename: page1_upside_down.png → page1_upside_down_rotated.png
115
- const ext = path.extname(args.image_ref);
116
- const base = path.basename(args.image_ref, ext);
117
- const rotatedName = `${base}_rotated${ext}`;
118
- const destPath = path.join(dir, rotatedName);
119
- await (0, sharp_1.default)(srcPath)
120
- .rotate(args.degrees)
121
- .toFile(destPath);
122
- logger_1.loggerRegistry.info(`[lt-mcp:vision-server] rotated ${args.image_ref} by ${args.degrees}° → ${rotatedName}`);
123
- return {
124
- content: [{
125
- type: 'text',
126
- text: JSON.stringify({
127
- rotated_ref: rotatedName,
128
- degrees: args.degrees,
129
- source_ref: args.image_ref,
130
- }),
131
- }],
132
- };
133
- });
134
- // ── translate_content ──────────────────────────────────────────
135
- srv.registerTool('translate_content', {
136
- title: 'Translate Content',
137
- description: 'Translate content text to the target language using OpenAI. Returns the translated content and detected source language.',
138
- inputSchema: translateContentSchema,
139
- }, async (args) => {
140
- const { hasLLMApiKey } = await Promise.resolve().then(() => __importStar(require('../llm')));
141
- if (!hasLLMApiKey(defaults_1.LLM_MODEL_SECONDARY)) {
142
- return {
143
- content: [{
144
- type: 'text',
145
- text: JSON.stringify({
146
- translated_content: args.content,
147
- source_language: 'unknown',
148
- target_language: args.target_language,
149
- note: 'LLM API key not configured — returned content unchanged',
150
- }),
151
- }],
152
- };
153
- }
154
- const response = await (0, llm_1.callLLM)({
155
- model: defaults_1.LLM_MODEL_SECONDARY,
156
- messages: [
157
- {
158
- role: 'system',
159
- content: (0, prompts_1.TRANSLATE_SYSTEM_PROMPT)(args.target_language),
160
- },
161
- { role: 'user', content: args.content },
162
- ],
163
- max_tokens: defaults_1.LLM_MAX_TOKENS_VISION,
164
- });
165
- const raw = response.content || '';
166
- try {
167
- const cleaned = raw.replace(/^```json\n?|\n?```$/g, '').trim();
168
- const parsed = JSON.parse(cleaned);
169
- return {
170
- content: [{
171
- type: 'text',
172
- text: JSON.stringify({
173
- translated_content: parsed.translated_content || args.content,
174
- source_language: parsed.source_language || 'unknown',
175
- target_language: args.target_language,
176
- }),
177
- }],
178
- };
179
- }
180
- catch {
181
- return {
182
- content: [{
183
- type: 'text',
184
- text: JSON.stringify({
185
- translated_content: raw,
186
- source_language: 'unknown',
187
- target_language: args.target_language,
188
- }),
189
- }],
190
- };
191
- }
192
- });
193
- }
194
- /**
195
- * Create the Document Vision MCP server.
196
- *
197
- * Returns a fresh McpServer instance each time. The MCP SDK only allows
198
- * one transport per server, so each consumer (triage activities, pipeline
199
- * workers, tests) needs its own instance to avoid "already connected" errors.
200
- */
201
- async function createVisionServer(options) {
202
- const name = options?.name || 'long-tail-document-vision';
203
- const instance = new mcp_js_1.McpServer({ name, version: '1.0.0' });
204
- registerTools(instance);
205
- logger_1.loggerRegistry.info(`[lt-mcp:vision-server] ${name} ready (3 tools registered)`);
206
- return instance;
207
- }
208
- /**
209
- * Stop a Vision MCP server instance and release resources.
210
- */
211
- async function stopVisionServer() {
212
- // No-op — instances are now independent and cleaned up by their callers
213
- logger_1.loggerRegistry.info('[lt-mcp:vision-server] stopped');
214
- }
@@ -1,228 +0,0 @@
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
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.createVisionServer = createVisionServer;
40
- exports.stopVisionServer = stopVisionServer;
41
- const fs = __importStar(require("fs"));
42
- const path = __importStar(require("path"));
43
- const sharp_1 = __importDefault(require("sharp"));
44
- const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
45
- const zod_1 = require("zod");
46
- const llm_1 = require("../../services/llm");
47
- const defaults_1 = require("../../modules/defaults");
48
- const logger_1 = require("../../services/logger");
49
- const prompts_1 = require("./prompts");
50
- // ── Resolve fixtures directory ──────────────────────────────────────────────
51
- function fixturesDir() {
52
- // Works from both ts-node (root) and compiled (build/) contexts
53
- const candidates = [
54
- path.join(__dirname, '..', '..', 'tests', 'fixtures'),
55
- path.join(__dirname, '..', '..', '..', 'tests', 'fixtures'),
56
- ];
57
- for (const dir of candidates) {
58
- if (fs.existsSync(dir))
59
- return dir;
60
- }
61
- return candidates[0];
62
- }
63
- // ── Schemas (extracted to break TS2589 deep-instantiation in registerTool generics) ──
64
- const listDocumentPagesSchema = zod_1.z.object({});
65
- const rotatePageSchema = zod_1.z.object({
66
- image_ref: zod_1.z.string().describe('Storage reference to the image to rotate'),
67
- degrees: zod_1.z.number().int().describe('Rotation degrees (90, 180, 270)'),
68
- replace_original: zod_1.z.boolean().optional().default(true).describe('Delete the original file after rotation (default: true)'),
69
- });
70
- const translateContentSchema = zod_1.z.object({
71
- content: zod_1.z.string().describe('The content text to translate'),
72
- target_language: zod_1.z.string().describe('Target language code (e.g. "en", "es")'),
73
- });
74
- /**
75
- * List available document page images from storage.
76
- */
77
- async function listDocumentPages() {
78
- const dir = fixturesDir();
79
- if (!fs.existsSync(dir))
80
- return [];
81
- return fs.readdirSync(dir)
82
- .filter(f => f.endsWith('.png') || f.endsWith('.jpg'));
83
- }
84
- /**
85
- * Register all three vision tools on an McpServer instance.
86
- */
87
- function registerTools(srv) {
88
- // ── list_document_pages ─────────────────────────────────────────
89
- srv.registerTool('list_document_pages', {
90
- title: 'List Document Pages',
91
- description: 'List available document page images from storage. Returns an array of image references.',
92
- inputSchema: listDocumentPagesSchema,
93
- }, async (_args) => {
94
- const pages = await listDocumentPages();
95
- return {
96
- content: [{ type: 'text', text: JSON.stringify({ pages }) }],
97
- };
98
- });
99
- // ── rotate_page ───────────────────────────────────────────────
100
- srv.registerTool('rotate_page', {
101
- title: 'Rotate Page',
102
- description: 'Rotate a document page image by the given degrees using sharp. Writes the corrected image to storage and returns the new image reference.',
103
- inputSchema: rotatePageSchema,
104
- }, async (args) => {
105
- const dir = fixturesDir();
106
- const srcPath = path.join(dir, args.image_ref);
107
- if (!fs.existsSync(srcPath)) {
108
- return {
109
- content: [{
110
- type: 'text',
111
- text: JSON.stringify({ error: `Image not found: ${args.image_ref}` }),
112
- }],
113
- };
114
- }
115
- // Build output filename: page1_upside_down.png → page1_upside_down_rotated.png
116
- const ext = path.extname(args.image_ref);
117
- const base = path.basename(args.image_ref, ext);
118
- const rotatedName = `${base}_rotated${ext}`;
119
- const destPath = path.join(dir, rotatedName);
120
- await (0, sharp_1.default)(srcPath)
121
- .rotate(args.degrees)
122
- .toFile(destPath);
123
- // Clean up original if requested (default: true)
124
- if (args.replace_original !== false) {
125
- try {
126
- fs.unlinkSync(srcPath);
127
- logger_1.loggerRegistry.info(`[lt-mcp:vision-server] rotated ${args.image_ref} by ${args.degrees}° → ${rotatedName} (original deleted)`);
128
- }
129
- catch (err) {
130
- logger_1.loggerRegistry.warn(`[lt-mcp:vision-server] rotated ${args.image_ref} but failed to delete original: ${err}`);
131
- }
132
- }
133
- else {
134
- logger_1.loggerRegistry.info(`[lt-mcp:vision-server] rotated ${args.image_ref} by ${args.degrees}° → ${rotatedName}`);
135
- }
136
- return {
137
- content: [{
138
- type: 'text',
139
- text: JSON.stringify({
140
- rotated_ref: rotatedName,
141
- degrees: args.degrees,
142
- source_ref: args.image_ref,
143
- original_deleted: args.replace_original !== false,
144
- }),
145
- }],
146
- };
147
- });
148
- // ── translate_content ──────────────────────────────────────────
149
- srv.registerTool('translate_content', {
150
- title: 'Translate Content',
151
- description: 'Translate content text to the target language using OpenAI. Returns the translated content and detected source language.',
152
- inputSchema: translateContentSchema,
153
- }, async (args) => {
154
- const { hasLLMApiKey } = await Promise.resolve().then(() => __importStar(require('../../services/llm')));
155
- if (!hasLLMApiKey(defaults_1.LLM_MODEL_SECONDARY)) {
156
- return {
157
- content: [{
158
- type: 'text',
159
- text: JSON.stringify({
160
- translated_content: args.content,
161
- source_language: 'unknown',
162
- target_language: args.target_language,
163
- note: 'LLM API key not configured — returned content unchanged',
164
- }),
165
- }],
166
- };
167
- }
168
- const response = await (0, llm_1.callLLM)({
169
- model: defaults_1.LLM_MODEL_SECONDARY,
170
- messages: [
171
- {
172
- role: 'system',
173
- content: (0, prompts_1.TRANSLATE_SYSTEM_PROMPT)(args.target_language),
174
- },
175
- { role: 'user', content: args.content },
176
- ],
177
- max_tokens: defaults_1.LLM_MAX_TOKENS_VISION,
178
- });
179
- const raw = response.content || '';
180
- try {
181
- const cleaned = raw.replace(/^```json\n?|\n?```$/g, '').trim();
182
- const parsed = JSON.parse(cleaned);
183
- return {
184
- content: [{
185
- type: 'text',
186
- text: JSON.stringify({
187
- translated_content: parsed.translated_content || args.content,
188
- source_language: parsed.source_language || 'unknown',
189
- target_language: args.target_language,
190
- }),
191
- }],
192
- };
193
- }
194
- catch {
195
- return {
196
- content: [{
197
- type: 'text',
198
- text: JSON.stringify({
199
- translated_content: raw,
200
- source_language: 'unknown',
201
- target_language: args.target_language,
202
- }),
203
- }],
204
- };
205
- }
206
- });
207
- }
208
- /**
209
- * Create the Document Vision MCP server.
210
- *
211
- * Returns a fresh McpServer instance each time. The MCP SDK only allows
212
- * one transport per server, so each consumer (triage activities, pipeline
213
- * workers, tests) needs its own instance to avoid "already connected" errors.
214
- */
215
- async function createVisionServer(options) {
216
- const name = options?.name || 'long-tail-document-vision';
217
- const instance = new mcp_js_1.McpServer({ name, version: '1.0.0' });
218
- registerTools(instance);
219
- logger_1.loggerRegistry.info(`[lt-mcp:vision-server] ${name} ready (3 tools registered)`);
220
- return instance;
221
- }
222
- /**
223
- * Stop a Vision MCP server instance and release resources.
224
- */
225
- async function stopVisionServer() {
226
- // No-op — instances are now independent and cleaned up by their callers
227
- logger_1.loggerRegistry.info('[lt-mcp:vision-server] stopped');
228
- }
@@ -1,4 +0,0 @@
1
- /**
2
- * Build the translation system prompt for the given target language.
3
- */
4
- export declare function TRANSLATE_SYSTEM_PROMPT(targetLanguage: string): string;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- // ── Document Vision prompts ─────────────────────────────────────────────────
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.TRANSLATE_SYSTEM_PROMPT = TRANSLATE_SYSTEM_PROMPT;
5
- /**
6
- * Build the translation system prompt for the given target language.
7
- */
8
- function TRANSLATE_SYSTEM_PROMPT(targetLanguage) {
9
- return `You are a translation assistant. Translate the user's text to ${targetLanguage}. Return ONLY a JSON object: {"translated_content": "...", "source_language": "detected ISO code"}. No markdown, no explanation.`;
10
- }
@@ -1,2 +0,0 @@
1
- import{j as e}from"./vendor-query-B2UbickB.js";import{c}from"./tasks-tRqClPns.js";import{m}from"./index-D8VH6K8B.js";import{d as o}from"./useNatsEvents-Xr43X1fG.js";import{u as d}from"./mcp-blCW6IL7.js";import"./vendor-react-Cw8Gy8NJ.js";import"./vendor-icons-ZTAKVwGc.js";function x({title:l,subtitle:a,stats:s,actions:i}){return e.jsxs("div",{className:"flex items-baseline justify-between mb-10",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("h1",{className:"text-3xl font-light text-text-primary",children:l}),a&&e.jsx("span",{className:"text-sm text-text-tertiary font-light",children:a})]}),e.jsxs("div",{className:"flex items-center gap-5",children:[s==null?void 0:s.map(t=>e.jsxs("div",{className:"flex items-center gap-1.5 text-xs text-text-tertiary",children:[t.dotClass&&e.jsx("span",{className:`w-1.5 h-1.5 rounded-full ${t.dotClass}`}),e.jsx("span",{children:t.label}),e.jsx("span",{className:"font-medium text-text-secondary",children:t.value})]},t.label)),i&&e.jsx("div",{className:"flex items-center gap-3",children:i})]})]})}function g(){var n;o();const{data:l}=c({limit:1}),{data:a}=m({status:"pending",limit:1}),{data:s}=d(),i=((n=s==null?void 0:s.servers)==null?void 0:n.filter(r=>r.status==="connected").length)??0,t=s?`${i}/${s.total}`:"—";return e.jsx("div",{children:e.jsx(x,{title:"Admin",stats:[{label:"Tasks",value:(l==null?void 0:l.total)??"—"},{label:"Pending Escalations",value:(a==null?void 0:a.total)??"—",dotClass:"bg-status-pending"},{label:"MCP Servers",value:t},{label:"System",value:"Healthy",dotClass:"bg-status-success"}]})})}export{g as AdminDashboard};
2
- //# sourceMappingURL=AdminDashboard-jfacvOC7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdminDashboard-jfacvOC7.js","sources":["../../src/components/common/layout/PageHeaderWithStats.tsx","../../src/pages/admin/AdminDashboard.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport interface InlineStat {\n label: string;\n value: string | number;\n dotClass?: string;\n}\n\ninterface PageHeaderWithStatsProps {\n title: string;\n subtitle?: string;\n stats?: InlineStat[];\n actions?: ReactNode;\n}\n\nexport function PageHeaderWithStats({\n title,\n subtitle,\n stats,\n actions,\n}: PageHeaderWithStatsProps) {\n return (\n <div className=\"flex items-baseline justify-between mb-10\">\n <div className=\"flex items-center gap-4\">\n <h1 className=\"text-3xl font-light text-text-primary\">{title}</h1>\n {subtitle && (\n <span className=\"text-sm text-text-tertiary font-light\">{subtitle}</span>\n )}\n </div>\n <div className=\"flex items-center gap-5\">\n {stats?.map((s) => (\n <div key={s.label} className=\"flex items-center gap-1.5 text-xs text-text-tertiary\">\n {s.dotClass && <span className={`w-1.5 h-1.5 rounded-full ${s.dotClass}`} />}\n <span>{s.label}</span>\n <span className=\"font-medium text-text-secondary\">{s.value}</span>\n </div>\n ))}\n {actions && <div className=\"flex items-center gap-3\">{actions}</div>}\n </div>\n </div>\n );\n}\n","import { useTasks } from '../../api/tasks';\nimport { useEscalations } from '../../api/escalations';\nimport { useEscalationListEvents } from '../../hooks/useNatsEvents';\nimport { useMcpServers } from '../../api/mcp';\nimport { PageHeaderWithStats } from '../../components/common/layout/PageHeaderWithStats';\n\nexport function AdminDashboard() {\n useEscalationListEvents();\n const { data: taskData } = useTasks({ limit: 1 });\n const { data: pendingEsc } = useEscalations({ status: 'pending', limit: 1 });\n const { data: mcpData } = useMcpServers();\n\n const connectedServers =\n mcpData?.servers?.filter((s) => s.status === 'connected').length ?? 0;\n const mcpLabel = mcpData ? `${connectedServers}/${mcpData.total}` : '—';\n\n return (\n <div>\n <PageHeaderWithStats\n title=\"Admin\"\n stats={[\n { label: 'Tasks', value: taskData?.total ?? '—' },\n { label: 'Pending Escalations', value: pendingEsc?.total ?? '—', dotClass: 'bg-status-pending' },\n { label: 'MCP Servers', value: mcpLabel },\n { label: 'System', value: 'Healthy', dotClass: 'bg-status-success' },\n ]}\n />\n </div>\n );\n}\n"],"names":["PageHeaderWithStats","title","subtitle","stats","actions","jsxs","jsx","s","AdminDashboard","useEscalationListEvents","taskData","useTasks","pendingEsc","useEscalations","mcpData","useMcpServers","connectedServers","_a","mcpLabel"],"mappings":"iRAeO,SAASA,EAAoB,CAClC,MAAAC,EACA,SAAAC,EACA,MAAAC,EACA,QAAAC,CACF,EAA6B,CAC3B,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAU,4CACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,wCAAyC,SAAAL,EAAM,EAC5DC,GACCI,EAAAA,IAAC,OAAA,CAAK,UAAU,wCAAyC,SAAAJ,CAAA,CAAS,CAAA,EAEtE,EACAG,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAAF,GAAA,YAAAA,EAAO,IAAKI,GACXF,EAAAA,KAAC,MAAA,CAAkB,UAAU,uDAC1B,SAAA,CAAAE,EAAE,UAAYD,MAAC,OAAA,CAAK,UAAW,4BAA4BC,EAAE,QAAQ,GAAI,EAC1ED,EAAAA,IAAC,OAAA,CAAM,SAAAC,EAAE,KAAA,CAAM,EACfD,EAAAA,IAAC,OAAA,CAAK,UAAU,kCAAmC,WAAE,KAAA,CAAM,CAAA,GAHnDC,EAAE,KAIZ,GAEDH,GAAWE,EAAAA,IAAC,MAAA,CAAI,UAAU,0BAA2B,SAAAF,CAAA,CAAQ,CAAA,CAAA,CAChE,CAAA,EACF,CAEJ,CCnCO,SAASI,GAAiB,OAC/BC,EAAA,EACA,KAAM,CAAE,KAAMC,CAAA,EAAaC,EAAS,CAAE,MAAO,EAAG,EAC1C,CAAE,KAAMC,CAAA,EAAeC,EAAe,CAAE,OAAQ,UAAW,MAAO,EAAG,EACrE,CAAE,KAAMC,CAAA,EAAYC,EAAA,EAEpBC,IACJC,EAAAH,GAAA,YAAAA,EAAS,UAAT,YAAAG,EAAkB,OAAQV,GAAMA,EAAE,SAAW,aAAa,SAAU,EAChEW,EAAWJ,EAAU,GAAGE,CAAgB,IAAIF,EAAQ,KAAK,GAAK,IAEpE,aACG,MAAA,CACC,SAAAR,EAAAA,IAACN,EAAA,CACC,MAAM,QACN,MAAO,CACL,CAAE,MAAO,QAAS,OAAOU,GAAA,YAAAA,EAAU,QAAS,GAAA,EAC5C,CAAE,MAAO,sBAAuB,OAAOE,GAAA,YAAAA,EAAY,QAAS,IAAK,SAAU,mBAAA,EAC3E,CAAE,MAAO,cAAe,MAAOM,CAAA,EAC/B,CAAE,MAAO,SAAU,MAAO,UAAW,SAAU,mBAAA,CAAoB,CACrE,CAAA,EAEJ,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{j as e,a as l}from"./vendor-query-B2UbickB.js";import{f as q,c as le,g as oe,h as re,i as ce,j as de,k as ue,l as me,m as xe}from"./index-D8VH6K8B.js";import{d as ge}from"./useNatsEvents-Xr43X1fG.js";import{u as he}from"./roles-ZNrqqnQl.js";import{u as pe}from"./useFilterParams-BaXUAkYK.js";import{D as fe}from"./DataTable-BDn1WBHS.js";import{S as be}from"./StickyPagination-F9FZsRy9.js";import{M as D}from"./Modal-B4rbIVAn.js";import{P as ye}from"./PageHeader-CpWFly5S.js";import{P as je}from"./constants-CgaZfe5d.js";import{u as H,C as G}from"./CustomDurationPicker-CAninCbl.js";import{u as Ce}from"./users-tMvNyOo8.js";import{E as ve,a as Se}from"./escalation-columns-D6aqStaY.js";import{R as ke,a as Ne}from"./RowActions-Dg-Fsm5O.js";import{m as Pe}from"./vendor-icons-ZTAKVwGc.js";import{b as we}from"./vendor-react-Cw8Gy8NJ.js";import"./EmptyState-2CmV-IaS.js";import"./settings-eBRSE0mQ.js";import"./FilterBar-Ck4K4rzu.js";import"./PriorityBadge-DfQY9St9.js";import"./RolePill-BTPa8L-P.js";import"./WorkflowPill-CCDSVaQj.js";import"./TimestampCell-DoWMKg6w.js";import"./TimeAgo-UPG6DoH8.js";import"./format-gXZXQ-HJ.js";import"./escalation-qalymbKB.js";const Ae=s=>s.isPriorityPending||s.isClaimPending||s.isAssignPending||s.isEscalatePending||s.isTriagePending;function Ee(s){const i=Ae(s),d=H();return e.jsxs("div",{className:"flex flex-wrap items-center gap-3 px-4 py-3 bg-accent/5 border border-accent/20 rounded-lg mb-4",children:[e.jsxs("span",{className:"text-xs font-medium text-accent",children:[s.selectedCount," selected"]}),e.jsx("div",{className:"w-px h-5 bg-surface-border"}),e.jsxs("select",{onChange:t=>{t.target.value&&(s.onSetPriority(parseInt(t.target.value)),t.target.value="")},disabled:i,className:"select text-xs py-1.5",defaultValue:"",children:[e.jsx("option",{value:"",disabled:!0,children:"Priority..."}),je.map(t=>e.jsx("option",{value:t.value,children:t.label},t.value))]}),e.jsxs("select",{onChange:t=>{t.target.value&&(s.onClaim(parseInt(t.target.value)),t.target.value="")},disabled:i,className:"select text-xs py-1.5",defaultValue:"",children:[e.jsx("option",{value:"",disabled:!0,children:"Claim for..."}),d.map(t=>e.jsx("option",{value:t.value,children:t.label},t.value))]}),e.jsx("button",{onClick:s.onAssign,disabled:i,className:"btn-secondary text-xs py-1.5",children:s.isAssignPending?"Assigning...":"Assign to..."}),s.availableRoles.length>0&&e.jsxs("select",{onChange:t=>{t.target.value&&(s.onEscalate(t.target.value),t.target.value="")},disabled:i,className:"select text-xs py-1.5",defaultValue:"",children:[e.jsx("option",{value:"",disabled:!0,children:"Escalate to..."}),s.availableRoles.map(t=>e.jsx("option",{value:t,children:t},t))]}),e.jsx("button",{onClick:s.onTriage,disabled:i,className:"btn-secondary text-xs py-1.5",children:s.isTriagePending?"Triaging...":"Triage"}),e.jsx("div",{className:"flex-1"}),e.jsx("button",{onClick:s.onClearSelection,className:"text-xs text-text-tertiary hover:text-text-primary transition-colors",children:"Clear"}),i&&e.jsx("span",{className:"text-xs text-text-tertiary animate-pulse",children:"Processing..."})]})}function Te({open:s,onClose:i,selectedCount:d,selectedRoles:t,onSubmit:C,isPending:o}){const{isSuperAdmin:p}=q(),r=H(),[b,u]=l.useState("user"),[x,v]=l.useState(null),[k,_]=l.useState(""),[S,I]=l.useState("30"),[c,g]=l.useState(0),O=l.useCallback(n=>g(n),[]),E=!p&&t.length===1?t[0]:void 0,{data:y,isLoading:N}=Ce({role:E,status:"active",limit:200}),P=l.useMemo(()=>{const n=(y==null?void 0:y.users)??[];if(!k.trim())return n;const f=k.toLowerCase();return n.filter(w=>{var h,R;return((h=w.display_name)==null?void 0:h.toLowerCase().includes(f))||((R=w.email)==null?void 0:R.toLowerCase().includes(f))})},[y==null?void 0:y.users,k]),T=()=>{u("user"),v(null),_(""),I("30"),g(0),i()},z=n=>{v(n),u("duration")},B=()=>{u("user")},F=()=>{if(!x)return;const n=S==="custom"?c:parseInt(S);!n||n<=0||C(x.id,n)};return e.jsx(D,{open:s,onClose:T,title:"Assign Escalations",children:e.jsxs("div",{className:"space-y-4",children:[b==="user"&&e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"text-sm text-text-secondary",children:["Select a user to assign"," ",e.jsx("span",{className:"font-medium text-text-primary",children:d})," ","escalation(s) to:"]}),e.jsx("input",{type:"text",value:k,onChange:n=>_(n.target.value),placeholder:"Search by name or email...",className:"input text-xs w-full",autoFocus:!0}),e.jsxs("div",{className:"max-h-60 overflow-y-auto border border-surface-border rounded-lg divide-y divide-surface-border",children:[N&&e.jsx("p",{className:"text-xs text-text-tertiary p-3",children:"Loading users..."}),!N&&P.length===0&&e.jsx("p",{className:"text-xs text-text-tertiary p-3",children:"No users found"}),P.map(n=>e.jsxs("button",{onClick:()=>z(n),className:"w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors",children:[e.jsx("p",{className:"text-xs font-medium text-text-primary",children:n.display_name||n.external_id}),n.email&&e.jsx("p",{className:"text-[10px] text-text-tertiary",children:n.email})]},n.id))]}),e.jsx("div",{className:"flex justify-end pt-2",children:e.jsx("button",{onClick:T,className:"btn-secondary text-xs",children:"Cancel"})})]}),b==="duration"&&x&&e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"text-sm text-text-secondary",children:["Assign to"," ",e.jsx("span",{className:"font-medium text-text-primary",children:x.display_name||x.external_id})," ","for:"]}),e.jsxs("select",{value:S,onChange:n=>{I(n.target.value),g(0)},className:"select w-full text-sm",children:[r.map(n=>e.jsx("option",{value:n.value,children:n.label},n.value)),e.jsx("option",{value:"custom",children:"Other..."})]}),S==="custom"&&e.jsx(G,{onChange:O,autoFocus:!0}),e.jsxs("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsx("button",{onClick:B,className:"btn-secondary text-xs",children:"Back"}),e.jsx("button",{onClick:F,disabled:o,className:"btn-primary text-xs",children:o?"Assigning...":"Assign"})]})]})]})})}function Be({open:s,onClose:i,selectedCount:d,onSubmit:t,isPending:C}){const[o,p]=l.useState(""),r=()=>{t(o||void 0)};return e.jsx(D,{open:s,onClose:i,title:"Submit for AI Triage",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("p",{className:"text-sm text-text-secondary",children:["Submit ",e.jsx("span",{className:"font-medium text-text-primary",children:d})," escalation(s) for AI triage? The triage orchestrator will take over resolution."]}),e.jsxs("div",{children:[e.jsxs("label",{className:"text-xs font-medium text-text-secondary block mb-1",children:["Triage hint ",e.jsx("span",{className:"text-text-tertiary",children:"(optional)"})]}),e.jsx("input",{type:"text",value:o,onChange:b=>p(b.target.value),placeholder:"e.g., image_orientation",className:"input text-xs font-mono w-full"}),e.jsx("p",{className:"text-[10px] text-text-tertiary mt-1",children:"Guides the triage workflow on what remediation to apply"})]}),e.jsxs("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsx("button",{onClick:i,className:"btn-secondary text-xs",children:"Cancel"}),e.jsx("button",{onClick:r,disabled:C,className:"btn-primary text-xs",children:C?"Submitting...":"Submit for Triage"})]})]})})}function M(s,i,d){return t=>{s.mutate(t,{onSuccess:()=>{i(),d==null||d()}})}}function Me(s){const i=()=>[...s.selectedIds];return{handleSetPriority:r=>{M(s.setPriority,s.clearSelection)({ids:i(),priority:r})},handleBulkClaim:r=>{M(s.bulkClaim,s.clearSelection)({ids:i(),durationMinutes:r})},handleBulkEscalate:r=>{M(s.bulkEscalate,s.clearSelection)({ids:i(),targetRole:r})},handleBulkTriage:r=>{M(s.bulkTriage,s.clearSelection,s.closeTriageModal)({ids:i(),hint:r})},handleBulkAssign:(r,b)=>{M(s.bulkAssign,s.clearSelection,s.closeAssignModal)({ids:i(),targetUserId:r,durationMinutes:b})}}}function it(){ge();const s=we(),{user:i,isSuperAdmin:d}=q(),{filters:t,setFilter:C,pagination:o,sort:p,setSort:r}=pe({filters:{role:"",type:"",priority:"",status:"available"}}),b=H(),[u,x]=l.useState(null),[v,k]=l.useState("30"),[_,S]=l.useState(0),I=l.useCallback(a=>S(a),[]),[c,g]=l.useState(new Set),[O,E]=l.useState(!1),[y,N]=l.useState(!1),P=le(),T=oe(),z=re(),B=ce(),F=de(),n=ue(),{data:f}=he(),{data:w}=me();l.useEffect(()=>{g(new Set)},[t.role,t.type,t.priority,t.status,o.page,o.pageSize]);const h=t.status||"",R=h==="available"||h==="claimed"?"pending":h==="resolved"?"resolved":void 0,{data:A,isLoading:Y,error:L}=xe({status:R,role:t.role||void 0,type:t.type||void 0,priority:t.priority?parseInt(t.priority):void 0,limit:o.pageSize,offset:o.offset,sort_by:p.sort_by||void 0,order:p.sort_by?p.order:void 0}),V=new Date,U=(A==null?void 0:A.escalations)??[],j=h==="available"?U.filter(a=>!a.assigned_to||!a.assigned_until||new Date(a.assigned_until)<=V):h==="claimed"?U.filter(a=>a.assigned_to&&a.assigned_until&&new Date(a.assigned_until)>V):U,$=h==="available"||h==="claimed"?j.length:(A==null?void 0:A.total)??0,J=d||(i==null?void 0:i.roles.some(a=>a.type==="admin")),K=l.useMemo(()=>{const a=new Set;for(const m of j)c.has(m.id)&&a.add(m.role);return[...a]},[j,c]),Q=l.useCallback(()=>g(new Set),[]),W=()=>{if(!u)return;const a=v==="custom"?_:parseInt(v);!a||a<=0||P.mutate({id:u.id,durationMinutes:a},{onSuccess:()=>{x(null),s(`/escalations/detail/${u.id}`)}})},{handleSetPriority:X,handleBulkClaim:Z,handleBulkEscalate:ee,handleBulkTriage:te,handleBulkAssign:se}=Me({selectedIds:c,clearSelection:Q,setPriority:T,bulkClaim:z,bulkEscalate:F,bulkTriage:n,bulkAssign:B,closeTriageModal:()=>E(!1),closeAssignModal:()=>N(!1)}),ae=a=>{const m=new Set(c);m.has(a)?m.delete(a):m.add(a),g(m)},ne=()=>{c.size===j.length?g(new Set):g(new Set(j.map(a=>a.id)))},ie=[J?{key:"select",label:e.jsx("input",{type:"checkbox",checked:j.length>0&&c.size===j.length,onChange:ne,className:"rounded"}),render:a=>e.jsx("input",{type:"checkbox",checked:c.has(a.id),onChange:m=>{m.stopPropagation(),ae(a.id)},onClick:m=>m.stopPropagation(),className:"rounded"}),className:"w-10"}:{key:"spacer",label:"",render:()=>null,className:"w-10"},...ve,{key:"actions",label:"",render:a=>e.jsx(ke,{children:e.jsx(Ne,{icon:Pe,title:"Claim escalation",onClick:()=>x(a)})}),className:"w-16 text-right"}];return e.jsxs("div",{children:[e.jsx(ye,{title:"All Escalations"}),e.jsx(Se,{filters:t,setFilter:C,roles:(f==null?void 0:f.roles)??[],types:(w==null?void 0:w.types)??[],showStatus:!0}),c.size>0&&e.jsx(Ee,{selectedCount:c.size,onClearSelection:()=>g(new Set),onSetPriority:X,onClaim:Z,onAssign:()=>N(!0),onEscalate:ee,onTriage:()=>E(!0),isPriorityPending:T.isPending,isClaimPending:z.isPending,isAssignPending:B.isPending,isEscalatePending:F.isPending,isTriagePending:n.isPending,availableRoles:(f==null?void 0:f.roles)??[]}),L&&e.jsx("div",{className:"mb-4 px-4 py-3 rounded-md bg-status-error/10 border border-status-error/20 text-xs text-status-error",children:L.message==="Session expired"?"Your session has expired. Please log in again.":`Failed to load escalations: ${L.message}`}),e.jsx(fe,{columns:ie,data:j,keyFn:a=>a.id,onRowClick:a=>s(`/escalations/detail/${a.id}`,{state:{from:"/escalations/available"}}),isLoading:Y,emptyMessage:L?"Unable to load data":"No available escalations",sort:p,onSort:r}),e.jsx(be,{page:o.page,totalPages:o.totalPages($),onPageChange:o.setPage,total:$,pageSize:o.pageSize,onPageSizeChange:o.setPageSize}),e.jsx(D,{open:!!u,onClose:()=>x(null),title:"Claim Escalation",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("p",{className:"text-sm text-text-secondary",children:["Claim ",e.jsx("span",{className:"font-medium text-text-primary",children:u==null?void 0:u.type})," for:"]}),e.jsxs("select",{value:v,onChange:a=>{k(a.target.value),S(0)},className:"select w-full text-sm",children:[b.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value)),e.jsx("option",{value:"custom",children:"Other..."})]}),v==="custom"&&e.jsx(G,{onChange:I,autoFocus:!0}),e.jsxs("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsx("button",{onClick:()=>x(null),className:"btn-secondary text-xs",children:"Cancel"}),e.jsx("button",{onClick:W,className:"btn-primary text-xs",disabled:P.isPending,children:P.isPending?"Claiming...":"Claim"})]})]})}),e.jsx(Be,{open:O,onClose:()=>E(!1),selectedCount:c.size,onSubmit:te,isPending:n.isPending}),e.jsx(Te,{open:y,onClose:()=>N(!1),selectedCount:c.size,selectedRoles:K,onSubmit:se,isPending:B.isPending})]})}export{it as AvailableEscalationsPage};
2
- //# sourceMappingURL=AvailableEscalationsPage-BglLDoT8.js.map