@hotmeshio/long-tail 0.4.10 → 0.4.11

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 (162) hide show
  1. package/build/adapters/express.js +7 -2
  2. package/build/index.d.ts +1 -1
  3. package/build/index.js +3 -2
  4. package/dashboard/dist/assets/{AdminDashboard-BVtpNGO1.js → AdminDashboard-Z32TwYm9.js} +2 -2
  5. package/dashboard/dist/assets/{AdminDashboard-BVtpNGO1.js.map → AdminDashboard-Z32TwYm9.js.map} +1 -1
  6. package/dashboard/dist/assets/{AgentConfigPage-BGDDZpxn.js → AgentConfigPage-uedbi7zT.js} +2 -2
  7. package/dashboard/dist/assets/{AgentConfigPage-BGDDZpxn.js.map → AgentConfigPage-uedbi7zT.js.map} +1 -1
  8. package/dashboard/dist/assets/{AgentDetailPage-9wlNBv63.js → AgentDetailPage-rRQtJQIE.js} +2 -2
  9. package/dashboard/dist/assets/{AgentDetailPage-9wlNBv63.js.map → AgentDetailPage-rRQtJQIE.js.map} +1 -1
  10. package/dashboard/dist/assets/{AgentsPage-C8Sf-OUW.js → AgentsPage-w9zOW2GX.js} +2 -2
  11. package/dashboard/dist/assets/{AgentsPage-C8Sf-OUW.js.map → AgentsPage-w9zOW2GX.js.map} +1 -1
  12. package/dashboard/dist/assets/{AvailableEscalationsPage-BzfgOP5p.js → AvailableEscalationsPage-DZ4ut6rj.js} +2 -2
  13. package/dashboard/dist/assets/{AvailableEscalationsPage-BzfgOP5p.js.map → AvailableEscalationsPage-DZ4ut6rj.js.map} +1 -1
  14. package/dashboard/dist/assets/{BotPicker-6Xk1Fq1l.js → BotPicker-BW3DEEsk.js} +2 -2
  15. package/dashboard/dist/assets/{BotPicker-6Xk1Fq1l.js.map → BotPicker-BW3DEEsk.js.map} +1 -1
  16. package/dashboard/dist/assets/{CapabilitiesPage-C30RqH3d.js → CapabilitiesPage-y7fFEpue.js} +2 -2
  17. package/dashboard/dist/assets/{CapabilitiesPage-C30RqH3d.js.map → CapabilitiesPage-y7fFEpue.js.map} +1 -1
  18. package/dashboard/dist/assets/{CollapsibleSection-DR3D4kMt.js → CollapsibleSection-BqCrlb0a.js} +2 -2
  19. package/dashboard/dist/assets/{CollapsibleSection-DR3D4kMt.js.map → CollapsibleSection-BqCrlb0a.js.map} +1 -1
  20. package/dashboard/dist/assets/{ConfirmDeleteModal-dOxidrSR.js → ConfirmDeleteModal-D9_1b4MW.js} +2 -2
  21. package/dashboard/dist/assets/{ConfirmDeleteModal-dOxidrSR.js.map → ConfirmDeleteModal-D9_1b4MW.js.map} +1 -1
  22. package/dashboard/dist/assets/{CopyableId-D0SQ39nR.js → CopyableId-DaT0ZRHg.js} +2 -2
  23. package/dashboard/dist/assets/{CopyableId-D0SQ39nR.js.map → CopyableId-DaT0ZRHg.js.map} +1 -1
  24. package/dashboard/dist/assets/{CredentialsPage-2nEwkFSm.js → CredentialsPage-jr9En3Wc.js} +2 -2
  25. package/dashboard/dist/assets/{CredentialsPage-2nEwkFSm.js.map → CredentialsPage-jr9En3Wc.js.map} +1 -1
  26. package/dashboard/dist/assets/{CronLabel-Cfq2Hlsq.js → CronLabel-CcPaepiQ.js} +2 -2
  27. package/dashboard/dist/assets/{CronLabel-Cfq2Hlsq.js.map → CronLabel-CcPaepiQ.js.map} +1 -1
  28. package/dashboard/dist/assets/{CustomDurationPicker-CSvIDpXD.js → CustomDurationPicker-CPkebwlV.js} +2 -2
  29. package/dashboard/dist/assets/{CustomDurationPicker-CSvIDpXD.js.map → CustomDurationPicker-CPkebwlV.js.map} +1 -1
  30. package/dashboard/dist/assets/{ElapsedCell-B4nhqILk.js → ElapsedCell-BjL_EpqA.js} +2 -2
  31. package/dashboard/dist/assets/{ElapsedCell-B4nhqILk.js.map → ElapsedCell-BjL_EpqA.js.map} +1 -1
  32. package/dashboard/dist/assets/{EscalationsOverview-CvMHVxgm.js → EscalationsOverview-DyFZKf53.js} +2 -2
  33. package/dashboard/dist/assets/{EscalationsOverview-CvMHVxgm.js.map → EscalationsOverview-DyFZKf53.js.map} +1 -1
  34. package/dashboard/dist/assets/{EventTable-faF8fMen.js → EventTable-BFTY1gJh.js} +2 -2
  35. package/dashboard/dist/assets/{EventTable-faF8fMen.js.map → EventTable-BFTY1gJh.js.map} +1 -1
  36. package/dashboard/dist/assets/{HomePage-DnSHq_dm.js → HomePage-DtCV15bZ.js} +2 -2
  37. package/dashboard/dist/assets/{HomePage-DnSHq_dm.js.map → HomePage-DtCV15bZ.js.map} +1 -1
  38. package/dashboard/dist/assets/{ListToolbar-C1EXfNfS.js → ListToolbar-BEWIH8y8.js} +2 -2
  39. package/dashboard/dist/assets/{ListToolbar-C1EXfNfS.js.map → ListToolbar-BEWIH8y8.js.map} +1 -1
  40. package/dashboard/dist/assets/{McpOverview-B9ZDlmUD.js → McpOverview-CAC72Qkp.js} +2 -2
  41. package/dashboard/dist/assets/{McpOverview-B9ZDlmUD.js.map → McpOverview-CAC72Qkp.js.map} +1 -1
  42. package/dashboard/dist/assets/{McpQueryDetailPage-DdrdIa-N.js → McpQueryDetailPage-Cs5SwLE8.js} +2 -2
  43. package/dashboard/dist/assets/{McpQueryDetailPage-DdrdIa-N.js.map → McpQueryDetailPage-Cs5SwLE8.js.map} +1 -1
  44. package/dashboard/dist/assets/{McpQueryPage-C9wb1cOa.js → McpQueryPage-CbzTE3lo.js} +2 -2
  45. package/dashboard/dist/assets/{McpQueryPage-C9wb1cOa.js.map → McpQueryPage-CbzTE3lo.js.map} +1 -1
  46. package/dashboard/dist/assets/{McpRunDetailPage-b5ungm-L.js → McpRunDetailPage-BJKdHgWh.js} +2 -2
  47. package/dashboard/dist/assets/{McpRunDetailPage-b5ungm-L.js.map → McpRunDetailPage-BJKdHgWh.js.map} +1 -1
  48. package/dashboard/dist/assets/{McpRunsPage-wa62n3tp.js → McpRunsPage-BVt_3aJW.js} +2 -2
  49. package/dashboard/dist/assets/{McpRunsPage-wa62n3tp.js.map → McpRunsPage-BVt_3aJW.js.map} +1 -1
  50. package/dashboard/dist/assets/{Modal-DEODGeqx.js → Modal-CSrxpXeM.js} +2 -2
  51. package/dashboard/dist/assets/{Modal-DEODGeqx.js.map → Modal-CSrxpXeM.js.map} +1 -1
  52. package/dashboard/dist/assets/{OperatorDashboard-BDpk_HF5.js → OperatorDashboard-B8dwVFC4.js} +2 -2
  53. package/dashboard/dist/assets/{OperatorDashboard-BDpk_HF5.js.map → OperatorDashboard-B8dwVFC4.js.map} +1 -1
  54. package/dashboard/dist/assets/{ProcessDetailPage-DHLKP0kz.js → ProcessDetailPage-DBun2ogu.js} +2 -2
  55. package/dashboard/dist/assets/{ProcessDetailPage-DHLKP0kz.js.map → ProcessDetailPage-DBun2ogu.js.map} +1 -1
  56. package/dashboard/dist/assets/{ProcessesListPage-CpANHQGA.js → ProcessesListPage-TDjac8Lk.js} +2 -2
  57. package/dashboard/dist/assets/{ProcessesListPage-CpANHQGA.js.map → ProcessesListPage-TDjac8Lk.js.map} +1 -1
  58. package/dashboard/dist/assets/{RolesPage-Ddta3UZX.js → RolesPage-NkVRnqrM.js} +2 -2
  59. package/dashboard/dist/assets/{RolesPage-Ddta3UZX.js.map → RolesPage-NkVRnqrM.js.map} +1 -1
  60. package/dashboard/dist/assets/{RunAsSelector-BpeN2J3V.js → RunAsSelector-DRMoYomI.js} +2 -2
  61. package/dashboard/dist/assets/{RunAsSelector-BpeN2J3V.js.map → RunAsSelector-DRMoYomI.js.map} +1 -1
  62. package/dashboard/dist/assets/{ServerName-BXSm_14r.js → ServerName-A6Wlv3vZ.js} +2 -2
  63. package/dashboard/dist/assets/{ServerName-BXSm_14r.js.map → ServerName-A6Wlv3vZ.js.map} +1 -1
  64. package/dashboard/dist/assets/{SwimlaneTimeline-DSra_wMN.js → SwimlaneTimeline-DsPrsDBU.js} +2 -2
  65. package/dashboard/dist/assets/{SwimlaneTimeline-DSra_wMN.js.map → SwimlaneTimeline-DsPrsDBU.js.map} +1 -1
  66. package/dashboard/dist/assets/{TaskDetailPage-Dqha2tKb.js → TaskDetailPage-CZPxCOgP.js} +2 -2
  67. package/dashboard/dist/assets/{TaskDetailPage-Dqha2tKb.js.map → TaskDetailPage-CZPxCOgP.js.map} +1 -1
  68. package/dashboard/dist/assets/{TasksListPage-CM16b5S8.js → TasksListPage-BYC4Mbx8.js} +2 -2
  69. package/dashboard/dist/assets/{TasksListPage-CM16b5S8.js.map → TasksListPage-BYC4Mbx8.js.map} +1 -1
  70. package/dashboard/dist/assets/{TimeAgo-DCjPMPw-.js → TimeAgo-C3j486uV.js} +2 -2
  71. package/dashboard/dist/assets/{TimeAgo-DCjPMPw-.js.map → TimeAgo-C3j486uV.js.map} +1 -1
  72. package/dashboard/dist/assets/{TimestampCell-BBdTvZ08.js → TimestampCell-DoBoqZGS.js} +2 -2
  73. package/dashboard/dist/assets/{TimestampCell-BBdTvZ08.js.map → TimestampCell-DoBoqZGS.js.map} +1 -1
  74. package/dashboard/dist/assets/{ToolTestPanel-Dz-76HVQ.js → ToolTestPanel-CoB5Ybz3.js} +2 -2
  75. package/dashboard/dist/assets/{ToolTestPanel-Dz-76HVQ.js.map → ToolTestPanel-CoB5Ybz3.js.map} +1 -1
  76. package/dashboard/dist/assets/{TopicDetailPage-Ccqf9h5E.js → TopicDetailPage-Bl6daecJ.js} +2 -2
  77. package/dashboard/dist/assets/{TopicDetailPage-Ccqf9h5E.js.map → TopicDetailPage-Bl6daecJ.js.map} +1 -1
  78. package/dashboard/dist/assets/{TopicsPage--1V67zFa.js → TopicsPage-CTU8fi_i.js} +2 -2
  79. package/dashboard/dist/assets/{TopicsPage--1V67zFa.js.map → TopicsPage-CTU8fi_i.js.map} +1 -1
  80. package/dashboard/dist/assets/{UserName-CfaTpV3T.js → UserName-16nVz3Sw.js} +2 -2
  81. package/dashboard/dist/assets/{UserName-CfaTpV3T.js.map → UserName-16nVz3Sw.js.map} +1 -1
  82. package/dashboard/dist/assets/{WorkflowExecutionPage-Cp5_bsHY.js → WorkflowExecutionPage-RYeTXRHH.js} +2 -2
  83. package/dashboard/dist/assets/{WorkflowExecutionPage-Cp5_bsHY.js.map → WorkflowExecutionPage-RYeTXRHH.js.map} +1 -1
  84. package/dashboard/dist/assets/{WorkflowsDashboard-DaZZg4xU.js → WorkflowsDashboard-B8tyWMBl.js} +2 -2
  85. package/dashboard/dist/assets/{WorkflowsDashboard-DaZZg4xU.js.map → WorkflowsDashboard-B8tyWMBl.js.map} +1 -1
  86. package/dashboard/dist/assets/{WorkflowsOverview-D_ZkBVhB.js → WorkflowsOverview-Bd7eUOlY.js} +2 -2
  87. package/dashboard/dist/assets/{WorkflowsOverview-D_ZkBVhB.js.map → WorkflowsOverview-Bd7eUOlY.js.map} +1 -1
  88. package/dashboard/dist/assets/{YamlWorkflowsPage-BKFXRwbK.js → YamlWorkflowsPage-CISGkpSa.js} +2 -2
  89. package/dashboard/dist/assets/{YamlWorkflowsPage-BKFXRwbK.js.map → YamlWorkflowsPage-CISGkpSa.js.map} +1 -1
  90. package/dashboard/dist/assets/{agents-GIg2jxet.js → agents-DdrWb9IA.js} +2 -2
  91. package/dashboard/dist/assets/{agents-GIg2jxet.js.map → agents-DdrWb9IA.js.map} +1 -1
  92. package/dashboard/dist/assets/{bots-CvrmNkL3.js → bots-DNEC8CB_.js} +2 -2
  93. package/dashboard/dist/assets/{bots-CvrmNkL3.js.map → bots-DNEC8CB_.js.map} +1 -1
  94. package/dashboard/dist/assets/{capabilities-CQ5WgulO.js → capabilities-x0lc5Qr5.js} +2 -2
  95. package/dashboard/dist/assets/{capabilities-CQ5WgulO.js.map → capabilities-x0lc5Qr5.js.map} +1 -1
  96. package/dashboard/dist/assets/{controlplane-sh5paKGB.js → controlplane-BKtGwxSj.js} +2 -2
  97. package/dashboard/dist/assets/{controlplane-sh5paKGB.js.map → controlplane-BKtGwxSj.js.map} +1 -1
  98. package/dashboard/dist/assets/{escalation-DlTtA35J.js → escalation-Cp3QJCTq.js} +2 -2
  99. package/dashboard/dist/assets/{escalation-DlTtA35J.js.map → escalation-Cp3QJCTq.js.map} +1 -1
  100. package/dashboard/dist/assets/{escalation-columns-BHiDO_RZ.js → escalation-columns-_wkDseNt.js} +2 -2
  101. package/dashboard/dist/assets/{escalation-columns-BHiDO_RZ.js.map → escalation-columns-_wkDseNt.js.map} +1 -1
  102. package/dashboard/dist/assets/{helpers-DuKOBZxw.js → helpers-Bkhi987m.js} +2 -2
  103. package/dashboard/dist/assets/{helpers-DuKOBZxw.js.map → helpers-Bkhi987m.js.map} +1 -1
  104. package/dashboard/dist/assets/{index-qpt9aUuQ.js → index-BOnE32zg.js} +2 -2
  105. package/dashboard/dist/assets/{index-qpt9aUuQ.js.map → index-BOnE32zg.js.map} +1 -1
  106. package/dashboard/dist/assets/{index-Dbxp9Nvq.js → index-BhPDvjQ6.js} +2 -2
  107. package/dashboard/dist/assets/{index-Dbxp9Nvq.js.map → index-BhPDvjQ6.js.map} +1 -1
  108. package/dashboard/dist/assets/{index-B_e2uIz9.js → index-CGy9PrdX.js} +28 -28
  109. package/dashboard/dist/assets/index-CGy9PrdX.js.map +1 -0
  110. package/dashboard/dist/assets/{index-C-JkowYp.js → index-CTl3ROOo.js} +2 -2
  111. package/dashboard/dist/assets/{index-C-JkowYp.js.map → index-CTl3ROOo.js.map} +1 -1
  112. package/dashboard/dist/assets/{index-DIpDSspp.js → index-CVv6Hs0J.js} +2 -2
  113. package/dashboard/dist/assets/{index-DIpDSspp.js.map → index-CVv6Hs0J.js.map} +1 -1
  114. package/dashboard/dist/assets/{index-PZaFsSGv.js → index-CmEmMw8h.js} +2 -2
  115. package/dashboard/dist/assets/{index-PZaFsSGv.js.map → index-CmEmMw8h.js.map} +1 -1
  116. package/dashboard/dist/assets/{index-BXGMin7U.js → index-D6EMWmS-.js} +2 -2
  117. package/dashboard/dist/assets/{index-BXGMin7U.js.map → index-D6EMWmS-.js.map} +1 -1
  118. package/dashboard/dist/assets/{index-CugmdGk-.js → index-DB_zkstT.js} +2 -2
  119. package/dashboard/dist/assets/{index-CugmdGk-.js.map → index-DB_zkstT.js.map} +1 -1
  120. package/dashboard/dist/assets/{index-BWXKb7C7.js → index-Dig8_eMS.js} +2 -2
  121. package/dashboard/dist/assets/{index-BWXKb7C7.js.map → index-Dig8_eMS.js.map} +1 -1
  122. package/dashboard/dist/assets/{index-JH__2KWY.js → index-cUV1o7mj.js} +2 -2
  123. package/dashboard/dist/assets/{index-JH__2KWY.js.map → index-cUV1o7mj.js.map} +1 -1
  124. package/dashboard/dist/assets/{index-CglOyur2.js → index-rQpU8PEa.js} +2 -2
  125. package/dashboard/dist/assets/{index-CglOyur2.js.map → index-rQpU8PEa.js.map} +1 -1
  126. package/dashboard/dist/assets/{index-7icR5Pxv.js → index-x7kIRS2q.js} +2 -2
  127. package/dashboard/dist/assets/{index-7icR5Pxv.js.map → index-x7kIRS2q.js.map} +1 -1
  128. package/dashboard/dist/assets/{index-CRDT24gK.js → index-zK7nCOfQ.js} +2 -2
  129. package/dashboard/dist/assets/{index-CRDT24gK.js.map → index-zK7nCOfQ.js.map} +1 -1
  130. package/dashboard/dist/assets/{knowledge-tDl7bioT.js → knowledge-BDr9CzZ7.js} +2 -2
  131. package/dashboard/dist/assets/{knowledge-tDl7bioT.js.map → knowledge-BDr9CzZ7.js.map} +1 -1
  132. package/dashboard/dist/assets/{mcp-CvdtxZQK.js → mcp-CCWQrZNk.js} +2 -2
  133. package/dashboard/dist/assets/{mcp-CvdtxZQK.js.map → mcp-CCWQrZNk.js.map} +1 -1
  134. package/dashboard/dist/assets/{mcp-query-D5uxvom6.js → mcp-query-DYy5Xha0.js} +2 -2
  135. package/dashboard/dist/assets/{mcp-query-D5uxvom6.js.map → mcp-query-DYy5Xha0.js.map} +1 -1
  136. package/dashboard/dist/assets/{mcp-runs-DBUF_MeD.js → mcp-runs-DIh5XCg1.js} +2 -2
  137. package/dashboard/dist/assets/{mcp-runs-DBUF_MeD.js.map → mcp-runs-DIh5XCg1.js.map} +1 -1
  138. package/dashboard/dist/assets/{namespaces-BYTDs3EH.js → namespaces-CAaahBQS.js} +2 -2
  139. package/dashboard/dist/assets/{namespaces-BYTDs3EH.js.map → namespaces-CAaahBQS.js.map} +1 -1
  140. package/dashboard/dist/assets/{roles-BWPoKy_E.js → roles-DIjyTYc4.js} +2 -2
  141. package/dashboard/dist/assets/{roles-BWPoKy_E.js.map → roles-DIjyTYc4.js.map} +1 -1
  142. package/dashboard/dist/assets/{tasks-BQH9o3Ge.js → tasks-DiBPwT-p.js} +2 -2
  143. package/dashboard/dist/assets/{tasks-BQH9o3Ge.js.map → tasks-DiBPwT-p.js.map} +1 -1
  144. package/dashboard/dist/assets/{topics-BjuxqPQn.js → topics-CDjGhp4t.js} +2 -2
  145. package/dashboard/dist/assets/{topics-BjuxqPQn.js.map → topics-CDjGhp4t.js.map} +1 -1
  146. package/dashboard/dist/assets/{useEventHooks-CZR0V3cW.js → useEventHooks-BXzvSJIr.js} +2 -2
  147. package/dashboard/dist/assets/{useEventHooks-CZR0V3cW.js.map → useEventHooks-BXzvSJIr.js.map} +1 -1
  148. package/dashboard/dist/assets/{useFilterParams-DZCAaBC7.js → useFilterParams-x-Dg0Vgz.js} +2 -2
  149. package/dashboard/dist/assets/{useFilterParams-DZCAaBC7.js.map → useFilterParams-x-Dg0Vgz.js.map} +1 -1
  150. package/dashboard/dist/assets/{useYamlActivityEvents-DATwT-Bk.js → useYamlActivityEvents-CAkKAAX5.js} +2 -2
  151. package/dashboard/dist/assets/{useYamlActivityEvents-DATwT-Bk.js.map → useYamlActivityEvents-CAkKAAX5.js.map} +1 -1
  152. package/dashboard/dist/assets/{users-DzO800OU.js → users-DmkMv9Hc.js} +2 -2
  153. package/dashboard/dist/assets/{users-DzO800OU.js.map → users-DmkMv9Hc.js.map} +1 -1
  154. package/dashboard/dist/assets/{vendor-react-CX88sFS5.js → vendor-react-CXumBFUA.js} +6 -6
  155. package/dashboard/dist/assets/{vendor-react-CX88sFS5.js.map → vendor-react-CXumBFUA.js.map} +1 -1
  156. package/dashboard/dist/assets/{workflows-C093TSq9.js → workflows-Bwikzl2q.js} +2 -2
  157. package/dashboard/dist/assets/{workflows-C093TSq9.js.map → workflows-Bwikzl2q.js.map} +1 -1
  158. package/dashboard/dist/assets/{yaml-workflows-Du9N-ZOj.js → yaml-workflows--YR7XQ5F.js} +2 -2
  159. package/dashboard/dist/assets/{yaml-workflows-Du9N-ZOj.js.map → yaml-workflows--YR7XQ5F.js.map} +1 -1
  160. package/dashboard/dist/index.html +2 -2
  161. package/package.json +1 -1
  162. package/dashboard/dist/assets/index-B_e2uIz9.js.map +0 -1
@@ -135,10 +135,15 @@ class LTExpressAdapter {
135
135
  router.use(express_1.default.static(dashboardDist, { index: false }));
136
136
  // SPA fallback — inject base path into index.html
137
137
  const indexHtml = (0, fs_1.readFileSync)(path_1.default.join(dashboardDist, 'index.html'), 'utf-8');
138
+ const basePath = this.basePath;
139
+ // Serve __LT_BASE__ as external script (CSP-safe, no inline scripts)
140
+ router.get('/config.js', (_req, res) => {
141
+ res.type('application/javascript').send(`window.__LT_BASE__="${basePath}";`);
142
+ });
138
143
  router.get('/{*splat}', (_req, res) => {
139
144
  const html = indexHtml.replace('<head>', '<head>' +
140
- `<base href="${this.basePath}/">` +
141
- `<script>window.__LT_BASE__="${this.basePath}"</script>`);
145
+ `<base href="${basePath}/">` +
146
+ `<script src="./config.js"></script>`);
142
147
  res.type('html').send(html);
143
148
  });
144
149
  }
package/build/index.d.ts CHANGED
@@ -4,7 +4,7 @@ export { createLTActivityInterceptor } from './services/interceptor/activity-int
4
4
  export { executeLT } from './services/orchestrator';
5
5
  export { conditionLT } from './services/orchestrator/condition';
6
6
  export type { ExecuteLTOptions } from './services/orchestrator/types';
7
- export { JwtAuthAdapter, createAuthMiddleware, requireAuth, requireAdmin, signToken } from './modules/auth';
7
+ export { JwtAuthAdapter, createAuthMiddleware, requireAuth, requireAdmin, signToken, setAuthAdapter } from './modules/auth';
8
8
  export * from './types';
9
9
  export * as TaskService from './services/task';
10
10
  export * as EscalationService from './services/escalation';
package/build/index.js CHANGED
@@ -36,8 +36,8 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  };
37
37
  })();
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.getSystemWorkers = exports.registerMcpTool = exports.getToolContext = exports.getActivityIdentity = exports.McpEscalationStrategy = exports.DefaultEscalationStrategy = exports.escalationStrategyRegistry = exports.McpVisionServer = exports.McpTranslationServer = exports.McpServer = exports.McpClient = exports.McpService = exports.BuiltInMcpAdapter = exports.mcpRegistry = exports.defaultMaintenanceConfig = exports.maintenanceRegistry = exports.PinoLoggerAdapter = exports.loggerRegistry = exports.HoneycombTelemetryAdapter = exports.telemetryRegistry = exports.publishKnowledgeEvent = exports.publishAgentEvent = exports.publishWorkflowEvent = exports.publishActivityEvent = exports.publishEscalationEvent = exports.publishTaskEvent = exports.publishMilestoneEvent = exports.SocketIOEventAdapter = exports.InMemoryEventAdapter = exports.NatsEventAdapter = exports.eventRegistry = exports.ltConfig = exports.seedConfigTopics = exports.seedSystemTopics = exports.TopicService = exports.UserService = exports.ConfigService = exports.EscalationService = exports.TaskService = exports.signToken = exports.requireAdmin = exports.requireAuth = exports.createAuthMiddleware = exports.JwtAuthAdapter = exports.conditionLT = exports.executeLT = exports.createLTActivityInterceptor = exports.createLTInterceptor = exports.registerLT = exports.start = void 0;
40
- exports.LTExpressAdapter = exports.api = exports.KnowledgeApi = exports.resolveCredential = exports.mimeFromPath = exports.getStorageBackend = exports.listOAuthConnections = exports.getFreshAccessToken = exports.createClient = exports.CallbackEventAdapter = exports.builtinMcpServerFactories = exports.getSystemAgents = void 0;
39
+ exports.registerMcpTool = exports.getToolContext = exports.getActivityIdentity = exports.McpEscalationStrategy = exports.DefaultEscalationStrategy = exports.escalationStrategyRegistry = exports.McpVisionServer = exports.McpTranslationServer = exports.McpServer = exports.McpClient = exports.McpService = exports.BuiltInMcpAdapter = exports.mcpRegistry = exports.defaultMaintenanceConfig = exports.maintenanceRegistry = exports.PinoLoggerAdapter = exports.loggerRegistry = exports.HoneycombTelemetryAdapter = exports.telemetryRegistry = exports.publishKnowledgeEvent = exports.publishAgentEvent = exports.publishWorkflowEvent = exports.publishActivityEvent = exports.publishEscalationEvent = exports.publishTaskEvent = exports.publishMilestoneEvent = exports.SocketIOEventAdapter = exports.InMemoryEventAdapter = exports.NatsEventAdapter = exports.eventRegistry = exports.ltConfig = exports.seedConfigTopics = exports.seedSystemTopics = exports.TopicService = exports.UserService = exports.ConfigService = exports.EscalationService = exports.TaskService = exports.setAuthAdapter = exports.signToken = exports.requireAdmin = exports.requireAuth = exports.createAuthMiddleware = exports.JwtAuthAdapter = exports.conditionLT = exports.executeLT = exports.createLTActivityInterceptor = exports.createLTInterceptor = exports.registerLT = exports.start = void 0;
40
+ exports.LTExpressAdapter = exports.api = exports.KnowledgeApi = exports.resolveCredential = exports.mimeFromPath = exports.getStorageBackend = exports.listOAuthConnections = exports.getFreshAccessToken = exports.createClient = exports.CallbackEventAdapter = exports.builtinMcpServerFactories = exports.getSystemAgents = exports.getSystemWorkers = void 0;
41
41
  const config_1 = require("./modules/config");
42
42
  const logger_1 = require("./lib/logger");
43
43
  const start_1 = require("./start");
@@ -59,6 +59,7 @@ Object.defineProperty(exports, "createAuthMiddleware", { enumerable: true, get:
59
59
  Object.defineProperty(exports, "requireAuth", { enumerable: true, get: function () { return auth_1.requireAuth; } });
60
60
  Object.defineProperty(exports, "requireAdmin", { enumerable: true, get: function () { return auth_1.requireAdmin; } });
61
61
  Object.defineProperty(exports, "signToken", { enumerable: true, get: function () { return auth_1.signToken; } });
62
+ Object.defineProperty(exports, "setAuthAdapter", { enumerable: true, get: function () { return auth_1.setAuthAdapter; } });
62
63
  __exportStar(require("./types"), exports);
63
64
  exports.TaskService = __importStar(require("./services/task"));
64
65
  exports.EscalationService = __importStar(require("./services/escalation"));
@@ -1,2 +1,2 @@
1
- import{j as o}from"./vendor-query-B2UbickB.js";import{c as n}from"./tasks-BQH9o3Ge.js";import{r as m}from"./index-B_e2uIz9.js";import{f as c}from"./useEventHooks-CZR0V3cW.js";import{u}from"./mcp-CvdtxZQK.js";import{P as d}from"./PageHeaderWithStats-DQmNXYcG.js";import"./vendor-react-CX88sFS5.js";import"./vendor-icons-5gSix3t2.js";function j(){var a;c();const{data:s}=n({limit:1}),{data:e}=m({status:"pending",limit:1}),{data:t}=u(),r=((a=t==null?void 0:t.servers)==null?void 0:a.filter(i=>i.status==="connected").length)??0,l=t?`${r}/${t.total}`:"—";return o.jsx("div",{children:o.jsx(d,{title:"Admin",stats:[{label:"Tasks",value:(s==null?void 0:s.total)??"—"},{label:"Pending Escalations",value:(e==null?void 0:e.total)??"—",dotClass:"bg-status-pending"},{label:"MCP Servers",value:l},{label:"System",value:"Healthy",dotClass:"bg-status-success"}]})})}export{j as AdminDashboard};
2
- //# sourceMappingURL=AdminDashboard-BVtpNGO1.js.map
1
+ import{j as o}from"./vendor-query-B2UbickB.js";import{c as n}from"./tasks-DiBPwT-p.js";import{r as m}from"./index-CGy9PrdX.js";import{f as c}from"./useEventHooks-BXzvSJIr.js";import{u}from"./mcp-CCWQrZNk.js";import{P as d}from"./PageHeaderWithStats-DQmNXYcG.js";import"./vendor-react-CXumBFUA.js";import"./vendor-icons-5gSix3t2.js";function j(){var a;c();const{data:s}=n({limit:1}),{data:e}=m({status:"pending",limit:1}),{data:t}=u(),r=((a=t==null?void 0:t.servers)==null?void 0:a.filter(i=>i.status==="connected").length)??0,l=t?`${r}/${t.total}`:"—";return o.jsx("div",{children:o.jsx(d,{title:"Admin",stats:[{label:"Tasks",value:(s==null?void 0:s.total)??"—"},{label:"Pending Escalations",value:(e==null?void 0:e.total)??"—",dotClass:"bg-status-pending"},{label:"MCP Servers",value:l},{label:"System",value:"Healthy",dotClass:"bg-status-success"}]})})}export{j as AdminDashboard};
2
+ //# sourceMappingURL=AdminDashboard-Z32TwYm9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdminDashboard-BVtpNGO1.js","sources":["../../src/pages/admin/AdminDashboard.tsx"],"sourcesContent":["import { useTasks } from '../../api/tasks';\nimport { useEscalations } from '../../api/escalations';\nimport { useEscalationListEvents } from '../../hooks/useEventHooks';\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":["AdminDashboard","useEscalationListEvents","taskData","useTasks","pendingEsc","useEscalations","mcpData","useMcpServers","connectedServers","_a","s","mcpLabel","jsx","PageHeaderWithStats"],"mappings":"4UAMO,SAASA,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,OAAQC,GAAMA,EAAE,SAAW,aAAa,SAAU,EAChEC,EAAWL,EAAU,GAAGE,CAAgB,IAAIF,EAAQ,KAAK,GAAK,IAEpE,aACG,MAAA,CACC,SAAAM,EAAAA,IAACC,EAAA,CACC,MAAM,QACN,MAAO,CACL,CAAE,MAAO,QAAS,OAAOX,GAAA,YAAAA,EAAU,QAAS,GAAA,EAC5C,CAAE,MAAO,sBAAuB,OAAOE,GAAA,YAAAA,EAAY,QAAS,IAAK,SAAU,mBAAA,EAC3E,CAAE,MAAO,cAAe,MAAOO,CAAA,EAC/B,CAAE,MAAO,SAAU,MAAO,UAAW,SAAU,mBAAA,CAAoB,CACrE,CAAA,EAEJ,CAEJ"}
1
+ {"version":3,"file":"AdminDashboard-Z32TwYm9.js","sources":["../../src/pages/admin/AdminDashboard.tsx"],"sourcesContent":["import { useTasks } from '../../api/tasks';\nimport { useEscalations } from '../../api/escalations';\nimport { useEscalationListEvents } from '../../hooks/useEventHooks';\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":["AdminDashboard","useEscalationListEvents","taskData","useTasks","pendingEsc","useEscalations","mcpData","useMcpServers","connectedServers","_a","s","mcpLabel","jsx","PageHeaderWithStats"],"mappings":"4UAMO,SAASA,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,OAAQC,GAAMA,EAAE,SAAW,aAAa,SAAU,EAChEC,EAAWL,EAAU,GAAGE,CAAgB,IAAIF,EAAQ,KAAK,GAAK,IAEpE,aACG,MAAA,CACC,SAAAM,EAAAA,IAACC,EAAA,CACC,MAAM,QACN,MAAO,CACL,CAAE,MAAO,QAAS,OAAOX,GAAA,YAAAA,EAAU,QAAS,GAAA,EAC5C,CAAE,MAAO,sBAAuB,OAAOE,GAAA,YAAAA,EAAY,QAAS,IAAK,SAAU,mBAAA,EAC3E,CAAE,MAAO,cAAe,MAAOO,CAAA,EAC/B,CAAE,MAAO,SAAU,MAAO,UAAW,SAAU,mBAAA,CAAoB,CACrE,CAAA,EAEJ,CAEJ"}
@@ -1,4 +1,4 @@
1
- import{j as e,a as f}from"./vendor-query-B2UbickB.js";import{a as re,d as le,b as oe}from"./agents-GIg2jxet.js";import{C as ce,u as de,a as pe,b as xe,c as ue}from"./CronLabel-Cfq2Hlsq.js";import{d as me,u as he}from"./index-B_e2uIz9.js";import{P as fe}from"./PageHeader-B4w-LDUF.js";import{B as P,d as G,b as ve,R as U,l as L,p as X,a5 as Y,a as Z,aG as ee,Q as be}from"./vendor-icons-5gSix3t2.js";import{e as je}from"./knowledge-tDl7bioT.js";import{R as te}from"./RunAsSelector-BpeN2J3V.js";import{u as ye}from"./workflows-C093TSq9.js";import{u as ge}from"./yaml-workflows-Du9N-ZOj.js";import{u as se}from"./capabilities-CQ5WgulO.js";import{u as we}from"./topics-BjuxqPQn.js";import{E as Ne}from"./EventTopicPill-RaASGdZz.js";import{W as V}from"./WorkflowPill-BkfIn8N3.js";import{e as _e,c as ke,f as Ce}from"./vendor-react-CX88sFS5.js";import"./BotPicker-6Xk1Fq1l.js";import"./bots-CvrmNkL3.js";const Q={name:"",description:"",goals:"",rules:"",user_id:"",knowledge_domain:"",subscriptions:[],schedules:[]},Se={topic:"",filter:"",reaction_type:"durable",workflow_type:"",pipeline_id:"",mcp_prompt:"",server_id:"",tool_name:"",input_mapping:"{}",execute_as:"",enabled:!0},qe={cron:"0 * * * *",reaction_type:"durable",workflow_type:"",pipeline_id:"",server_id:"",tool_name:"",envelope:"{}",execute_as:""};function Re(s,a){var o,p,u;const l=(p=(o=s.behaviors)==null?void 0:o.schedules)!=null&&p.length?s.behaviors.schedules.map(n=>({cron:n.cron||"",reaction_type:n.reaction_type||"durable",workflow_type:n.workflow_type||"",pipeline_id:n.pipeline_id||"",server_id:n.server_id||"",tool_name:n.tool_name||"",envelope:n.envelope?JSON.stringify(n.envelope,null,2):"{}",execute_as:n.execute_as||""})):(u=s.behaviors)!=null&&u.cron?[{cron:s.behaviors.cron,reaction_type:"durable",workflow_type:s.workflow_type??"",pipeline_id:"",server_id:"",tool_name:"",envelope:"{}",execute_as:""}]:[];return{name:s.id,description:s.description??"",goals:s.goals??"",rules:s.rules??"",user_id:s.user_id??"",knowledge_domain:s.knowledge_domain??"",subscriptions:a.map(n=>({id:n.id,topic:n.topic,filter:n.filter?JSON.stringify(n.filter,null,2):"",reaction_type:n.reaction_type,workflow_type:n.workflow_type??"",pipeline_id:n.pipeline_id??"",mcp_prompt:n.mcp_prompt??"",server_id:n.server_id??"",tool_name:n.tool_name??"",input_mapping:JSON.stringify(n.input_mapping??{},null,2),execute_as:n.execute_as??"",enabled:n.enabled})),schedules:l}}function $e(s){var l;const a={};return s.schedules.length>0&&(a.schedules=s.schedules.map(o=>({cron:o.cron,reaction_type:o.reaction_type||"durable",workflow_type:o.reaction_type==="pipeline"?void 0:o.workflow_type,pipeline_id:o.reaction_type==="pipeline"?o.pipeline_id:void 0,envelope:B(o.envelope)??{},execute_as:o.execute_as||void 0})),a.cron=s.schedules[0].cron),{id:s.name,description:s.description||void 0,goals:s.goals||void 0,rules:s.rules||void 0,user_id:s.user_id||void 0,knowledge_domain:s.knowledge_domain||void 0,behaviors:a,workflow_type:((l=s.schedules[0])==null?void 0:l.workflow_type)||void 0,pipeline_id:void 0}}function Pe(s){return s.subscriptions.map(a=>({id:a.id,topic:a.topic,filter:a.filter?B(a.filter):void 0,reaction_type:a.reaction_type,workflow_type:a.workflow_type||void 0,pipeline_id:a.pipeline_id||void 0,mcp_prompt:a.mcp_prompt||void 0,server_id:a.server_id||void 0,tool_name:a.tool_name||void 0,input_mapping:B(a.input_mapping)??{},execute_as:a.execute_as||void 0,enabled:a.enabled}))}function B(s){if(s.trim())try{return JSON.parse(s)}catch{return}}const S="section-header mt-[3em] first:mt-0",E="label",_="hint",R="input",M="input-json w-full";function Ie({form:s,set:a}){return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsx("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Give your automation a name and describe what it does. The name appears everywhere — in events, logs, and the dashboard."}),e.jsx("button",{onClick:()=>{window.location.hash="#docs:agents.md:identity"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Identity",children:e.jsx(P,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Name *"}),e.jsx("input",{type:"text",value:s.name,onChange:l=>a("name",l.target.value),placeholder:"health-monitor",className:R}),e.jsx("p",{className:_,children:"Lowercase, kebab-case. This appears everywhere."})]}),e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Description"}),e.jsx("input",{type:"text",value:s.description,onChange:l=>a("description",l.target.value),placeholder:"Watches for workflow failures and captures diagnostics",className:R}),e.jsx("p",{className:_,children:"One sentence that explains what this automation does."})]})]})}function Ee({form:s,set:a}){return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsx("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Goals define what drives the automation. Rules define what constrains it."}),e.jsx("button",{onClick:()=>{window.location.hash="#docs:agents.md:motivation"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Motivation",children:e.jsx(P,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-8",children:[e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Goals"}),e.jsx("textarea",{value:s.goals,onChange:l=>a("goals",l.target.value),placeholder:"Detect failures early, capture diagnostics, alert before cascading",rows:4,className:`${R} resize-none`}),e.jsx("p",{className:_,children:"Primary motivation. What the automation is trying to achieve."})]}),e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Rules"}),e.jsx("textarea",{value:s.rules,onChange:l=>a("rules",l.target.value),placeholder:"Never auto-restart failed workflows. Always escalate to humans.",rows:4,className:`${R} resize-none`}),e.jsx("p",{className:_,children:"Guardrails. What it must never do, even when goals suggest it should."})]})]})]})}function Oe({form:s,set:a}){const{data:l}=je(),o=(l==null?void 0:l.domains)??[];return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsx("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Assign a knowledge domain — the automation's memory. It stores context here over time."}),e.jsx("button",{onClick:()=>{window.location.hash="#docs:agents.md:knowledge"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Knowledge",children:e.jsx(P,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Knowledge Domain"}),e.jsx("input",{type:"text",value:s.knowledge_domain,onChange:p=>a("knowledge_domain",p.target.value),placeholder:"e.g., system-health, content-review, vendor-data",className:R,list:"domain-suggestions"}),e.jsx("datalist",{id:"domain-suggestions",children:o.map(p=>e.jsx("option",{value:p.domain},p.domain))}),e.jsx("p",{className:_,children:"Choose an existing domain to share memory, or type a new name to create one."})]}),o.length>0&&e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Existing Domains"}),e.jsx("div",{className:"space-y-0.5 mt-2",children:o.map(p=>e.jsxs("button",{type:"button",onClick:()=>a("knowledge_domain",p.domain),className:`w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors ${s.knowledge_domain===p.domain?"border-l-2 border-l-accent bg-accent/5":"hover:bg-surface-hover border-l-2 border-l-transparent"}`,children:[e.jsx(G,{className:"w-3.5 h-3.5 text-text-quaternary shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"text-sm text-text-primary flex-1",children:p.domain}),e.jsxs("span",{className:"text-[10px] text-text-quaternary",children:[p.count," entries"]}),e.jsx("span",{className:"text-[9px] text-text-quaternary",children:e.jsx(me,{date:p.latest})})]},p.domain))})]})]})}function We({serverId:s,toolName:a,onChange:l}){const{data:o}=se(),p=f.useMemo(()=>{var t;return((t=o==null?void 0:o.categories)==null?void 0:t.flatMap(i=>i.tools))??[]},[o]),[u,n]=f.useState(!1),[v,d]=f.useState(""),c=f.useRef(null),h=f.useRef(null);f.useEffect(()=>{if(!u)return;function t(i){h.current&&!h.current.contains(i.target)&&n(!1)}return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[u]);const r=a?`${a}`:"",x=u?v:r,w=f.useMemo(()=>{const t=(u?v:"").toLowerCase();return t?p.filter(i=>i.name.toLowerCase().includes(t)||i.serverName.toLowerCase().includes(t)||(i.description??"").toLowerCase().includes(t)):p},[p,v,u]),m=a?p.find(t=>t.serverId===s&&t.name===a):void 0;return e.jsxs("div",{ref:h,className:"relative",children:[e.jsx("input",{ref:c,type:"text",value:x,onFocus:()=>{n(!0),d(r)},onChange:t=>{const i=t.target.value;d(i),i||l("",""),u||n(!0)},placeholder:"Search capabilities...",className:"input font-mono text-sm w-full"}),!u&&(m==null?void 0:m.description)&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-1 italic",children:m.description}),u&&w.length>0&&e.jsx("div",{className:"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:w.map(t=>e.jsxs("button",{type:"button",onClick:()=>{l(t.serverId,t.name),d(t.name),n(!1)},className:`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===t.serverId&&a===t.name?"bg-accent/5":""}`,children:[e.jsx("span",{className:"text-[11px] font-mono text-text-primary shrink-0",children:t.name}),e.jsxs("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 bg-accent/10 text-accent",children:[e.jsx(ve,{className:"w-2 h-2",strokeWidth:1.5}),t.serverName]}),t.description&&e.jsx("span",{className:"text-[10px] text-text-quaternary truncate",children:t.description})]},`${t.serverId}:${t.name}`))}),u&&w.length===0&&v&&e.jsx("div",{className:"absolute z-50 left-0 right-0 mt-1 rounded-md border border-surface-border bg-surface shadow-lg px-3 py-4 text-center",children:e.jsxs("p",{className:"text-[11px] text-text-quaternary",children:['No capabilities match "',v,'"']})})]})}const Ae={durable:"Workflow",pipeline:"Pipeline",capability:"Capability",mcp_query:"MCP Query"},Te=["durable","pipeline","capability","mcp_query"];function ae({reactionType:s,onReactionTypeChange:a,workflowType:l,onWorkflowTypeChange:o,pipelineId:p,onPipelineIdChange:u,serverId:n,toolName:v,onCapabilityChange:d,mcpPrompt:c,onMcpPromptChange:h,availableTypes:r=[...Te]}){const{data:x}=ye(),w=(x??[]).filter(i=>i.invocable).map(i=>i.workflow_type),{data:m}=ge({status:"active"}),t=((m==null?void 0:m.workflows)??[]).map(i=>({id:i.id,name:i.graph_topic||i.id}));return e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex gap-1",children:r.map(i=>{const b=s===i;return e.jsx("button",{type:"button",onClick:()=>a(i),className:`px-3 py-1.5 text-[11px] font-medium rounded-md transition-colors ${b?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:Ae[i]},i)})}),s==="durable"&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Workflow *"}),e.jsxs("select",{value:l,onChange:i=>o(i.target.value),className:"input",children:[e.jsx("option",{value:"",children:"Select workflow..."}),w.map(i=>e.jsx("option",{value:i,children:i},i))]})]}),s==="pipeline"&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Pipeline *"}),e.jsxs("select",{value:p,onChange:i=>u(i.target.value),className:"input",children:[e.jsx("option",{value:"",children:"Select pipeline..."}),t.map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),s==="capability"&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Capability *"}),e.jsx(We,{serverId:n,toolName:v,onChange:d})]}),s==="mcp_query"&&h&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Prompt *"}),e.jsx("textarea",{value:c??"",onChange:i=>h(i.target.value),placeholder:"Analyze the error and suggest remediation...",rows:3,className:"input resize-none"})]})]})}const Le={task:"bg-blue-400/15 text-blue-400",workflow:"bg-accent/15 text-accent",escalation:"bg-amber-400/15 text-amber-400",activity:"bg-cyan-400/15 text-cyan-400",knowledge:"bg-violet-400/15 text-violet-400",file:"bg-orange-400/15 text-orange-400",agent:"bg-emerald-400/15 text-emerald-400",app:"bg-rose-400/15 text-rose-400",milestone:"bg-violet-400/15 text-violet-400"};function Me({form:s,set:a}){const{data:l}=we({limit:200}),{data:o}=se(),p=(l==null?void 0:l.topics)??[],u=f.useMemo(()=>{var t;return((t=o==null?void 0:o.categories)==null?void 0:t.flatMap(i=>i.tools))??[]},[o]),[n,v]=f.useState(0),d=(t,i,b)=>{const j=[...s.subscriptions];j[t]={...j[t],[i]:b},a("subscriptions",j)},c=()=>{a("subscriptions",[...s.subscriptions,{...Se}]),v(s.subscriptions.length)},h=t=>{a("subscriptions",s.subscriptions.filter((i,b)=>b!==t)),n>=s.subscriptions.length-1&&v(Math.max(0,s.subscriptions.length-2))},r=s.subscriptions,x=r[n],w=t=>t.topic?t.reaction_type==="durable"?!!t.workflow_type:t.reaction_type==="pipeline"?!!t.pipeline_id:t.reaction_type==="mcp_query"?!!t.mcp_prompt:t.reaction_type==="capability"?!!t.server_id&&!!t.tool_name:!1:!1,m=x?p.find(t=>t.topic===x.topic):void 0;return r.length===0?e.jsxs("div",{className:"max-w-xl",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-8",children:[e.jsx("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."}),e.jsx("button",{onClick:()=>{window.location.hash="#docs:agents.md:subscriptions"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Subscriptions",children:e.jsx(P,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(U,{className:"w-8 h-8 text-text-quaternary/40 mb-3",strokeWidth:1}),e.jsx("p",{className:"text-sm text-text-tertiary mb-2",children:"No event subscriptions yet"}),e.jsx("p",{className:"text-[11px] text-text-quaternary max-w-sm mb-6",children:"Each subscription listens for a topic pattern and runs a workflow when it matches."}),e.jsxs("button",{onClick:c,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsx(L,{className:"w-3.5 h-3.5"})," Add first subscription"]})]})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-6",children:[e.jsx("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."}),e.jsx("button",{onClick:()=>{window.location.hash="#docs:agents.md:subscriptions"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Subscriptions",children:e.jsx(P,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{className:"flex gap-8",children:[e.jsxs("div",{className:"w-52 shrink-0 space-y-0.5",children:[r.map((t,i)=>e.jsxs("div",{className:`group/sub flex items-center rounded-md transition-colors ${n===i?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxs("button",{onClick:()=>v(i),className:"flex-1 text-left px-3 py-2 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${w(t)?"bg-emerald-400":"bg-zinc-500"}`}),e.jsx("span",{className:"text-[11px] font-mono truncate",children:t.topic||"new subscription"})]}),e.jsxs("span",{className:"text-[9px] text-text-quaternary ml-3",children:["→ ",t.workflow_type||t.tool_name||t.reaction_type]})]}),e.jsx("button",{onClick:b=>{b.stopPropagation(),confirm(`Remove subscription "${t.topic||"new"}"?
1
+ import{j as e,a as f}from"./vendor-query-B2UbickB.js";import{a as re,d as le,b as oe}from"./agents-DdrWb9IA.js";import{C as ce,u as de,a as pe,b as xe,c as ue}from"./CronLabel-CcPaepiQ.js";import{d as me,u as he}from"./index-CGy9PrdX.js";import{P as fe}from"./PageHeader-B4w-LDUF.js";import{B as P,d as G,b as ve,R as U,l as L,p as X,a5 as Y,a as Z,aG as ee,Q as be}from"./vendor-icons-5gSix3t2.js";import{e as je}from"./knowledge-BDr9CzZ7.js";import{R as te}from"./RunAsSelector-DRMoYomI.js";import{u as ye}from"./workflows-Bwikzl2q.js";import{u as ge}from"./yaml-workflows--YR7XQ5F.js";import{u as se}from"./capabilities-x0lc5Qr5.js";import{u as we}from"./topics-CDjGhp4t.js";import{E as Ne}from"./EventTopicPill-RaASGdZz.js";import{W as V}from"./WorkflowPill-BkfIn8N3.js";import{e as _e,c as ke,f as Ce}from"./vendor-react-CXumBFUA.js";import"./BotPicker-BW3DEEsk.js";import"./bots-DNEC8CB_.js";const Q={name:"",description:"",goals:"",rules:"",user_id:"",knowledge_domain:"",subscriptions:[],schedules:[]},Se={topic:"",filter:"",reaction_type:"durable",workflow_type:"",pipeline_id:"",mcp_prompt:"",server_id:"",tool_name:"",input_mapping:"{}",execute_as:"",enabled:!0},qe={cron:"0 * * * *",reaction_type:"durable",workflow_type:"",pipeline_id:"",server_id:"",tool_name:"",envelope:"{}",execute_as:""};function Re(s,a){var o,p,u;const l=(p=(o=s.behaviors)==null?void 0:o.schedules)!=null&&p.length?s.behaviors.schedules.map(n=>({cron:n.cron||"",reaction_type:n.reaction_type||"durable",workflow_type:n.workflow_type||"",pipeline_id:n.pipeline_id||"",server_id:n.server_id||"",tool_name:n.tool_name||"",envelope:n.envelope?JSON.stringify(n.envelope,null,2):"{}",execute_as:n.execute_as||""})):(u=s.behaviors)!=null&&u.cron?[{cron:s.behaviors.cron,reaction_type:"durable",workflow_type:s.workflow_type??"",pipeline_id:"",server_id:"",tool_name:"",envelope:"{}",execute_as:""}]:[];return{name:s.id,description:s.description??"",goals:s.goals??"",rules:s.rules??"",user_id:s.user_id??"",knowledge_domain:s.knowledge_domain??"",subscriptions:a.map(n=>({id:n.id,topic:n.topic,filter:n.filter?JSON.stringify(n.filter,null,2):"",reaction_type:n.reaction_type,workflow_type:n.workflow_type??"",pipeline_id:n.pipeline_id??"",mcp_prompt:n.mcp_prompt??"",server_id:n.server_id??"",tool_name:n.tool_name??"",input_mapping:JSON.stringify(n.input_mapping??{},null,2),execute_as:n.execute_as??"",enabled:n.enabled})),schedules:l}}function $e(s){var l;const a={};return s.schedules.length>0&&(a.schedules=s.schedules.map(o=>({cron:o.cron,reaction_type:o.reaction_type||"durable",workflow_type:o.reaction_type==="pipeline"?void 0:o.workflow_type,pipeline_id:o.reaction_type==="pipeline"?o.pipeline_id:void 0,envelope:B(o.envelope)??{},execute_as:o.execute_as||void 0})),a.cron=s.schedules[0].cron),{id:s.name,description:s.description||void 0,goals:s.goals||void 0,rules:s.rules||void 0,user_id:s.user_id||void 0,knowledge_domain:s.knowledge_domain||void 0,behaviors:a,workflow_type:((l=s.schedules[0])==null?void 0:l.workflow_type)||void 0,pipeline_id:void 0}}function Pe(s){return s.subscriptions.map(a=>({id:a.id,topic:a.topic,filter:a.filter?B(a.filter):void 0,reaction_type:a.reaction_type,workflow_type:a.workflow_type||void 0,pipeline_id:a.pipeline_id||void 0,mcp_prompt:a.mcp_prompt||void 0,server_id:a.server_id||void 0,tool_name:a.tool_name||void 0,input_mapping:B(a.input_mapping)??{},execute_as:a.execute_as||void 0,enabled:a.enabled}))}function B(s){if(s.trim())try{return JSON.parse(s)}catch{return}}const S="section-header mt-[3em] first:mt-0",E="label",_="hint",R="input",M="input-json w-full";function Ie({form:s,set:a}){return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsx("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Give your automation a name and describe what it does. The name appears everywhere — in events, logs, and the dashboard."}),e.jsx("button",{onClick:()=>{window.location.hash="#docs:agents.md:identity"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Identity",children:e.jsx(P,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Name *"}),e.jsx("input",{type:"text",value:s.name,onChange:l=>a("name",l.target.value),placeholder:"health-monitor",className:R}),e.jsx("p",{className:_,children:"Lowercase, kebab-case. This appears everywhere."})]}),e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Description"}),e.jsx("input",{type:"text",value:s.description,onChange:l=>a("description",l.target.value),placeholder:"Watches for workflow failures and captures diagnostics",className:R}),e.jsx("p",{className:_,children:"One sentence that explains what this automation does."})]})]})}function Ee({form:s,set:a}){return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsx("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Goals define what drives the automation. Rules define what constrains it."}),e.jsx("button",{onClick:()=>{window.location.hash="#docs:agents.md:motivation"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Motivation",children:e.jsx(P,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-8",children:[e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Goals"}),e.jsx("textarea",{value:s.goals,onChange:l=>a("goals",l.target.value),placeholder:"Detect failures early, capture diagnostics, alert before cascading",rows:4,className:`${R} resize-none`}),e.jsx("p",{className:_,children:"Primary motivation. What the automation is trying to achieve."})]}),e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Rules"}),e.jsx("textarea",{value:s.rules,onChange:l=>a("rules",l.target.value),placeholder:"Never auto-restart failed workflows. Always escalate to humans.",rows:4,className:`${R} resize-none`}),e.jsx("p",{className:_,children:"Guardrails. What it must never do, even when goals suggest it should."})]})]})]})}function Oe({form:s,set:a}){const{data:l}=je(),o=(l==null?void 0:l.domains)??[];return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsx("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Assign a knowledge domain — the automation's memory. It stores context here over time."}),e.jsx("button",{onClick:()=>{window.location.hash="#docs:agents.md:knowledge"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Knowledge",children:e.jsx(P,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Knowledge Domain"}),e.jsx("input",{type:"text",value:s.knowledge_domain,onChange:p=>a("knowledge_domain",p.target.value),placeholder:"e.g., system-health, content-review, vendor-data",className:R,list:"domain-suggestions"}),e.jsx("datalist",{id:"domain-suggestions",children:o.map(p=>e.jsx("option",{value:p.domain},p.domain))}),e.jsx("p",{className:_,children:"Choose an existing domain to share memory, or type a new name to create one."})]}),o.length>0&&e.jsxs("div",{children:[e.jsx("label",{className:E,children:"Existing Domains"}),e.jsx("div",{className:"space-y-0.5 mt-2",children:o.map(p=>e.jsxs("button",{type:"button",onClick:()=>a("knowledge_domain",p.domain),className:`w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors ${s.knowledge_domain===p.domain?"border-l-2 border-l-accent bg-accent/5":"hover:bg-surface-hover border-l-2 border-l-transparent"}`,children:[e.jsx(G,{className:"w-3.5 h-3.5 text-text-quaternary shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"text-sm text-text-primary flex-1",children:p.domain}),e.jsxs("span",{className:"text-[10px] text-text-quaternary",children:[p.count," entries"]}),e.jsx("span",{className:"text-[9px] text-text-quaternary",children:e.jsx(me,{date:p.latest})})]},p.domain))})]})]})}function We({serverId:s,toolName:a,onChange:l}){const{data:o}=se(),p=f.useMemo(()=>{var t;return((t=o==null?void 0:o.categories)==null?void 0:t.flatMap(i=>i.tools))??[]},[o]),[u,n]=f.useState(!1),[v,d]=f.useState(""),c=f.useRef(null),h=f.useRef(null);f.useEffect(()=>{if(!u)return;function t(i){h.current&&!h.current.contains(i.target)&&n(!1)}return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[u]);const r=a?`${a}`:"",x=u?v:r,w=f.useMemo(()=>{const t=(u?v:"").toLowerCase();return t?p.filter(i=>i.name.toLowerCase().includes(t)||i.serverName.toLowerCase().includes(t)||(i.description??"").toLowerCase().includes(t)):p},[p,v,u]),m=a?p.find(t=>t.serverId===s&&t.name===a):void 0;return e.jsxs("div",{ref:h,className:"relative",children:[e.jsx("input",{ref:c,type:"text",value:x,onFocus:()=>{n(!0),d(r)},onChange:t=>{const i=t.target.value;d(i),i||l("",""),u||n(!0)},placeholder:"Search capabilities...",className:"input font-mono text-sm w-full"}),!u&&(m==null?void 0:m.description)&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-1 italic",children:m.description}),u&&w.length>0&&e.jsx("div",{className:"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:w.map(t=>e.jsxs("button",{type:"button",onClick:()=>{l(t.serverId,t.name),d(t.name),n(!1)},className:`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===t.serverId&&a===t.name?"bg-accent/5":""}`,children:[e.jsx("span",{className:"text-[11px] font-mono text-text-primary shrink-0",children:t.name}),e.jsxs("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 bg-accent/10 text-accent",children:[e.jsx(ve,{className:"w-2 h-2",strokeWidth:1.5}),t.serverName]}),t.description&&e.jsx("span",{className:"text-[10px] text-text-quaternary truncate",children:t.description})]},`${t.serverId}:${t.name}`))}),u&&w.length===0&&v&&e.jsx("div",{className:"absolute z-50 left-0 right-0 mt-1 rounded-md border border-surface-border bg-surface shadow-lg px-3 py-4 text-center",children:e.jsxs("p",{className:"text-[11px] text-text-quaternary",children:['No capabilities match "',v,'"']})})]})}const Ae={durable:"Workflow",pipeline:"Pipeline",capability:"Capability",mcp_query:"MCP Query"},Te=["durable","pipeline","capability","mcp_query"];function ae({reactionType:s,onReactionTypeChange:a,workflowType:l,onWorkflowTypeChange:o,pipelineId:p,onPipelineIdChange:u,serverId:n,toolName:v,onCapabilityChange:d,mcpPrompt:c,onMcpPromptChange:h,availableTypes:r=[...Te]}){const{data:x}=ye(),w=(x??[]).filter(i=>i.invocable).map(i=>i.workflow_type),{data:m}=ge({status:"active"}),t=((m==null?void 0:m.workflows)??[]).map(i=>({id:i.id,name:i.graph_topic||i.id}));return e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex gap-1",children:r.map(i=>{const b=s===i;return e.jsx("button",{type:"button",onClick:()=>a(i),className:`px-3 py-1.5 text-[11px] font-medium rounded-md transition-colors ${b?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:Ae[i]},i)})}),s==="durable"&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Workflow *"}),e.jsxs("select",{value:l,onChange:i=>o(i.target.value),className:"input",children:[e.jsx("option",{value:"",children:"Select workflow..."}),w.map(i=>e.jsx("option",{value:i,children:i},i))]})]}),s==="pipeline"&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Pipeline *"}),e.jsxs("select",{value:p,onChange:i=>u(i.target.value),className:"input",children:[e.jsx("option",{value:"",children:"Select pipeline..."}),t.map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),s==="capability"&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Capability *"}),e.jsx(We,{serverId:n,toolName:v,onChange:d})]}),s==="mcp_query"&&h&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Prompt *"}),e.jsx("textarea",{value:c??"",onChange:i=>h(i.target.value),placeholder:"Analyze the error and suggest remediation...",rows:3,className:"input resize-none"})]})]})}const Le={task:"bg-blue-400/15 text-blue-400",workflow:"bg-accent/15 text-accent",escalation:"bg-amber-400/15 text-amber-400",activity:"bg-cyan-400/15 text-cyan-400",knowledge:"bg-violet-400/15 text-violet-400",file:"bg-orange-400/15 text-orange-400",agent:"bg-emerald-400/15 text-emerald-400",app:"bg-rose-400/15 text-rose-400",milestone:"bg-violet-400/15 text-violet-400"};function Me({form:s,set:a}){const{data:l}=we({limit:200}),{data:o}=se(),p=(l==null?void 0:l.topics)??[],u=f.useMemo(()=>{var t;return((t=o==null?void 0:o.categories)==null?void 0:t.flatMap(i=>i.tools))??[]},[o]),[n,v]=f.useState(0),d=(t,i,b)=>{const j=[...s.subscriptions];j[t]={...j[t],[i]:b},a("subscriptions",j)},c=()=>{a("subscriptions",[...s.subscriptions,{...Se}]),v(s.subscriptions.length)},h=t=>{a("subscriptions",s.subscriptions.filter((i,b)=>b!==t)),n>=s.subscriptions.length-1&&v(Math.max(0,s.subscriptions.length-2))},r=s.subscriptions,x=r[n],w=t=>t.topic?t.reaction_type==="durable"?!!t.workflow_type:t.reaction_type==="pipeline"?!!t.pipeline_id:t.reaction_type==="mcp_query"?!!t.mcp_prompt:t.reaction_type==="capability"?!!t.server_id&&!!t.tool_name:!1:!1,m=x?p.find(t=>t.topic===x.topic):void 0;return r.length===0?e.jsxs("div",{className:"max-w-xl",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-8",children:[e.jsx("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."}),e.jsx("button",{onClick:()=>{window.location.hash="#docs:agents.md:subscriptions"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Subscriptions",children:e.jsx(P,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(U,{className:"w-8 h-8 text-text-quaternary/40 mb-3",strokeWidth:1}),e.jsx("p",{className:"text-sm text-text-tertiary mb-2",children:"No event subscriptions yet"}),e.jsx("p",{className:"text-[11px] text-text-quaternary max-w-sm mb-6",children:"Each subscription listens for a topic pattern and runs a workflow when it matches."}),e.jsxs("button",{onClick:c,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsx(L,{className:"w-3.5 h-3.5"})," Add first subscription"]})]})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-6",children:[e.jsx("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."}),e.jsx("button",{onClick:()=>{window.location.hash="#docs:agents.md:subscriptions"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Subscriptions",children:e.jsx(P,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{className:"flex gap-8",children:[e.jsxs("div",{className:"w-52 shrink-0 space-y-0.5",children:[r.map((t,i)=>e.jsxs("div",{className:`group/sub flex items-center rounded-md transition-colors ${n===i?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxs("button",{onClick:()=>v(i),className:"flex-1 text-left px-3 py-2 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${w(t)?"bg-emerald-400":"bg-zinc-500"}`}),e.jsx("span",{className:"text-[11px] font-mono truncate",children:t.topic||"new subscription"})]}),e.jsxs("span",{className:"text-[9px] text-text-quaternary ml-3",children:["→ ",t.workflow_type||t.tool_name||t.reaction_type]})]}),e.jsx("button",{onClick:b=>{b.stopPropagation(),confirm(`Remove subscription "${t.topic||"new"}"?
2
2
 
3
3
  This takes effect when you save.`)&&h(i)},className:"opacity-0 group-hover/sub:opacity-100 px-2 text-text-quaternary hover:text-red-400 transition-all",title:"Remove",children:e.jsx(X,{className:"w-3 h-3"})})]},i)),e.jsxs("button",{onClick:c,className:"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors",children:[e.jsx(L,{className:"w-3 h-3"})," Add"]})]}),x&&e.jsxs("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxs("div",{children:[e.jsx("label",{className:S,children:"When this event fires"}),e.jsx(Je,{value:x.topic,onChange:t=>d(n,"topic",t),topics:p}),(m==null?void 0:m.payload_schema)&&e.jsxs("div",{className:"mt-3 p-3 rounded-md bg-surface-sunken border border-surface-border",children:[e.jsx("p",{className:"text-[10px] text-text-quaternary mb-1 uppercase tracking-wider font-medium",children:"Payload Schema"}),e.jsx("pre",{className:"text-[11px] font-mono text-text-secondary whitespace-pre-wrap overflow-x-auto max-h-40",children:JSON.stringify(m.payload_schema.properties??m.payload_schema,null,2)}),m.description&&e.jsx("p",{className:"text-[10px] text-text-tertiary mt-2 italic",children:m.description})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"Run this reaction"}),e.jsx(ae,{reactionType:x.reaction_type,onReactionTypeChange:t=>d(n,"reaction_type",t),workflowType:x.workflow_type,onWorkflowTypeChange:t=>d(n,"workflow_type",t),pipelineId:x.pipeline_id,onPipelineIdChange:t=>d(n,"pipeline_id",t),serverId:x.server_id,toolName:x.tool_name,onCapabilityChange:(t,i)=>{var $;const b=[...s.subscriptions],j={...b[n],server_id:t,tool_name:i},k=u.find(g=>g.serverId===t&&g.name===i),I=($=k==null?void 0:k.inputSchema)==null?void 0:$.properties;if(I&&i){const g={};for(const O of Object.keys(I))O.startsWith("_")||(g[O]=`{event.data.${O}}`);j.input_mapping=JSON.stringify(g,null,2)}b[n]=j,a("subscriptions",b)},mcpPrompt:x.mcp_prompt,onMcpPromptChange:t=>d(n,"mcp_prompt",t)})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxs("div",{children:[e.jsx("label",{className:S,children:"As identity"}),e.jsx(te,{selected:x.execute_as,onChange:t=>d(n,"execute_as",t)}),e.jsx("p",{className:_,children:"Identity used when invoking the workflow."})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"But only if"}),e.jsx("input",{type:"text",value:x.filter,onChange:t=>d(n,"filter",t.target.value),placeholder:'{"extension": "png"}',className:`${R} font-mono text-xs`}),e.jsxs("p",{className:_,children:["JSON filter against event.data. Operators: equality ",e.jsx("code",{className:"text-accent",children:'{"key":"val"}'}),", negation ",e.jsx("code",{className:"text-accent",children:'{"key":{"$ne":"val"}}'}),", in-list ",e.jsx("code",{className:"text-accent",children:'{"key":{"$in":["a","b"]}}'}),", exists ",e.jsx("code",{className:"text-accent",children:'{"key":{"$exists":true}}'})]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"With this data"}),x.reaction_type==="capability"&&x.tool_name?e.jsx(Fe,{tool:u.find(t=>t.serverId===x.server_id&&t.name===x.tool_name),value:x.input_mapping,onChange:t=>d(n,"input_mapping",t),eventSchema:m==null?void 0:m.payload_schema}):e.jsxs(e.Fragment,{children:[e.jsx("textarea",{value:x.input_mapping,onChange:t=>d(n,"input_mapping",t.target.value),rows:10,className:M,placeholder:`{
4
4
  "data": {
@@ -13,4 +13,4 @@ This takes effect when you save.`)&&h(i)},className:"opacity-0 group-hover/sub:o
13
13
  This takes effect when you save.`)&&n(h)},className:"opacity-0 group-hover/sched:opacity-100 px-2 text-text-quaternary hover:text-red-400 transition-all",title:"Remove",children:e.jsx(X,{className:"w-3 h-3"})})]},h)),e.jsxs("button",{onClick:u,className:"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors",children:[e.jsx(L,{className:"w-3 h-3"})," Add"]})]}),d&&e.jsxs("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxs("div",{children:[e.jsx("label",{className:S,children:"Run every"}),e.jsx("input",{type:"text",value:d.cron,onChange:c=>p(l,"cron",c.target.value),placeholder:"0 * * * *",className:`${R} font-mono`}),d.cron&&e.jsx("p",{className:"text-[11px] text-accent/80 mt-1",children:z(d.cron)}),e.jsx("div",{className:"flex gap-3 mt-2 overflow-x-auto",children:ze.map(c=>e.jsx("button",{type:"button",onClick:()=>p(l,"cron",c),className:`text-[10px] font-mono whitespace-nowrap transition-colors ${d.cron===c?"text-accent font-medium":"text-accent/50 hover:text-accent"}`,children:z(c)},c))})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"Run this reaction"}),e.jsx(ae,{reactionType:d.reaction_type,onReactionTypeChange:c=>p(l,"reaction_type",c),workflowType:d.workflow_type,onWorkflowTypeChange:c=>p(l,"workflow_type",c),pipelineId:d.pipeline_id,onPipelineIdChange:c=>p(l,"pipeline_id",c),serverId:d.server_id,toolName:d.tool_name,onCapabilityChange:(c,h)=>{p(l,"server_id",c),p(l,"tool_name",h)},availableTypes:["durable","pipeline","capability"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"As identity"}),e.jsx(te,{selected:d.execute_as,onChange:c=>p(l,"execute_as",c)}),e.jsx("p",{className:_,children:"Identity used when invoking."})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"With this data"}),e.jsx("textarea",{value:d.envelope,onChange:c=>p(l,"envelope",c.target.value),rows:10,className:M,placeholder:`{
14
14
  "data": { "source": "cron" }
15
15
  }`}),e.jsx("p",{className:_,children:"Static payload passed to the workflow on each invocation."})]})]})]})]})}function A({icon:s,color:a,title:l,children:o}){return e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 pb-1.5 border-b border-surface-border/40",children:[e.jsx(s,{className:`w-3.5 h-3.5 ${a}`,strokeWidth:1.5}),e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-widest text-accent/80",children:l})]}),e.jsx("div",{className:"pl-5.5",children:o})]})}function T({label:s,children:a}){return e.jsxs("div",{className:"flex gap-3 py-0.5",children:[e.jsx("span",{className:"text-[10px] text-text-quaternary w-20 shrink-0",children:s}),e.jsx("span",{className:"text-xs text-text-primary",children:a})]})}function Ge({form:s}){return e.jsxs("div",{children:[e.jsxs(A,{icon:Z,color:"text-accent",title:"Identity",children:[e.jsx(T,{label:"Name",children:s.name||"—"}),s.description&&e.jsx(T,{label:"Description",children:s.description})]}),(s.goals||s.rules)&&e.jsxs(A,{icon:ee,color:"text-rose-400",title:"Motivation",children:[s.goals&&e.jsx(T,{label:"Goals",children:s.goals}),s.rules&&e.jsx(T,{label:"Rules",children:s.rules})]}),e.jsx(A,{icon:G,color:"text-emerald-400",title:"Knowledge",children:e.jsx(T,{label:"Domain",children:s.knowledge_domain||"None"})}),e.jsxs("div",{className:"grid grid-cols-2 gap-x-10",children:[e.jsx(A,{icon:U,color:"text-cyan-400",title:`Subscriptions (${s.subscriptions.length})`,children:s.subscriptions.length===0?e.jsx("span",{className:"text-[11px] text-text-quaternary",children:"None configured"}):e.jsx("div",{className:"divide-y divide-surface-border/30",children:s.subscriptions.map((a,l)=>e.jsxs("div",{className:"flex items-center py-1.5",children:[e.jsx("div",{className:"flex-1 min-w-0",children:e.jsx(Ne,{topic:a.topic||"unset"})}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsx("span",{className:"text-text-quaternary text-[10px]",children:"→"}),a.workflow_type?e.jsx(V,{type:a.workflow_type}):e.jsx("span",{className:"text-[11px] text-text-quaternary",children:a.reaction_type})]})]},l))})}),e.jsx(A,{icon:Y,color:"text-amber-400",title:`Schedules (${s.schedules.length})`,children:s.schedules.length===0?e.jsx("span",{className:"text-[11px] text-text-quaternary",children:"None configured"}):e.jsx("div",{className:"divide-y divide-surface-border/30",children:s.schedules.map((a,l)=>e.jsxs("div",{className:"flex items-center py-1.5",children:[e.jsx("div",{className:"flex-1 min-w-0",children:e.jsx(ce,{cron:a.cron})}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsx("span",{className:"text-text-quaternary text-[10px]",children:"→"}),a.workflow_type?e.jsx(V,{type:a.workflow_type}):e.jsx("span",{className:"text-[11px] text-text-quaternary",children:"no workflow"})]})]},l))})})]}),e.jsx("div",{className:"border-l-2 border-emerald-400/30 pl-3 py-2 mt-6",children:e.jsx("p",{className:"text-[11px] text-text-tertiary leading-relaxed",children:"After saving, subscriptions and schedules activate immediately. You can pause the automation anytime."})})]})}const Ue=[{id:1,label:"Identity",icon:Z},{id:2,label:"Motivation",icon:ee},{id:3,label:"Knowledge",icon:G},{id:4,label:"Subscriptions",icon:U},{id:5,label:"Schedules",icon:Y},{id:6,label:"Review",icon:be}];function dt(){var H;const{id:s}=_e(),a=!s,l=ke(),{data:o}=he(),u=!!((H=o==null?void 0:o.ai)!=null&&H.enabled)?"Agent":"Automation",{data:n,isLoading:v}=re(a?null:s),{data:d}=de(a?null:s),c=le(),h=oe(),r=pe(),x=xe(),w=ue(),[m,t]=f.useState(Q),[i,b]=f.useState(!1),[j,k]=f.useState(""),[I,$]=Ce(),g=parseInt(I.get("step")||"1",10),O=f.useCallback(y=>{$(N=>{const q=new URLSearchParams(N);return q.set("step",String(y)),q},{replace:!0})},[$]);f.useEffect(()=>{if(!i){if(a){t(Q),b(!0);return}n&&d&&(t(Re(n,d.subscriptions??[])),b(!0))}},[n,d,a,i]);const W=(y,N)=>t(q=>({...q,[y]:N})),ne=async()=>{k("");try{const y=$e(m);let N=s;a?N=(await c.mutateAsync(y)).id:await h.mutateAsync({id:s,...y});const q=Pe(m),ie=(d==null?void 0:d.subscriptions)??[],F=new Set(ie.map(C=>C.id));for(const C of q)if(C.id&&F.has(C.id)){const{id:D,...J}=C;await x.mutateAsync({agentId:N,subId:D,...J}),F.delete(D)}else{const{id:D,...J}=C;await r.mutateAsync({agentId:N,...J})}for(const C of F)await w.mutateAsync({agentId:N,subId:C});l(`/agents/${N}`)}catch(y){k(y.message)}};if(!a&&v)return e.jsxs("div",{className:"animate-pulse space-y-4",children:[e.jsx("div",{className:"h-8 bg-surface-sunken rounded w-48"}),e.jsx("div",{className:"h-60 bg-surface-sunken rounded"})]});const K=c.isPending||h.isPending;return e.jsxs("div",{children:[e.jsx(fe,{title:a?`New ${u}`:`${u}: ${(n==null?void 0:n.id)??""}`,docsHash:"#docs:agents.md"}),e.jsxs("div",{className:"flex gap-10",children:[e.jsxs("nav",{className:"w-44 shrink-0 sticky top-0 self-start pt-2",children:[e.jsx("div",{className:"space-y-0.5",children:Ue.map(y=>{const N=y.icon,q=g===y.id;return e.jsxs("button",{onClick:()=>O(y.id),className:`w-full flex items-center gap-2.5 px-3 py-2 rounded-md text-left transition-colors ${q?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsx(N,{className:"w-3.5 h-3.5 shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"text-xs font-medium",children:y.label})]},y.id)})}),e.jsxs("div",{className:"mt-8 pt-4 border-t border-surface-border space-y-2",children:[e.jsx("button",{onClick:ne,disabled:!m.name.trim()||K,className:"w-full btn-primary text-xs disabled:opacity-50",children:K?"Saving...":a?`Create ${u}`:"Save"}),e.jsx("button",{onClick:()=>l(a?"/agents":`/agents/${s}`),className:"w-full btn-ghost text-xs",children:"Cancel"})]}),j&&e.jsx("p",{className:"text-xs text-status-error mt-3",children:j})]}),e.jsxs("div",{className:"flex-1 min-w-0 pt-2",children:[g===1&&e.jsx(Ie,{form:m,set:W}),g===2&&e.jsx(Ee,{form:m,set:W}),g===3&&e.jsx(Oe,{form:m,set:W}),g===4&&e.jsx(Me,{form:m,set:W}),g===5&&e.jsx(Be,{form:m,set:W}),g===6&&e.jsx(Ge,{form:m})]})]})]})}export{dt as AgentConfigPage};
16
- //# sourceMappingURL=AgentConfigPage-BGDDZpxn.js.map
16
+ //# sourceMappingURL=AgentConfigPage-uedbi7zT.js.map