@hotmeshio/long-tail 0.8.1 → 0.8.3

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 (308) hide show
  1. package/build/scripts/twin-farm.d.ts +45 -0
  2. package/build/scripts/twin-farm.js +441 -0
  3. package/build/tsconfig.tsbuildinfo +1 -1
  4. package/dashboard/dist/assets/AdminDashboard-Dhr7sUq6.js +2 -0
  5. package/dashboard/dist/assets/{AdminDashboard-Ck5-jV9T.js.map → AdminDashboard-Dhr7sUq6.js.map} +1 -1
  6. package/dashboard/dist/assets/AgentConfigPage-CUPm8FjH.js +16 -0
  7. package/dashboard/dist/assets/{AgentConfigPage-DFiXRBWs.js.map → AgentConfigPage-CUPm8FjH.js.map} +1 -1
  8. package/dashboard/dist/assets/AgentDetailPage-C9Tmmhhc.js +4 -0
  9. package/dashboard/dist/assets/{AgentDetailPage-BBgM_pMe.js.map → AgentDetailPage-C9Tmmhhc.js.map} +1 -1
  10. package/dashboard/dist/assets/AgentsPage-Pj47ZJ2U.js +2 -0
  11. package/dashboard/dist/assets/{AgentsPage-DxwFuedf.js.map → AgentsPage-Pj47ZJ2U.js.map} +1 -1
  12. package/dashboard/dist/assets/AvailableEscalationsPage-BxakNqha.js +2 -0
  13. package/dashboard/dist/assets/{AvailableEscalationsPage-DNQbeIcn.js.map → AvailableEscalationsPage-BxakNqha.js.map} +1 -1
  14. package/dashboard/dist/assets/BotPicker-CCIo5ic0.js +2 -0
  15. package/dashboard/dist/assets/{BotPicker-mqwKVOE3.js.map → BotPicker-CCIo5ic0.js.map} +1 -1
  16. package/dashboard/dist/assets/CapabilitiesPage-XFVq4iPX.js +2 -0
  17. package/dashboard/dist/assets/{CapabilitiesPage-Biffm0kW.js.map → CapabilitiesPage-XFVq4iPX.js.map} +1 -1
  18. package/dashboard/dist/assets/CollapsibleSection-CBKICsCu.js +2 -0
  19. package/dashboard/dist/assets/{CollapsibleSection-Bn6Ks79X.js.map → CollapsibleSection-CBKICsCu.js.map} +1 -1
  20. package/dashboard/dist/assets/ConfirmDeleteModal-D9_1b4MW.js +2 -0
  21. package/dashboard/dist/assets/{ConfirmDeleteModal-no0-c_1G.js.map → ConfirmDeleteModal-D9_1b4MW.js.map} +1 -1
  22. package/dashboard/dist/assets/CopyableId-blg-gZvT.js +2 -0
  23. package/dashboard/dist/assets/{CopyableId-DS6IDMIX.js.map → CopyableId-blg-gZvT.js.map} +1 -1
  24. package/dashboard/dist/assets/CredentialsPage-BN_d7ybc.js +2 -0
  25. package/dashboard/dist/assets/{CredentialsPage-C3NyncEB.js.map → CredentialsPage-BN_d7ybc.js.map} +1 -1
  26. package/dashboard/dist/assets/CronLabel-4V_EXMUg.js +2 -0
  27. package/dashboard/dist/assets/{CronLabel-DQWBx57H.js.map → CronLabel-4V_EXMUg.js.map} +1 -1
  28. package/dashboard/dist/assets/CustomDurationPicker-BdurQj-B.js +2 -0
  29. package/dashboard/dist/assets/{CustomDurationPicker-DV42oZ1G.js.map → CustomDurationPicker-BdurQj-B.js.map} +1 -1
  30. package/dashboard/dist/assets/DataTable-ZWgVQg7F.js +2 -0
  31. package/dashboard/dist/assets/{DataTable-Bf4dgxll.js.map → DataTable-ZWgVQg7F.js.map} +1 -1
  32. package/dashboard/dist/assets/DropZone-SgiK1WOl.js +2 -0
  33. package/dashboard/dist/assets/{DropZone-CTSXBb3c.js.map → DropZone-SgiK1WOl.js.map} +1 -1
  34. package/dashboard/dist/assets/ElapsedCell-CO8XMSJX.js +2 -0
  35. package/dashboard/dist/assets/{ElapsedCell-roy4G5SQ.js.map → ElapsedCell-CO8XMSJX.js.map} +1 -1
  36. package/dashboard/dist/assets/EmptyState-BcsfPq9T.js +2 -0
  37. package/dashboard/dist/assets/{EmptyState-CLVm9KmA.js.map → EmptyState-BcsfPq9T.js.map} +1 -1
  38. package/dashboard/dist/assets/EscalationSchemaPage-hzFtuyha.js +9 -0
  39. package/dashboard/dist/assets/{EscalationSchemaPage-DulCCxea.js.map → EscalationSchemaPage-hzFtuyha.js.map} +1 -1
  40. package/dashboard/dist/assets/EscalationsOverview-qlo0mxxa.js +2 -0
  41. package/dashboard/dist/assets/{EscalationsOverview-DDwxn_mT.js.map → EscalationsOverview-qlo0mxxa.js.map} +1 -1
  42. package/dashboard/dist/assets/EventTable-D9RjAT_a.js +2 -0
  43. package/dashboard/dist/assets/{EventTable-BaLNvCew.js.map → EventTable-D9RjAT_a.js.map} +1 -1
  44. package/dashboard/dist/assets/FilterBar-B4Mk2PvT.js +2 -0
  45. package/dashboard/dist/assets/{FilterBar-DEAbNQqp.js.map → FilterBar-B4Mk2PvT.js.map} +1 -1
  46. package/dashboard/dist/assets/GraphInvokePage-CU3r2tzN.js +2 -0
  47. package/dashboard/dist/assets/{GraphInvokePage-BmM8r0R3.js.map → GraphInvokePage-CU3r2tzN.js.map} +1 -1
  48. package/dashboard/dist/assets/HomePage-B7pb4-Gx.js +2 -0
  49. package/dashboard/dist/assets/HomePage-B7pb4-Gx.js.map +1 -0
  50. package/dashboard/dist/assets/ListToolbar-C_64Y22Z.js +2 -0
  51. package/dashboard/dist/assets/{ListToolbar-Dviaskni.js.map → ListToolbar-C_64Y22Z.js.map} +1 -1
  52. package/dashboard/dist/assets/McpOverview-D-4eSOTc.js +2 -0
  53. package/dashboard/dist/assets/{McpOverview-BBm66wbF.js.map → McpOverview-D-4eSOTc.js.map} +1 -1
  54. package/dashboard/dist/assets/McpQueryDetailPage-BYwDb8LC.js +5 -0
  55. package/dashboard/dist/assets/{McpQueryDetailPage-B6GJOMcz.js.map → McpQueryDetailPage-BYwDb8LC.js.map} +1 -1
  56. package/dashboard/dist/assets/McpQueryPage-CIijB5t2.js +2 -0
  57. package/dashboard/dist/assets/{McpQueryPage-C-8nIdBL.js.map → McpQueryPage-CIijB5t2.js.map} +1 -1
  58. package/dashboard/dist/assets/McpRunDetailPage-CQmhfgju.js +2 -0
  59. package/dashboard/dist/assets/{McpRunDetailPage-CSq_0qqi.js.map → McpRunDetailPage-CQmhfgju.js.map} +1 -1
  60. package/dashboard/dist/assets/McpRunsPage-CdDyeOdi.js +2 -0
  61. package/dashboard/dist/assets/McpRunsPage-CdDyeOdi.js.map +1 -0
  62. package/dashboard/dist/assets/Modal-CSrxpXeM.js +2 -0
  63. package/dashboard/dist/assets/{Modal-C6HI6btY.js.map → Modal-CSrxpXeM.js.map} +1 -1
  64. package/dashboard/dist/assets/NamespacePill-SErKwgkb.js +2 -0
  65. package/dashboard/dist/assets/{NamespacePill-eGsbJBFa.js.map → NamespacePill-SErKwgkb.js.map} +1 -1
  66. package/dashboard/dist/assets/OperationsPage-Cz_0K8tj.js +2 -0
  67. package/dashboard/dist/assets/OperationsPage-Cz_0K8tj.js.map +1 -0
  68. package/dashboard/dist/assets/OperatorDashboard-DFORmS46.js +2 -0
  69. package/dashboard/dist/assets/{OperatorDashboard-BbmgsOmQ.js.map → OperatorDashboard-DFORmS46.js.map} +1 -1
  70. package/dashboard/dist/assets/PageHeader-DJo7yMUR.js +2 -0
  71. package/dashboard/dist/assets/{PageHeader-DcgGV0Y2.js.map → PageHeader-DJo7yMUR.js.map} +1 -1
  72. package/dashboard/dist/assets/PageHeaderWithStats-W3akV6nB.js +2 -0
  73. package/dashboard/dist/assets/{PageHeaderWithStats-Cf8TYFRh.js.map → PageHeaderWithStats-W3akV6nB.js.map} +1 -1
  74. package/dashboard/dist/assets/PriorityBadge-B4ykBH7f.js +2 -0
  75. package/dashboard/dist/assets/{PriorityBadge-a7u8C9uY.js.map → PriorityBadge-B4ykBH7f.js.map} +1 -1
  76. package/dashboard/dist/assets/ProcessDetailPage-DwypVFE2.js +2 -0
  77. package/dashboard/dist/assets/{ProcessDetailPage-D80w44rV.js.map → ProcessDetailPage-DwypVFE2.js.map} +1 -1
  78. package/dashboard/dist/assets/ProcessesListPage-tNLvALwT.js +2 -0
  79. package/dashboard/dist/assets/{ProcessesListPage-BjW5xUkv.js.map → ProcessesListPage-tNLvALwT.js.map} +1 -1
  80. package/dashboard/dist/assets/RoleDetailPage-BPsrUqIa.js +11 -0
  81. package/dashboard/dist/assets/{RoleDetailPage-oahg0cdT.js.map → RoleDetailPage-BPsrUqIa.js.map} +1 -1
  82. package/dashboard/dist/assets/RolePill-DHWixsQR.js +2 -0
  83. package/dashboard/dist/assets/{RolePill-BAeaQUXX.js.map → RolePill-DHWixsQR.js.map} +1 -1
  84. package/dashboard/dist/assets/RolesPage-txueySPI.js +2 -0
  85. package/dashboard/dist/assets/{RolesPage-BI1Xtqq_.js.map → RolesPage-txueySPI.js.map} +1 -1
  86. package/dashboard/dist/assets/RowActions-BA9L9djf.js +2 -0
  87. package/dashboard/dist/assets/{RowActions--m4F6GW8.js.map → RowActions-BA9L9djf.js.map} +1 -1
  88. package/dashboard/dist/assets/RunAsSelector-Bvefon9B.js +2 -0
  89. package/dashboard/dist/assets/{RunAsSelector-DiGzSfiG.js.map → RunAsSelector-Bvefon9B.js.map} +1 -1
  90. package/dashboard/dist/assets/StatCard-DrdlUeQz.js +2 -0
  91. package/dashboard/dist/assets/{StatCard-DCPGFzCv.js.map → StatCard-DrdlUeQz.js.map} +1 -1
  92. package/dashboard/dist/assets/StatusBadge-DZ9137bI.js +2 -0
  93. package/dashboard/dist/assets/{StatusBadge-mk-dJwPT.js.map → StatusBadge-DZ9137bI.js.map} +1 -1
  94. package/dashboard/dist/assets/StickyPagination-CeQCzVIA.js +2 -0
  95. package/dashboard/dist/assets/{StickyPagination-Clm9H840.js.map → StickyPagination-CeQCzVIA.js.map} +1 -1
  96. package/dashboard/dist/assets/StreamMessageDetail-6wEm6o6t.js +2 -0
  97. package/dashboard/dist/assets/{StreamMessageDetail-Bikvs1Cz.js.map → StreamMessageDetail-6wEm6o6t.js.map} +1 -1
  98. package/dashboard/dist/assets/SwimlaneTimeline-C97Rldf5.js +2 -0
  99. package/dashboard/dist/assets/{SwimlaneTimeline-C9X3IVqI.js.map → SwimlaneTimeline-C97Rldf5.js.map} +1 -1
  100. package/dashboard/dist/assets/TagInput-CGGC3DTR.js +2 -0
  101. package/dashboard/dist/assets/{TagInput-DmJLnghg.js.map → TagInput-CGGC3DTR.js.map} +1 -1
  102. package/dashboard/dist/assets/TaskDetailPage-B09mLOCE.js +2 -0
  103. package/dashboard/dist/assets/TaskDetailPage-B09mLOCE.js.map +1 -0
  104. package/dashboard/dist/assets/TaskQueuePill-D6omQJNY.js +2 -0
  105. package/dashboard/dist/assets/{TaskQueuePill--1OX6egx.js.map → TaskQueuePill-D6omQJNY.js.map} +1 -1
  106. package/dashboard/dist/assets/TasksListPage-CQhiSGkN.js +2 -0
  107. package/dashboard/dist/assets/{TasksListPage-DcYV-GMA.js.map → TasksListPage-CQhiSGkN.js.map} +1 -1
  108. package/dashboard/dist/assets/TimeAgo-BkyeBcMF.js +2 -0
  109. package/dashboard/dist/assets/{TimeAgo-pYn3T9IZ.js.map → TimeAgo-BkyeBcMF.js.map} +1 -1
  110. package/dashboard/dist/assets/TimestampCell-DVp_UdEB.js +2 -0
  111. package/dashboard/dist/assets/{TimestampCell-BPMCscic.js.map → TimestampCell-DVp_UdEB.js.map} +1 -1
  112. package/dashboard/dist/assets/ToolPill-BW0iRwZu.js +2 -0
  113. package/dashboard/dist/assets/{ToolPill-BnF9lCUX.js.map → ToolPill-BW0iRwZu.js.map} +1 -1
  114. package/dashboard/dist/assets/ToolTestPanel-CZOuRP_i.js +2 -0
  115. package/dashboard/dist/assets/{ToolTestPanel-Bw4z_Tya.js.map → ToolTestPanel-CZOuRP_i.js.map} +1 -1
  116. package/dashboard/dist/assets/TopicDetailPage-0mvQde8R.js +9 -0
  117. package/dashboard/dist/assets/{TopicDetailPage-CtFztOnn.js.map → TopicDetailPage-0mvQde8R.js.map} +1 -1
  118. package/dashboard/dist/assets/TopicsPage-DkvsHLLe.js +2 -0
  119. package/dashboard/dist/assets/{TopicsPage-BXdc6pAU.js.map → TopicsPage-DkvsHLLe.js.map} +1 -1
  120. package/dashboard/dist/assets/UserName-EaD_Tz9y.js +2 -0
  121. package/dashboard/dist/assets/{UserName-R96NG6xB.js.map → UserName-EaD_Tz9y.js.map} +1 -1
  122. package/dashboard/dist/assets/WorkflowExecutionPage-CjMSQ9Bb.js +2 -0
  123. package/dashboard/dist/assets/{WorkflowExecutionPage-DmRJabMQ.js.map → WorkflowExecutionPage-CjMSQ9Bb.js.map} +1 -1
  124. package/dashboard/dist/assets/WorkflowPill-BtNBSplz.js +2 -0
  125. package/dashboard/dist/assets/{WorkflowPill-Cc2MlYbB.js.map → WorkflowPill-BtNBSplz.js.map} +1 -1
  126. package/dashboard/dist/assets/WorkflowsDashboard-BgUz_jO6.js +2 -0
  127. package/dashboard/dist/assets/WorkflowsDashboard-BgUz_jO6.js.map +1 -0
  128. package/dashboard/dist/assets/WorkflowsOverview-BzUjUfAz.js +2 -0
  129. package/dashboard/dist/assets/{WorkflowsOverview-BhgE0RS8.js.map → WorkflowsOverview-BzUjUfAz.js.map} +1 -1
  130. package/dashboard/dist/assets/YamlWorkflowDetailPage-C48Ui513.js +33 -0
  131. package/dashboard/dist/assets/{YamlWorkflowDetailPage-CvIgB5y7.js.map → YamlWorkflowDetailPage-C48Ui513.js.map} +1 -1
  132. package/dashboard/dist/assets/YamlWorkflowsPage-CQ-dk84N.js +2 -0
  133. package/dashboard/dist/assets/YamlWorkflowsPage-CQ-dk84N.js.map +1 -0
  134. package/dashboard/dist/assets/{agents-BpYMwrsB.js → agents-O1GlQE9p.js} +2 -2
  135. package/dashboard/dist/assets/{agents-BpYMwrsB.js.map → agents-O1GlQE9p.js.map} +1 -1
  136. package/dashboard/dist/assets/{bots-DI6Wqp5X.js → bots-DB5Z7MEk.js} +2 -2
  137. package/dashboard/dist/assets/{bots-DI6Wqp5X.js.map → bots-DB5Z7MEk.js.map} +1 -1
  138. package/dashboard/dist/assets/capabilities-Du9EfNdT.js +2 -0
  139. package/dashboard/dist/assets/{capabilities-BKZZb8eM.js.map → capabilities-Du9EfNdT.js.map} +1 -1
  140. package/dashboard/dist/assets/{controlplane-Djshb7fm.js → controlplane-ku4V2nVk.js} +2 -2
  141. package/dashboard/dist/assets/{controlplane-Djshb7fm.js.map → controlplane-ku4V2nVk.js.map} +1 -1
  142. package/dashboard/dist/assets/escalation-columns-C-xaR_Qg.js +2 -0
  143. package/dashboard/dist/assets/{escalation-columns-CyLzgPkz.js.map → escalation-columns-C-xaR_Qg.js.map} +1 -1
  144. package/dashboard/dist/assets/escalation-oVVz7Lw2.js +2 -0
  145. package/dashboard/dist/assets/{escalation-D8mrXtjS.js.map → escalation-oVVz7Lw2.js.map} +1 -1
  146. package/dashboard/dist/assets/index-61yKjTkk.js +2 -0
  147. package/dashboard/dist/assets/{index-DkbnD-Te.js.map → index-61yKjTkk.js.map} +1 -1
  148. package/dashboard/dist/assets/index-Bcgsf2yD.js +2 -0
  149. package/dashboard/dist/assets/{index-xn9fmkHC.js.map → index-Bcgsf2yD.js.map} +1 -1
  150. package/dashboard/dist/assets/index-BdqKh0UK.css +1 -0
  151. package/dashboard/dist/assets/index-BwXtXaw8.js +2 -0
  152. package/dashboard/dist/assets/{index-CwAmiy_j.js.map → index-BwXtXaw8.js.map} +1 -1
  153. package/dashboard/dist/assets/index-CAzFU1rn.js +9 -0
  154. package/dashboard/dist/assets/{index-Y6yj36QR.js.map → index-CAzFU1rn.js.map} +1 -1
  155. package/dashboard/dist/assets/index-CxlsLEr1.js +2 -0
  156. package/dashboard/dist/assets/{index-CphzO7b8.js.map → index-CxlsLEr1.js.map} +1 -1
  157. package/dashboard/dist/assets/index-CyXilW90.js +6 -0
  158. package/dashboard/dist/assets/{index-BfxiRwk2.js.map → index-CyXilW90.js.map} +1 -1
  159. package/dashboard/dist/assets/index-D0bDVU2a.js +6 -0
  160. package/dashboard/dist/assets/{index-eshNd6NY.js.map → index-D0bDVU2a.js.map} +1 -1
  161. package/dashboard/dist/assets/index-DcZDyLHC.js +2 -0
  162. package/dashboard/dist/assets/{index-yxnQew1X.js.map → index-DcZDyLHC.js.map} +1 -1
  163. package/dashboard/dist/assets/index-DgAmkmtv.js +2 -0
  164. package/dashboard/dist/assets/{index-B5MAG4Uv.js.map → index-DgAmkmtv.js.map} +1 -1
  165. package/dashboard/dist/assets/index-DkZnXWTA.js +2 -0
  166. package/dashboard/dist/assets/{index-CJb3dXku.js.map → index-DkZnXWTA.js.map} +1 -1
  167. package/dashboard/dist/assets/index-DsKK1fCc.js +2 -0
  168. package/dashboard/dist/assets/{index-CQtv2rj6.js.map → index-DsKK1fCc.js.map} +1 -1
  169. package/dashboard/dist/assets/index-MbEPoyTe.js +63 -0
  170. package/dashboard/dist/assets/index-MbEPoyTe.js.map +1 -0
  171. package/dashboard/dist/assets/index-aHhMmZ0W.js +2 -0
  172. package/dashboard/dist/assets/{index-C71I-f5G.js.map → index-aHhMmZ0W.js.map} +1 -1
  173. package/dashboard/dist/assets/{knowledge-C_1r0faY.js → knowledge-CTjJVvIG.js} +2 -2
  174. package/dashboard/dist/assets/{knowledge-C_1r0faY.js.map → knowledge-CTjJVvIG.js.map} +1 -1
  175. package/dashboard/dist/assets/{mcp-BtG54ZAx.js → mcp-CsHkygRS.js} +2 -2
  176. package/dashboard/dist/assets/{mcp-BtG54ZAx.js.map → mcp-CsHkygRS.js.map} +1 -1
  177. package/dashboard/dist/assets/{mcp-query-CSdQWxmv.js → mcp-query-BCt4tpjO.js} +2 -2
  178. package/dashboard/dist/assets/{mcp-query-CSdQWxmv.js.map → mcp-query-BCt4tpjO.js.map} +1 -1
  179. package/dashboard/dist/assets/{pipelines-DVkwxN64.js → pipelines-BpGmuS5V.js} +2 -2
  180. package/dashboard/dist/assets/{pipelines-DVkwxN64.js.map → pipelines-BpGmuS5V.js.map} +1 -1
  181. package/dashboard/dist/assets/roles-lHLgLwOY.js +2 -0
  182. package/dashboard/dist/assets/{roles-CpRcUIMm.js.map → roles-lHLgLwOY.js.map} +1 -1
  183. package/dashboard/dist/assets/tasks-BHfimh-E.js +2 -0
  184. package/dashboard/dist/assets/{tasks-DNdvW5H6.js.map → tasks-BHfimh-E.js.map} +1 -1
  185. package/dashboard/dist/assets/{topics-DNC77Chw.js → topics-BW2cS79q.js} +2 -2
  186. package/dashboard/dist/assets/{topics-DNC77Chw.js.map → topics-BW2cS79q.js.map} +1 -1
  187. package/dashboard/dist/assets/{useCollapsedSections-CGNA5oKV.js → useCollapsedSections-BU5HULGs.js} +2 -2
  188. package/dashboard/dist/assets/{useCollapsedSections-CGNA5oKV.js.map → useCollapsedSections-BU5HULGs.js.map} +1 -1
  189. package/dashboard/dist/assets/{useDebouncedValue-DmL3uNt_.js → useDebouncedValue-BA5S7V54.js} +2 -2
  190. package/dashboard/dist/assets/{useDebouncedValue-DmL3uNt_.js.map → useDebouncedValue-BA5S7V54.js.map} +1 -1
  191. package/dashboard/dist/assets/{useEventHooks-CUUeBSH1.js → useEventHooks-CeOIM1Ix.js} +2 -2
  192. package/dashboard/dist/assets/{useEventHooks-CUUeBSH1.js.map → useEventHooks-CeOIM1Ix.js.map} +1 -1
  193. package/dashboard/dist/assets/{useFilterParams-Ch-a71bE.js → useFilterParams-x-Dg0Vgz.js} +2 -2
  194. package/dashboard/dist/assets/{useFilterParams-Ch-a71bE.js.map → useFilterParams-x-Dg0Vgz.js.map} +1 -1
  195. package/dashboard/dist/assets/{useNamespace-D-AjLnPK.js → useNamespace-CEVLPGGY.js} +2 -2
  196. package/dashboard/dist/assets/{useNamespace-D-AjLnPK.js.map → useNamespace-CEVLPGGY.js.map} +1 -1
  197. package/dashboard/dist/assets/{useYamlActivityEvents-DRdetOb_.js → useYamlActivityEvents-DdRNcy7s.js} +2 -2
  198. package/dashboard/dist/assets/{useYamlActivityEvents-DRdetOb_.js.map → useYamlActivityEvents-DdRNcy7s.js.map} +1 -1
  199. package/dashboard/dist/assets/{users-BUgdEsec.js → users-CAih5Fty.js} +2 -2
  200. package/dashboard/dist/assets/{users-BUgdEsec.js.map → users-CAih5Fty.js.map} +1 -1
  201. package/dashboard/dist/assets/{vendor-icons-CNyYGNsk.js → vendor-icons-DOIDKgo6.js} +116 -121
  202. package/dashboard/dist/assets/{vendor-icons-CNyYGNsk.js.map → vendor-icons-DOIDKgo6.js.map} +1 -1
  203. package/dashboard/dist/assets/vendor-query-B2UbickB.js +18 -0
  204. package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +1 -0
  205. package/dashboard/dist/assets/vendor-react-CXumBFUA.js +22 -0
  206. package/dashboard/dist/assets/vendor-react-CXumBFUA.js.map +1 -0
  207. package/dashboard/dist/assets/{workflows-BfyR5VJt.js → workflows-C_gCwB9q.js} +2 -2
  208. package/dashboard/dist/assets/{workflows-BfyR5VJt.js.map → workflows-C_gCwB9q.js.map} +1 -1
  209. package/dashboard/dist/assets/{yaml-workflows-Bz7yEnhl.js → yaml-workflows-CPabf8Sf.js} +2 -2
  210. package/dashboard/dist/assets/{yaml-workflows-Bz7yEnhl.js.map → yaml-workflows-CPabf8Sf.js.map} +1 -1
  211. package/dashboard/dist/index.html +5 -5
  212. package/docs/dashboard.md +58 -42
  213. package/package.json +2 -1
  214. package/dashboard/dist/assets/AdminDashboard-Ck5-jV9T.js +0 -2
  215. package/dashboard/dist/assets/AgentConfigPage-DFiXRBWs.js +0 -16
  216. package/dashboard/dist/assets/AgentDetailPage-BBgM_pMe.js +0 -4
  217. package/dashboard/dist/assets/AgentsPage-DxwFuedf.js +0 -2
  218. package/dashboard/dist/assets/AvailableEscalationsPage-DNQbeIcn.js +0 -2
  219. package/dashboard/dist/assets/BotPicker-mqwKVOE3.js +0 -2
  220. package/dashboard/dist/assets/CapabilitiesPage-Biffm0kW.js +0 -2
  221. package/dashboard/dist/assets/CollapsibleSection-Bn6Ks79X.js +0 -2
  222. package/dashboard/dist/assets/ConfirmDeleteModal-no0-c_1G.js +0 -2
  223. package/dashboard/dist/assets/CopyableId-DS6IDMIX.js +0 -2
  224. package/dashboard/dist/assets/CredentialsPage-C3NyncEB.js +0 -2
  225. package/dashboard/dist/assets/CronLabel-DQWBx57H.js +0 -2
  226. package/dashboard/dist/assets/CustomDurationPicker-DV42oZ1G.js +0 -2
  227. package/dashboard/dist/assets/DataTable-Bf4dgxll.js +0 -2
  228. package/dashboard/dist/assets/DropZone-CTSXBb3c.js +0 -2
  229. package/dashboard/dist/assets/ElapsedCell-roy4G5SQ.js +0 -2
  230. package/dashboard/dist/assets/EmptyState-CLVm9KmA.js +0 -2
  231. package/dashboard/dist/assets/EscalationSchemaPage-DulCCxea.js +0 -9
  232. package/dashboard/dist/assets/EscalationsOverview-DDwxn_mT.js +0 -2
  233. package/dashboard/dist/assets/EventTable-BaLNvCew.js +0 -2
  234. package/dashboard/dist/assets/FilterBar-DEAbNQqp.js +0 -2
  235. package/dashboard/dist/assets/GraphInvokePage-BmM8r0R3.js +0 -2
  236. package/dashboard/dist/assets/HomePage-Ds3PzWWr.js +0 -2
  237. package/dashboard/dist/assets/HomePage-Ds3PzWWr.js.map +0 -1
  238. package/dashboard/dist/assets/ListToolbar-Dviaskni.js +0 -2
  239. package/dashboard/dist/assets/McpOverview-BBm66wbF.js +0 -2
  240. package/dashboard/dist/assets/McpQueryDetailPage-B6GJOMcz.js +0 -5
  241. package/dashboard/dist/assets/McpQueryPage-C-8nIdBL.js +0 -2
  242. package/dashboard/dist/assets/McpRunDetailPage-CSq_0qqi.js +0 -2
  243. package/dashboard/dist/assets/McpRunsPage-BdK8ahX7.js +0 -2
  244. package/dashboard/dist/assets/McpRunsPage-BdK8ahX7.js.map +0 -1
  245. package/dashboard/dist/assets/Modal-C6HI6btY.js +0 -2
  246. package/dashboard/dist/assets/NamespacePill-eGsbJBFa.js +0 -2
  247. package/dashboard/dist/assets/OperationsPage-DODPFmf2.js +0 -2
  248. package/dashboard/dist/assets/OperationsPage-DODPFmf2.js.map +0 -1
  249. package/dashboard/dist/assets/OperatorDashboard-BbmgsOmQ.js +0 -2
  250. package/dashboard/dist/assets/PageHeader-DcgGV0Y2.js +0 -2
  251. package/dashboard/dist/assets/PageHeaderWithStats-Cf8TYFRh.js +0 -2
  252. package/dashboard/dist/assets/PriorityBadge-a7u8C9uY.js +0 -2
  253. package/dashboard/dist/assets/ProcessDetailPage-D80w44rV.js +0 -2
  254. package/dashboard/dist/assets/ProcessesListPage-BjW5xUkv.js +0 -2
  255. package/dashboard/dist/assets/RoleDetailPage-oahg0cdT.js +0 -11
  256. package/dashboard/dist/assets/RolePill-BAeaQUXX.js +0 -2
  257. package/dashboard/dist/assets/RolesPage-BI1Xtqq_.js +0 -2
  258. package/dashboard/dist/assets/RowActions--m4F6GW8.js +0 -2
  259. package/dashboard/dist/assets/RunAsSelector-DiGzSfiG.js +0 -2
  260. package/dashboard/dist/assets/StatCard-DCPGFzCv.js +0 -2
  261. package/dashboard/dist/assets/StatusBadge-mk-dJwPT.js +0 -2
  262. package/dashboard/dist/assets/StickyPagination-Clm9H840.js +0 -2
  263. package/dashboard/dist/assets/StreamMessageDetail-Bikvs1Cz.js +0 -2
  264. package/dashboard/dist/assets/SwimlaneTimeline-C9X3IVqI.js +0 -2
  265. package/dashboard/dist/assets/TagInput-DmJLnghg.js +0 -2
  266. package/dashboard/dist/assets/TaskDetailPage-C0tbiUi7.js +0 -2
  267. package/dashboard/dist/assets/TaskDetailPage-C0tbiUi7.js.map +0 -1
  268. package/dashboard/dist/assets/TaskQueuePill--1OX6egx.js +0 -2
  269. package/dashboard/dist/assets/TasksListPage-DcYV-GMA.js +0 -2
  270. package/dashboard/dist/assets/TimeAgo-pYn3T9IZ.js +0 -2
  271. package/dashboard/dist/assets/TimestampCell-BPMCscic.js +0 -2
  272. package/dashboard/dist/assets/ToolPill-BnF9lCUX.js +0 -2
  273. package/dashboard/dist/assets/ToolTestPanel-Bw4z_Tya.js +0 -2
  274. package/dashboard/dist/assets/TopicDetailPage-CtFztOnn.js +0 -9
  275. package/dashboard/dist/assets/TopicsPage-BXdc6pAU.js +0 -2
  276. package/dashboard/dist/assets/UserName-R96NG6xB.js +0 -2
  277. package/dashboard/dist/assets/WorkflowExecutionPage-DmRJabMQ.js +0 -2
  278. package/dashboard/dist/assets/WorkflowPill-Cc2MlYbB.js +0 -2
  279. package/dashboard/dist/assets/WorkflowsDashboard-uLU5ZToY.js +0 -2
  280. package/dashboard/dist/assets/WorkflowsDashboard-uLU5ZToY.js.map +0 -1
  281. package/dashboard/dist/assets/WorkflowsOverview-BhgE0RS8.js +0 -2
  282. package/dashboard/dist/assets/YamlWorkflowDetailPage-CvIgB5y7.js +0 -33
  283. package/dashboard/dist/assets/YamlWorkflowsPage-DWnsgl2v.js +0 -2
  284. package/dashboard/dist/assets/YamlWorkflowsPage-DWnsgl2v.js.map +0 -1
  285. package/dashboard/dist/assets/capabilities-BKZZb8eM.js +0 -2
  286. package/dashboard/dist/assets/escalation-D8mrXtjS.js +0 -2
  287. package/dashboard/dist/assets/escalation-columns-CyLzgPkz.js +0 -2
  288. package/dashboard/dist/assets/index-B5MAG4Uv.js +0 -2
  289. package/dashboard/dist/assets/index-BfxiRwk2.js +0 -6
  290. package/dashboard/dist/assets/index-C71I-f5G.js +0 -2
  291. package/dashboard/dist/assets/index-CC4g-6QE.css +0 -1
  292. package/dashboard/dist/assets/index-CJb3dXku.js +0 -2
  293. package/dashboard/dist/assets/index-CQtv2rj6.js +0 -2
  294. package/dashboard/dist/assets/index-CphzO7b8.js +0 -2
  295. package/dashboard/dist/assets/index-CwAmiy_j.js +0 -2
  296. package/dashboard/dist/assets/index-DgCS2Frb.js +0 -281
  297. package/dashboard/dist/assets/index-DgCS2Frb.js.map +0 -1
  298. package/dashboard/dist/assets/index-DkbnD-Te.js +0 -2
  299. package/dashboard/dist/assets/index-Y6yj36QR.js +0 -9
  300. package/dashboard/dist/assets/index-eshNd6NY.js +0 -6
  301. package/dashboard/dist/assets/index-xn9fmkHC.js +0 -2
  302. package/dashboard/dist/assets/index-yxnQew1X.js +0 -2
  303. package/dashboard/dist/assets/roles-CpRcUIMm.js +0 -2
  304. package/dashboard/dist/assets/tasks-DNdvW5H6.js +0 -2
  305. package/dashboard/dist/assets/vendor-query-DLp59M9_.js +0 -35
  306. package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +0 -1
  307. package/dashboard/dist/assets/vendor-react-zA2lQFDs.js +0 -26
  308. package/dashboard/dist/assets/vendor-react-zA2lQFDs.js.map +0 -1
@@ -0,0 +1,45 @@
1
+ /**
2
+ * twin-farm — drive the printer-twin example end to end, effortlessly.
3
+ *
4
+ * Spins up the whole DIGITAL side of the physical/digital twin farm from one
5
+ * command and plays every human part automatically, so a single run exercises
6
+ * the full lifecycle: register → advertise → dispatch → print → settle, plus the
7
+ * failure detour (cancel → service → back in the pool). The PHYSICAL side is the
8
+ * app's farm-manager backend — `mock` by default (self-contained), or `http`
9
+ * against a real print-farm-manager host once you wire the office up.
10
+ *
11
+ * Usage:
12
+ * npm run twin:farm
13
+ * FLEET=6 ORDERS=10 UNITS=2 npm run twin:farm
14
+ * FAIL_PCT=25 npm run twin:farm # rehearse dead-machine → service
15
+ * FARM_MANAGER_URL=http://192.168.1.50:4000 npm run twin:farm # preflight the office link
16
+ * FLEET=4 ORDERS=4 KEEP=1 npm run twin:farm # leave twins running to poke in the UI
17
+ *
18
+ * Env vars:
19
+ * BASE_URL long-tail API (default http://localhost:3000)
20
+ * FLEET printer twins to launch (default 4)
21
+ * ORDERS orders to place (default 6)
22
+ * UNITS max units per order (default 2; capped to the fleet that
23
+ * shares an order's filament, so every order is satisfiable)
24
+ * FILAMENTS comma-separated filament pool the fleet + orders draw from
25
+ * (default "pla,petg")
26
+ * ARRIVAL_S average seconds between order arrivals (default 2)
27
+ * FAIL_PCT percent of print jobs to cancel mid-print, exercising the
28
+ * service path (default 0). Best-effort: it races the
29
+ * physical side, so raise MOCK_PRINT_SECONDS on the app for
30
+ * a wider window (see README).
31
+ * POLL_MS poll interval ms (default 750)
32
+ * BROKER_IDLE idle broker ticks before it self-terminates (default 40)
33
+ * RUN_BROKER launch a broker (default 1; set 0 if one already runs)
34
+ * KEEP 1 = leave twins advertising at the end (default 0 = retire
35
+ * them with a power-down so nothing lingers between runs)
36
+ * FARM_MANAGER_URL optional: GET this before running and report reachability,
37
+ * a preflight for the office laptop → farm-manager-host link
38
+ *
39
+ * Capabilities: each twin is registered with a capability profile (xl/pdac/soft).
40
+ * By default the fleet is fully capable and only filament routes; set FLEET_CAPS
41
+ * to vary it (e.g. "xl,soft|pdac|full|full" — one spec per printer, pipe-separated,
42
+ * each a comma list of capabilities or "full"/"base"). Orders only ever require a
43
+ * capability the fleet can satisfy for the chosen filament and unit count.
44
+ */
45
+ export {};
@@ -0,0 +1,441 @@
1
+ "use strict";
2
+ /**
3
+ * twin-farm — drive the printer-twin example end to end, effortlessly.
4
+ *
5
+ * Spins up the whole DIGITAL side of the physical/digital twin farm from one
6
+ * command and plays every human part automatically, so a single run exercises
7
+ * the full lifecycle: register → advertise → dispatch → print → settle, plus the
8
+ * failure detour (cancel → service → back in the pool). The PHYSICAL side is the
9
+ * app's farm-manager backend — `mock` by default (self-contained), or `http`
10
+ * against a real print-farm-manager host once you wire the office up.
11
+ *
12
+ * Usage:
13
+ * npm run twin:farm
14
+ * FLEET=6 ORDERS=10 UNITS=2 npm run twin:farm
15
+ * FAIL_PCT=25 npm run twin:farm # rehearse dead-machine → service
16
+ * FARM_MANAGER_URL=http://192.168.1.50:4000 npm run twin:farm # preflight the office link
17
+ * FLEET=4 ORDERS=4 KEEP=1 npm run twin:farm # leave twins running to poke in the UI
18
+ *
19
+ * Env vars:
20
+ * BASE_URL long-tail API (default http://localhost:3000)
21
+ * FLEET printer twins to launch (default 4)
22
+ * ORDERS orders to place (default 6)
23
+ * UNITS max units per order (default 2; capped to the fleet that
24
+ * shares an order's filament, so every order is satisfiable)
25
+ * FILAMENTS comma-separated filament pool the fleet + orders draw from
26
+ * (default "pla,petg")
27
+ * ARRIVAL_S average seconds between order arrivals (default 2)
28
+ * FAIL_PCT percent of print jobs to cancel mid-print, exercising the
29
+ * service path (default 0). Best-effort: it races the
30
+ * physical side, so raise MOCK_PRINT_SECONDS on the app for
31
+ * a wider window (see README).
32
+ * POLL_MS poll interval ms (default 750)
33
+ * BROKER_IDLE idle broker ticks before it self-terminates (default 40)
34
+ * RUN_BROKER launch a broker (default 1; set 0 if one already runs)
35
+ * KEEP 1 = leave twins advertising at the end (default 0 = retire
36
+ * them with a power-down so nothing lingers between runs)
37
+ * FARM_MANAGER_URL optional: GET this before running and report reachability,
38
+ * a preflight for the office laptop → farm-manager-host link
39
+ *
40
+ * Capabilities: each twin is registered with a capability profile (xl/pdac/soft).
41
+ * By default the fleet is fully capable and only filament routes; set FLEET_CAPS
42
+ * to vary it (e.g. "xl,soft|pdac|full|full" — one spec per printer, pipe-separated,
43
+ * each a comma list of capabilities or "full"/"base"). Orders only ever require a
44
+ * capability the fleet can satisfy for the chosen filament and unit count.
45
+ */
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ try {
48
+ require('dotenv/config');
49
+ }
50
+ catch { /* dotenv optional */ }
51
+ const BASE_URL = process.env.BASE_URL || 'http://localhost:3000';
52
+ const FLEET = parseInt(process.env.FLEET || '4', 10);
53
+ const ORDERS = parseInt(process.env.ORDERS || '6', 10);
54
+ const UNITS = parseInt(process.env.UNITS || '2', 10);
55
+ const FILAMENTS = (process.env.FILAMENTS || 'pla,petg').split(',').map((f) => f.trim()).filter(Boolean);
56
+ const ARRIVAL_S = parseFloat(process.env.ARRIVAL_S || '2');
57
+ const FAIL_PCT = parseInt(process.env.FAIL_PCT || '0', 10);
58
+ const POLL_MS = parseInt(process.env.POLL_MS || '750', 10);
59
+ const BROKER_IDLE = parseInt(process.env.BROKER_IDLE || '40', 10);
60
+ const RUN_BROKER = process.env.RUN_BROKER !== '0';
61
+ const KEEP = process.env.KEEP === '1';
62
+ const FARM_MANAGER_URL = process.env.FARM_MANAGER_URL || '';
63
+ const CAPABILITY_KEYS = ['xl', 'pdac', 'soft'];
64
+ const MODELS = ['Fab-X1', 'Fab-X1C', 'Fab-P2', 'Fab-Mini'];
65
+ let token = '';
66
+ let userId = '';
67
+ let done = false;
68
+ const stats = { registered: 0, dispatched: 0, printed: 0, cancelled: 0, serviced: 0, settled: 0 };
69
+ function ts() { return new Date().toISOString().slice(11, 19); }
70
+ function sleep(ms) { return new Promise((r) => setTimeout(r, ms)); }
71
+ function ageSeconds(iso) { return (Date.now() - new Date(iso).getTime()) / 1000; }
72
+ // Deterministic per-item jitter — FNV-1a hash of a key into [0, 1). Stable
73
+ // across polls, so a job's fail/no-fail verdict never flip-flops mid-run.
74
+ function jitter(key, salt = '') {
75
+ let h = 2166136261;
76
+ for (const c of salt + key) {
77
+ h ^= c.charCodeAt(0);
78
+ h = Math.imul(h, 16777619);
79
+ }
80
+ return ((h >>> 0) % 1000) / 1000;
81
+ }
82
+ function spread(base, r) { return base * (0.4 + 1.2 * r); }
83
+ // ── HTTP + auth (mirrors ortho-populate) ──────────────────────────────────────
84
+ async function api(method, path, body) {
85
+ const res = await fetch(`${BASE_URL}${path}`, {
86
+ method,
87
+ headers: { 'Content-Type': 'application/json', ...(token ? { Authorization: `Bearer ${token}` } : {}) },
88
+ body: body !== undefined ? JSON.stringify(body) : undefined,
89
+ });
90
+ const data = await res.json().catch(() => ({}));
91
+ if (!res.ok)
92
+ throw new Error(`${method} ${path} → ${res.status}: ${JSON.stringify(data)}`);
93
+ return data;
94
+ }
95
+ async function login() {
96
+ const auth = await api('POST', '/api/auth/login', { username: 'superadmin', password: 'l0ngt@1l' });
97
+ token = auth.token;
98
+ userId = auth.user?.id || '';
99
+ if (!token) {
100
+ console.error('[auth] Login failed');
101
+ process.exit(1);
102
+ }
103
+ console.log(`[${ts()}] Logged in (userId ${userId.slice(0, 8)}…)`);
104
+ }
105
+ // ── Pace Board role config (idempotent — never clobbers admin tuning) ─────────
106
+ /**
107
+ * Ensure the twin farm's roles are operationalized on the Pace Board. The
108
+ * startup seeder (examples/seed-twin.ts) normally owns this; the driver repeats
109
+ * it so `npm run twin:farm` populates the board even against an app that did not
110
+ * seed the examples. Only UNCONFIGURED roles (no title) are touched — a role an
111
+ * admin has tuned keeps its dials.
112
+ *
113
+ * Topology: print-jobs ─▶ printer-fleet (production line), with print-servicer
114
+ * a side-quest root merging into the fleet.
115
+ */
116
+ const TWIN_ROLE_CONFIG = [
117
+ { role: 'print-jobs', title: 'Print Jobs', parent_role: null, sla_minutes: 5, target_per_hour: 30, priority_threshold_minutes: 5, description: 'Order demand — one print-job escalation per unit, claimed as a set.' },
118
+ { role: 'printer-fleet', title: 'Printer Fleet', parent_role: 'print-jobs', sla_minutes: 5, target_per_hour: 30, priority_threshold_minutes: 5, description: 'Twin availability adverts and in-flight print rows — the machines at work.', upstream_roles: ['print-servicer'] },
119
+ { role: 'print-servicer', title: 'Print Servicer', parent_role: null, sla_minutes: 10, target_per_hour: 10, priority_threshold_minutes: 10, description: 'Register unboxed machines and restore ones that fell offline.' },
120
+ ];
121
+ async function ensureTwinRoles() {
122
+ const details = await api('GET', '/api/roles/details').catch(() => ({ roles: [] }));
123
+ const configured = new Map((details?.roles ?? []).map((r) => [r.role, r]));
124
+ // Create bare rows first — upstream_roles references must resolve.
125
+ for (const cfg of TWIN_ROLE_CONFIG) {
126
+ if (!configured.has(cfg.role))
127
+ await api('POST', '/api/roles', { role: cfg.role }).catch(() => { });
128
+ }
129
+ let applied = 0;
130
+ for (const cfg of TWIN_ROLE_CONFIG) {
131
+ const row = configured.get(cfg.role);
132
+ if (row?.title)
133
+ continue; // already configured — respect admin tuning
134
+ const { role, ...body } = cfg;
135
+ await api('PATCH', `/api/roles/${role}`, { ...body, ops_visible: true }).then(() => { applied++; }).catch((err) => {
136
+ console.warn(`[${ts()}] ⚠ role ${role}: ${String(err.message).slice(0, 80)}`);
137
+ });
138
+ }
139
+ console.log(`[${ts()}] Pace Board roles ready (print-jobs → printer-fleet, print-servicer side)${applied ? ` — configured ${applied}` : ''}`);
140
+ }
141
+ function parseCapSpec(spec) {
142
+ const s = spec.trim().toLowerCase();
143
+ if (s === 'full' || s === '')
144
+ return { xl: true, pdac: true, soft: true };
145
+ if (s === 'base' || s === 'none')
146
+ return { xl: false, pdac: false, soft: false };
147
+ const set = { xl: false, pdac: false, soft: false };
148
+ for (const k of s.split(',').map((x) => x.trim())) {
149
+ if (CAPABILITY_KEYS.includes(k))
150
+ set[k] = true;
151
+ }
152
+ return set;
153
+ }
154
+ function planFleet(batchTag) {
155
+ const capSpecs = (process.env.FLEET_CAPS || '').split('|').map((s) => s.trim()).filter(Boolean);
156
+ return Array.from({ length: FLEET }, (_, i) => {
157
+ const filament = FILAMENTS[i % FILAMENTS.length];
158
+ const caps = capSpecs.length ? parseCapSpec(capSpecs[i % capSpecs.length]) : { xl: true, pdac: true, soft: true };
159
+ const printerId = `${batchTag}-p${i}`;
160
+ return { printerId, wfId: printerId, filament, caps, model: MODELS[i % MODELS.length], serialNumber: `SN-${batchTag.slice(-6)}-${i}` };
161
+ });
162
+ }
163
+ function planOrders(batchTag, fleet) {
164
+ return Array.from({ length: ORDERS }, (_, i) => {
165
+ const filament = FILAMENTS[i % FILAMENTS.length];
166
+ const pool = fleet.filter((t) => t.filament === filament);
167
+ const units = Math.max(1, Math.min(UNITS, pool.length));
168
+ // Require a rotating capability only if enough printers of this filament have
169
+ // it — otherwise the order would never place. Proves capability routing when
170
+ // the fleet varies; a no-op (but still-threaded) facet when it's fully capable.
171
+ const cap = CAPABILITY_KEYS[i % CAPABILITY_KEYS.length];
172
+ const capable = pool.filter((t) => t.caps[cap]).length;
173
+ const require = (i % 2 === 0 && capable >= units) ? { [cap]: true } : {};
174
+ return { index: i, wfId: `${batchTag}-o${i}`, orderId: `TWIN-${batchTag.slice(-6)}-${i}`, filament, require, units };
175
+ });
176
+ }
177
+ // ── Launch twins + broker + orders ────────────────────────────────────────────
178
+ async function startTwin(spec) {
179
+ await api('POST', '/api/workflows/printerTwin/invoke', {
180
+ workflowId: spec.wfId,
181
+ data: { printerId: spec.printerId, operatorId: userId },
182
+ metadata: { source: 'twin-farm' },
183
+ });
184
+ }
185
+ async function startBroker(batchTag) {
186
+ const wfId = `${batchTag}-broker`;
187
+ await api('POST', '/api/workflows/twinBroker/invoke', {
188
+ workflowId: wfId,
189
+ data: { brokerId: userId, tickSeconds: 1, idleTickSeconds: 3, maxIdleRuns: BROKER_IDLE },
190
+ metadata: { source: 'twin-farm' },
191
+ });
192
+ return wfId;
193
+ }
194
+ async function placeOrder(spec) {
195
+ await api('POST', '/api/workflows/twinOrder/invoke', {
196
+ workflowId: spec.wfId,
197
+ data: {
198
+ orderId: spec.orderId,
199
+ filament: spec.filament,
200
+ require: spec.require,
201
+ units: Array.from({ length: spec.units }, (_, u) => ({ gcodeUrl: `https://example.com/${spec.orderId}-u${u}.gcode` })),
202
+ operatorId: userId,
203
+ },
204
+ metadata: { source: 'twin-farm' },
205
+ });
206
+ }
207
+ // ── Human automation: the print-servicer ──────────────────────────────────────
208
+ /** Resolve registration escalations — the servicer bringing a machine online. */
209
+ async function registerLoop(fleet) {
210
+ while (!done) {
211
+ try {
212
+ const resp = await api('GET', '/api/escalations/available?role=print-servicer&subtype=registering&limit=100');
213
+ for (const esc of resp?.escalations ?? []) {
214
+ const spec = fleet.get(String(esc.metadata?.printerId ?? ''));
215
+ if (!spec)
216
+ continue;
217
+ await api('POST', `/api/escalations/${esc.id}/resolve`, {
218
+ resolverPayload: {
219
+ serialNumber: spec.serialNumber,
220
+ model: spec.model,
221
+ manufactureDate: '2026-01-15',
222
+ filament: spec.filament,
223
+ certifications: 'CE, RoHS',
224
+ xl: spec.caps.xl, pdac: spec.caps.pdac, soft: spec.caps.soft,
225
+ notes: 'Auto-registered by twin-farm',
226
+ },
227
+ }).then(() => {
228
+ stats.registered++;
229
+ const c = CAPABILITY_KEYS.filter((k) => spec.caps[k]).join('+') || 'base';
230
+ console.log(`[${ts()}] [register] ${spec.printerId} — ${spec.model} ${spec.filament} (${c}) [${stats.registered}/${FLEET}]`);
231
+ }).catch(() => { });
232
+ }
233
+ }
234
+ catch (err) {
235
+ logPollErr('register', err);
236
+ }
237
+ if (!done)
238
+ await sleep(POLL_MS);
239
+ }
240
+ }
241
+ /** Resolve service escalations — the servicer realigning a downed machine. */
242
+ async function serviceLoop() {
243
+ while (!done) {
244
+ try {
245
+ const resp = await api('GET', '/api/escalations/available?role=print-servicer&subtype=service&limit=100');
246
+ for (const esc of resp?.escalations ?? []) {
247
+ await api('POST', `/api/escalations/${esc.id}/resolve`, {
248
+ resolverPayload: { action: 'restored', notes: 'Auto-serviced by twin-farm' },
249
+ }).then(() => {
250
+ stats.serviced++;
251
+ console.log(`[${ts()}] [service] ${esc.metadata?.printerId ?? esc.id.slice(0, 8)} restored [${stats.serviced}]`);
252
+ }).catch(() => { });
253
+ }
254
+ }
255
+ catch (err) {
256
+ logPollErr('service', err);
257
+ }
258
+ if (!done)
259
+ await sleep(POLL_MS);
260
+ }
261
+ }
262
+ /** Cancel a deterministic fraction of in-flight prints — the power-outage /
263
+ * dead-machine drill. Best-effort: it races the physical side's resolve. */
264
+ async function failLoop() {
265
+ if (FAIL_PCT <= 0)
266
+ return;
267
+ const acted = new Set();
268
+ while (!done) {
269
+ try {
270
+ const resp = await api('GET', '/api/escalations/available?role=printer-fleet&subtype=printing&limit=100');
271
+ for (const esc of resp?.escalations ?? []) {
272
+ const jobId = String(esc.metadata?.jobId ?? esc.id);
273
+ if (acted.has(jobId))
274
+ continue;
275
+ if (jitter(jobId, 'fail') * 100 >= FAIL_PCT)
276
+ continue;
277
+ acted.add(jobId);
278
+ await api('POST', `/api/escalations/${esc.id}/cancel`).then(() => {
279
+ stats.cancelled++;
280
+ console.log(`[${ts()}] [FAIL] cancelled print ${jobId} — machine went dark [${stats.cancelled}]`);
281
+ }).catch(() => { });
282
+ }
283
+ }
284
+ catch (err) {
285
+ logPollErr('fail', err);
286
+ }
287
+ if (!done)
288
+ await sleep(Math.min(POLL_MS, 300));
289
+ }
290
+ }
291
+ let lastPollErr = '';
292
+ function logPollErr(loop, err) {
293
+ const msg = `[${loop}] ${String(err?.message).slice(0, 80)}`;
294
+ if (msg !== lastPollErr) {
295
+ console.warn(`[${ts()}] ⚠ ${msg}`);
296
+ lastPollErr = msg;
297
+ }
298
+ }
299
+ // ── Order arrival + settlement watch ──────────────────────────────────────────
300
+ async function orderLoop(orders) {
301
+ for (const order of orders) {
302
+ if (done)
303
+ break;
304
+ try {
305
+ await placeOrder(order);
306
+ const req = Object.keys(order.require).length ? ` require:${Object.keys(order.require).join('+')}` : '';
307
+ console.log(`[${ts()}] [order] ${order.index + 1}/${orders.length} ${order.orderId} — ${order.filament} ×${order.units}${req}`);
308
+ }
309
+ catch (err) {
310
+ console.error(`[${ts()}] [order] ${order.orderId} FAILED: ${String(err.message).slice(0, 100)}`);
311
+ }
312
+ await sleep(spread(ARRIVAL_S, jitter(order.wfId, 'arrive')) * 1000);
313
+ }
314
+ }
315
+ /** Poll each order's result; a settled order returns its outcomes. */
316
+ async function settlementWatch(orders) {
317
+ const settled = new Set();
318
+ let stalled = 0;
319
+ const STALL_S = Math.max(40, ORDERS * (ARRIVAL_S + 8));
320
+ while (!done) {
321
+ await sleep(1000);
322
+ let progressed = false;
323
+ for (const order of orders) {
324
+ if (settled.has(order.wfId))
325
+ continue;
326
+ try {
327
+ const resp = await api('GET', `/api/workflows/${order.wfId}/result`);
328
+ const data = resp?.result?.data;
329
+ if (data && data.completedAt !== undefined) {
330
+ settled.add(order.wfId);
331
+ progressed = true;
332
+ stats.settled++;
333
+ const outcomes = data.outcomes ?? [];
334
+ const ok = outcomes.filter((o) => o.outcome === 'success').length;
335
+ const bad = outcomes.length - ok;
336
+ stats.printed += ok;
337
+ stats.dispatched += outcomes.length;
338
+ console.log(`[${ts()}] [settle] ${order.orderId} — ${ok} printed${bad ? `, ${bad} cancelled` : ''} [${stats.settled}/${ORDERS}]`);
339
+ }
340
+ }
341
+ catch { /* 202 still running */ }
342
+ }
343
+ if (stats.settled >= ORDERS) {
344
+ done = true;
345
+ break;
346
+ }
347
+ stalled = progressed ? 0 : stalled + 1;
348
+ if (stalled && stalled % 10 === 0)
349
+ console.log(`[${ts()}] … ${stats.settled}/${ORDERS} settled — waiting (${stalled}s quiet)`);
350
+ if (stalled >= STALL_S) {
351
+ console.warn(`[${ts()}] ⚠ stalled ${stalled}s at ${stats.settled}/${ORDERS} — stopping`);
352
+ done = true;
353
+ break;
354
+ }
355
+ }
356
+ }
357
+ // ── Teardown: retire idle twins so nothing lingers ────────────────────────────
358
+ async function retireTwins(fleet) {
359
+ if (KEEP) {
360
+ console.log(`[${ts()}] KEEP=1 — leaving ${fleet.length} twins advertising`);
361
+ return;
362
+ }
363
+ await sleep(2000); // let any last twin re-advertise after a service visit
364
+ let retired = 0;
365
+ for (let sweep = 0; sweep < 4 && retired < fleet.length; sweep++) {
366
+ try {
367
+ const resp = await api('GET', '/api/escalations/available?role=printer-fleet&subtype=ready&limit=200');
368
+ for (const esc of resp?.escalations ?? []) {
369
+ try {
370
+ await api('POST', `/api/escalations/${esc.id}/resolve`, { resolverPayload: { powerdown: true } });
371
+ retired++;
372
+ }
373
+ catch { /* claimed or already gone */ }
374
+ }
375
+ }
376
+ catch { /* ignore */ }
377
+ if (retired < fleet.length)
378
+ await sleep(1500);
379
+ }
380
+ console.log(`[${ts()}] Retired ${retired} idle twin${retired === 1 ? '' : 's'}`);
381
+ }
382
+ // ── Optional office-link preflight ────────────────────────────────────────────
383
+ async function preflightFarmManager() {
384
+ if (!FARM_MANAGER_URL)
385
+ return;
386
+ process.stdout.write(`[${ts()}] Preflight → ${FARM_MANAGER_URL} … `);
387
+ try {
388
+ const ctrl = new AbortController();
389
+ const t = setTimeout(() => ctrl.abort(), 4000);
390
+ const res = await fetch(FARM_MANAGER_URL, { signal: ctrl.signal }).finally(() => clearTimeout(t));
391
+ console.log(`reachable (HTTP ${res.status}). Set FARM_MANAGER_BACKEND=http + FARM_MANAGER_BASE_URL on the app to dispatch for real.`);
392
+ }
393
+ catch (err) {
394
+ console.log(`UNREACHABLE (${String(err?.message).slice(0, 60)}). Check the office wifi link — see the README connectivity walkthrough.`);
395
+ }
396
+ }
397
+ // ── Main ──────────────────────────────────────────────────────────────────────
398
+ async function main() {
399
+ const runId = Math.floor(Date.now() / 1000).toString();
400
+ const batchTag = `twin-${runId}`;
401
+ const fleet = planFleet(batchTag);
402
+ const fleetById = new Map(fleet.map((t) => [t.printerId, t]));
403
+ console.log(`\n Twin Farm ── ${FLEET} printers, ${ORDERS} orders (≤${UNITS} units), filaments [${FILAMENTS.join(', ')}]`);
404
+ console.log(` arrival=${ARRIVAL_S}s poll=${POLL_MS}ms fail=${FAIL_PCT}% broker=${RUN_BROKER ? `on (idle≤${BROKER_IDLE})` : 'external'} keep=${KEEP}`);
405
+ console.log(` Server: ${BASE_URL}\n`);
406
+ await login();
407
+ await ensureTwinRoles();
408
+ await preflightFarmManager();
409
+ // 1. Launch the fleet — each twin raises a registration escalation and parks.
410
+ console.log(`\n[${ts()}] Launching ${FLEET} twins …`);
411
+ for (const spec of fleet)
412
+ await startTwin(spec);
413
+ // 2. Register + service loops start now so twins come online as they appear.
414
+ const humanLoops = [registerLoop(fleetById), serviceLoop(), failLoop()];
415
+ // 3. Broker (once the humans are watching).
416
+ if (RUN_BROKER) {
417
+ await startBroker(batchTag);
418
+ console.log(`[${ts()}] Broker running`);
419
+ }
420
+ // 4. Wait for the fleet to register before placing demand (so orders place).
421
+ const registerDeadline = Date.now() + 30_000;
422
+ while (stats.registered < FLEET && Date.now() < registerDeadline && !done)
423
+ await sleep(500);
424
+ if (stats.registered < FLEET)
425
+ console.warn(`[${ts()}] ⚠ only ${stats.registered}/${FLEET} registered — placing orders anyway`);
426
+ // 5. Orders arrive; settlement watch drives the run to completion.
427
+ const orders = planOrders(batchTag, fleet);
428
+ console.log(`\n[${ts()}] Placing ${ORDERS} orders …\n`);
429
+ const startMs = Date.now();
430
+ await Promise.all([orderLoop(orders), settlementWatch(orders), ...humanLoops.map((p) => p.catch(() => { }))]);
431
+ const elapsed = ((Date.now() - startMs) / 1000).toFixed(1);
432
+ await retireTwins(fleet);
433
+ console.log(`\n[${ts()}] Done in ${elapsed}s`);
434
+ console.log(` Registered: ${stats.registered}/${FLEET}`);
435
+ console.log(` Orders: ${stats.settled}/${ORDERS} settled`);
436
+ console.log(` Units: ${stats.printed} printed${stats.cancelled ? `, ${stats.cancelled} cancelled` : ''} (${stats.dispatched} dispatched)`);
437
+ console.log(` Serviced: ${stats.serviced}`);
438
+ console.log(`\n Dashboard: ${BASE_URL}/escalations\n`);
439
+ process.exit(0);
440
+ }
441
+ main().catch((err) => { console.error(err); process.exit(1); });
@@ -1 +1 @@
1
- {"root":["../index.ts","../vitest.config.ts","../vitest.integration.config.ts","../adapters/express.ts","../api/agent-subscriptions.ts","../api/agents.ts","../api/auth-sso.ts","../api/auth.ts","../api/bot-accounts.ts","../api/capabilities.ts","../api/controlplane.ts","../api/dba.ts","../api/diagnostics.ts","../api/exports.ts","../api/files.ts","../api/index.ts","../api/insight.ts","../api/knowledge.ts","../api/maintenance.ts","../api/namespaces.ts","../api/overview.ts","../api/pipelines.ts","../api/roles.ts","../api/settings.ts","../api/tasks.ts","../api/topics.ts","../api/users.ts","../api/workflow-sets.ts","../api/escalations/bulk.ts","../api/escalations/cancel.ts","../api/escalations/claim.ts","../api/escalations/create.ts","../api/escalations/facets.ts","../api/escalations/helpers.ts","../api/escalations/index.ts","../api/escalations/list.ts","../api/escalations/metadata.ts","../api/escalations/resolve.ts","../api/escalations/single.ts","../api/mcp/index.ts","../api/mcp/servers.ts","../api/mcp/tools.ts","../api/workflows/config.ts","../api/workflows/discovery.ts","../api/workflows/index.ts","../api/workflows/invocation.ts","../api/yaml-workflows/cron.ts","../api/yaml-workflows/crud.ts","../api/yaml-workflows/deploy.ts","../api/yaml-workflows/helpers.ts","../api/yaml-workflows/index.ts","../api/yaml-workflows/versions.ts","../bin/ltc.ts","../lib/cli/auth.ts","../lib/cli/client.ts","../lib/cli/compile.ts","../lib/cli/format.ts","../lib/cli/init.ts","../lib/cli/output.ts","../lib/cli/scanner.ts","../lib/cli/types.ts","../lib/cli/commands/escalations.ts","../lib/cli/commands/knowledge.ts","../lib/cli/commands/mcp.ts","../lib/cli/commands/pipelines.ts","../lib/cli/commands/roles.ts","../lib/cli/commands/status.ts","../lib/cli/commands/streams.ts","../lib/cli/commands/users.ts","../lib/cli/commands/workflows.ts","../lib/db/index.ts","../lib/db/migrate.ts","../lib/events/callback.ts","../lib/events/index.ts","../lib/events/matching.ts","../lib/events/memory.ts","../lib/events/nats-ws-proxy.ts","../lib/events/nats.ts","../lib/events/publish.ts","../lib/events/socketio.ts","../lib/events/system-events.ts","../lib/logger/index.ts","../lib/logger/pino.ts","../lib/storage/index.ts","../lib/storage/local.ts","../lib/storage/mime.ts","../lib/storage/s3.ts","../lib/storage/types.ts","../lib/telemetry/honeycomb.ts","../lib/telemetry/index.ts","../modules/auth.ts","../modules/config.ts","../modules/defaults.ts","../modules/features.ts","../modules/ltconfig.ts","../modules/maintenance.ts","../modules/sso.ts","../modules/utils.ts","../modules/version.ts","../routes/agents.ts","../routes/auth-sso.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/capabilities.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/diagnostics.ts","../routes/docs.ts","../routes/exports.ts","../routes/file-browser.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/knowledge.ts","../routes/maintenance.ts","../routes/mcp-endpoint.ts","../routes/mcp.ts","../routes/namespaces.ts","../routes/nats-credentials.ts","../routes/oauth.ts","../routes/overview.ts","../routes/pipelines.ts","../routes/roles.ts","../routes/settings.ts","../routes/tasks.ts","../routes/topics.ts","../routes/users.ts","../routes/workflow-sets.ts","../routes/escalations/bulk.ts","../routes/escalations/facets.ts","../routes/escalations/index.ts","../routes/escalations/list.ts","../routes/escalations/metadata.ts","../routes/escalations/resolve.ts","../routes/escalations/single.ts","../routes/workflows/config.ts","../routes/workflows/discovery.ts","../routes/workflows/index.ts","../routes/workflows/invocation.ts","../routes/yaml-workflows/cron.ts","../routes/yaml-workflows/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/ortho-populate.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../sdk/index.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/workflow-invocation.ts","../services/agent/index.ts","../services/agent/input-mapper.ts","../services/agent/sql.ts","../services/agent/subscription-sql.ts","../services/agent/subscriptions.ts","../services/agent/trigger-registry.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.ts","../services/auth/index.ts","../services/auth/service-token.ts","../services/auth/sql.ts","../services/config/cache.ts","../services/config/index.ts","../services/config/provider.ts","../services/config/read.ts","../services/config/sql.ts","../services/config/write.ts","../services/controlplane/index.ts","../services/controlplane/quorum-bridge.ts","../services/controlplane/sql.ts","../services/controlplane/stream-messages-sql.ts","../services/controlplane/types.ts","../services/cron/index.ts","../services/diagnostics/index.ts","../services/diagnostics/patterns.ts","../services/escalation/bulk.ts","../services/escalation/client.ts","../services/escalation/crud.ts","../services/escalation/facet-sql.ts","../services/escalation/facets.ts","../services/escalation/index.ts","../services/escalation/map.ts","../services/escalation/metrics-cache.ts","../services/escalation/queries.ts","../services/escalation/sql.ts","../services/escalation/types.ts","../services/escalation-strategy/default.ts","../services/escalation-strategy/index.ts","../services/escalation-strategy/mcp.ts","../services/export/client.ts","../services/export/index.ts","../services/export/post-process.ts","../services/export/types.ts","../services/iam/activity.ts","../services/iam/bots.ts","../services/iam/context.ts","../services/iam/credentials.ts","../services/iam/envelope.ts","../services/iam/ephemeral.ts","../services/iam/index.ts","../services/iam/principal.ts","../services/iam/resolve.ts","../services/iam/sql.ts","../services/insight/index.ts","../services/insight/prompts.ts","../services/interceptor/activity-interceptor.ts","../services/interceptor/completion.ts","../services/interceptor/context.ts","../services/interceptor/escalation.ts","../services/interceptor/index.ts","../services/interceptor/lifecycle.ts","../services/interceptor/state.ts","../services/interceptor/types.ts","../services/interceptor/activities/config.ts","../services/interceptor/activities/escalation.ts","../services/interceptor/activities/index.ts","../services/interceptor/activities/task.ts","../services/interceptor/activities/workflow.ts","../services/llm/detect.ts","../services/llm/index.ts","../services/llm/translate.ts","../services/llm/types.ts","../services/llm/providers/anthropic.ts","../services/llm/providers/openai.ts","../services/maintenance/index.ts","../services/mcp/adapter.ts","../services/mcp/db.ts","../services/mcp/exposure.ts","../services/mcp/external-server.ts","../services/mcp/index.ts","../services/mcp/register-tool.ts","../services/mcp/seed-service-account.ts","../services/mcp/server-lifecycle.ts","../services/mcp/server-tools.ts","../services/mcp/server.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.ts","../services/mcp/client/connection-dispatch.ts","../services/mcp/client/connection-lifecycle.ts","../services/mcp/client/connection-test.ts","../services/mcp/client/connection.ts","../services/mcp/client/index.ts","../services/mcp/client/tools.ts","../services/mcp/db-server/index.ts","../services/mcp/db-server/schemas.ts","../services/mcp/db-server/tools.ts","../services/mcp/playwright-server/index.ts","../services/mcp/playwright-server/lifecycle.ts","../services/mcp/playwright-server/schemas.ts","../services/mcp/playwright-server/tools.ts","../services/namespace/index.ts","../services/namespace/sql.ts","../services/namespace/types.ts","../services/oauth/crypto.ts","../services/oauth/db.ts","../services/oauth/index.ts","../services/oauth/sql.ts","../services/oauth/state.ts","../services/oauth/providers/anthropic.ts","../services/oauth/providers/github.ts","../services/oauth/providers/google.ts","../services/oauth/providers/index.ts","../services/oauth/providers/microsoft.ts","../services/oauth/providers/mock.ts","../services/oauth/providers/registry.ts","../services/oauth/providers/types.ts","../services/orchestrator/condition.ts","../services/orchestrator/index.ts","../services/orchestrator/types.ts","../services/overview/index.ts","../services/overview/sql.ts","../services/pipelines/enrichment.ts","../services/pipelines/events.ts","../services/pipelines/execution-builder.ts","../services/pipelines/index.ts","../services/pipelines/queries.ts","../services/pipelines/sql.ts","../services/pipelines/types.ts","../services/role/index.ts","../services/role/sql.ts","../services/role/types.ts","../services/task/crud.ts","../services/task/index.ts","../services/task/process.ts","../services/task/resolve.ts","../services/task/sql.ts","../services/task/types.ts","../services/topics/index.ts","../services/topics/sql.ts","../services/topics/system-topics.ts","../services/user/auth.ts","../services/user/crud.ts","../services/user/index.ts","../services/user/rbac.ts","../services/user/roles.ts","../services/user/scope.ts","../services/user/seed-admin.ts","../services/user/sql.ts","../services/user/sso-provision.ts","../services/user/types.ts","../services/workers/registry.ts","../services/workflow-sets/db.ts","../services/workflow-sets/index.ts","../services/workflow-sets/sql.ts","../services/yaml-workflow/builder-regenerate.ts","../services/yaml-workflow/db-utils.ts","../services/yaml-workflow/db-versions.ts","../services/yaml-workflow/db.ts","../services/yaml-workflow/deployer-helpers.ts","../services/yaml-workflow/deployer.ts","../services/yaml-workflow/generator.ts","../services/yaml-workflow/index.ts","../services/yaml-workflow/input-analyzer-helpers.ts","../services/yaml-workflow/input-analyzer.ts","../services/yaml-workflow/invoke.ts","../services/yaml-workflow/pipe-validator.ts","../services/yaml-workflow/sql.ts","../services/yaml-workflow/types.ts","../services/yaml-workflow/durable-compiler/index.ts","../services/yaml-workflow/durable-compiler/parser.ts","../services/yaml-workflow/durable-compiler/prompts.ts","../services/yaml-workflow/durable-compiler/types.ts","../services/yaml-workflow/pattern-detector/array-source.ts","../services/yaml-workflow/pattern-detector/collapse.ts","../services/yaml-workflow/pattern-detector/index.ts","../services/yaml-workflow/pattern-detector/run-detection.ts","../services/yaml-workflow/pattern-detector/types.ts","../services/yaml-workflow/pipeline/analyze.ts","../services/yaml-workflow/pipeline/extract-helpers.ts","../services/yaml-workflow/pipeline/extract.ts","../services/yaml-workflow/pipeline/index.ts","../services/yaml-workflow/pipeline/prompt-templates.ts","../services/yaml-workflow/pipeline/prompts.ts","../services/yaml-workflow/pipeline/validate.ts","../services/yaml-workflow/pipeline/build/dag-assembly.ts","../services/yaml-workflow/pipeline/build/dag.ts","../services/yaml-workflow/pipeline/build/index.ts","../services/yaml-workflow/pipeline/build/iteration.ts","../services/yaml-workflow/pipeline/build/metadata.ts","../services/yaml-workflow/pipeline/build/transform.ts","../services/yaml-workflow/pipeline/build/utils.ts","../services/yaml-workflow/pipeline/build/wiring.ts","../services/yaml-workflow/pipeline/compile/index.ts","../services/yaml-workflow/pipeline/compile/llm-call.ts","../services/yaml-workflow/pipeline/compile/parse-plan.ts","../services/yaml-workflow/pipeline/compile/summarize.ts","../services/yaml-workflow/workers/callbacks.ts","../services/yaml-workflow/workers/events.ts","../services/yaml-workflow/workers/index.ts","../services/yaml-workflow/workers/register.ts","../services/yaml-workflow/workers/scope.ts","../start/adapters.ts","../start/config.ts","../start/graph-workflows.ts","../start/index.ts","../start/server.ts","../start/socket-auth.ts","../start/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/knowledge.ts","../system/activities/oauth.ts","../system/activities/schema-exchange.ts","../system/activities/sql.ts","../system/activities/triage/cache.ts","../system/activities/triage/context.ts","../system/activities/triage/discovery.ts","../system/activities/triage/index.ts","../system/activities/triage/llm.ts","../system/activities/triage/tools.ts","../system/mcp-servers/claude-code.ts","../system/mcp-servers/docs.ts","../system/mcp-servers/events.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue-schemas.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/knowledge.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/schema-exchange.ts","../system/mcp-servers/translation.ts","../system/mcp-servers/vision-prompts.ts","../system/mcp-servers/vision.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.ts","../system/mcp-servers/admin/agent-subscriptions.ts","../system/mcp-servers/admin/agents.ts","../system/mcp-servers/admin/bot-accounts.ts","../system/mcp-servers/admin/controlplane.ts","../system/mcp-servers/admin/diagnostics.ts","../system/mcp-servers/admin/escalations.ts","../system/mcp-servers/admin/exports.ts","../system/mcp-servers/admin/index.ts","../system/mcp-servers/admin/maintenance.ts","../system/mcp-servers/admin/mcp-servers.ts","../system/mcp-servers/admin/ortho.ts","../system/mcp-servers/admin/overview.ts","../system/mcp-servers/admin/pipelines.ts","../system/mcp-servers/admin/schemas.ts","../system/mcp-servers/admin/settings.ts","../system/mcp-servers/admin/tasks.ts","../system/mcp-servers/admin/topics.ts","../system/mcp-servers/admin/users.ts","../system/mcp-servers/admin/workflow-config.ts","../system/mcp-servers/admin/workflows.ts","../system/mcp-servers/admin/yaml-workflows.ts","../system/mcp-servers/db-query/index.ts","../system/mcp-servers/db-query/schemas.ts","../system/mcp-servers/db-query/tools.ts","../system/seed/index.ts","../system/seed/tool-manifests-admin.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-events.ts","../system/seed/tool-manifests-knowledge.ts","../system/seed/tool-manifests-workflows.ts","../system/workflows/tool-result-guard.ts","../system/workflows/capability-invoke/activities.ts","../system/workflows/capability-invoke/index.ts","../system/workflows/mcp-deterministic/activities.ts","../system/workflows/mcp-deterministic/index.ts","../system/workflows/mcp-query/index.ts","../system/workflows/mcp-query/prompts.ts","../system/workflows/mcp-query/strategy-advisors.ts","../system/workflows/mcp-query/types.ts","../system/workflows/mcp-query/activities/caches.ts","../system/workflows/mcp-query/activities/discovery.ts","../system/workflows/mcp-query/activities/index.ts","../system/workflows/mcp-query/activities/llm.ts","../system/workflows/mcp-query/activities/tool-executor.ts","../system/workflows/mcp-query/activities/tool-loader.ts","../system/workflows/mcp-query-router/activities.ts","../system/workflows/mcp-query-router/index.ts","../system/workflows/mcp-query-router/prompts.ts","../system/workflows/mcp-triage/activities-proxy.ts","../system/workflows/mcp-triage/index.ts","../system/workflows/mcp-triage/prompts.ts","../system/workflows/mcp-triage/response-builders.ts","../system/workflows/mcp-triage/response.ts","../system/workflows/mcp-triage/types.ts","../system/workflows/mcp-triage-deterministic/activities.ts","../system/workflows/mcp-triage-deterministic/index.ts","../system/workflows/mcp-triage-router/activities.ts","../system/workflows/mcp-triage-router/index.ts","../system/workflows/mcp-workflow-builder/index.ts","../system/workflows/mcp-workflow-builder/prompts.ts","../system/workflows/mcp-workflow-builder/activities/caches.ts","../system/workflows/mcp-workflow-builder/activities/index.ts","../system/workflows/mcp-workflow-builder/activities/llm.ts","../system/workflows/mcp-workflow-builder/activities/tool-loader.ts","../system/workflows/mcp-workflow-planner/index.ts","../system/workflows/mcp-workflow-planner/prompts.ts","../system/workflows/mcp-workflow-planner/activities/analyze.ts","../system/workflows/mcp-workflow-planner/activities/index.ts","../system/workflows/mcp-workflow-planner/activities/persist.ts","../system/workflows/mcp-workflow-planner/activities/plan.ts","../system/workflows/shared/discovery.ts","../system/workflows/shared/index.ts","../system/workflows/shared/llm-caller.ts","../system/workflows/shared/prompts.ts","../system/workflows/shared/strategy-advisors.ts","../system/workflows/shared/tool-executor.ts","../system/workflows/shared/tool-loader.ts","../system/workflows/shared/types.ts","../types/agent.ts","../types/auth.ts","../types/config.ts","../types/delegation.ts","../types/discovery.ts","../types/envelope.ts","../types/escalation-strategy.ts","../types/escalation.ts","../types/events.ts","../types/export.ts","../types/express.d.ts","../types/facets.ts","../types/index.ts","../types/logger.ts","../types/maintenance.ts","../types/mcp.ts","../types/oauth.ts","../types/sdk.ts","../types/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.ts","../types/workflow-set.ts","../types/workflow.ts","../types/yaml-workflow.ts","../workers/index.ts"],"version":"5.9.3"}
1
+ {"root":["../index.ts","../vitest.config.ts","../vitest.integration.config.ts","../adapters/express.ts","../api/agent-subscriptions.ts","../api/agents.ts","../api/auth-sso.ts","../api/auth.ts","../api/bot-accounts.ts","../api/capabilities.ts","../api/controlplane.ts","../api/dba.ts","../api/diagnostics.ts","../api/exports.ts","../api/files.ts","../api/index.ts","../api/insight.ts","../api/knowledge.ts","../api/maintenance.ts","../api/namespaces.ts","../api/overview.ts","../api/pipelines.ts","../api/roles.ts","../api/settings.ts","../api/tasks.ts","../api/topics.ts","../api/users.ts","../api/workflow-sets.ts","../api/escalations/bulk.ts","../api/escalations/cancel.ts","../api/escalations/claim.ts","../api/escalations/create.ts","../api/escalations/facets.ts","../api/escalations/helpers.ts","../api/escalations/index.ts","../api/escalations/list.ts","../api/escalations/metadata.ts","../api/escalations/resolve.ts","../api/escalations/single.ts","../api/mcp/index.ts","../api/mcp/servers.ts","../api/mcp/tools.ts","../api/workflows/config.ts","../api/workflows/discovery.ts","../api/workflows/index.ts","../api/workflows/invocation.ts","../api/yaml-workflows/cron.ts","../api/yaml-workflows/crud.ts","../api/yaml-workflows/deploy.ts","../api/yaml-workflows/helpers.ts","../api/yaml-workflows/index.ts","../api/yaml-workflows/versions.ts","../bin/ltc.ts","../lib/cli/auth.ts","../lib/cli/client.ts","../lib/cli/compile.ts","../lib/cli/format.ts","../lib/cli/init.ts","../lib/cli/output.ts","../lib/cli/scanner.ts","../lib/cli/types.ts","../lib/cli/commands/escalations.ts","../lib/cli/commands/knowledge.ts","../lib/cli/commands/mcp.ts","../lib/cli/commands/pipelines.ts","../lib/cli/commands/roles.ts","../lib/cli/commands/status.ts","../lib/cli/commands/streams.ts","../lib/cli/commands/users.ts","../lib/cli/commands/workflows.ts","../lib/db/index.ts","../lib/db/migrate.ts","../lib/events/callback.ts","../lib/events/index.ts","../lib/events/matching.ts","../lib/events/memory.ts","../lib/events/nats-ws-proxy.ts","../lib/events/nats.ts","../lib/events/publish.ts","../lib/events/socketio.ts","../lib/events/system-events.ts","../lib/logger/index.ts","../lib/logger/pino.ts","../lib/storage/index.ts","../lib/storage/local.ts","../lib/storage/mime.ts","../lib/storage/s3.ts","../lib/storage/types.ts","../lib/telemetry/honeycomb.ts","../lib/telemetry/index.ts","../modules/auth.ts","../modules/config.ts","../modules/defaults.ts","../modules/features.ts","../modules/ltconfig.ts","../modules/maintenance.ts","../modules/sso.ts","../modules/utils.ts","../modules/version.ts","../routes/agents.ts","../routes/auth-sso.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/capabilities.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/diagnostics.ts","../routes/docs.ts","../routes/exports.ts","../routes/file-browser.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/knowledge.ts","../routes/maintenance.ts","../routes/mcp-endpoint.ts","../routes/mcp.ts","../routes/namespaces.ts","../routes/nats-credentials.ts","../routes/oauth.ts","../routes/overview.ts","../routes/pipelines.ts","../routes/roles.ts","../routes/settings.ts","../routes/tasks.ts","../routes/topics.ts","../routes/users.ts","../routes/workflow-sets.ts","../routes/escalations/bulk.ts","../routes/escalations/facets.ts","../routes/escalations/index.ts","../routes/escalations/list.ts","../routes/escalations/metadata.ts","../routes/escalations/resolve.ts","../routes/escalations/single.ts","../routes/workflows/config.ts","../routes/workflows/discovery.ts","../routes/workflows/index.ts","../routes/workflows/invocation.ts","../routes/yaml-workflows/cron.ts","../routes/yaml-workflows/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/ortho-populate.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../scripts/twin-farm.ts","../sdk/index.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/workflow-invocation.ts","../services/agent/index.ts","../services/agent/input-mapper.ts","../services/agent/sql.ts","../services/agent/subscription-sql.ts","../services/agent/subscriptions.ts","../services/agent/trigger-registry.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.ts","../services/auth/index.ts","../services/auth/service-token.ts","../services/auth/sql.ts","../services/config/cache.ts","../services/config/index.ts","../services/config/provider.ts","../services/config/read.ts","../services/config/sql.ts","../services/config/write.ts","../services/controlplane/index.ts","../services/controlplane/quorum-bridge.ts","../services/controlplane/sql.ts","../services/controlplane/stream-messages-sql.ts","../services/controlplane/types.ts","../services/cron/index.ts","../services/diagnostics/index.ts","../services/diagnostics/patterns.ts","../services/escalation/bulk.ts","../services/escalation/client.ts","../services/escalation/crud.ts","../services/escalation/facet-sql.ts","../services/escalation/facets.ts","../services/escalation/index.ts","../services/escalation/map.ts","../services/escalation/metrics-cache.ts","../services/escalation/queries.ts","../services/escalation/sql.ts","../services/escalation/types.ts","../services/escalation-strategy/default.ts","../services/escalation-strategy/index.ts","../services/escalation-strategy/mcp.ts","../services/export/client.ts","../services/export/index.ts","../services/export/post-process.ts","../services/export/types.ts","../services/iam/activity.ts","../services/iam/bots.ts","../services/iam/context.ts","../services/iam/credentials.ts","../services/iam/envelope.ts","../services/iam/ephemeral.ts","../services/iam/index.ts","../services/iam/principal.ts","../services/iam/resolve.ts","../services/iam/sql.ts","../services/insight/index.ts","../services/insight/prompts.ts","../services/interceptor/activity-interceptor.ts","../services/interceptor/completion.ts","../services/interceptor/context.ts","../services/interceptor/escalation.ts","../services/interceptor/index.ts","../services/interceptor/lifecycle.ts","../services/interceptor/state.ts","../services/interceptor/types.ts","../services/interceptor/activities/config.ts","../services/interceptor/activities/escalation.ts","../services/interceptor/activities/index.ts","../services/interceptor/activities/task.ts","../services/interceptor/activities/workflow.ts","../services/llm/detect.ts","../services/llm/index.ts","../services/llm/translate.ts","../services/llm/types.ts","../services/llm/providers/anthropic.ts","../services/llm/providers/openai.ts","../services/maintenance/index.ts","../services/mcp/adapter.ts","../services/mcp/db.ts","../services/mcp/exposure.ts","../services/mcp/external-server.ts","../services/mcp/index.ts","../services/mcp/register-tool.ts","../services/mcp/seed-service-account.ts","../services/mcp/server-lifecycle.ts","../services/mcp/server-tools.ts","../services/mcp/server.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.ts","../services/mcp/client/connection-dispatch.ts","../services/mcp/client/connection-lifecycle.ts","../services/mcp/client/connection-test.ts","../services/mcp/client/connection.ts","../services/mcp/client/index.ts","../services/mcp/client/tools.ts","../services/mcp/db-server/index.ts","../services/mcp/db-server/schemas.ts","../services/mcp/db-server/tools.ts","../services/mcp/playwright-server/index.ts","../services/mcp/playwright-server/lifecycle.ts","../services/mcp/playwright-server/schemas.ts","../services/mcp/playwright-server/tools.ts","../services/namespace/index.ts","../services/namespace/sql.ts","../services/namespace/types.ts","../services/oauth/crypto.ts","../services/oauth/db.ts","../services/oauth/index.ts","../services/oauth/sql.ts","../services/oauth/state.ts","../services/oauth/providers/anthropic.ts","../services/oauth/providers/github.ts","../services/oauth/providers/google.ts","../services/oauth/providers/index.ts","../services/oauth/providers/microsoft.ts","../services/oauth/providers/mock.ts","../services/oauth/providers/registry.ts","../services/oauth/providers/types.ts","../services/orchestrator/condition.ts","../services/orchestrator/index.ts","../services/orchestrator/types.ts","../services/overview/index.ts","../services/overview/sql.ts","../services/pipelines/enrichment.ts","../services/pipelines/events.ts","../services/pipelines/execution-builder.ts","../services/pipelines/index.ts","../services/pipelines/queries.ts","../services/pipelines/sql.ts","../services/pipelines/types.ts","../services/role/index.ts","../services/role/sql.ts","../services/role/types.ts","../services/task/crud.ts","../services/task/index.ts","../services/task/process.ts","../services/task/resolve.ts","../services/task/sql.ts","../services/task/types.ts","../services/topics/index.ts","../services/topics/sql.ts","../services/topics/system-topics.ts","../services/user/auth.ts","../services/user/crud.ts","../services/user/index.ts","../services/user/rbac.ts","../services/user/roles.ts","../services/user/scope.ts","../services/user/seed-admin.ts","../services/user/sql.ts","../services/user/sso-provision.ts","../services/user/types.ts","../services/workers/registry.ts","../services/workflow-sets/db.ts","../services/workflow-sets/index.ts","../services/workflow-sets/sql.ts","../services/yaml-workflow/builder-regenerate.ts","../services/yaml-workflow/db-utils.ts","../services/yaml-workflow/db-versions.ts","../services/yaml-workflow/db.ts","../services/yaml-workflow/deployer-helpers.ts","../services/yaml-workflow/deployer.ts","../services/yaml-workflow/generator.ts","../services/yaml-workflow/index.ts","../services/yaml-workflow/input-analyzer-helpers.ts","../services/yaml-workflow/input-analyzer.ts","../services/yaml-workflow/invoke.ts","../services/yaml-workflow/pipe-validator.ts","../services/yaml-workflow/sql.ts","../services/yaml-workflow/types.ts","../services/yaml-workflow/durable-compiler/index.ts","../services/yaml-workflow/durable-compiler/parser.ts","../services/yaml-workflow/durable-compiler/prompts.ts","../services/yaml-workflow/durable-compiler/types.ts","../services/yaml-workflow/pattern-detector/array-source.ts","../services/yaml-workflow/pattern-detector/collapse.ts","../services/yaml-workflow/pattern-detector/index.ts","../services/yaml-workflow/pattern-detector/run-detection.ts","../services/yaml-workflow/pattern-detector/types.ts","../services/yaml-workflow/pipeline/analyze.ts","../services/yaml-workflow/pipeline/extract-helpers.ts","../services/yaml-workflow/pipeline/extract.ts","../services/yaml-workflow/pipeline/index.ts","../services/yaml-workflow/pipeline/prompt-templates.ts","../services/yaml-workflow/pipeline/prompts.ts","../services/yaml-workflow/pipeline/validate.ts","../services/yaml-workflow/pipeline/build/dag-assembly.ts","../services/yaml-workflow/pipeline/build/dag.ts","../services/yaml-workflow/pipeline/build/index.ts","../services/yaml-workflow/pipeline/build/iteration.ts","../services/yaml-workflow/pipeline/build/metadata.ts","../services/yaml-workflow/pipeline/build/transform.ts","../services/yaml-workflow/pipeline/build/utils.ts","../services/yaml-workflow/pipeline/build/wiring.ts","../services/yaml-workflow/pipeline/compile/index.ts","../services/yaml-workflow/pipeline/compile/llm-call.ts","../services/yaml-workflow/pipeline/compile/parse-plan.ts","../services/yaml-workflow/pipeline/compile/summarize.ts","../services/yaml-workflow/workers/callbacks.ts","../services/yaml-workflow/workers/events.ts","../services/yaml-workflow/workers/index.ts","../services/yaml-workflow/workers/register.ts","../services/yaml-workflow/workers/scope.ts","../start/adapters.ts","../start/config.ts","../start/graph-workflows.ts","../start/index.ts","../start/server.ts","../start/socket-auth.ts","../start/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/knowledge.ts","../system/activities/oauth.ts","../system/activities/schema-exchange.ts","../system/activities/sql.ts","../system/activities/triage/cache.ts","../system/activities/triage/context.ts","../system/activities/triage/discovery.ts","../system/activities/triage/index.ts","../system/activities/triage/llm.ts","../system/activities/triage/tools.ts","../system/mcp-servers/claude-code.ts","../system/mcp-servers/docs.ts","../system/mcp-servers/events.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue-schemas.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/knowledge.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/schema-exchange.ts","../system/mcp-servers/translation.ts","../system/mcp-servers/vision-prompts.ts","../system/mcp-servers/vision.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.ts","../system/mcp-servers/admin/agent-subscriptions.ts","../system/mcp-servers/admin/agents.ts","../system/mcp-servers/admin/bot-accounts.ts","../system/mcp-servers/admin/controlplane.ts","../system/mcp-servers/admin/diagnostics.ts","../system/mcp-servers/admin/escalations.ts","../system/mcp-servers/admin/exports.ts","../system/mcp-servers/admin/index.ts","../system/mcp-servers/admin/maintenance.ts","../system/mcp-servers/admin/mcp-servers.ts","../system/mcp-servers/admin/ortho.ts","../system/mcp-servers/admin/overview.ts","../system/mcp-servers/admin/pipelines.ts","../system/mcp-servers/admin/schemas.ts","../system/mcp-servers/admin/settings.ts","../system/mcp-servers/admin/tasks.ts","../system/mcp-servers/admin/topics.ts","../system/mcp-servers/admin/users.ts","../system/mcp-servers/admin/workflow-config.ts","../system/mcp-servers/admin/workflows.ts","../system/mcp-servers/admin/yaml-workflows.ts","../system/mcp-servers/db-query/index.ts","../system/mcp-servers/db-query/schemas.ts","../system/mcp-servers/db-query/tools.ts","../system/seed/index.ts","../system/seed/tool-manifests-admin.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-events.ts","../system/seed/tool-manifests-knowledge.ts","../system/seed/tool-manifests-workflows.ts","../system/workflows/tool-result-guard.ts","../system/workflows/capability-invoke/activities.ts","../system/workflows/capability-invoke/index.ts","../system/workflows/mcp-deterministic/activities.ts","../system/workflows/mcp-deterministic/index.ts","../system/workflows/mcp-query/index.ts","../system/workflows/mcp-query/prompts.ts","../system/workflows/mcp-query/strategy-advisors.ts","../system/workflows/mcp-query/types.ts","../system/workflows/mcp-query/activities/caches.ts","../system/workflows/mcp-query/activities/discovery.ts","../system/workflows/mcp-query/activities/index.ts","../system/workflows/mcp-query/activities/llm.ts","../system/workflows/mcp-query/activities/tool-executor.ts","../system/workflows/mcp-query/activities/tool-loader.ts","../system/workflows/mcp-query-router/activities.ts","../system/workflows/mcp-query-router/index.ts","../system/workflows/mcp-query-router/prompts.ts","../system/workflows/mcp-triage/activities-proxy.ts","../system/workflows/mcp-triage/index.ts","../system/workflows/mcp-triage/prompts.ts","../system/workflows/mcp-triage/response-builders.ts","../system/workflows/mcp-triage/response.ts","../system/workflows/mcp-triage/types.ts","../system/workflows/mcp-triage-deterministic/activities.ts","../system/workflows/mcp-triage-deterministic/index.ts","../system/workflows/mcp-triage-router/activities.ts","../system/workflows/mcp-triage-router/index.ts","../system/workflows/mcp-workflow-builder/index.ts","../system/workflows/mcp-workflow-builder/prompts.ts","../system/workflows/mcp-workflow-builder/activities/caches.ts","../system/workflows/mcp-workflow-builder/activities/index.ts","../system/workflows/mcp-workflow-builder/activities/llm.ts","../system/workflows/mcp-workflow-builder/activities/tool-loader.ts","../system/workflows/mcp-workflow-planner/index.ts","../system/workflows/mcp-workflow-planner/prompts.ts","../system/workflows/mcp-workflow-planner/activities/analyze.ts","../system/workflows/mcp-workflow-planner/activities/index.ts","../system/workflows/mcp-workflow-planner/activities/persist.ts","../system/workflows/mcp-workflow-planner/activities/plan.ts","../system/workflows/shared/discovery.ts","../system/workflows/shared/index.ts","../system/workflows/shared/llm-caller.ts","../system/workflows/shared/prompts.ts","../system/workflows/shared/strategy-advisors.ts","../system/workflows/shared/tool-executor.ts","../system/workflows/shared/tool-loader.ts","../system/workflows/shared/types.ts","../types/agent.ts","../types/auth.ts","../types/config.ts","../types/delegation.ts","../types/discovery.ts","../types/envelope.ts","../types/escalation-strategy.ts","../types/escalation.ts","../types/events.ts","../types/export.ts","../types/express.d.ts","../types/facets.ts","../types/index.ts","../types/logger.ts","../types/maintenance.ts","../types/mcp.ts","../types/oauth.ts","../types/sdk.ts","../types/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.ts","../types/workflow-set.ts","../types/workflow.ts","../types/yaml-workflow.ts","../workers/index.ts"],"version":"5.9.3"}
@@ -0,0 +1,2 @@
1
+ import{j as o}from"./vendor-query-B2UbickB.js";import{c as n}from"./tasks-BHfimh-E.js";import{t as m}from"./index-MbEPoyTe.js";import{f as c}from"./useEventHooks-CeOIM1Ix.js";import{u}from"./mcp-CsHkygRS.js";import{P as d}from"./PageHeaderWithStats-W3akV6nB.js";import"./vendor-react-CXumBFUA.js";import"./vendor-icons-DOIDKgo6.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-Dhr7sUq6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdminDashboard-Ck5-jV9T.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","jsxDEV","PageHeaderWithStats"],"mappings":"uUAMO,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,gBACG,MAAA,CACC,SAAAM,EAAAA,OAACC,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,EAPF,OAAA,GAAA,CAAA,SAAA,oDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAQA,EATF,OAAA,GAAA,CAAA,SAAA,oDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAUA,CAEJ"}
1
+ {"version":3,"file":"AdminDashboard-Dhr7sUq6.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"}