@hotmeshio/long-tail 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (613) hide show
  1. package/README.md +1 -1
  2. package/build/examples/seed.js +1 -1
  3. package/build/examples/workflows/basic-echo/activities.d.ts +2 -2
  4. package/build/examples/workflows/basic-echo/activities.js +7 -7
  5. package/build/examples/workflows/basic-echo/index.js +1 -1
  6. package/build/examples/workflows/kitchen-sink/index.js +2 -2
  7. package/build/index.d.ts +11 -10
  8. package/build/index.js +13 -12
  9. package/build/lib/db/index.d.ts +18 -0
  10. package/build/{services → lib}/db/index.js +9 -0
  11. package/build/{services → lib}/db/migrate.js +3 -3
  12. package/build/{services → lib}/telemetry/honeycomb.d.ts +2 -2
  13. package/build/{services → lib}/telemetry/honeycomb.js +2 -2
  14. package/build/modules/defaults.d.ts +2 -0
  15. package/build/modules/defaults.js +3 -1
  16. package/build/routes/controlplane.js +1 -1
  17. package/build/routes/dba.js +4 -0
  18. package/build/routes/docs.d.ts +2 -0
  19. package/build/routes/docs.js +87 -0
  20. package/build/routes/escalations/bulk.js +120 -202
  21. package/build/routes/escalations/resolve.js +1 -1
  22. package/build/routes/escalations/single.js +1 -1
  23. package/build/routes/files.js +1 -1
  24. package/build/routes/index.js +2 -0
  25. package/build/routes/insight.js +2 -1
  26. package/build/routes/mcp.js +3 -2
  27. package/build/routes/oauth.js +1 -1
  28. package/build/routes/settings.js +4 -4
  29. package/build/routes/workflows/discovery.js +3 -3
  30. package/build/routes/workflows/invocation.js +1 -1
  31. package/build/routes/yaml-workflows/crud.js +1 -1
  32. package/build/routes/yaml-workflows/deployment.js +25 -0
  33. package/build/services/auth/bot-api-key.js +1 -1
  34. package/build/services/auth/index.d.ts +4 -0
  35. package/build/services/auth/index.js +17 -0
  36. package/build/services/auth/service-token.js +1 -1
  37. package/build/services/config/provider.js +1 -1
  38. package/build/services/config/read.js +1 -1
  39. package/build/services/config/write.js +1 -1
  40. package/build/services/controlplane/index.js +3 -4
  41. package/build/services/controlplane/quorum-bridge.js +2 -2
  42. package/build/services/cron/index.js +4 -5
  43. package/build/services/dba.d.ts +4 -0
  44. package/build/services/dba.js +3 -6
  45. package/build/services/escalation/bulk.js +1 -1
  46. package/build/services/escalation/crud.js +1 -1
  47. package/build/services/escalation/queries.js +1 -1
  48. package/build/services/export/client.js +2 -5
  49. package/build/services/export/index.js +14 -2
  50. package/build/services/hotmesh-utils.js +1 -1
  51. package/build/services/iam/bots.js +6 -12
  52. package/build/services/iam/context.d.ts +1 -1
  53. package/build/services/iam/context.js +5 -5
  54. package/build/services/iam/credentials.js +1 -1
  55. package/build/services/iam/ephemeral.js +8 -15
  56. package/build/services/iam/principal.js +3 -10
  57. package/build/services/iam/resolve.js +1 -1
  58. package/build/services/iam/sql.d.ts +10 -0
  59. package/build/services/iam/sql.js +42 -0
  60. package/build/services/insight/index.d.ts +1 -0
  61. package/build/services/insight/index.js +4 -6
  62. package/build/services/interceptor/activities/escalation.js +1 -1
  63. package/build/services/interceptor/activities/task.js +9 -6
  64. package/build/services/interceptor/activities/workflow.js +4 -5
  65. package/build/services/interceptor/activity-interceptor.d.ts +1 -1
  66. package/build/services/interceptor/activity-interceptor.js +5 -5
  67. package/build/services/interceptor/completion.js +1 -1
  68. package/build/services/interceptor/escalation.js +1 -1
  69. package/build/services/interceptor/index.js +4 -4
  70. package/build/services/interceptor/lifecycle.js +1 -1
  71. package/build/services/maintenance/index.js +4 -5
  72. package/build/services/mcp/adapter.js +1 -16
  73. package/build/services/mcp/client/connection.d.ts +1 -1
  74. package/build/services/mcp/client/connection.js +2 -2
  75. package/build/services/mcp/client/tools.js +1 -1
  76. package/build/services/mcp/db-server/index.js +1 -1
  77. package/build/services/mcp/db-server/tools.js +17 -4
  78. package/build/services/mcp/db.js +1 -1
  79. package/build/services/mcp/playwright-server/index.js +1 -1
  80. package/build/services/mcp/playwright-server/lifecycle.js +1 -1
  81. package/build/services/mcp/playwright-server/schemas.d.ts +2 -2
  82. package/build/services/mcp/playwright-server/tools.js +1 -1
  83. package/build/services/mcp/server.js +1 -1
  84. package/build/services/mcp/sql.d.ts +6 -0
  85. package/build/services/mcp/sql.js +34 -1
  86. package/build/services/mcp/workflow-compiler-server.js +1 -1
  87. package/build/services/mcp/workflow-server.js +1 -1
  88. package/build/services/mcp-runs/execution-builder.js +8 -6
  89. package/build/services/mcp-runs/queries.js +2 -2
  90. package/build/services/mcp-runs/sql.d.ts +4 -1
  91. package/build/services/mcp-runs/sql.js +23 -2
  92. package/build/services/namespace/index.js +1 -1
  93. package/build/services/oauth/db.js +9 -37
  94. package/build/services/oauth/index.js +1 -1
  95. package/build/services/oauth/providers/registry.js +1 -1
  96. package/build/services/oauth/sql.d.ts +7 -0
  97. package/build/services/oauth/sql.js +32 -0
  98. package/build/services/orchestrator/index.js +3 -3
  99. package/build/services/role/index.js +1 -1
  100. package/build/services/task/crud.js +1 -1
  101. package/build/services/task/process.js +1 -1
  102. package/build/services/task/resolve.js +1 -1
  103. package/build/services/user/auth.js +1 -1
  104. package/build/services/user/crud.js +1 -1
  105. package/build/services/user/rbac.js +1 -1
  106. package/build/services/user/roles.js +1 -1
  107. package/build/services/user/sql.d.ts +2 -0
  108. package/build/services/user/sql.js +3 -1
  109. package/build/services/yaml-workflow/db-utils.js +1 -1
  110. package/build/services/yaml-workflow/db.js +1 -1
  111. package/build/services/yaml-workflow/deployer-helpers.js +1 -1
  112. package/build/services/yaml-workflow/deployer.js +4 -4
  113. package/build/services/yaml-workflow/generator.js +1 -1
  114. package/build/services/yaml-workflow/input-analyzer-helpers.d.ts +6 -0
  115. package/build/services/yaml-workflow/input-analyzer-helpers.js +36 -7
  116. package/build/services/yaml-workflow/input-analyzer.js +16 -3
  117. package/build/services/yaml-workflow/pipeline/analyze.js +1 -1
  118. package/build/services/yaml-workflow/pipeline/build/dag.js +10 -5
  119. package/build/services/yaml-workflow/pipeline/compile/llm-call.js +1 -1
  120. package/build/services/yaml-workflow/pipeline/extract.js +5 -3
  121. package/build/services/yaml-workflow/pipeline/index.d.ts +5 -0
  122. package/build/services/yaml-workflow/pipeline/index.js +22 -0
  123. package/build/services/yaml-workflow/pipeline/validate.js +2 -2
  124. package/build/services/yaml-workflow/workers/callbacks.js +1 -1
  125. package/build/services/yaml-workflow/workers/events.js +2 -2
  126. package/build/services/yaml-workflow/workers/register.js +8 -8
  127. package/build/start/adapters.js +7 -7
  128. package/build/start/index.js +4 -4
  129. package/build/start/server.js +1 -1
  130. package/build/start/workers.d.ts +1 -2
  131. package/build/start/workers.js +8 -7
  132. package/build/system/activities/claude-code.js +1 -1
  133. package/build/system/activities/file-storage.js +1 -1
  134. package/build/system/activities/knowledge.d.ts +58 -0
  135. package/build/system/activities/knowledge.js +128 -0
  136. package/build/system/activities/sql.d.ts +9 -0
  137. package/build/system/activities/sql.js +41 -0
  138. package/build/system/activities/triage/context.js +1 -1
  139. package/build/system/activities/triage/discovery.d.ts +2 -14
  140. package/build/system/activities/triage/discovery.js +5 -161
  141. package/build/system/activities/triage/llm.d.ts +1 -8
  142. package/build/system/activities/triage/llm.js +2 -28
  143. package/build/system/activities/triage/tools.d.ts +1 -17
  144. package/build/system/activities/triage/tools.js +8 -167
  145. package/build/system/index.js +5 -4
  146. package/build/system/mcp-servers/admin/escalations.d.ts +5 -0
  147. package/build/system/mcp-servers/admin/escalations.js +149 -0
  148. package/build/system/mcp-servers/admin/index.d.ts +31 -0
  149. package/build/system/mcp-servers/admin/index.js +80 -0
  150. package/build/system/mcp-servers/admin/maintenance.d.ts +5 -0
  151. package/build/system/mcp-servers/admin/maintenance.js +58 -0
  152. package/build/system/mcp-servers/admin/mcp-servers.d.ts +5 -0
  153. package/build/system/mcp-servers/admin/mcp-servers.js +146 -0
  154. package/build/system/mcp-servers/admin/schemas.d.ts +411 -0
  155. package/build/system/mcp-servers/admin/schemas.js +177 -0
  156. package/build/system/mcp-servers/admin/tasks.d.ts +5 -0
  157. package/build/system/mcp-servers/admin/tasks.js +112 -0
  158. package/build/system/mcp-servers/admin/users.d.ts +5 -0
  159. package/build/system/mcp-servers/admin/users.js +167 -0
  160. package/build/system/mcp-servers/admin/workflow-config.d.ts +9 -0
  161. package/build/system/mcp-servers/admin/workflow-config.js +118 -0
  162. package/build/system/mcp-servers/admin/workflows.d.ts +6 -0
  163. package/build/system/mcp-servers/admin/workflows.js +138 -0
  164. package/build/system/mcp-servers/admin/yaml-workflows.d.ts +8 -0
  165. package/build/system/mcp-servers/admin/yaml-workflows.js +237 -0
  166. package/build/system/mcp-servers/claude-code.js +1 -1
  167. package/build/system/mcp-servers/db-query/index.js +1 -1
  168. package/build/system/mcp-servers/db-query/tools.js +17 -4
  169. package/build/system/mcp-servers/docs.d.ts +5 -0
  170. package/build/system/mcp-servers/docs.js +147 -0
  171. package/build/system/mcp-servers/file-storage.js +1 -1
  172. package/build/system/mcp-servers/http-fetch.js +1 -1
  173. package/build/system/mcp-servers/human-queue.js +1 -1
  174. package/build/system/mcp-servers/knowledge.d.ts +4 -0
  175. package/build/system/mcp-servers/knowledge.js +137 -0
  176. package/build/system/mcp-servers/oauth.js +1 -1
  177. package/build/system/mcp-servers/playwright/browser-lifecycle.js +1 -1
  178. package/build/system/mcp-servers/playwright/index.js +1 -1
  179. package/build/system/mcp-servers/playwright/schemas.d.ts +19 -8
  180. package/build/system/mcp-servers/playwright/schemas.js +3 -0
  181. package/build/system/mcp-servers/playwright/tools-navigation.js +22 -9
  182. package/build/system/mcp-servers/playwright/tools-run-script.js +20 -3
  183. package/build/system/mcp-servers/playwright/vision-helper.d.ts +12 -0
  184. package/build/system/mcp-servers/playwright/vision-helper.js +81 -0
  185. package/build/system/mcp-servers/playwright-cli/helpers.js +2 -2
  186. package/build/system/mcp-servers/playwright-cli/index.js +1 -1
  187. package/build/system/mcp-servers/playwright-cli/schemas.d.ts +28 -28
  188. package/build/system/mcp-servers/playwright-cli/schemas.js +1 -1
  189. package/build/system/mcp-servers/playwright-cli/tools-auth.js +1 -1
  190. package/build/system/mcp-servers/playwright-cli/tools-capture.js +4 -2
  191. package/build/system/mcp-servers/translation.d.ts +14 -0
  192. package/build/system/mcp-servers/translation.js +130 -0
  193. package/build/system/mcp-servers/vision-prompts.d.ts +2 -0
  194. package/build/system/mcp-servers/vision-prompts.js +9 -0
  195. package/build/system/mcp-servers/{document-vision.d.ts → vision.d.ts} +3 -4
  196. package/build/system/mcp-servers/vision.js +221 -0
  197. package/build/system/mcp-servers/workflow-compiler.js +1 -1
  198. package/build/system/mcp-servers/workflow.js +1 -1
  199. package/build/system/seed/index.js +13 -2
  200. package/build/system/seed/server-definitions.d.ts +1954 -322
  201. package/build/system/seed/server-definitions.js +65 -34
  202. package/build/system/seed/tool-manifests-admin.d.ts +1645 -0
  203. package/build/system/seed/tool-manifests-admin.js +45 -0
  204. package/build/system/seed/tool-manifests-browser.d.ts +1 -1
  205. package/build/system/seed/tool-manifests-browser.js +3 -3
  206. package/build/system/seed/tool-manifests-data.d.ts +62 -21
  207. package/build/system/seed/tool-manifests-data.js +55 -17
  208. package/build/system/seed/tool-manifests-knowledge.d.ts +171 -0
  209. package/build/system/seed/tool-manifests-knowledge.js +94 -0
  210. package/build/system/workflows/mcp-deterministic/index.js +1 -1
  211. package/build/system/workflows/mcp-query/activities/discovery.d.ts +2 -20
  212. package/build/system/workflows/mcp-query/activities/discovery.js +5 -163
  213. package/build/system/workflows/mcp-query/activities/llm.d.ts +1 -7
  214. package/build/system/workflows/mcp-query/activities/llm.js +2 -27
  215. package/build/system/workflows/mcp-query/activities/tool-executor.d.ts +0 -4
  216. package/build/system/workflows/mcp-query/activities/tool-executor.js +2 -106
  217. package/build/system/workflows/mcp-query/activities/tool-loader.d.ts +0 -9
  218. package/build/system/workflows/mcp-query/activities/tool-loader.js +2 -87
  219. package/build/system/workflows/mcp-query/index.js +55 -5
  220. package/build/system/workflows/mcp-query/prompts.d.ts +1 -2
  221. package/build/system/workflows/mcp-query/prompts.js +5 -32
  222. package/build/system/workflows/mcp-query/strategy-advisors.d.ts +3 -14
  223. package/build/system/workflows/mcp-query/strategy-advisors.js +4 -107
  224. package/build/system/workflows/mcp-query/types.d.ts +2 -10
  225. package/build/system/workflows/mcp-query/types.js +0 -1
  226. package/build/system/workflows/mcp-query-router/index.js +1 -1
  227. package/build/system/workflows/mcp-triage/index.d.ts +2 -2
  228. package/build/system/workflows/mcp-triage/index.js +39 -7
  229. package/build/system/workflows/mcp-triage/prompts.js +7 -14
  230. package/build/system/workflows/mcp-triage-deterministic/index.js +1 -1
  231. package/build/system/workflows/mcp-triage-router/index.js +1 -1
  232. package/build/system/workflows/shared/discovery.d.ts +35 -0
  233. package/build/system/workflows/shared/discovery.js +175 -0
  234. package/build/system/workflows/shared/index.d.ts +7 -0
  235. package/build/system/workflows/shared/index.js +18 -0
  236. package/build/system/workflows/shared/llm-caller.d.ts +8 -0
  237. package/build/system/workflows/shared/llm-caller.js +31 -0
  238. package/build/system/workflows/shared/prompts.d.ts +2 -0
  239. package/build/system/workflows/shared/prompts.js +32 -0
  240. package/build/system/workflows/shared/strategy-advisors.d.ts +14 -0
  241. package/build/system/workflows/shared/strategy-advisors.js +109 -0
  242. package/build/system/workflows/shared/tool-executor.d.ts +11 -0
  243. package/build/system/workflows/shared/tool-executor.js +111 -0
  244. package/build/system/workflows/shared/tool-loader.d.ts +19 -0
  245. package/build/system/workflows/shared/tool-loader.js +94 -0
  246. package/build/system/workflows/shared/types.d.ts +9 -0
  247. package/build/system/workflows/shared/types.js +2 -0
  248. package/build/system/workflows/tool-result-guard.d.ts +14 -0
  249. package/build/system/workflows/tool-result-guard.js +78 -0
  250. package/build/tsconfig.tsbuildinfo +1 -1
  251. package/build/types/user.d.ts +2 -0
  252. package/build/vitest.config.d.ts +1 -1
  253. package/build/vitest.integration.config.d.ts +1 -1
  254. package/build/workers/index.js +2 -8
  255. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +2 -0
  256. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js.map +1 -0
  257. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +2 -0
  258. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +1 -0
  259. package/dashboard/dist/assets/BotPicker-C51nKFEu.js +2 -0
  260. package/dashboard/dist/assets/{BotPicker-D6FYW1Gt.js.map → BotPicker-C51nKFEu.js.map} +1 -1
  261. package/dashboard/dist/assets/CollapsibleSection-BSyfd8uL.js +2 -0
  262. package/dashboard/dist/assets/{CollapsibleSection-Cxk4wvjT.js.map → CollapsibleSection-BSyfd8uL.js.map} +1 -1
  263. package/dashboard/dist/assets/ConfirmDeleteModal-CBdhia5T.js +2 -0
  264. package/dashboard/dist/assets/{ConfirmDeleteModal-FSXyKjaB.js.map → ConfirmDeleteModal-CBdhia5T.js.map} +1 -1
  265. package/dashboard/dist/assets/CopyableId-dGlewBCS.js +2 -0
  266. package/dashboard/dist/assets/{CopyableId-CBdxWfp8.js.map → CopyableId-dGlewBCS.js.map} +1 -1
  267. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +2 -0
  268. package/dashboard/dist/assets/{CredentialsPage-Ikzsot0w.js.map → CredentialsPage-CoBNFSAu.js.map} +1 -1
  269. package/dashboard/dist/assets/CustomDurationPicker-BataWFj8.js +2 -0
  270. package/dashboard/dist/assets/{CustomDurationPicker-CAninCbl.js.map → CustomDurationPicker-BataWFj8.js.map} +1 -1
  271. package/dashboard/dist/assets/DataTable-B3uf5CCo.js +2 -0
  272. package/dashboard/dist/assets/DataTable-B3uf5CCo.js.map +1 -0
  273. package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js +2 -0
  274. package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js.map +1 -0
  275. package/dashboard/dist/assets/EmptyState-BChBJNGS.js +2 -0
  276. package/dashboard/dist/assets/{EmptyState-2CmV-IaS.js.map → EmptyState-BChBJNGS.js.map} +1 -1
  277. package/dashboard/dist/assets/EscalationsOverview-CxUv8xjG.js +2 -0
  278. package/dashboard/dist/assets/{EscalationsOverview-GXYFPASS.js.map → EscalationsOverview-CxUv8xjG.js.map} +1 -1
  279. package/dashboard/dist/assets/EventTable-CVt8B0BZ.js +2 -0
  280. package/dashboard/dist/assets/{EventTable-B01oJf6Y.js.map → EventTable-CVt8B0BZ.js.map} +1 -1
  281. package/dashboard/dist/assets/FilterBar-CShf0oe7.js +2 -0
  282. package/dashboard/dist/assets/{FilterBar-Ck4K4rzu.js.map → FilterBar-CShf0oe7.js.map} +1 -1
  283. package/dashboard/dist/assets/McpOverview-CbaZRnJl.js +2 -0
  284. package/dashboard/dist/assets/{McpOverview-JkvRcX2e.js.map → McpOverview-CbaZRnJl.js.map} +1 -1
  285. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +5 -0
  286. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +1 -0
  287. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +2 -0
  288. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +1 -0
  289. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +2 -0
  290. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +1 -0
  291. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +2 -0
  292. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +1 -0
  293. package/dashboard/dist/assets/Modal-CI5RBPOQ.js +2 -0
  294. package/dashboard/dist/assets/{Modal-B4rbIVAn.js.map → Modal-CI5RBPOQ.js.map} +1 -1
  295. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +2 -0
  296. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +1 -0
  297. package/dashboard/dist/assets/PageHeader-SMD9qtOO.js +2 -0
  298. package/dashboard/dist/assets/PageHeader-SMD9qtOO.js.map +1 -0
  299. package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js +2 -0
  300. package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js.map +1 -0
  301. package/dashboard/dist/assets/PriorityBadge-CQ0EsLTA.js +2 -0
  302. package/dashboard/dist/assets/{PriorityBadge-DfQY9St9.js.map → PriorityBadge-CQ0EsLTA.js.map} +1 -1
  303. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +2 -0
  304. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +1 -0
  305. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +2 -0
  306. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +1 -0
  307. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +2 -0
  308. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +1 -0
  309. package/dashboard/dist/assets/RolePill-Crj4TH5p.js +2 -0
  310. package/dashboard/dist/assets/{RolePill-BTPa8L-P.js.map → RolePill-Crj4TH5p.js.map} +1 -1
  311. package/dashboard/dist/assets/RolesPage-C_RInUwS.js +2 -0
  312. package/dashboard/dist/assets/RolesPage-C_RInUwS.js.map +1 -0
  313. package/dashboard/dist/assets/RowActions-Cp5HyK_w.js +2 -0
  314. package/dashboard/dist/assets/{RowActions-Dg-Fsm5O.js.map → RowActions-Cp5HyK_w.js.map} +1 -1
  315. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +2 -0
  316. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +1 -0
  317. package/dashboard/dist/assets/StatCard-BKZLSgNV.js +2 -0
  318. package/dashboard/dist/assets/{StatCard-DlgF0CJC.js.map → StatCard-BKZLSgNV.js.map} +1 -1
  319. package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js +2 -0
  320. package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js.map +1 -0
  321. package/dashboard/dist/assets/StickyPagination-CTosgiU2.js +2 -0
  322. package/dashboard/dist/assets/{StickyPagination-F9FZsRy9.js.map → StickyPagination-CTosgiU2.js.map} +1 -1
  323. package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js +2 -0
  324. package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js.map +1 -0
  325. package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js +2 -0
  326. package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js.map +1 -0
  327. package/dashboard/dist/assets/TaskQueuePill-BtJbZTT0.js +2 -0
  328. package/dashboard/dist/assets/{TaskQueuePill-awmtb0qw.js.map → TaskQueuePill-BtJbZTT0.js.map} +1 -1
  329. package/dashboard/dist/assets/TasksListPage-DtFLUEhg.js +2 -0
  330. package/dashboard/dist/assets/{TasksListPage-C_QF23c1.js.map → TasksListPage-DtFLUEhg.js.map} +1 -1
  331. package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js +2 -0
  332. package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js.map +1 -0
  333. package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js +2 -0
  334. package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js.map +1 -0
  335. package/dashboard/dist/assets/UserName-DU9qeg13.js +2 -0
  336. package/dashboard/dist/assets/{UserName-DaP4YAKr.js.map → UserName-DU9qeg13.js.map} +1 -1
  337. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +2 -0
  338. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +1 -0
  339. package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js +2 -0
  340. package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js.map +1 -0
  341. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +2 -0
  342. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +1 -0
  343. package/dashboard/dist/assets/WorkflowsOverview-CPuvA4t3.js +2 -0
  344. package/dashboard/dist/assets/{WorkflowsOverview-D9OzzQqw.js.map → WorkflowsOverview-CPuvA4t3.js.map} +1 -1
  345. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +2 -0
  346. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +1 -0
  347. package/dashboard/dist/assets/{bots-BkKVMbUW.js → bots-BPiZXf2h.js} +2 -2
  348. package/dashboard/dist/assets/{bots-BkKVMbUW.js.map → bots-BPiZXf2h.js.map} +1 -1
  349. package/dashboard/dist/assets/constants-BHkpVaqx.js +2 -0
  350. package/dashboard/dist/assets/constants-BHkpVaqx.js.map +1 -0
  351. package/dashboard/dist/assets/escalation-DTY_OKRh.js +2 -0
  352. package/dashboard/dist/assets/escalation-DTY_OKRh.js.map +1 -0
  353. package/dashboard/dist/assets/escalation-columns-C91fHSkp.js +2 -0
  354. package/dashboard/dist/assets/{escalation-columns-D6aqStaY.js.map → escalation-columns-C91fHSkp.js.map} +1 -1
  355. package/dashboard/dist/assets/helpers-DBUZ9pnG.js +2 -0
  356. package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +1 -0
  357. package/dashboard/dist/assets/index-BOeA-gfK.js +17 -0
  358. package/dashboard/dist/assets/{index-X85K5bHC.js.map → index-BOeA-gfK.js.map} +1 -1
  359. package/dashboard/dist/assets/index-BZ6K_kmL.js +3 -0
  360. package/dashboard/dist/assets/index-BZ6K_kmL.js.map +1 -0
  361. package/dashboard/dist/assets/index-Bpm0yeoi.js +2 -0
  362. package/dashboard/dist/assets/index-Bpm0yeoi.js.map +1 -0
  363. package/dashboard/dist/assets/index-BtOwLI0K.js +2 -0
  364. package/dashboard/dist/assets/{index-DTPzZr_X.js.map → index-BtOwLI0K.js.map} +1 -1
  365. package/dashboard/dist/assets/index-CBF3ZvRZ.js +6 -0
  366. package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +1 -0
  367. package/dashboard/dist/assets/index-CDWOfCmi.js +2 -0
  368. package/dashboard/dist/assets/index-CDWOfCmi.js.map +1 -0
  369. package/dashboard/dist/assets/index-Ce6sL__n.js +2 -0
  370. package/dashboard/dist/assets/index-Ce6sL__n.js.map +1 -0
  371. package/dashboard/dist/assets/index-DSzSoku1.js +283 -0
  372. package/dashboard/dist/assets/index-DSzSoku1.js.map +1 -0
  373. package/dashboard/dist/assets/index-D_qEAYrg.js +2 -0
  374. package/dashboard/dist/assets/index-D_qEAYrg.js.map +1 -0
  375. package/dashboard/dist/assets/index-gCy9XX3W.css +1 -0
  376. package/dashboard/dist/assets/mcp-BzVpaaKF.js +2 -0
  377. package/dashboard/dist/assets/{mcp-blCW6IL7.js.map → mcp-BzVpaaKF.js.map} +1 -1
  378. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +2 -0
  379. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +1 -0
  380. package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js → mcp-runs-DmXYJD19.js} +2 -2
  381. package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js.map → mcp-runs-DmXYJD19.js.map} +1 -1
  382. package/dashboard/dist/assets/namespaces-DoGa7jc7.js +2 -0
  383. package/dashboard/dist/assets/{namespaces-BgbaC3ow.js.map → namespaces-DoGa7jc7.js.map} +1 -1
  384. package/dashboard/dist/assets/{roles-ZNrqqnQl.js → roles-wCdQ2Z7k.js} +2 -2
  385. package/dashboard/dist/assets/{roles-ZNrqqnQl.js.map → roles-wCdQ2Z7k.js.map} +1 -1
  386. package/dashboard/dist/assets/settings-DDe_L7JT.js +2 -0
  387. package/dashboard/dist/assets/{settings-eBRSE0mQ.js.map → settings-DDe_L7JT.js.map} +1 -1
  388. package/dashboard/dist/assets/tasks-3Hih8Bt7.js +2 -0
  389. package/dashboard/dist/assets/{tasks-tRqClPns.js.map → tasks-3Hih8Bt7.js.map} +1 -1
  390. package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js → useFilterParams-BUyLHcx_.js} +2 -2
  391. package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js.map → useFilterParams-BUyLHcx_.js.map} +1 -1
  392. package/dashboard/dist/assets/{useNatsEvents-Xr43X1fG.js → useNatsEvents-DeGKHFTX.js} +2 -2
  393. package/dashboard/dist/assets/{useNatsEvents-Xr43X1fG.js.map → useNatsEvents-DeGKHFTX.js.map} +1 -1
  394. package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js → useYamlActivityEvents-B5dHec6Y.js} +2 -2
  395. package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js.map → useYamlActivityEvents-B5dHec6Y.js.map} +1 -1
  396. package/dashboard/dist/assets/{users-tMvNyOo8.js → users-BTagPmGW.js} +2 -2
  397. package/dashboard/dist/assets/{users-tMvNyOo8.js.map → users-BTagPmGW.js.map} +1 -1
  398. package/dashboard/dist/assets/{vendor-icons-ZTAKVwGc.js → vendor-icons-DCLlGYO9.js} +112 -57
  399. package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +1 -0
  400. package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
  401. package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
  402. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +26 -0
  403. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +1 -0
  404. package/dashboard/dist/assets/{workflows-Cc4VHcrp.js → workflows-B20dR3NE.js} +2 -2
  405. package/dashboard/dist/assets/{workflows-Cc4VHcrp.js.map → workflows-B20dR3NE.js.map} +1 -1
  406. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +2 -0
  407. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js.map +1 -0
  408. package/dashboard/dist/index.html +5 -5
  409. package/docs/api/dba.md +81 -0
  410. package/docs/api/escalations.md +575 -0
  411. package/docs/api/exports.md +170 -0
  412. package/docs/api/maintenance.md +93 -0
  413. package/docs/api/mcp-runs.md +128 -0
  414. package/docs/api/mcp-servers.md +195 -0
  415. package/docs/api/namespaces.md +48 -0
  416. package/docs/api/roles.md +390 -0
  417. package/docs/api/service-accounts.md +188 -0
  418. package/docs/api/settings.md +33 -0
  419. package/docs/api/tasks.md +167 -0
  420. package/docs/api/users.md +180 -0
  421. package/docs/api/workflows.md +616 -0
  422. package/docs/api/yaml-workflows.md +312 -0
  423. package/docs/architecture.md +221 -0
  424. package/docs/auth.md +181 -0
  425. package/docs/cloud.md +272 -0
  426. package/docs/compilation.md +136 -0
  427. package/docs/contributing.md +56 -0
  428. package/docs/dashboard.md +145 -0
  429. package/docs/data.md +478 -0
  430. package/docs/escalation-strategies.md +264 -0
  431. package/docs/events.md +251 -0
  432. package/docs/iam.md +222 -0
  433. package/docs/img/01-login.png +0 -0
  434. package/docs/img/02-dashboard-home.png +0 -0
  435. package/docs/img/03-processes-list.png +0 -0
  436. package/docs/img/04-escalations-list.png +0 -0
  437. package/docs/img/05-mcp-servers.png +0 -0
  438. package/docs/img/06-mcp-pipelines.png +0 -0
  439. package/docs/img/07-workflows-list.png +0 -0
  440. package/docs/img/compilation/01-query-submit.png +0 -0
  441. package/docs/img/compilation/02-mcp-servers.png +0 -0
  442. package/docs/img/compilation/03-query-completed.png +0 -0
  443. package/docs/img/compilation/04-wizard-original.png +0 -0
  444. package/docs/img/compilation/05-wizard-timeline.png +0 -0
  445. package/docs/img/compilation/06-wizard-profile.png +0 -0
  446. package/docs/img/compilation/07-wizard-deploy.png +0 -0
  447. package/docs/img/compilation/08-wizard-test-modal.png +0 -0
  448. package/docs/img/compilation/09-wizard-test-compare.png +0 -0
  449. package/docs/img/compilation/10-wizard-verify.png +0 -0
  450. package/docs/logging.md +110 -0
  451. package/docs/maintenance.md +221 -0
  452. package/docs/mcp.md +715 -0
  453. package/docs/oauth-and-delegation.md +469 -0
  454. package/docs/telemetry.md +144 -0
  455. package/docs/workflows.md +695 -0
  456. package/lib/db/schemas/015_knowledge.sql +23 -0
  457. package/package.json +8 -9
  458. package/build/services/db/index.d.ts +0 -3
  459. package/build/services/mcp/vision-server.d.ts +0 -15
  460. package/build/services/mcp/vision-server.js +0 -214
  461. package/build/system/mcp-servers/document-vision.js +0 -228
  462. package/build/system/mcp-servers/prompts.d.ts +0 -4
  463. package/build/system/mcp-servers/prompts.js +0 -10
  464. package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js +0 -2
  465. package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js.map +0 -1
  466. package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js +0 -2
  467. package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js.map +0 -1
  468. package/dashboard/dist/assets/BotPicker-D6FYW1Gt.js +0 -2
  469. package/dashboard/dist/assets/CollapsibleSection-Cxk4wvjT.js +0 -2
  470. package/dashboard/dist/assets/ConfirmDeleteModal-FSXyKjaB.js +0 -2
  471. package/dashboard/dist/assets/CopyableId-CBdxWfp8.js +0 -2
  472. package/dashboard/dist/assets/CredentialsPage-Ikzsot0w.js +0 -2
  473. package/dashboard/dist/assets/CustomDurationPicker-CAninCbl.js +0 -2
  474. package/dashboard/dist/assets/DataTable-BDn1WBHS.js +0 -2
  475. package/dashboard/dist/assets/DataTable-BDn1WBHS.js.map +0 -1
  476. package/dashboard/dist/assets/EmptyState-2CmV-IaS.js +0 -2
  477. package/dashboard/dist/assets/EscalationsOverview-GXYFPASS.js +0 -2
  478. package/dashboard/dist/assets/EventTable-B01oJf6Y.js +0 -2
  479. package/dashboard/dist/assets/Field-DuFBAYhu.js +0 -2
  480. package/dashboard/dist/assets/Field-DuFBAYhu.js.map +0 -1
  481. package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +0 -2
  482. package/dashboard/dist/assets/McpOverview-JkvRcX2e.js +0 -2
  483. package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js +0 -2
  484. package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js.map +0 -1
  485. package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js +0 -2
  486. package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js.map +0 -1
  487. package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js +0 -2
  488. package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js.map +0 -1
  489. package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js +0 -2
  490. package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js.map +0 -1
  491. package/dashboard/dist/assets/Modal-B4rbIVAn.js +0 -2
  492. package/dashboard/dist/assets/OperatorDashboard-B56il28q.js +0 -2
  493. package/dashboard/dist/assets/OperatorDashboard-B56il28q.js.map +0 -1
  494. package/dashboard/dist/assets/PageHeader-CpWFly5S.js +0 -2
  495. package/dashboard/dist/assets/PageHeader-CpWFly5S.js.map +0 -1
  496. package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +0 -2
  497. package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js +0 -2
  498. package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js.map +0 -1
  499. package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js +0 -2
  500. package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js.map +0 -1
  501. package/dashboard/dist/assets/RolePill-BTPa8L-P.js +0 -2
  502. package/dashboard/dist/assets/RolesPage-9grZW7yR.js +0 -2
  503. package/dashboard/dist/assets/RolesPage-9grZW7yR.js.map +0 -1
  504. package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +0 -2
  505. package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js +0 -4
  506. package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js.map +0 -1
  507. package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
  508. package/dashboard/dist/assets/StatusBadge-TlC4jiig.js +0 -2
  509. package/dashboard/dist/assets/StatusBadge-TlC4jiig.js.map +0 -1
  510. package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +0 -2
  511. package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js +0 -2
  512. package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js.map +0 -1
  513. package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js +0 -2
  514. package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js.map +0 -1
  515. package/dashboard/dist/assets/TaskQueuePill-awmtb0qw.js +0 -2
  516. package/dashboard/dist/assets/TasksListPage-C_QF23c1.js +0 -2
  517. package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js +0 -2
  518. package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js.map +0 -1
  519. package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js +0 -2
  520. package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js.map +0 -1
  521. package/dashboard/dist/assets/UserName-DaP4YAKr.js +0 -2
  522. package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js +0 -5
  523. package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js.map +0 -1
  524. package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js +0 -2
  525. package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js.map +0 -1
  526. package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js +0 -2
  527. package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js.map +0 -1
  528. package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js +0 -2
  529. package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js.map +0 -1
  530. package/dashboard/dist/assets/WorkflowsOverview-D9OzzQqw.js +0 -2
  531. package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js +0 -3
  532. package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js.map +0 -1
  533. package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js +0 -2
  534. package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js.map +0 -1
  535. package/dashboard/dist/assets/constants-CgaZfe5d.js +0 -2
  536. package/dashboard/dist/assets/constants-CgaZfe5d.js.map +0 -1
  537. package/dashboard/dist/assets/escalation-columns-D6aqStaY.js +0 -2
  538. package/dashboard/dist/assets/escalation-qalymbKB.js +0 -2
  539. package/dashboard/dist/assets/escalation-qalymbKB.js.map +0 -1
  540. package/dashboard/dist/assets/format-gXZXQ-HJ.js +0 -2
  541. package/dashboard/dist/assets/format-gXZXQ-HJ.js.map +0 -1
  542. package/dashboard/dist/assets/helpers-0gSleuzT.js +0 -2
  543. package/dashboard/dist/assets/helpers-0gSleuzT.js.map +0 -1
  544. package/dashboard/dist/assets/index-BWvMHed7.js +0 -6
  545. package/dashboard/dist/assets/index-BWvMHed7.js.map +0 -1
  546. package/dashboard/dist/assets/index-BaszoPO_.css +0 -1
  547. package/dashboard/dist/assets/index-Cn2jyj9A.js +0 -2
  548. package/dashboard/dist/assets/index-Cn2jyj9A.js.map +0 -1
  549. package/dashboard/dist/assets/index-D8VH6K8B.js +0 -54
  550. package/dashboard/dist/assets/index-D8VH6K8B.js.map +0 -1
  551. package/dashboard/dist/assets/index-D9SYwJsi.js +0 -3
  552. package/dashboard/dist/assets/index-D9SYwJsi.js.map +0 -1
  553. package/dashboard/dist/assets/index-DTPzZr_X.js +0 -2
  554. package/dashboard/dist/assets/index-D_6AB5BE.js +0 -2
  555. package/dashboard/dist/assets/index-D_6AB5BE.js.map +0 -1
  556. package/dashboard/dist/assets/index-S9Ks2Lj2.js +0 -2
  557. package/dashboard/dist/assets/index-S9Ks2Lj2.js.map +0 -1
  558. package/dashboard/dist/assets/index-X85K5bHC.js +0 -17
  559. package/dashboard/dist/assets/index-rjmgHlSH.js +0 -2
  560. package/dashboard/dist/assets/index-rjmgHlSH.js.map +0 -1
  561. package/dashboard/dist/assets/mcp-blCW6IL7.js +0 -2
  562. package/dashboard/dist/assets/mcp-query-DoAyPbjC.js +0 -2
  563. package/dashboard/dist/assets/mcp-query-DoAyPbjC.js.map +0 -1
  564. package/dashboard/dist/assets/namespaces-BgbaC3ow.js +0 -2
  565. package/dashboard/dist/assets/settings-eBRSE0mQ.js +0 -2
  566. package/dashboard/dist/assets/tasks-tRqClPns.js +0 -2
  567. package/dashboard/dist/assets/vendor-icons-ZTAKVwGc.js.map +0 -1
  568. package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
  569. package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
  570. package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js +0 -22
  571. package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js.map +0 -1
  572. package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js +0 -2
  573. package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js.map +0 -1
  574. /package/build/{services → lib}/db/migrate.d.ts +0 -0
  575. /package/build/{services → lib}/events/index.d.ts +0 -0
  576. /package/build/{services → lib}/events/index.js +0 -0
  577. /package/build/{services → lib}/events/memory.d.ts +0 -0
  578. /package/build/{services → lib}/events/memory.js +0 -0
  579. /package/build/{services → lib}/events/nats.d.ts +0 -0
  580. /package/build/{services → lib}/events/nats.js +0 -0
  581. /package/build/{services → lib}/events/publish.d.ts +0 -0
  582. /package/build/{services → lib}/events/publish.js +0 -0
  583. /package/build/{services → lib}/events/socketio.d.ts +0 -0
  584. /package/build/{services → lib}/events/socketio.js +0 -0
  585. /package/build/{services → lib}/logger/index.d.ts +0 -0
  586. /package/build/{services → lib}/logger/index.js +0 -0
  587. /package/build/{services → lib}/logger/pino.d.ts +0 -0
  588. /package/build/{services → lib}/logger/pino.js +0 -0
  589. /package/build/{services → lib}/storage/index.d.ts +0 -0
  590. /package/build/{services → lib}/storage/index.js +0 -0
  591. /package/build/{services → lib}/storage/local.d.ts +0 -0
  592. /package/build/{services → lib}/storage/local.js +0 -0
  593. /package/build/{services → lib}/storage/s3.d.ts +0 -0
  594. /package/build/{services → lib}/storage/s3.js +0 -0
  595. /package/build/{services → lib}/storage/types.d.ts +0 -0
  596. /package/build/{services → lib}/storage/types.js +0 -0
  597. /package/build/{services → lib}/telemetry/index.d.ts +0 -0
  598. /package/build/{services → lib}/telemetry/index.js +0 -0
  599. /package/{services → lib}/db/README.md +0 -0
  600. /package/{services → lib}/db/schemas/001_schema.sql +0 -0
  601. /package/{services → lib}/db/schemas/002_seed.sql +0 -0
  602. /package/{services → lib}/db/schemas/003_workflow_discovery.sql +0 -0
  603. /package/{services → lib}/db/schemas/004_query_router.sql +0 -0
  604. /package/{services → lib}/db/schemas/005_triage_router.sql +0 -0
  605. /package/{services → lib}/db/schemas/006_oauth.sql +0 -0
  606. /package/{services → lib}/db/schemas/007_security.sql +0 -0
  607. /package/{services → lib}/db/schemas/008_bot_accounts.sql +0 -0
  608. /package/{services → lib}/db/schemas/009_audit_trail.sql +0 -0
  609. /package/{services → lib}/db/schemas/010_credential_providers.sql +0 -0
  610. /package/{services → lib}/db/schemas/011_system_workflow_configs.sql +0 -0
  611. /package/{services → lib}/db/schemas/012_drop_modality.sql +0 -0
  612. /package/{services → lib}/db/schemas/013_execute_as.sql +0 -0
  613. /package/{services → lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.upsertWorkflowConfig = upsertWorkflowConfig;
4
4
  exports.deleteWorkflowConfig = deleteWorkflowConfig;
5
- const db_1 = require("../db");
5
+ const db_1 = require("../../lib/db");
6
6
  const read_1 = require("./read");
7
7
  const sql_1 = require("./sql");
8
8
  async function upsertWorkflowConfig(config) {
@@ -8,9 +8,7 @@ exports.getStreamStats = getStreamStats;
8
8
  exports.subscribeMesh = subscribeMesh;
9
9
  exports.isBridgeActive = isBridgeActive;
10
10
  const hotmesh_1 = require("@hotmeshio/hotmesh");
11
- const pg_1 = require("pg");
12
- const config_1 = require("../../modules/config");
13
- const db_1 = require("../db");
11
+ const db_1 = require("../../lib/db");
14
12
  const sql_1 = require("./sql");
15
13
  const quorum_bridge_1 = require("./quorum-bridge");
16
14
  // ─── Engine cache ───────────────────────────────────────────────────────────
@@ -27,8 +25,9 @@ async function getEngine(appId) {
27
25
  return cached;
28
26
  const engine = await hotmesh_1.HotMesh.init({
29
27
  appId,
28
+ guid: `controlplane::${appId}-${hotmesh_1.HotMesh.guid()}`,
30
29
  engine: {
31
- connection: { class: pg_1.Client, options: config_1.postgres_options },
30
+ connection: (0, db_1.getConnection)(),
32
31
  },
33
32
  });
34
33
  engines.set(appId, engine);
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createQuorumBridgeCallback = createQuorumBridgeCallback;
4
4
  exports.getActiveCallback = getActiveCallback;
5
5
  exports.startQuorumBridge = startQuorumBridge;
6
- const events_1 = require("../events");
7
- const logger_1 = require("../logger");
6
+ const events_1 = require("../../lib/events");
7
+ const logger_1 = require("../../lib/logger");
8
8
  /**
9
9
  * Bridge HotMesh quorum messages to the NATS event system.
10
10
  *
@@ -35,10 +35,9 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.cronRegistry = void 0;
37
37
  const hotmesh_1 = require("@hotmeshio/hotmesh");
38
- const pg_1 = require("pg");
39
- const config_1 = require("../../modules/config");
38
+ const db_1 = require("../../lib/db");
40
39
  const defaults_1 = require("../../modules/defaults");
41
- const logger_1 = require("../logger");
40
+ const logger_1 = require("../../lib/logger");
42
41
  const configService = __importStar(require("../config"));
43
42
  const principal_1 = require("../iam/principal");
44
43
  const CRON_TOPIC_PREFIX = 'lt.cron';
@@ -83,7 +82,7 @@ class LTCronRegistry {
83
82
  async startCron(config) {
84
83
  if (!config.cron_schedule || !config.task_queue)
85
84
  return;
86
- const connection = { class: pg_1.Client, options: config_1.postgres_options };
85
+ const connection = (0, db_1.getConnection)();
87
86
  const topic = `${CRON_TOPIC_PREFIX}.${config.workflow_type}`;
88
87
  const cronId = `${CRON_ID_PREFIX}-${config.workflow_type}`;
89
88
  const defaultEnvelope = config.envelope_schema
@@ -147,7 +146,7 @@ class LTCronRegistry {
147
146
  const cronId = this.activeCrons.get(workflowType);
148
147
  if (!cronId)
149
148
  return;
150
- const connection = { class: pg_1.Client, options: config_1.postgres_options };
149
+ const connection = (0, db_1.getConnection)();
151
150
  const topic = `${CRON_TOPIC_PREFIX}.${workflowType}`;
152
151
  try {
153
152
  await hotmesh_1.Virtual.interrupt({
@@ -20,6 +20,10 @@ export declare function prune(options: {
20
20
  expire?: string;
21
21
  jobs?: boolean;
22
22
  streams?: boolean;
23
+ engineStreams?: boolean;
24
+ engineStreamsExpire?: string;
25
+ workerStreams?: boolean;
26
+ workerStreamsExpire?: string;
23
27
  attributes?: boolean;
24
28
  entities?: string[];
25
29
  pruneTransient?: boolean;
@@ -3,8 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deploy = deploy;
4
4
  exports.prune = prune;
5
5
  const hotmesh_1 = require("@hotmeshio/hotmesh");
6
- const pg_1 = require("pg");
7
- const config_1 = require("../modules/config");
6
+ const db_1 = require("../lib/db");
8
7
  const APP_ID = 'durable';
9
8
  /**
10
9
  * Deploy the server-side prune() Postgres function and run
@@ -12,8 +11,7 @@ const APP_ID = 'durable';
12
11
  * Idempotent — safe to call on every startup.
13
12
  */
14
13
  async function deploy() {
15
- const connection = { class: pg_1.Client, options: config_1.postgres_options };
16
- await hotmesh_1.DBA.deploy(connection, APP_ID);
14
+ await hotmesh_1.DBA.deploy((0, db_1.getConnection)(), APP_ID);
17
15
  }
18
16
  /**
19
17
  * Prune expired jobs, streams, and/or execution artifacts.
@@ -27,6 +25,5 @@ async function deploy() {
27
25
  * - `keepHmark` — preserve hmark rows during stripping
28
26
  */
29
27
  async function prune(options) {
30
- const connection = { class: pg_1.Client, options: config_1.postgres_options };
31
- return hotmesh_1.DBA.prune({ appId: APP_ID, connection, ...options });
28
+ return hotmesh_1.DBA.prune({ appId: APP_ID, connection: (0, db_1.getConnection)(), ...options });
32
29
  }
@@ -4,7 +4,7 @@ exports.bulkClaimEscalations = bulkClaimEscalations;
4
4
  exports.bulkAssignEscalations = bulkAssignEscalations;
5
5
  exports.bulkEscalateToRole = bulkEscalateToRole;
6
6
  exports.bulkResolveForTriage = bulkResolveForTriage;
7
- const db_1 = require("../db");
7
+ const db_1 = require("../../lib/db");
8
8
  const sql_1 = require("./sql");
9
9
  /**
10
10
  * Bulk claim escalations for a user.
@@ -14,7 +14,7 @@ exports.getEscalationsByWorkflowId = getEscalationsByWorkflowId;
14
14
  exports.updateEscalationMetadata = updateEscalationMetadata;
15
15
  exports.enrichEscalationRouting = enrichEscalationRouting;
16
16
  exports.getEscalationsByOriginId = getEscalationsByOriginId;
17
- const db_1 = require("../db");
17
+ const db_1 = require("../../lib/db");
18
18
  const sql_1 = require("./sql");
19
19
  async function createEscalation(input) {
20
20
  const pool = (0, db_1.getPool)();
@@ -4,7 +4,7 @@ exports.getEscalationStats = getEscalationStats;
4
4
  exports.listDistinctTypes = listDistinctTypes;
5
5
  exports.listEscalations = listEscalations;
6
6
  exports.listAvailableEscalations = listAvailableEscalations;
7
- const db_1 = require("../db");
7
+ const db_1 = require("../../lib/db");
8
8
  const types_1 = require("./types");
9
9
  const sql_1 = require("./sql");
10
10
  function buildOrderBy(sortBy, order, fallback = 'priority ASC, created_at ASC') {
@@ -3,12 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createClient = createClient;
4
4
  exports.getHandle = getHandle;
5
5
  const hotmesh_1 = require("@hotmeshio/hotmesh");
6
- const pg_1 = require("pg");
7
- const config_1 = require("../../modules/config");
6
+ const db_1 = require("../../lib/db");
8
7
  function createClient() {
9
- return new hotmesh_1.Durable.Client({
10
- connection: { class: pg_1.Client, options: config_1.postgres_options },
11
- });
8
+ return new hotmesh_1.Durable.Client({ connection: (0, db_1.getConnection)() });
12
9
  }
13
10
  async function getHandle(taskQueue, workflowName, workflowId) {
14
11
  const client = createClient();
@@ -5,7 +5,7 @@ exports.getWorkflowStatus = getWorkflowStatus;
5
5
  exports.exportWorkflowExecution = exportWorkflowExecution;
6
6
  exports.getWorkflowState = getWorkflowState;
7
7
  exports.listJobs = listJobs;
8
- const db_1 = require("../db");
8
+ const db_1 = require("../../lib/db");
9
9
  const client_1 = require("./client");
10
10
  const post_process_1 = require("./post-process");
11
11
  /** Error thrown when a workflow job is not found (expired or never existed). */
@@ -140,8 +140,20 @@ async function listJobs(params) {
140
140
  const where = conditions.join(' AND ');
141
141
  const [countResult, dataResult] = await Promise.all([
142
142
  pool.query(`SELECT COUNT(*) FROM durable.jobs j WHERE ${where}`, values),
143
- pool.query(`SELECT j.key, j.entity, j.status, j.is_live, j.created_at, j.updated_at
143
+ pool.query(`WITH ju_symbols AS (
144
+ SELECT value FROM durable.symbols
145
+ WHERE key LIKE 'hmsh:durable:sym:keys:%' AND field = 'metadata/ju'
146
+ )
147
+ SELECT j.key, j.entity, j.status, j.is_live, j.created_at,
148
+ CASE WHEN j.updated_at != j.created_at THEN j.updated_at
149
+ WHEN ju.value IS NOT NULL THEN to_timestamp(ju.value, 'YYYYMMDDHH24MISS.MS')
150
+ ELSE j.updated_at
151
+ END as updated_at
144
152
  FROM durable.jobs j
153
+ LEFT JOIN durable.jobs_attributes ju
154
+ ON ju.job_id = j.id
155
+ AND ju.symbol IN (SELECT value FROM ju_symbols)
156
+ AND (ju.dimension IS NULL OR ju.dimension = '')
145
157
  WHERE ${where}
146
158
  ORDER BY ${buildJobOrderBy(params.sort_by, params.order)}
147
159
  LIMIT $${idx++} OFFSET $${idx++}`, [...values, limit, offset]),
@@ -10,7 +10,7 @@ exports.loadSymbolMap = loadSymbolMap;
10
10
  exports.inflateAttributes = inflateAttributes;
11
11
  exports.restoreHierarchy = restoreHierarchy;
12
12
  exports.extractActivities = extractActivities;
13
- const db_1 = require("./db");
13
+ const db_1 = require("../lib/db");
14
14
  // ── HotMesh timestamp helpers ───────────────────────────────────────────────
15
15
  /**
16
16
  * Convert HotMesh's compact timestamp (YYYYMMDDHHmmss.SSS) to ISO 8601.
@@ -16,7 +16,7 @@ exports.ensureSystemBot = ensureSystemBot;
16
16
  * They share the same RBAC, OAuth credentials, and delegation tokens
17
17
  * as human users — no separate infrastructure needed.
18
18
  */
19
- const db_1 = require("../db");
19
+ const db_1 = require("../../lib/db");
20
20
  const user_1 = require("../user");
21
21
  const user_2 = require("../user");
22
22
  Object.defineProperty(exports, "addBotRole", { enumerable: true, get: function () { return user_2.addUserRole; } });
@@ -25,13 +25,7 @@ Object.defineProperty(exports, "getBotRoles", { enumerable: true, get: function
25
25
  const bot_api_key_1 = require("../auth/bot-api-key");
26
26
  Object.defineProperty(exports, "listBotKeys", { enumerable: true, get: function () { return bot_api_key_1.listBotApiKeys; } });
27
27
  Object.defineProperty(exports, "revokeBotKey", { enumerable: true, get: function () { return bot_api_key_1.revokeBotApiKey; } });
28
- const LIST_BOTS = `
29
- SELECT * FROM lt_users
30
- WHERE account_type = 'bot'
31
- ORDER BY created_at DESC
32
- LIMIT $1 OFFSET $2`;
33
- const COUNT_BOTS = `
34
- SELECT COUNT(*)::int AS total FROM lt_users WHERE account_type = 'bot'`;
28
+ const sql_1 = require("./sql");
35
29
  /**
36
30
  * Create a new bot account.
37
31
  */
@@ -49,7 +43,7 @@ async function createBot(input) {
49
43
  // Create the user row, then set account_type column
50
44
  const user = await (0, user_1.createUser)(userInput);
51
45
  const pool = await (0, db_1.getPool)();
52
- await pool.query('UPDATE lt_users SET account_type = $1 WHERE id = $2', ['bot', user.id]);
46
+ await pool.query(sql_1.SET_ACCOUNT_TYPE_BOT, ['bot', user.id]);
53
47
  return toBotRecord(user, input.description, input.created_by);
54
48
  }
55
49
  /**
@@ -67,8 +61,8 @@ async function getBot(id) {
67
61
  async function listBots(limit = 50, offset = 0) {
68
62
  const pool = await (0, db_1.getPool)();
69
63
  const [{ rows }, countResult] = await Promise.all([
70
- pool.query(LIST_BOTS, [limit, offset]),
71
- pool.query(COUNT_BOTS),
64
+ pool.query(sql_1.LIST_BOTS, [limit, offset]),
65
+ pool.query(sql_1.COUNT_BOTS),
72
66
  ]);
73
67
  // Attach roles to each bot
74
68
  const bots = await Promise.all(rows.map(async (row) => {
@@ -135,7 +129,7 @@ const SYSTEM_BOT_NAME = 'lt-system';
135
129
  */
136
130
  async function ensureSystemBot() {
137
131
  const pool = await (0, db_1.getPool)();
138
- const { rows } = await pool.query('SELECT id FROM lt_users WHERE external_id = $1', [SYSTEM_BOT_NAME]);
132
+ const { rows } = await pool.query(sql_1.GET_USER_BY_EXTERNAL_ID, [SYSTEM_BOT_NAME]);
139
133
  if (rows.length > 0)
140
134
  return rows[0].id;
141
135
  const bot = await createBot({
@@ -7,7 +7,7 @@ export declare function runWithToolContext<T>(ctx: ToolContext, fn: () => Promis
7
7
  /**
8
8
  * Retrieve the ToolContext for the current execution scope.
9
9
  *
10
- * Activities: reads from argumentMetadata (injected by activity interceptor).
10
+ * Activities: reads from headers (injected by activity interceptor).
11
11
  * Workflow scope: reads from AsyncLocalStorage (set by workflow interceptor).
12
12
  * Returns undefined when no identity is available.
13
13
  */
@@ -7,9 +7,9 @@ exports.getToolContext = getToolContext;
7
7
  *
8
8
  * Two paths, checked in order:
9
9
  *
10
- * 1. **argumentMetadata** (production-safe, distributed):
10
+ * 1. **headers** (production-safe, distributed):
11
11
  * The activity interceptor injects `principal` + `scopes` into
12
- * `argumentMetadata`, which HotMesh delivers to the activity worker
12
+ * `headers`, which HotMesh delivers to the activity worker
13
13
  * via `Durable.activity.getContext()`. Works across process boundaries.
14
14
  *
15
15
  * 2. **AsyncLocalStorage** (workflow-local, single-process):
@@ -30,15 +30,15 @@ function runWithToolContext(ctx, fn) {
30
30
  /**
31
31
  * Retrieve the ToolContext for the current execution scope.
32
32
  *
33
- * Activities: reads from argumentMetadata (injected by activity interceptor).
33
+ * Activities: reads from headers (injected by activity interceptor).
34
34
  * Workflow scope: reads from AsyncLocalStorage (set by workflow interceptor).
35
35
  * Returns undefined when no identity is available.
36
36
  */
37
37
  function getToolContext() {
38
- // 1. Try argumentMetadata (activity worker — works distributed)
38
+ // 1. Try headers (activity worker — works distributed)
39
39
  try {
40
40
  const actCtx = hotmesh_1.Durable.activity.getContext();
41
- const meta = actCtx?.argumentMetadata;
41
+ const meta = actCtx?.headers;
42
42
  if (meta?.principal) {
43
43
  const principal = meta.principal;
44
44
  return {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MissingCredentialError = void 0;
4
4
  exports.resolveCredential = resolveCredential;
5
5
  const oauth_1 = require("../oauth");
6
- const logger_1 = require("../logger");
6
+ const logger_1 = require("../../lib/logger");
7
7
  /**
8
8
  * Thrown when credential resolution finds no credential for a provider.
9
9
  * Caught by route handlers to return structured 422 responses.
@@ -9,9 +9,10 @@ exports.storeEphemeral = storeEphemeral;
9
9
  exports.exchangeEphemeral = exchangeEphemeral;
10
10
  exports.revokeEphemeral = revokeEphemeral;
11
11
  exports.cleanupExpired = cleanupExpired;
12
- const db_1 = require("../db");
12
+ const db_1 = require("../../lib/db");
13
13
  const crypto_1 = require("../oauth/crypto");
14
- const logger_1 = require("../logger");
14
+ const logger_1 = require("../../lib/logger");
15
+ const sql_1 = require("./sql");
15
16
  // ── Token format ────────────────────────────────────────────────────────────
16
17
  // Opaque string: eph:v1:<label>:<uuid>
17
18
  // The LLM passes these through as-is. Exchange happens inside activity bodies.
@@ -80,9 +81,7 @@ async function storeEphemeral(value, opts = {}) {
80
81
  const expiresAt = opts.ttlSeconds
81
82
  ? `NOW() + ${opts.ttlSeconds} * INTERVAL '1 second'`
82
83
  : 'NULL';
83
- const { rows } = await pool.query(`INSERT INTO lt_ephemeral_credentials (value, label, max_uses, expires_at)
84
- VALUES ($1, $2, $3, ${expiresAt})
85
- RETURNING token`, [Buffer.from(encrypted, 'base64'), opts.label || null, maxUses]);
84
+ const { rows } = await pool.query((0, sql_1.INSERT_EPHEMERAL)(expiresAt), [Buffer.from(encrypted, 'base64'), opts.label || null, maxUses]);
86
85
  return rows[0].token;
87
86
  }
88
87
  /**
@@ -97,18 +96,13 @@ async function exchangeEphemeral(token) {
97
96
  const pool = (0, db_1.getPool)();
98
97
  // Atomic increment + check in one query.
99
98
  // Returns the row if the exchange is valid, nothing if expired/exhausted.
100
- const { rows } = await pool.query(`UPDATE lt_ephemeral_credentials
101
- SET use_count = use_count + 1
102
- WHERE token = $1
103
- AND (expires_at IS NULL OR expires_at > NOW())
104
- AND (max_uses = 0 OR use_count < max_uses)
105
- RETURNING value, use_count, max_uses`, [token]);
99
+ const { rows } = await pool.query(sql_1.EXCHANGE_EPHEMERAL, [token]);
106
100
  if (rows.length === 0)
107
101
  return null;
108
102
  const { value: buf, use_count, max_uses } = rows[0];
109
103
  // Auto-delete when max_uses is reached (if bounded)
110
104
  if (max_uses > 0 && use_count >= max_uses) {
111
- await pool.query(`DELETE FROM lt_ephemeral_credentials WHERE token = $1`, [token]);
105
+ await pool.query(sql_1.DELETE_EPHEMERAL, [token]);
112
106
  }
113
107
  return (0, crypto_1.decrypt)(buf.toString('base64'));
114
108
  }
@@ -117,7 +111,7 @@ async function exchangeEphemeral(token) {
117
111
  */
118
112
  async function revokeEphemeral(token) {
119
113
  const pool = (0, db_1.getPool)();
120
- const { rowCount } = await pool.query(`DELETE FROM lt_ephemeral_credentials WHERE token = $1`, [token]);
114
+ const { rowCount } = await pool.query(sql_1.DELETE_EPHEMERAL, [token]);
121
115
  return (rowCount ?? 0) > 0;
122
116
  }
123
117
  /**
@@ -125,7 +119,6 @@ async function revokeEphemeral(token) {
125
119
  */
126
120
  async function cleanupExpired() {
127
121
  const pool = (0, db_1.getPool)();
128
- const { rowCount } = await pool.query(`DELETE FROM lt_ephemeral_credentials
129
- WHERE expires_at IS NOT NULL AND expires_at < NOW()`);
122
+ const { rowCount } = await pool.query(sql_1.CLEANUP_EXPIRED_EPHEMERAL);
130
123
  return rowCount ?? 0;
131
124
  }
@@ -11,21 +11,14 @@
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.resolvePrincipal = resolvePrincipal;
14
- const db_1 = require("../db");
14
+ const db_1 = require("../../lib/db");
15
+ const sql_1 = require("./sql");
15
16
  /** UUID v4 pattern for distinguishing UUIDs from external_ids. */
16
17
  const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
17
- /** Fetch user + roles by external_id OR id in one query. */
18
- const GET_USER_WITH_ROLES_FLEXIBLE = `
19
- SELECT u.id, u.external_id, u.display_name, u.status, u.metadata,
20
- r.role, r.type AS role_type
21
- FROM lt_users u
22
- LEFT JOIN lt_user_roles r ON r.user_id = u.id
23
- WHERE u.external_id = $1 OR u.id::text = $1
24
- ORDER BY r.created_at`;
25
18
  const ROLE_TYPE_PRIORITY = { superadmin: 3, admin: 2, member: 1 };
26
19
  async function resolvePrincipal(identifier) {
27
20
  const pool = (0, db_1.getPool)();
28
- const { rows } = await pool.query(GET_USER_WITH_ROLES_FLEXIBLE, [identifier]);
21
+ const { rows } = await pool.query(sql_1.GET_USER_WITH_ROLES_FLEXIBLE, [identifier]);
29
22
  if (rows.length === 0)
30
23
  return null;
31
24
  const user = rows[0];
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveToolContext = resolveToolContext;
4
4
  const delegation_1 = require("../auth/delegation");
5
5
  const user_1 = require("../user");
6
- const logger_1 = require("../logger");
6
+ const logger_1 = require("../../lib/logger");
7
7
  /** Role type priority for determining highest role type. */
8
8
  const ROLE_TYPE_PRIORITY = { superadmin: 3, admin: 2, member: 1 };
9
9
  /**
@@ -0,0 +1,10 @@
1
+ /** Build INSERT for ephemeral credentials. expiresExpr is a SQL expression like 'NULL' or "NOW() + N * INTERVAL '1 second'". */
2
+ export declare const INSERT_EPHEMERAL: (expiresExpr: string) => string;
3
+ export declare const EXCHANGE_EPHEMERAL = "\n UPDATE lt_ephemeral_credentials\n SET use_count = use_count + 1\n WHERE token = $1\n AND (expires_at IS NULL OR expires_at > NOW())\n AND (max_uses = 0 OR use_count < max_uses)\n RETURNING value, use_count, max_uses";
4
+ export declare const DELETE_EPHEMERAL = "\n DELETE FROM lt_ephemeral_credentials WHERE token = $1";
5
+ export declare const CLEANUP_EXPIRED_EPHEMERAL = "\n DELETE FROM lt_ephemeral_credentials\n WHERE expires_at IS NOT NULL AND expires_at < NOW()";
6
+ export declare const LIST_BOTS = "\n SELECT * FROM lt_users\n WHERE account_type = 'bot'\n ORDER BY created_at DESC\n LIMIT $1 OFFSET $2";
7
+ export declare const COUNT_BOTS = "\n SELECT COUNT(*)::int AS total FROM lt_users WHERE account_type = 'bot'";
8
+ export declare const SET_ACCOUNT_TYPE_BOT = "\n UPDATE lt_users SET account_type = $1 WHERE id = $2";
9
+ export declare const GET_USER_BY_EXTERNAL_ID = "\n SELECT id FROM lt_users WHERE external_id = $1";
10
+ export declare const GET_USER_WITH_ROLES_FLEXIBLE = "\n SELECT u.id, u.external_id, u.display_name, u.status, u.metadata,\n r.role, r.type AS role_type\n FROM lt_users u\n LEFT JOIN lt_user_roles r ON r.user_id = u.id\n WHERE u.external_id = $1 OR u.id::text = $1\n ORDER BY r.created_at";
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ // ─── Ephemeral credentials ──────────────────────────────────────────────────
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.GET_USER_WITH_ROLES_FLEXIBLE = exports.GET_USER_BY_EXTERNAL_ID = exports.SET_ACCOUNT_TYPE_BOT = exports.COUNT_BOTS = exports.LIST_BOTS = exports.CLEANUP_EXPIRED_EPHEMERAL = exports.DELETE_EPHEMERAL = exports.EXCHANGE_EPHEMERAL = exports.INSERT_EPHEMERAL = void 0;
5
+ /** Build INSERT for ephemeral credentials. expiresExpr is a SQL expression like 'NULL' or "NOW() + N * INTERVAL '1 second'". */
6
+ const INSERT_EPHEMERAL = (expiresExpr) => `
7
+ INSERT INTO lt_ephemeral_credentials (value, label, max_uses, expires_at)
8
+ VALUES ($1, $2, $3, ${expiresExpr})
9
+ RETURNING token`;
10
+ exports.INSERT_EPHEMERAL = INSERT_EPHEMERAL;
11
+ exports.EXCHANGE_EPHEMERAL = `
12
+ UPDATE lt_ephemeral_credentials
13
+ SET use_count = use_count + 1
14
+ WHERE token = $1
15
+ AND (expires_at IS NULL OR expires_at > NOW())
16
+ AND (max_uses = 0 OR use_count < max_uses)
17
+ RETURNING value, use_count, max_uses`;
18
+ exports.DELETE_EPHEMERAL = `
19
+ DELETE FROM lt_ephemeral_credentials WHERE token = $1`;
20
+ exports.CLEANUP_EXPIRED_EPHEMERAL = `
21
+ DELETE FROM lt_ephemeral_credentials
22
+ WHERE expires_at IS NOT NULL AND expires_at < NOW()`;
23
+ // ─── Bot accounts ───────────────────────────────────────────────────────────
24
+ exports.LIST_BOTS = `
25
+ SELECT * FROM lt_users
26
+ WHERE account_type = 'bot'
27
+ ORDER BY created_at DESC
28
+ LIMIT $1 OFFSET $2`;
29
+ exports.COUNT_BOTS = `
30
+ SELECT COUNT(*)::int AS total FROM lt_users WHERE account_type = 'bot'`;
31
+ exports.SET_ACCOUNT_TYPE_BOT = `
32
+ UPDATE lt_users SET account_type = $1 WHERE id = $2`;
33
+ exports.GET_USER_BY_EXTERNAL_ID = `
34
+ SELECT id FROM lt_users WHERE external_id = $1`;
35
+ // ─── Principal resolution ───────────────────────────────────────────────────
36
+ exports.GET_USER_WITH_ROLES_FLEXIBLE = `
37
+ SELECT u.id, u.external_id, u.display_name, u.status, u.metadata,
38
+ r.role, r.type AS role_type
39
+ FROM lt_users u
40
+ LEFT JOIN lt_user_roles r ON r.user_id = u.id
41
+ WHERE u.external_id = $1 OR u.id::text = $1
42
+ ORDER BY r.created_at`;
@@ -7,6 +7,7 @@ export interface McpQueryInput {
7
7
  tags?: string[];
8
8
  wait?: boolean;
9
9
  direct?: boolean;
10
+ context?: Record<string, any>;
10
11
  userId?: string;
11
12
  }
12
13
  export interface McpQueryResult {
@@ -6,25 +6,23 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.startMcpQuery = startMcpQuery;
8
8
  exports.describeWorkflow = describeWorkflow;
9
- const pg_1 = require("pg");
10
9
  const hotmesh_1 = require("@hotmeshio/hotmesh");
11
- const config_1 = require("../../modules/config");
10
+ const db_1 = require("../../lib/db");
12
11
  const defaults_1 = require("../../modules/defaults");
13
12
  const llm_1 = require("../llm");
14
13
  const prompts_1 = require("./prompts");
15
14
  // ── MCP query invocation ─────────────────────────────────────────────────────
16
15
  async function startMcpQuery(input) {
17
- const { prompt, tags, wait = true, direct = false, userId } = input;
16
+ const { prompt, tags, wait = true, direct = false, context, userId } = input;
18
17
  const startTime = Date.now();
19
- const connection = { class: pg_1.Client, options: config_1.postgres_options };
20
- const client = new hotmesh_1.Durable.Client({ connection });
18
+ const client = new hotmesh_1.Durable.Client({ connection: (0, db_1.getConnection)() });
21
19
  const wfName = direct ? 'mcpQuery' : 'mcpQueryRouter';
22
20
  const entity = direct ? 'mcpQuery' : 'mcpQueryRouter';
23
21
  const prefix = direct ? 'mcp-query-direct' : 'mcp-query';
24
22
  const workflowId = `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
25
23
  const handle = await client.workflow.start({
26
24
  args: [{
27
- data: { prompt, tags },
25
+ data: { prompt, tags, context },
28
26
  metadata: { source: 'dashboard' },
29
27
  lt: { userId },
30
28
  }],
@@ -38,7 +38,7 @@ exports.ltClaimEscalation = ltClaimEscalation;
38
38
  exports.ltEnrichEscalationRouting = ltEnrichEscalationRouting;
39
39
  exports.ltCreateEscalation = ltCreateEscalation;
40
40
  const escalationService = __importStar(require("../../escalation"));
41
- const logger_1 = require("../../logger");
41
+ const logger_1 = require("../../../lib/logger");
42
42
  /**
43
43
  * Resolve an escalation record. Called by the interceptor after
44
44
  * detecting a re-run (resolver data present in the envelope).
@@ -42,17 +42,20 @@ exports.ltAppendMilestones = ltAppendMilestones;
42
42
  exports.ltGetTaskByWorkflowId = ltGetTaskByWorkflowId;
43
43
  exports.ltGetTask = ltGetTask;
44
44
  const taskService = __importStar(require("../../task"));
45
- const publish_1 = require("../../events/publish");
46
- const db_1 = require("../../db");
45
+ const publish_1 = require("../../../lib/events/publish");
46
+ const db_1 = require("../../../lib/db");
47
+ const sql_1 = require("../../user/sql");
47
48
  const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
48
- /** Resolve an external_id to a UUID. Returns null if not found or already a UUID. */
49
+ /** Resolve an identifier to a verified lt_users UUID. Returns undefined if not found. */
49
50
  async function resolveUserUuid(identifier) {
50
51
  if (!identifier)
51
52
  return undefined;
52
- if (UUID_RE.test(identifier))
53
- return identifier;
54
53
  const pool = (0, db_1.getPool)();
55
- const { rows } = await pool.query('SELECT id FROM lt_users WHERE external_id = $1 LIMIT 1', [identifier]);
54
+ if (UUID_RE.test(identifier)) {
55
+ const { rows } = await pool.query(sql_1.VERIFY_USER_BY_ID, [identifier]);
56
+ return rows[0]?.id ?? undefined;
57
+ }
58
+ const { rows } = await pool.query(sql_1.GET_USER_BY_EXTERNAL_ID, [identifier]);
56
59
  return rows[0]?.id ?? undefined;
57
60
  }
58
61
  /**
@@ -2,11 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ltSignalParent = ltSignalParent;
4
4
  exports.ltStartWorkflow = ltStartWorkflow;
5
- const pg_1 = require("pg");
6
5
  const hotmesh_1 = require("@hotmeshio/hotmesh");
7
- const config_1 = require("../../../modules/config");
6
+ const db_1 = require("../../../lib/db");
8
7
  const defaults_1 = require("../../../modules/defaults");
9
- const logger_1 = require("../../logger");
8
+ const logger_1 = require("../../../lib/logger");
10
9
  /**
11
10
  * Signal an orchestrator workflow from within the interceptor.
12
11
  * Used after a child workflow succeeds to send the result back
@@ -14,7 +13,7 @@ const logger_1 = require("../../logger");
14
13
  */
15
14
  async function ltSignalParent(input) {
16
15
  const client = new hotmesh_1.Durable.Client({
17
- connection: { class: pg_1.Client, options: config_1.postgres_options },
16
+ connection: (0, db_1.getConnection)(),
18
17
  });
19
18
  const handle = await client.workflow.getHandle(input.parentTaskQueue, input.parentWorkflowType, input.parentWorkflowId);
20
19
  await handle.signal(input.signalId, input.data);
@@ -28,7 +27,7 @@ async function ltSignalParent(input) {
28
27
  */
29
28
  async function ltStartWorkflow(input) {
30
29
  const client = new hotmesh_1.Durable.Client({
31
- connection: { class: pg_1.Client, options: config_1.postgres_options },
30
+ connection: (0, db_1.getConnection)(),
32
31
  });
33
32
  await client.workflow.start({
34
33
  workflowName: input.workflowName,
@@ -10,7 +10,7 @@
10
10
  * the stored activity result → after-phase runs
11
11
  *
12
12
  * Before phase:
13
- * Injects the envelope's pre-resolved principal into argumentMetadata
13
+ * Injects the envelope's pre-resolved principal into headers
14
14
  * so activities can read it via `Durable.activity.getContext()`.
15
15
  * Skipped for `lt*` interceptor activities (they don't need identity).
16
16
  *
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createLTActivityInterceptor = createLTActivityInterceptor;
4
4
  const hotmesh_1 = require("@hotmeshio/hotmesh");
5
- const publish_1 = require("../events/publish");
5
+ const publish_1 = require("../../lib/events/publish");
6
6
  const state_1 = require("./state");
7
7
  /**
8
8
  * Create an LT Activity Interceptor.
@@ -16,7 +16,7 @@ const state_1 = require("./state");
16
16
  * the stored activity result → after-phase runs
17
17
  *
18
18
  * Before phase:
19
- * Injects the envelope's pre-resolved principal into argumentMetadata
19
+ * Injects the envelope's pre-resolved principal into headers
20
20
  * so activities can read it via `Durable.activity.getContext()`.
21
21
  * Skipped for `lt*` interceptor activities (they don't need identity).
22
22
  *
@@ -32,7 +32,7 @@ function createLTActivityInterceptor(_options) {
32
32
  async execute(activityCtx, workflowCtx, next) {
33
33
  try {
34
34
  // ── Before phase ─────────────────────────────────────────
35
- // Inject principal into argumentMetadata for non-interceptor activities.
35
+ // Inject principal into headers for non-interceptor activities.
36
36
  // The principal was resolved at the front door and travels in the envelope.
37
37
  if (!activityCtx.activityName.startsWith('lt')) {
38
38
  const envelope = (0, state_1.extractEnvelope)(workflowCtx);
@@ -40,8 +40,8 @@ function createLTActivityInterceptor(_options) {
40
40
  if (principal) {
41
41
  activityCtx.options = {
42
42
  ...activityCtx.options,
43
- argumentMetadata: {
44
- ...(activityCtx.options?.argumentMetadata ?? {}),
43
+ headers: {
44
+ ...(activityCtx.options?.headers ?? {}),
45
45
  principal,
46
46
  scopes: envelope.lt?.scopes,
47
47
  ...(envelope.lt?.initiatingPrincipal
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.handleCompletion = handleCompletion;
4
4
  const state_1 = require("./state");
5
- const publish_1 = require("../events/publish");
5
+ const publish_1 = require("../../lib/events/publish");
6
6
  /**
7
7
  * Handle a workflow that returned { type: 'return' }.
8
8
  *