@elizaos/ui 2.0.0-alpha.520 → 2.0.0-alpha.521

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 (1688) hide show
  1. package/apps/app-elizamaker/src/drop-service.d.ts +7 -2
  2. package/apps/app-elizamaker/src/drop-service.d.ts.map +1 -1
  3. package/package.json +1 -1
  4. package/packages/agent/src/api/registry-service.d.ts +1 -1
  5. package/packages/agent/src/api/registry-service.d.ts.map +1 -1
  6. package/packages/agent/src/api/server.d.ts.map +1 -1
  7. package/packages/agent/src/api/server.js +1 -1
  8. package/packages/agent/src/config/zod-schema.agent-runtime.d.ts +3 -3
  9. package/packages/agent/src/config/zod-schema.d.ts +2 -2
  10. package/packages/agent/src/services/coding-agent-context.d.ts +3 -3
  11. package/packages/ui/src/components/composites/chat/chat-sidebar.d.ts +16 -16
  12. package/packages/ui/src/components/composites/page-panel/index.d.ts +6 -6
  13. package/packages/ui/src/components/composites/page-panel/page-panel-root.d.ts +2 -2
  14. package/apps/app-companion/src/character-catalog.d.ts +0 -10
  15. package/apps/app-companion/src/character-catalog.d.ts.map +0 -1
  16. package/apps/app-companion/src/character-catalog.js +0 -32
  17. package/apps/app-companion/src/components/avatar/MathEnvironment.d.ts +0 -38
  18. package/apps/app-companion/src/components/avatar/MathEnvironment.d.ts.map +0 -1
  19. package/apps/app-companion/src/components/avatar/MathEnvironment.js +0 -295
  20. package/apps/app-companion/src/components/avatar/SceneOverlayManager.d.ts +0 -36
  21. package/apps/app-companion/src/components/avatar/SceneOverlayManager.d.ts.map +0 -1
  22. package/apps/app-companion/src/components/avatar/SceneOverlayManager.js +0 -305
  23. package/apps/app-companion/src/components/avatar/VrmAnimationLoader.d.ts +0 -30
  24. package/apps/app-companion/src/components/avatar/VrmAnimationLoader.d.ts.map +0 -1
  25. package/apps/app-companion/src/components/avatar/VrmAnimationLoader.js +0 -99
  26. package/apps/app-companion/src/components/avatar/VrmBlinkController.d.ts +0 -37
  27. package/apps/app-companion/src/components/avatar/VrmBlinkController.d.ts.map +0 -1
  28. package/apps/app-companion/src/components/avatar/VrmBlinkController.js +0 -98
  29. package/apps/app-companion/src/components/avatar/VrmCameraManager.d.ts +0 -57
  30. package/apps/app-companion/src/components/avatar/VrmCameraManager.d.ts.map +0 -1
  31. package/apps/app-companion/src/components/avatar/VrmCameraManager.js +0 -256
  32. package/apps/app-companion/src/components/avatar/VrmEngine.d.ts +0 -283
  33. package/apps/app-companion/src/components/avatar/VrmEngine.d.ts.map +0 -1
  34. package/apps/app-companion/src/components/avatar/VrmEngine.js +0 -2003
  35. package/apps/app-companion/src/components/avatar/VrmFootShadow.d.ts +0 -18
  36. package/apps/app-companion/src/components/avatar/VrmFootShadow.d.ts.map +0 -1
  37. package/apps/app-companion/src/components/avatar/VrmFootShadow.js +0 -83
  38. package/apps/app-companion/src/components/avatar/VrmTeleportEffect.d.ts +0 -49
  39. package/apps/app-companion/src/components/avatar/VrmTeleportEffect.d.ts.map +0 -1
  40. package/apps/app-companion/src/components/avatar/VrmTeleportEffect.js +0 -390
  41. package/apps/app-companion/src/components/avatar/VrmViewer.d.ts +0 -64
  42. package/apps/app-companion/src/components/avatar/VrmViewer.d.ts.map +0 -1
  43. package/apps/app-companion/src/components/avatar/VrmViewer.js +0 -437
  44. package/apps/app-companion/src/components/avatar/mixamoVRMRigMap.d.ts +0 -3
  45. package/apps/app-companion/src/components/avatar/mixamoVRMRigMap.d.ts.map +0 -1
  46. package/apps/app-companion/src/components/avatar/mixamoVRMRigMap.js +0 -56
  47. package/apps/app-companion/src/components/avatar/retargetMixamoFbxToVrm.d.ts +0 -9
  48. package/apps/app-companion/src/components/avatar/retargetMixamoFbxToVrm.d.ts.map +0 -1
  49. package/apps/app-companion/src/components/avatar/retargetMixamoFbxToVrm.js +0 -127
  50. package/apps/app-companion/src/components/avatar/retargetMixamoGltfToVrm.d.ts +0 -11
  51. package/apps/app-companion/src/components/avatar/retargetMixamoGltfToVrm.d.ts.map +0 -1
  52. package/apps/app-companion/src/components/avatar/retargetMixamoGltfToVrm.js +0 -97
  53. package/apps/app-companion/src/components/avatar/scene-overlay-renderer.d.ts +0 -37
  54. package/apps/app-companion/src/components/avatar/scene-overlay-renderer.d.ts.map +0 -1
  55. package/apps/app-companion/src/components/avatar/scene-overlay-renderer.js +0 -337
  56. package/apps/app-companion/src/components/avatar/scene-theme-tokens.d.ts +0 -26
  57. package/apps/app-companion/src/components/avatar/scene-theme-tokens.d.ts.map +0 -1
  58. package/apps/app-companion/src/components/avatar/scene-theme-tokens.js +0 -48
  59. package/apps/app-companion/src/components/avatar/vector-browser-three.d.ts +0 -9
  60. package/apps/app-companion/src/components/avatar/vector-browser-three.d.ts.map +0 -1
  61. package/apps/app-companion/src/components/avatar/vector-browser-three.js +0 -21
  62. package/apps/app-companion/src/components/avatar/vector-browser-utils.d.ts +0 -52
  63. package/apps/app-companion/src/components/avatar/vector-browser-utils.d.ts.map +0 -1
  64. package/apps/app-companion/src/components/avatar/vector-browser-utils.js +0 -245
  65. package/apps/app-companion/src/components/avatar/vrm-desktop-energy.d.ts +0 -40
  66. package/apps/app-companion/src/components/avatar/vrm-desktop-energy.d.ts.map +0 -1
  67. package/apps/app-companion/src/components/avatar/vrm-desktop-energy.js +0 -74
  68. package/apps/app-companion/src/components/chat/ChatAvatar.d.ts +0 -3
  69. package/apps/app-companion/src/components/chat/ChatAvatar.d.ts.map +0 -1
  70. package/apps/app-companion/src/components/chat/ChatAvatar.js +0 -80
  71. package/apps/app-companion/src/components/companion/CompanionAppView.d.ts +0 -9
  72. package/apps/app-companion/src/components/companion/CompanionAppView.d.ts.map +0 -1
  73. package/apps/app-companion/src/components/companion/CompanionAppView.js +0 -121
  74. package/apps/app-companion/src/components/companion/CompanionHeader.d.ts +0 -27
  75. package/apps/app-companion/src/components/companion/CompanionHeader.d.ts.map +0 -1
  76. package/apps/app-companion/src/components/companion/CompanionHeader.js +0 -67
  77. package/apps/app-companion/src/components/companion/CompanionPerformanceSettings.d.ts +0 -2
  78. package/apps/app-companion/src/components/companion/CompanionPerformanceSettings.d.ts.map +0 -1
  79. package/apps/app-companion/src/components/companion/CompanionPerformanceSettings.js +0 -33
  80. package/apps/app-companion/src/components/companion/CompanionSceneHost.d.ts +0 -15
  81. package/apps/app-companion/src/components/companion/CompanionSceneHost.d.ts.map +0 -1
  82. package/apps/app-companion/src/components/companion/CompanionSceneHost.js +0 -476
  83. package/apps/app-companion/src/components/companion/CompanionSettingsPanel.d.ts +0 -2
  84. package/apps/app-companion/src/components/companion/CompanionSettingsPanel.d.ts.map +0 -1
  85. package/apps/app-companion/src/components/companion/CompanionSettingsPanel.js +0 -7
  86. package/apps/app-companion/src/components/companion/CompanionShell.d.ts +0 -8
  87. package/apps/app-companion/src/components/companion/CompanionShell.d.ts.map +0 -1
  88. package/apps/app-companion/src/components/companion/CompanionShell.js +0 -9
  89. package/apps/app-companion/src/components/companion/CompanionView.d.ts +0 -7
  90. package/apps/app-companion/src/components/companion/CompanionView.d.ts.map +0 -1
  91. package/apps/app-companion/src/components/companion/CompanionView.js +0 -126
  92. package/apps/app-companion/src/components/companion/EmotePicker.d.ts +0 -2
  93. package/apps/app-companion/src/components/companion/EmotePicker.d.ts.map +0 -1
  94. package/apps/app-companion/src/components/companion/EmotePicker.js +0 -351
  95. package/apps/app-companion/src/components/companion/GlobalEmoteOverlay.d.ts +0 -2
  96. package/apps/app-companion/src/components/companion/GlobalEmoteOverlay.d.ts.map +0 -1
  97. package/apps/app-companion/src/components/companion/GlobalEmoteOverlay.js +0 -113
  98. package/apps/app-companion/src/components/companion/InferenceCloudAlertButton.d.ts +0 -9
  99. package/apps/app-companion/src/components/companion/InferenceCloudAlertButton.d.ts.map +0 -1
  100. package/apps/app-companion/src/components/companion/InferenceCloudAlertButton.js +0 -16
  101. package/apps/app-companion/src/components/companion/VrmStage.d.ts +0 -27
  102. package/apps/app-companion/src/components/companion/VrmStage.d.ts.map +0 -1
  103. package/apps/app-companion/src/components/companion/VrmStage.js +0 -179
  104. package/apps/app-companion/src/components/companion/companion-app.d.ts +0 -6
  105. package/apps/app-companion/src/components/companion/companion-app.d.ts.map +0 -1
  106. package/apps/app-companion/src/components/companion/companion-app.js +0 -15
  107. package/apps/app-companion/src/components/companion/companion-scene-status-context.d.ts +0 -7
  108. package/apps/app-companion/src/components/companion/companion-scene-status-context.d.ts.map +0 -1
  109. package/apps/app-companion/src/components/companion/companion-scene-status-context.js +0 -8
  110. package/apps/app-companion/src/components/companion/companion-shell-styles.d.ts +0 -38
  111. package/apps/app-companion/src/components/companion/companion-shell-styles.d.ts.map +0 -1
  112. package/apps/app-companion/src/components/companion/companion-shell-styles.js +0 -237
  113. package/apps/app-companion/src/components/companion/resolve-companion-inference-notice.d.ts +0 -19
  114. package/apps/app-companion/src/components/companion/resolve-companion-inference-notice.d.ts.map +0 -1
  115. package/apps/app-companion/src/components/companion/resolve-companion-inference-notice.js +0 -31
  116. package/apps/app-companion/src/components/companion/scene-overlay-bridge.d.ts +0 -6
  117. package/apps/app-companion/src/components/companion/scene-overlay-bridge.d.ts.map +0 -1
  118. package/apps/app-companion/src/components/companion/scene-overlay-bridge.js +0 -83
  119. package/apps/app-companion/src/components/companion/shared-companion-scene-context.d.ts +0 -3
  120. package/apps/app-companion/src/components/companion/shared-companion-scene-context.d.ts.map +0 -1
  121. package/apps/app-companion/src/components/companion/shared-companion-scene-context.js +0 -13
  122. package/apps/app-companion/src/components/companion/walletUtils.d.ts +0 -91
  123. package/apps/app-companion/src/components/companion/walletUtils.d.ts.map +0 -1
  124. package/apps/app-companion/src/components/companion/walletUtils.js +0 -152
  125. package/apps/app-companion/src/index.d.ts +0 -38
  126. package/apps/app-companion/src/index.d.ts.map +0 -1
  127. package/apps/app-companion/src/index.js +0 -37
  128. package/apps/app-companion/src/types/render-modes.d.ts +0 -4
  129. package/apps/app-companion/src/types/render-modes.d.ts.map +0 -1
  130. package/apps/app-companion/src/types/render-modes.js +0 -6
  131. package/apps/app-companion/src/vrm-assets.d.ts +0 -10
  132. package/apps/app-companion/src/vrm-assets.d.ts.map +0 -1
  133. package/apps/app-companion/src/vrm-assets.js +0 -70
  134. package/apps/app-lifeops/src/api/client-lifeops.d.ts +0 -406
  135. package/apps/app-lifeops/src/api/client-lifeops.d.ts.map +0 -1
  136. package/apps/app-lifeops/src/api/client-lifeops.js +0 -1070
  137. package/apps/app-steward/src/ApprovalQueue.d.ts +0 -18
  138. package/apps/app-steward/src/ApprovalQueue.d.ts.map +0 -1
  139. package/apps/app-steward/src/ApprovalQueue.js +0 -141
  140. package/apps/app-steward/src/StewardLogo.d.ts +0 -11
  141. package/apps/app-steward/src/StewardLogo.d.ts.map +0 -1
  142. package/apps/app-steward/src/StewardLogo.js +0 -4
  143. package/apps/app-steward/src/StewardView.d.ts +0 -6
  144. package/apps/app-steward/src/StewardView.d.ts.map +0 -1
  145. package/apps/app-steward/src/StewardView.js +0 -45
  146. package/apps/app-steward/src/TransactionHistory.d.ts +0 -22
  147. package/apps/app-steward/src/TransactionHistory.d.ts.map +0 -1
  148. package/apps/app-steward/src/TransactionHistory.js +0 -100
  149. package/apps/app-steward/src/actions/check-balance.d.ts +0 -17
  150. package/apps/app-steward/src/actions/check-balance.d.ts.map +0 -1
  151. package/apps/app-steward/src/actions/check-balance.js +0 -168
  152. package/apps/app-steward/src/actions/execute-trade.d.ts +0 -17
  153. package/apps/app-steward/src/actions/execute-trade.d.ts.map +0 -1
  154. package/apps/app-steward/src/actions/execute-trade.js +0 -307
  155. package/apps/app-steward/src/actions/get-receive-address.d.ts +0 -13
  156. package/apps/app-steward/src/actions/get-receive-address.d.ts.map +0 -1
  157. package/apps/app-steward/src/actions/get-receive-address.js +0 -127
  158. package/apps/app-steward/src/actions/prepare-swap.d.ts +0 -13
  159. package/apps/app-steward/src/actions/prepare-swap.d.ts.map +0 -1
  160. package/apps/app-steward/src/actions/prepare-swap.js +0 -303
  161. package/apps/app-steward/src/actions/prepare-transfer.d.ts +0 -14
  162. package/apps/app-steward/src/actions/prepare-transfer.d.ts.map +0 -1
  163. package/apps/app-steward/src/actions/prepare-transfer.js +0 -217
  164. package/apps/app-steward/src/actions/transfer-token.d.ts +0 -17
  165. package/apps/app-steward/src/actions/transfer-token.d.ts.map +0 -1
  166. package/apps/app-steward/src/actions/transfer-token.js +0 -479
  167. package/apps/app-steward/src/actions/wallet-action-shared.d.ts +0 -15
  168. package/apps/app-steward/src/actions/wallet-action-shared.d.ts.map +0 -1
  169. package/apps/app-steward/src/actions/wallet-action-shared.js +0 -24
  170. package/apps/app-steward/src/api/bsc-trade.d.ts +0 -36
  171. package/apps/app-steward/src/api/bsc-trade.d.ts.map +0 -1
  172. package/apps/app-steward/src/api/bsc-trade.js +0 -782
  173. package/apps/app-steward/src/api/tx-service.d.ts +0 -53
  174. package/apps/app-steward/src/api/tx-service.d.ts.map +0 -1
  175. package/apps/app-steward/src/api/tx-service.js +0 -217
  176. package/apps/app-steward/src/api/wallet-bsc-routes.d.ts +0 -63
  177. package/apps/app-steward/src/api/wallet-bsc-routes.d.ts.map +0 -1
  178. package/apps/app-steward/src/api/wallet-bsc-routes.js +0 -318
  179. package/apps/app-steward/src/api/wallet-trading-profile.d.ts +0 -31
  180. package/apps/app-steward/src/api/wallet-trading-profile.d.ts.map +0 -1
  181. package/apps/app-steward/src/api/wallet-trading-profile.js +0 -560
  182. package/apps/app-steward/src/browser-workspace-wallet.d.ts +0 -80
  183. package/apps/app-steward/src/browser-workspace-wallet.d.ts.map +0 -1
  184. package/apps/app-steward/src/browser-workspace-wallet.js +0 -135
  185. package/apps/app-steward/src/chain-utils.d.ts +0 -10
  186. package/apps/app-steward/src/chain-utils.d.ts.map +0 -1
  187. package/apps/app-steward/src/chain-utils.js +0 -83
  188. package/apps/app-steward/src/index.d.ts +0 -20
  189. package/apps/app-steward/src/index.d.ts.map +0 -1
  190. package/apps/app-steward/src/index.js +0 -19
  191. package/apps/app-steward/src/plugin.d.ts +0 -21
  192. package/apps/app-steward/src/plugin.d.ts.map +0 -1
  193. package/apps/app-steward/src/plugin.js +0 -325
  194. package/apps/app-steward/src/routes/steward-bridge.d.ts +0 -202
  195. package/apps/app-steward/src/routes/steward-bridge.d.ts.map +0 -1
  196. package/apps/app-steward/src/routes/steward-bridge.js +0 -858
  197. package/apps/app-steward/src/routes/steward-compat-routes.d.ts +0 -21
  198. package/apps/app-steward/src/routes/steward-compat-routes.d.ts.map +0 -1
  199. package/apps/app-steward/src/routes/steward-compat-routes.js +0 -372
  200. package/apps/app-steward/src/routes/wallet-browser-compat-routes.d.ts +0 -4
  201. package/apps/app-steward/src/routes/wallet-browser-compat-routes.d.ts.map +0 -1
  202. package/apps/app-steward/src/routes/wallet-browser-compat-routes.js +0 -387
  203. package/apps/app-steward/src/routes/wallet-bsc-core-routes.d.ts +0 -15
  204. package/apps/app-steward/src/routes/wallet-bsc-core-routes.d.ts.map +0 -1
  205. package/apps/app-steward/src/routes/wallet-bsc-core-routes.js +0 -42
  206. package/apps/app-steward/src/routes/wallet-compat-routes.d.ts +0 -13
  207. package/apps/app-steward/src/routes/wallet-compat-routes.d.ts.map +0 -1
  208. package/apps/app-steward/src/routes/wallet-compat-routes.js +0 -200
  209. package/apps/app-steward/src/routes/wallet-trade-compat-routes.d.ts +0 -11
  210. package/apps/app-steward/src/routes/wallet-trade-compat-routes.d.ts.map +0 -1
  211. package/apps/app-steward/src/routes/wallet-trade-compat-routes.js +0 -528
  212. package/apps/app-steward/src/security/hydrate-wallet-keys-from-platform-store.d.ts +0 -7
  213. package/apps/app-steward/src/security/hydrate-wallet-keys-from-platform-store.d.ts.map +0 -1
  214. package/apps/app-steward/src/security/hydrate-wallet-keys-from-platform-store.js +0 -40
  215. package/apps/app-steward/src/security/wallet-os-store-actions.d.ts +0 -14
  216. package/apps/app-steward/src/security/wallet-os-store-actions.d.ts.map +0 -1
  217. package/apps/app-steward/src/security/wallet-os-store-actions.js +0 -70
  218. package/apps/app-steward/src/services/steward-credentials.d.ts +0 -37
  219. package/apps/app-steward/src/services/steward-credentials.d.ts.map +0 -1
  220. package/apps/app-steward/src/services/steward-credentials.js +0 -91
  221. package/apps/app-steward/src/services/steward-sidecar/health-check.d.ts +0 -9
  222. package/apps/app-steward/src/services/steward-sidecar/health-check.d.ts.map +0 -1
  223. package/apps/app-steward/src/services/steward-sidecar/health-check.js +0 -34
  224. package/apps/app-steward/src/services/steward-sidecar/helpers.d.ts +0 -21
  225. package/apps/app-steward/src/services/steward-sidecar/helpers.d.ts.map +0 -1
  226. package/apps/app-steward/src/services/steward-sidecar/helpers.js +0 -71
  227. package/apps/app-steward/src/services/steward-sidecar/process-management.d.ts +0 -9
  228. package/apps/app-steward/src/services/steward-sidecar/process-management.d.ts.map +0 -1
  229. package/apps/app-steward/src/services/steward-sidecar/process-management.js +0 -53
  230. package/apps/app-steward/src/services/steward-sidecar/types.d.ts +0 -60
  231. package/apps/app-steward/src/services/steward-sidecar/types.d.ts.map +0 -1
  232. package/apps/app-steward/src/services/steward-sidecar/types.js +0 -17
  233. package/apps/app-steward/src/services/steward-sidecar/wallet-setup.d.ts +0 -9
  234. package/apps/app-steward/src/services/steward-sidecar/wallet-setup.d.ts.map +0 -1
  235. package/apps/app-steward/src/services/steward-sidecar/wallet-setup.js +0 -114
  236. package/apps/app-steward/src/services/steward-sidecar.d.ts +0 -69
  237. package/apps/app-steward/src/services/steward-sidecar.d.ts.map +0 -1
  238. package/apps/app-steward/src/services/steward-sidecar.js +0 -383
  239. package/apps/app-steward/src/services/steward-wallet.d.ts +0 -25
  240. package/apps/app-steward/src/services/steward-wallet.d.ts.map +0 -1
  241. package/apps/app-steward/src/services/steward-wallet.js +0 -332
  242. package/apps/app-steward/src/types/bsc-trade.d.ts +0 -181
  243. package/apps/app-steward/src/types/bsc-trade.d.ts.map +0 -1
  244. package/apps/app-steward/src/types/bsc-trade.js +0 -8
  245. package/apps/app-steward/src/types/index.d.ts +0 -3
  246. package/apps/app-steward/src/types/index.d.ts.map +0 -1
  247. package/apps/app-steward/src/types/index.js +0 -2
  248. package/apps/app-steward/src/types/steward.d.ts +0 -85
  249. package/apps/app-steward/src/types/steward.d.ts.map +0 -1
  250. package/apps/app-steward/src/types/steward.js +0 -9
  251. package/apps/app-task-coordinator/src/AgentTabsSection.d.ts +0 -16
  252. package/apps/app-task-coordinator/src/AgentTabsSection.d.ts.map +0 -1
  253. package/apps/app-task-coordinator/src/AgentTabsSection.js +0 -57
  254. package/apps/app-task-coordinator/src/CodingAgentControlChip.d.ts +0 -6
  255. package/apps/app-task-coordinator/src/CodingAgentControlChip.d.ts.map +0 -1
  256. package/apps/app-task-coordinator/src/CodingAgentControlChip.js +0 -26
  257. package/apps/app-task-coordinator/src/CodingAgentSettingsSection.d.ts +0 -2
  258. package/apps/app-task-coordinator/src/CodingAgentSettingsSection.d.ts.map +0 -1
  259. package/apps/app-task-coordinator/src/CodingAgentSettingsSection.js +0 -344
  260. package/apps/app-task-coordinator/src/CodingAgentTasksPanel.d.ts +0 -4
  261. package/apps/app-task-coordinator/src/CodingAgentTasksPanel.d.ts.map +0 -1
  262. package/apps/app-task-coordinator/src/CodingAgentTasksPanel.js +0 -417
  263. package/apps/app-task-coordinator/src/GitHubConnectionCard.d.ts +0 -2
  264. package/apps/app-task-coordinator/src/GitHubConnectionCard.d.ts.map +0 -1
  265. package/apps/app-task-coordinator/src/GitHubConnectionCard.js +0 -60
  266. package/apps/app-task-coordinator/src/GlobalPrefsSection.d.ts +0 -10
  267. package/apps/app-task-coordinator/src/GlobalPrefsSection.d.ts.map +0 -1
  268. package/apps/app-task-coordinator/src/GlobalPrefsSection.js +0 -40
  269. package/apps/app-task-coordinator/src/LlmProviderSection.d.ts +0 -10
  270. package/apps/app-task-coordinator/src/LlmProviderSection.d.ts.map +0 -1
  271. package/apps/app-task-coordinator/src/LlmProviderSection.js +0 -47
  272. package/apps/app-task-coordinator/src/ModelConfigSection.d.ts +0 -16
  273. package/apps/app-task-coordinator/src/ModelConfigSection.d.ts.map +0 -1
  274. package/apps/app-task-coordinator/src/ModelConfigSection.js +0 -12
  275. package/apps/app-task-coordinator/src/PtyConsoleBase.d.ts +0 -15
  276. package/apps/app-task-coordinator/src/PtyConsoleBase.d.ts.map +0 -1
  277. package/apps/app-task-coordinator/src/PtyConsoleBase.js +0 -37
  278. package/apps/app-task-coordinator/src/PtyConsoleDrawer.d.ts +0 -16
  279. package/apps/app-task-coordinator/src/PtyConsoleDrawer.d.ts.map +0 -1
  280. package/apps/app-task-coordinator/src/PtyConsoleDrawer.js +0 -28
  281. package/apps/app-task-coordinator/src/PtyConsoleSidePanel.d.ts +0 -9
  282. package/apps/app-task-coordinator/src/PtyConsoleSidePanel.d.ts.map +0 -1
  283. package/apps/app-task-coordinator/src/PtyConsoleSidePanel.js +0 -10
  284. package/apps/app-task-coordinator/src/PtyTerminalPane.d.ts +0 -10
  285. package/apps/app-task-coordinator/src/PtyTerminalPane.d.ts.map +0 -1
  286. package/apps/app-task-coordinator/src/PtyTerminalPane.js +0 -178
  287. package/apps/app-task-coordinator/src/coding-agent-settings-shared.d.ts +0 -38
  288. package/apps/app-task-coordinator/src/coding-agent-settings-shared.d.ts.map +0 -1
  289. package/apps/app-task-coordinator/src/coding-agent-settings-shared.js +0 -92
  290. package/apps/app-task-coordinator/src/index.d.ts +0 -17
  291. package/apps/app-task-coordinator/src/index.d.ts.map +0 -1
  292. package/apps/app-task-coordinator/src/index.js +0 -16
  293. package/apps/app-task-coordinator/src/pty-status-dots.d.ts +0 -2
  294. package/apps/app-task-coordinator/src/pty-status-dots.d.ts.map +0 -1
  295. package/apps/app-task-coordinator/src/pty-status-dots.js +0 -1
  296. package/apps/app-task-coordinator/src/session-hydration.d.ts +0 -2
  297. package/apps/app-task-coordinator/src/session-hydration.d.ts.map +0 -1
  298. package/apps/app-task-coordinator/src/session-hydration.js +0 -1
  299. package/apps/app-vincent/src/client.d.ts +0 -17
  300. package/apps/app-vincent/src/client.d.ts.map +0 -1
  301. package/apps/app-vincent/src/client.js +0 -38
  302. package/apps/app-vincent/src/vincent-contracts.d.ts +0 -52
  303. package/apps/app-vincent/src/vincent-contracts.d.ts.map +0 -1
  304. package/apps/app-vincent/src/vincent-contracts.js +0 -4
  305. package/packages/app-core/src/App.d.ts +0 -6
  306. package/packages/app-core/src/App.d.ts.map +0 -1
  307. package/packages/app-core/src/App.js +0 -516
  308. package/packages/app-core/src/api/auth/audit.d.ts +0 -52
  309. package/packages/app-core/src/api/auth/audit.d.ts.map +0 -1
  310. package/packages/app-core/src/api/auth/audit.js +0 -126
  311. package/packages/app-core/src/api/auth/legacy-bearer.d.ts +0 -75
  312. package/packages/app-core/src/api/auth/legacy-bearer.d.ts.map +0 -1
  313. package/packages/app-core/src/api/auth/legacy-bearer.js +0 -126
  314. package/packages/app-core/src/api/auth/sessions.d.ts +0 -152
  315. package/packages/app-core/src/api/auth/sessions.d.ts.map +0 -1
  316. package/packages/app-core/src/api/auth/sessions.js +0 -298
  317. package/packages/app-core/src/api/auth/tokens.d.ts +0 -3
  318. package/packages/app-core/src/api/auth/tokens.d.ts.map +0 -1
  319. package/packages/app-core/src/api/auth/tokens.js +0 -13
  320. package/packages/app-core/src/api/auth-client.d.ts +0 -130
  321. package/packages/app-core/src/api/auth-client.d.ts.map +0 -1
  322. package/packages/app-core/src/api/auth-client.js +0 -301
  323. package/packages/app-core/src/api/auth.d.ts +0 -155
  324. package/packages/app-core/src/api/auth.d.ts.map +0 -1
  325. package/packages/app-core/src/api/auth.js +0 -326
  326. package/packages/app-core/src/api/client-agent.d.ts +0 -627
  327. package/packages/app-core/src/api/client-agent.d.ts.map +0 -1
  328. package/packages/app-core/src/api/client-agent.js +0 -1442
  329. package/packages/app-core/src/api/client-automations.d.ts +0 -8
  330. package/packages/app-core/src/api/client-automations.d.ts.map +0 -1
  331. package/packages/app-core/src/api/client-automations.js +0 -7
  332. package/packages/app-core/src/api/client-base.d.ts +0 -82
  333. package/packages/app-core/src/api/client-base.d.ts.map +0 -1
  334. package/packages/app-core/src/api/client-base.js +0 -729
  335. package/packages/app-core/src/api/client-browser-workspace.d.ts +0 -25
  336. package/packages/app-core/src/api/client-browser-workspace.d.ts.map +0 -1
  337. package/packages/app-core/src/api/client-browser-workspace.js +0 -98
  338. package/packages/app-core/src/api/client-chat.d.ts +0 -355
  339. package/packages/app-core/src/api/client-chat.d.ts.map +0 -1
  340. package/packages/app-core/src/api/client-chat.js +0 -582
  341. package/packages/app-core/src/api/client-cloud.d.ts +0 -286
  342. package/packages/app-core/src/api/client-cloud.d.ts.map +0 -1
  343. package/packages/app-core/src/api/client-cloud.js +0 -410
  344. package/packages/app-core/src/api/client-computeruse.d.ts +0 -32
  345. package/packages/app-core/src/api/client-computeruse.d.ts.map +0 -1
  346. package/packages/app-core/src/api/client-computeruse.js +0 -16
  347. package/packages/app-core/src/api/client-imessage.d.ts +0 -68
  348. package/packages/app-core/src/api/client-imessage.d.ts.map +0 -1
  349. package/packages/app-core/src/api/client-imessage.js +0 -74
  350. package/packages/app-core/src/api/client-local-inference.d.ts +0 -62
  351. package/packages/app-core/src/api/client-local-inference.d.ts.map +0 -1
  352. package/packages/app-core/src/api/client-local-inference.js +0 -87
  353. package/packages/app-core/src/api/client-n8n.d.ts +0 -27
  354. package/packages/app-core/src/api/client-n8n.d.ts.map +0 -1
  355. package/packages/app-core/src/api/client-n8n.js +0 -61
  356. package/packages/app-core/src/api/client-skills.d.ts +0 -475
  357. package/packages/app-core/src/api/client-skills.d.ts.map +0 -1
  358. package/packages/app-core/src/api/client-skills.js +0 -608
  359. package/packages/app-core/src/api/client-types-babylon.d.ts +0 -254
  360. package/packages/app-core/src/api/client-types-babylon.d.ts.map +0 -1
  361. package/packages/app-core/src/api/client-types-babylon.js +0 -2
  362. package/packages/app-core/src/api/client-types-character.d.ts +0 -39
  363. package/packages/app-core/src/api/client-types-character.d.ts.map +0 -1
  364. package/packages/app-core/src/api/client-types-character.js +0 -1
  365. package/packages/app-core/src/api/client-types-chat.d.ts +0 -428
  366. package/packages/app-core/src/api/client-types-chat.d.ts.map +0 -1
  367. package/packages/app-core/src/api/client-types-chat.js +0 -9
  368. package/packages/app-core/src/api/client-types-config.d.ts +0 -586
  369. package/packages/app-core/src/api/client-types-config.d.ts.map +0 -1
  370. package/packages/app-core/src/api/client-types-config.js +0 -5
  371. package/packages/app-core/src/api/client-types-experience.d.ts +0 -97
  372. package/packages/app-core/src/api/client-types-experience.d.ts.map +0 -1
  373. package/packages/app-core/src/api/client-types-experience.js +0 -1
  374. package/packages/app-core/src/api/client-types-relationships.d.ts +0 -181
  375. package/packages/app-core/src/api/client-types-relationships.d.ts.map +0 -1
  376. package/packages/app-core/src/api/client-types-relationships.js +0 -1
  377. package/packages/app-core/src/api/client-types.d.ts +0 -9
  378. package/packages/app-core/src/api/client-types.d.ts.map +0 -1
  379. package/packages/app-core/src/api/client-types.js +0 -12
  380. package/packages/app-core/src/api/client-wallet.d.ts +0 -129
  381. package/packages/app-core/src/api/client-wallet.d.ts.map +0 -1
  382. package/packages/app-core/src/api/client-wallet.js +0 -228
  383. package/packages/app-core/src/api/client.d.ts +0 -38
  384. package/packages/app-core/src/api/client.d.ts.map +0 -1
  385. package/packages/app-core/src/api/client.js +0 -38
  386. package/packages/app-core/src/api/csrf-client.d.ts +0 -29
  387. package/packages/app-core/src/api/csrf-client.d.ts.map +0 -1
  388. package/packages/app-core/src/api/csrf-client.js +0 -54
  389. package/packages/app-core/src/api/index.d.ts +0 -2
  390. package/packages/app-core/src/api/index.d.ts.map +0 -1
  391. package/packages/app-core/src/api/index.js +0 -1
  392. package/packages/app-core/src/app-shell/task-coordinator-slots.d.ts +0 -38
  393. package/packages/app-core/src/app-shell/task-coordinator-slots.d.ts.map +0 -1
  394. package/packages/app-core/src/app-shell/task-coordinator-slots.js +0 -21
  395. package/packages/app-core/src/autonomy/index.d.ts +0 -48
  396. package/packages/app-core/src/autonomy/index.d.ts.map +0 -1
  397. package/packages/app-core/src/autonomy/index.js +0 -336
  398. package/packages/app-core/src/bridge/capacitor-bridge.d.ts +0 -153
  399. package/packages/app-core/src/bridge/capacitor-bridge.d.ts.map +0 -1
  400. package/packages/app-core/src/bridge/capacitor-bridge.js +0 -195
  401. package/packages/app-core/src/bridge/electrobun-rpc.d.ts +0 -57
  402. package/packages/app-core/src/bridge/electrobun-rpc.d.ts.map +0 -1
  403. package/packages/app-core/src/bridge/electrobun-rpc.js +0 -87
  404. package/packages/app-core/src/bridge/electrobun-runtime.d.ts +0 -3
  405. package/packages/app-core/src/bridge/electrobun-runtime.d.ts.map +0 -1
  406. package/packages/app-core/src/bridge/electrobun-runtime.js +0 -34
  407. package/packages/app-core/src/bridge/gateway-discovery.d.ts +0 -17
  408. package/packages/app-core/src/bridge/gateway-discovery.d.ts.map +0 -1
  409. package/packages/app-core/src/bridge/gateway-discovery.js +0 -49
  410. package/packages/app-core/src/bridge/index.d.ts +0 -7
  411. package/packages/app-core/src/bridge/index.d.ts.map +0 -1
  412. package/packages/app-core/src/bridge/index.js +0 -6
  413. package/packages/app-core/src/bridge/native-plugins.d.ts +0 -504
  414. package/packages/app-core/src/bridge/native-plugins.d.ts.map +0 -1
  415. package/packages/app-core/src/bridge/native-plugins.js +0 -67
  416. package/packages/app-core/src/bridge/plugin-bridge.d.ts +0 -133
  417. package/packages/app-core/src/bridge/plugin-bridge.d.ts.map +0 -1
  418. package/packages/app-core/src/bridge/plugin-bridge.js +0 -241
  419. package/packages/app-core/src/bridge/storage-bridge.d.ts +0 -39
  420. package/packages/app-core/src/bridge/storage-bridge.d.ts.map +0 -1
  421. package/packages/app-core/src/bridge/storage-bridge.js +0 -142
  422. package/packages/app-core/src/character/character-draft-helpers.d.ts +0 -35
  423. package/packages/app-core/src/character/character-draft-helpers.d.ts.map +0 -1
  424. package/packages/app-core/src/character/character-draft-helpers.js +0 -270
  425. package/packages/app-core/src/chat/coding-agent-session-state.d.ts +0 -16
  426. package/packages/app-core/src/chat/coding-agent-session-state.d.ts.map +0 -1
  427. package/packages/app-core/src/chat/coding-agent-session-state.js +0 -27
  428. package/packages/app-core/src/chat/index.d.ts +0 -65
  429. package/packages/app-core/src/chat/index.d.ts.map +0 -1
  430. package/packages/app-core/src/chat/index.js +0 -225
  431. package/packages/app-core/src/components/accounts/AccountCard.d.ts +0 -30
  432. package/packages/app-core/src/components/accounts/AccountCard.d.ts.map +0 -1
  433. package/packages/app-core/src/components/accounts/AccountCard.js +0 -185
  434. package/packages/app-core/src/components/accounts/AccountList.d.ts +0 -15
  435. package/packages/app-core/src/components/accounts/AccountList.d.ts.map +0 -1
  436. package/packages/app-core/src/components/accounts/AccountList.js +0 -89
  437. package/packages/app-core/src/components/accounts/AddAccountDialog.d.ts +0 -33
  438. package/packages/app-core/src/components/accounts/AddAccountDialog.d.ts.map +0 -1
  439. package/packages/app-core/src/components/accounts/AddAccountDialog.js +0 -318
  440. package/packages/app-core/src/components/accounts/RotationStrategyPicker.d.ts +0 -16
  441. package/packages/app-core/src/components/accounts/RotationStrategyPicker.d.ts.map +0 -1
  442. package/packages/app-core/src/components/accounts/RotationStrategyPicker.js +0 -45
  443. package/packages/app-core/src/components/apps/AppsCatalogGrid.d.ts +0 -14
  444. package/packages/app-core/src/components/apps/AppsCatalogGrid.d.ts.map +0 -1
  445. package/packages/app-core/src/components/apps/AppsCatalogGrid.js +0 -208
  446. package/packages/app-core/src/components/apps/AppsSidebar.d.ts +0 -22
  447. package/packages/app-core/src/components/apps/AppsSidebar.d.ts.map +0 -1
  448. package/packages/app-core/src/components/apps/AppsSidebar.js +0 -98
  449. package/packages/app-core/src/components/apps/GameView.d.ts +0 -18
  450. package/packages/app-core/src/components/apps/GameView.d.ts.map +0 -1
  451. package/packages/app-core/src/components/apps/GameView.js +0 -1133
  452. package/packages/app-core/src/components/apps/GameViewOverlay.d.ts +0 -2
  453. package/packages/app-core/src/components/apps/GameViewOverlay.d.ts.map +0 -1
  454. package/packages/app-core/src/components/apps/GameViewOverlay.js +0 -120
  455. package/packages/app-core/src/components/apps/RunningAppsRow.d.ts +0 -12
  456. package/packages/app-core/src/components/apps/RunningAppsRow.d.ts.map +0 -1
  457. package/packages/app-core/src/components/apps/RunningAppsRow.js +0 -35
  458. package/packages/app-core/src/components/apps/app-identity.d.ts +0 -32
  459. package/packages/app-core/src/components/apps/app-identity.d.ts.map +0 -1
  460. package/packages/app-core/src/components/apps/app-identity.js +0 -182
  461. package/packages/app-core/src/components/apps/catalog-loader.d.ts +0 -7
  462. package/packages/app-core/src/components/apps/catalog-loader.d.ts.map +0 -1
  463. package/packages/app-core/src/components/apps/catalog-loader.js +0 -30
  464. package/packages/app-core/src/components/apps/extensions/registry.d.ts +0 -12
  465. package/packages/app-core/src/components/apps/extensions/registry.d.ts.map +0 -1
  466. package/packages/app-core/src/components/apps/extensions/registry.js +0 -23
  467. package/packages/app-core/src/components/apps/extensions/surface.d.ts +0 -34
  468. package/packages/app-core/src/components/apps/extensions/surface.d.ts.map +0 -1
  469. package/packages/app-core/src/components/apps/extensions/surface.js +0 -96
  470. package/packages/app-core/src/components/apps/extensions/types.d.ts +0 -7
  471. package/packages/app-core/src/components/apps/extensions/types.d.ts.map +0 -1
  472. package/packages/app-core/src/components/apps/extensions/types.js +0 -1
  473. package/packages/app-core/src/components/apps/helpers.d.ts +0 -53
  474. package/packages/app-core/src/components/apps/helpers.d.ts.map +0 -1
  475. package/packages/app-core/src/components/apps/helpers.js +0 -364
  476. package/packages/app-core/src/components/apps/internal-tool-apps.d.ts +0 -18
  477. package/packages/app-core/src/components/apps/internal-tool-apps.d.ts.map +0 -1
  478. package/packages/app-core/src/components/apps/internal-tool-apps.js +0 -173
  479. package/packages/app-core/src/components/apps/launch-history.d.ts +0 -16
  480. package/packages/app-core/src/components/apps/launch-history.d.ts.map +0 -1
  481. package/packages/app-core/src/components/apps/launch-history.js +0 -77
  482. package/packages/app-core/src/components/apps/overlay-app-api.d.ts +0 -55
  483. package/packages/app-core/src/components/apps/overlay-app-api.d.ts.map +0 -1
  484. package/packages/app-core/src/components/apps/overlay-app-api.js +0 -8
  485. package/packages/app-core/src/components/apps/overlay-app-registry.d.ts +0 -19
  486. package/packages/app-core/src/components/apps/overlay-app-registry.d.ts.map +0 -1
  487. package/packages/app-core/src/components/apps/overlay-app-registry.js +0 -58
  488. package/packages/app-core/src/components/apps/per-app-config.d.ts +0 -19
  489. package/packages/app-core/src/components/apps/per-app-config.d.ts.map +0 -1
  490. package/packages/app-core/src/components/apps/per-app-config.js +0 -99
  491. package/packages/app-core/src/components/apps/run-attention.d.ts +0 -3
  492. package/packages/app-core/src/components/apps/run-attention.d.ts.map +0 -1
  493. package/packages/app-core/src/components/apps/run-attention.js +0 -77
  494. package/packages/app-core/src/components/apps/surfaces/GameOperatorShell.d.ts +0 -47
  495. package/packages/app-core/src/components/apps/surfaces/GameOperatorShell.d.ts.map +0 -1
  496. package/packages/app-core/src/components/apps/surfaces/GameOperatorShell.js +0 -42
  497. package/packages/app-core/src/components/apps/surfaces/registry.d.ts +0 -11
  498. package/packages/app-core/src/components/apps/surfaces/registry.d.ts.map +0 -1
  499. package/packages/app-core/src/components/apps/surfaces/registry.js +0 -23
  500. package/packages/app-core/src/components/apps/surfaces/types.d.ts +0 -10
  501. package/packages/app-core/src/components/apps/surfaces/types.d.ts.map +0 -1
  502. package/packages/app-core/src/components/apps/surfaces/types.js +0 -1
  503. package/packages/app-core/src/components/apps/useRegistryCatalog.d.ts +0 -14
  504. package/packages/app-core/src/components/apps/useRegistryCatalog.d.ts.map +0 -1
  505. package/packages/app-core/src/components/apps/useRegistryCatalog.js +0 -52
  506. package/packages/app-core/src/components/apps/viewer-auth.d.ts +0 -7
  507. package/packages/app-core/src/components/apps/viewer-auth.d.ts.map +0 -1
  508. package/packages/app-core/src/components/apps/viewer-auth.js +0 -55
  509. package/packages/app-core/src/components/auth/LoginView.d.ts +0 -17
  510. package/packages/app-core/src/components/auth/LoginView.d.ts.map +0 -1
  511. package/packages/app-core/src/components/auth/LoginView.js +0 -62
  512. package/packages/app-core/src/components/character/CharacterEditor.d.ts +0 -12
  513. package/packages/app-core/src/components/character/CharacterEditor.d.ts.map +0 -1
  514. package/packages/app-core/src/components/character/CharacterEditor.js +0 -885
  515. package/packages/app-core/src/components/character/CharacterEditorPanels.d.ts +0 -35
  516. package/packages/app-core/src/components/character/CharacterEditorPanels.d.ts.map +0 -1
  517. package/packages/app-core/src/components/character/CharacterEditorPanels.js +0 -250
  518. package/packages/app-core/src/components/character/CharacterExperienceWorkspace.d.ts +0 -11
  519. package/packages/app-core/src/components/character/CharacterExperienceWorkspace.d.ts.map +0 -1
  520. package/packages/app-core/src/components/character/CharacterExperienceWorkspace.js +0 -453
  521. package/packages/app-core/src/components/character/CharacterHubView.d.ts +0 -22
  522. package/packages/app-core/src/components/character/CharacterHubView.d.ts.map +0 -1
  523. package/packages/app-core/src/components/character/CharacterHubView.js +0 -688
  524. package/packages/app-core/src/components/character/CharacterLearnedSkillsSection.d.ts +0 -2
  525. package/packages/app-core/src/components/character/CharacterLearnedSkillsSection.d.ts.map +0 -1
  526. package/packages/app-core/src/components/character/CharacterLearnedSkillsSection.js +0 -76
  527. package/packages/app-core/src/components/character/CharacterOverviewSection.d.ts +0 -27
  528. package/packages/app-core/src/components/character/CharacterOverviewSection.d.ts.map +0 -1
  529. package/packages/app-core/src/components/character/CharacterOverviewSection.js +0 -36
  530. package/packages/app-core/src/components/character/CharacterRelationshipsSection.d.ts +0 -7
  531. package/packages/app-core/src/components/character/CharacterRelationshipsSection.d.ts.map +0 -1
  532. package/packages/app-core/src/components/character/CharacterRelationshipsSection.js +0 -4
  533. package/packages/app-core/src/components/character/CharacterRoster.d.ts +0 -32
  534. package/packages/app-core/src/components/character/CharacterRoster.d.ts.map +0 -1
  535. package/packages/app-core/src/components/character/CharacterRoster.js +0 -111
  536. package/packages/app-core/src/components/character/MusicLibraryCharacterWidget.d.ts +0 -3
  537. package/packages/app-core/src/components/character/MusicLibraryCharacterWidget.d.ts.map +0 -1
  538. package/packages/app-core/src/components/character/MusicLibraryCharacterWidget.js +0 -27
  539. package/packages/app-core/src/components/character/character-editor-helpers.d.ts +0 -42
  540. package/packages/app-core/src/components/character/character-editor-helpers.d.ts.map +0 -1
  541. package/packages/app-core/src/components/character/character-editor-helpers.js +0 -58
  542. package/packages/app-core/src/components/character/character-greeting.d.ts +0 -5
  543. package/packages/app-core/src/components/character/character-greeting.d.ts.map +0 -1
  544. package/packages/app-core/src/components/character/character-greeting.js +0 -22
  545. package/packages/app-core/src/components/character/character-hub-helpers.d.ts +0 -14
  546. package/packages/app-core/src/components/character/character-hub-helpers.d.ts.map +0 -1
  547. package/packages/app-core/src/components/character/character-hub-helpers.js +0 -140
  548. package/packages/app-core/src/components/character/character-hub-types.d.ts +0 -60
  549. package/packages/app-core/src/components/character/character-hub-types.d.ts.map +0 -1
  550. package/packages/app-core/src/components/character/character-hub-types.js +0 -1
  551. package/packages/app-core/src/components/character/character-voice-config.d.ts +0 -33
  552. package/packages/app-core/src/components/character/character-voice-config.d.ts.map +0 -1
  553. package/packages/app-core/src/components/character/character-voice-config.js +0 -95
  554. package/packages/app-core/src/components/chat/AgentActivityBox.d.ts +0 -8
  555. package/packages/app-core/src/components/chat/AgentActivityBox.d.ts.map +0 -1
  556. package/packages/app-core/src/components/chat/AgentActivityBox.js +0 -33
  557. package/packages/app-core/src/components/chat/AppsSection.d.ts +0 -13
  558. package/packages/app-core/src/components/chat/AppsSection.d.ts.map +0 -1
  559. package/packages/app-core/src/components/chat/AppsSection.js +0 -198
  560. package/packages/app-core/src/components/chat/MessageContent.d.ts +0 -41
  561. package/packages/app-core/src/components/chat/MessageContent.d.ts.map +0 -1
  562. package/packages/app-core/src/components/chat/MessageContent.js +0 -691
  563. package/packages/app-core/src/components/chat/SaveCommandModal.d.ts +0 -9
  564. package/packages/app-core/src/components/chat/SaveCommandModal.d.ts.map +0 -1
  565. package/packages/app-core/src/components/chat/SaveCommandModal.js +0 -59
  566. package/packages/app-core/src/components/chat/TasksEventsPanel.d.ts +0 -30
  567. package/packages/app-core/src/components/chat/TasksEventsPanel.d.ts.map +0 -1
  568. package/packages/app-core/src/components/chat/TasksEventsPanel.js +0 -139
  569. package/packages/app-core/src/components/chat/WidgetVisibilityPanel.d.ts +0 -25
  570. package/packages/app-core/src/components/chat/WidgetVisibilityPanel.d.ts.map +0 -1
  571. package/packages/app-core/src/components/chat/WidgetVisibilityPanel.js +0 -30
  572. package/packages/app-core/src/components/chat/chat-source-registration.d.ts +0 -1
  573. package/packages/app-core/src/components/chat/chat-source-registration.d.ts.map +0 -1
  574. package/packages/app-core/src/components/chat/chat-source-registration.js +0 -1
  575. package/packages/app-core/src/components/chat/message-choice-parser.d.ts +0 -20
  576. package/packages/app-core/src/components/chat/message-choice-parser.d.ts.map +0 -1
  577. package/packages/app-core/src/components/chat/message-choice-parser.js +0 -53
  578. package/packages/app-core/src/components/chat/widgets/ChoiceWidget.d.ts +0 -24
  579. package/packages/app-core/src/components/chat/widgets/ChoiceWidget.d.ts.map +0 -1
  580. package/packages/app-core/src/components/chat/widgets/ChoiceWidget.js +0 -38
  581. package/packages/app-core/src/components/chat/widgets/agent-orchestrator.d.ts +0 -20
  582. package/packages/app-core/src/components/chat/widgets/agent-orchestrator.d.ts.map +0 -1
  583. package/packages/app-core/src/components/chat/widgets/agent-orchestrator.js +0 -273
  584. package/packages/app-core/src/components/chat/widgets/browser-status.d.ts +0 -14
  585. package/packages/app-core/src/components/chat/widgets/browser-status.d.ts.map +0 -1
  586. package/packages/app-core/src/components/chat/widgets/browser-status.js +0 -109
  587. package/packages/app-core/src/components/chat/widgets/music-player.d.ts +0 -4
  588. package/packages/app-core/src/components/chat/widgets/music-player.d.ts.map +0 -1
  589. package/packages/app-core/src/components/chat/widgets/music-player.js +0 -132
  590. package/packages/app-core/src/components/chat/widgets/registry.d.ts +0 -8
  591. package/packages/app-core/src/components/chat/widgets/registry.d.ts.map +0 -1
  592. package/packages/app-core/src/components/chat/widgets/registry.js +0 -7
  593. package/packages/app-core/src/components/chat/widgets/shared.d.ts +0 -17
  594. package/packages/app-core/src/components/chat/widgets/shared.d.ts.map +0 -1
  595. package/packages/app-core/src/components/chat/widgets/shared.js +0 -8
  596. package/packages/app-core/src/components/chat/widgets/todo.d.ts +0 -3
  597. package/packages/app-core/src/components/chat/widgets/todo.d.ts.map +0 -1
  598. package/packages/app-core/src/components/chat/widgets/todo.js +0 -109
  599. package/packages/app-core/src/components/chat/widgets/types.d.ts +0 -16
  600. package/packages/app-core/src/components/chat/widgets/types.d.ts.map +0 -1
  601. package/packages/app-core/src/components/chat/widgets/types.js +0 -1
  602. package/packages/app-core/src/components/chat/widgets/wallet-status.d.ts +0 -4
  603. package/packages/app-core/src/components/chat/widgets/wallet-status.d.ts.map +0 -1
  604. package/packages/app-core/src/components/chat/widgets/wallet-status.js +0 -190
  605. package/packages/app-core/src/components/cloud/CloudSourceControls.d.ts +0 -13
  606. package/packages/app-core/src/components/cloud/CloudSourceControls.d.ts.map +0 -1
  607. package/packages/app-core/src/components/cloud/CloudSourceControls.js +0 -19
  608. package/packages/app-core/src/components/cloud/CloudStatusBadge.d.ts +0 -33
  609. package/packages/app-core/src/components/cloud/CloudStatusBadge.d.ts.map +0 -1
  610. package/packages/app-core/src/components/cloud/CloudStatusBadge.js +0 -98
  611. package/packages/app-core/src/components/cloud/FlaminaGuide.d.ts +0 -10
  612. package/packages/app-core/src/components/cloud/FlaminaGuide.d.ts.map +0 -1
  613. package/packages/app-core/src/components/cloud/FlaminaGuide.js +0 -86
  614. package/packages/app-core/src/components/cloud/StripeEmbeddedCheckout.d.ts +0 -24
  615. package/packages/app-core/src/components/cloud/StripeEmbeddedCheckout.d.ts.map +0 -1
  616. package/packages/app-core/src/components/cloud/StripeEmbeddedCheckout.js +0 -101
  617. package/packages/app-core/src/components/companion/injected.d.ts +0 -10
  618. package/packages/app-core/src/components/companion/injected.d.ts.map +0 -1
  619. package/packages/app-core/src/components/companion/injected.js +0 -25
  620. package/packages/app-core/src/components/config-ui/config-control-primitives.d.ts +0 -14
  621. package/packages/app-core/src/components/config-ui/config-control-primitives.d.ts.map +0 -1
  622. package/packages/app-core/src/components/config-ui/config-control-primitives.js +0 -22
  623. package/packages/app-core/src/components/config-ui/config-field.d.ts +0 -58
  624. package/packages/app-core/src/components/config-ui/config-field.d.ts.map +0 -1
  625. package/packages/app-core/src/components/config-ui/config-field.js +0 -874
  626. package/packages/app-core/src/components/config-ui/config-renderer.d.ts +0 -164
  627. package/packages/app-core/src/components/config-ui/config-renderer.d.ts.map +0 -1
  628. package/packages/app-core/src/components/config-ui/config-renderer.js +0 -397
  629. package/packages/app-core/src/components/config-ui/index.d.ts +0 -5
  630. package/packages/app-core/src/components/config-ui/index.d.ts.map +0 -1
  631. package/packages/app-core/src/components/config-ui/index.js +0 -4
  632. package/packages/app-core/src/components/config-ui/ui-renderer.d.ts +0 -15
  633. package/packages/app-core/src/components/config-ui/ui-renderer.d.ts.map +0 -1
  634. package/packages/app-core/src/components/config-ui/ui-renderer.js +0 -826
  635. package/packages/app-core/src/components/connectors/BlueBubblesStatusPanel.d.ts +0 -2
  636. package/packages/app-core/src/components/connectors/BlueBubblesStatusPanel.d.ts.map +0 -1
  637. package/packages/app-core/src/components/connectors/BlueBubblesStatusPanel.js +0 -61
  638. package/packages/app-core/src/components/connectors/ConnectorModeSelector.d.ts +0 -35
  639. package/packages/app-core/src/components/connectors/ConnectorModeSelector.d.ts.map +0 -1
  640. package/packages/app-core/src/components/connectors/ConnectorModeSelector.js +0 -150
  641. package/packages/app-core/src/components/connectors/ConnectorSetupPanel.d.ts +0 -12
  642. package/packages/app-core/src/components/connectors/ConnectorSetupPanel.d.ts.map +0 -1
  643. package/packages/app-core/src/components/connectors/ConnectorSetupPanel.js +0 -92
  644. package/packages/app-core/src/components/connectors/DiscordLocalConnectorPanel.d.ts +0 -2
  645. package/packages/app-core/src/components/connectors/DiscordLocalConnectorPanel.d.ts.map +0 -1
  646. package/packages/app-core/src/components/connectors/DiscordLocalConnectorPanel.js +0 -249
  647. package/packages/app-core/src/components/connectors/IMessageStatusPanel.d.ts +0 -2
  648. package/packages/app-core/src/components/connectors/IMessageStatusPanel.d.ts.map +0 -1
  649. package/packages/app-core/src/components/connectors/IMessageStatusPanel.js +0 -63
  650. package/packages/app-core/src/components/connectors/SignalQrOverlay.d.ts +0 -7
  651. package/packages/app-core/src/components/connectors/SignalQrOverlay.d.ts.map +0 -1
  652. package/packages/app-core/src/components/connectors/SignalQrOverlay.js +0 -63
  653. package/packages/app-core/src/components/connectors/TelegramAccountConnectorPanel.d.ts +0 -2
  654. package/packages/app-core/src/components/connectors/TelegramAccountConnectorPanel.d.ts.map +0 -1
  655. package/packages/app-core/src/components/connectors/TelegramAccountConnectorPanel.js +0 -202
  656. package/packages/app-core/src/components/connectors/TelegramBotSetupPanel.d.ts +0 -2
  657. package/packages/app-core/src/components/connectors/TelegramBotSetupPanel.d.ts.map +0 -1
  658. package/packages/app-core/src/components/connectors/TelegramBotSetupPanel.js +0 -81
  659. package/packages/app-core/src/components/connectors/WhatsAppQrOverlay.d.ts +0 -9
  660. package/packages/app-core/src/components/connectors/WhatsAppQrOverlay.d.ts.map +0 -1
  661. package/packages/app-core/src/components/connectors/WhatsAppQrOverlay.js +0 -53
  662. package/packages/app-core/src/components/conversations/ConversationRenameDialog.d.ts +0 -9
  663. package/packages/app-core/src/components/conversations/ConversationRenameDialog.d.ts.map +0 -1
  664. package/packages/app-core/src/components/conversations/ConversationRenameDialog.js +0 -46
  665. package/packages/app-core/src/components/conversations/ConversationsSidebar.d.ts +0 -9
  666. package/packages/app-core/src/components/conversations/ConversationsSidebar.d.ts.map +0 -1
  667. package/packages/app-core/src/components/conversations/ConversationsSidebar.js +0 -557
  668. package/packages/app-core/src/components/conversations/brand-icons.d.ts +0 -12
  669. package/packages/app-core/src/components/conversations/brand-icons.d.ts.map +0 -1
  670. package/packages/app-core/src/components/conversations/brand-icons.js +0 -49
  671. package/packages/app-core/src/components/conversations/conversation-sidebar-model.d.ts +0 -66
  672. package/packages/app-core/src/components/conversations/conversation-sidebar-model.d.ts.map +0 -1
  673. package/packages/app-core/src/components/conversations/conversation-sidebar-model.js +0 -340
  674. package/packages/app-core/src/components/conversations/conversation-utils.d.ts +0 -9
  675. package/packages/app-core/src/components/conversations/conversation-utils.d.ts.map +0 -1
  676. package/packages/app-core/src/components/conversations/conversation-utils.js +0 -142
  677. package/packages/app-core/src/components/custom-actions/CustomActionEditor.d.ts +0 -10
  678. package/packages/app-core/src/components/custom-actions/CustomActionEditor.d.ts.map +0 -1
  679. package/packages/app-core/src/components/custom-actions/CustomActionEditor.js +0 -385
  680. package/packages/app-core/src/components/custom-actions/CustomActionsPanel.d.ts +0 -9
  681. package/packages/app-core/src/components/custom-actions/CustomActionsPanel.d.ts.map +0 -1
  682. package/packages/app-core/src/components/custom-actions/CustomActionsPanel.js +0 -158
  683. package/packages/app-core/src/components/custom-actions/CustomActionsView.d.ts +0 -2
  684. package/packages/app-core/src/components/custom-actions/CustomActionsView.d.ts.map +0 -1
  685. package/packages/app-core/src/components/custom-actions/CustomActionsView.js +0 -144
  686. package/packages/app-core/src/components/custom-actions/custom-action-form.d.ts +0 -44
  687. package/packages/app-core/src/components/custom-actions/custom-action-form.d.ts.map +0 -1
  688. package/packages/app-core/src/components/custom-actions/custom-action-form.js +0 -237
  689. package/packages/app-core/src/components/index.d.ts +0 -100
  690. package/packages/app-core/src/components/index.d.ts.map +0 -1
  691. package/packages/app-core/src/components/index.js +0 -101
  692. package/packages/app-core/src/components/inventory/ChainIcon.d.ts +0 -9
  693. package/packages/app-core/src/components/inventory/ChainIcon.d.ts.map +0 -1
  694. package/packages/app-core/src/components/inventory/ChainIcon.js +0 -58
  695. package/packages/app-core/src/components/inventory/TokenLogo.d.ts +0 -9
  696. package/packages/app-core/src/components/inventory/TokenLogo.d.ts.map +0 -1
  697. package/packages/app-core/src/components/inventory/TokenLogo.js +0 -26
  698. package/packages/app-core/src/components/inventory/chainConfig.d.ts +0 -89
  699. package/packages/app-core/src/components/inventory/chainConfig.d.ts.map +0 -1
  700. package/packages/app-core/src/components/inventory/chainConfig.js +0 -285
  701. package/packages/app-core/src/components/inventory/constants.d.ts +0 -30
  702. package/packages/app-core/src/components/inventory/constants.d.ts.map +0 -1
  703. package/packages/app-core/src/components/inventory/constants.js +0 -57
  704. package/packages/app-core/src/components/inventory/inventory-chain-filters.d.ts +0 -11
  705. package/packages/app-core/src/components/inventory/inventory-chain-filters.d.ts.map +0 -1
  706. package/packages/app-core/src/components/inventory/inventory-chain-filters.js +0 -41
  707. package/packages/app-core/src/components/inventory/media-url.d.ts +0 -6
  708. package/packages/app-core/src/components/inventory/media-url.d.ts.map +0 -1
  709. package/packages/app-core/src/components/inventory/media-url.js +0 -28
  710. package/packages/app-core/src/components/inventory/useInventoryData.d.ts +0 -38
  711. package/packages/app-core/src/components/inventory/useInventoryData.d.ts.map +0 -1
  712. package/packages/app-core/src/components/inventory/useInventoryData.js +0 -278
  713. package/packages/app-core/src/components/local-inference/ActiveModelBar.d.ts +0 -10
  714. package/packages/app-core/src/components/local-inference/ActiveModelBar.d.ts.map +0 -1
  715. package/packages/app-core/src/components/local-inference/ActiveModelBar.js +0 -19
  716. package/packages/app-core/src/components/local-inference/DeviceBridgeStatus.d.ts +0 -2
  717. package/packages/app-core/src/components/local-inference/DeviceBridgeStatus.d.ts.map +0 -1
  718. package/packages/app-core/src/components/local-inference/DeviceBridgeStatus.js +0 -39
  719. package/packages/app-core/src/components/local-inference/DevicesPanel.d.ts +0 -8
  720. package/packages/app-core/src/components/local-inference/DevicesPanel.d.ts.map +0 -1
  721. package/packages/app-core/src/components/local-inference/DevicesPanel.js +0 -44
  722. package/packages/app-core/src/components/local-inference/DownloadProgress.d.ts +0 -7
  723. package/packages/app-core/src/components/local-inference/DownloadProgress.d.ts.map +0 -1
  724. package/packages/app-core/src/components/local-inference/DownloadProgress.js +0 -8
  725. package/packages/app-core/src/components/local-inference/DownloadQueue.d.ts +0 -15
  726. package/packages/app-core/src/components/local-inference/DownloadQueue.d.ts.map +0 -1
  727. package/packages/app-core/src/components/local-inference/DownloadQueue.js +0 -21
  728. package/packages/app-core/src/components/local-inference/FirstRunOffer.d.ts +0 -11
  729. package/packages/app-core/src/components/local-inference/FirstRunOffer.d.ts.map +0 -1
  730. package/packages/app-core/src/components/local-inference/FirstRunOffer.js +0 -49
  731. package/packages/app-core/src/components/local-inference/HardwareBadge.d.ts +0 -7
  732. package/packages/app-core/src/components/local-inference/HardwareBadge.d.ts.map +0 -1
  733. package/packages/app-core/src/components/local-inference/HardwareBadge.js +0 -10
  734. package/packages/app-core/src/components/local-inference/HuggingFaceSearch.d.ts +0 -22
  735. package/packages/app-core/src/components/local-inference/HuggingFaceSearch.d.ts.map +0 -1
  736. package/packages/app-core/src/components/local-inference/HuggingFaceSearch.js +0 -68
  737. package/packages/app-core/src/components/local-inference/LocalInferencePanel.d.ts +0 -5
  738. package/packages/app-core/src/components/local-inference/LocalInferencePanel.d.ts.map +0 -1
  739. package/packages/app-core/src/components/local-inference/LocalInferencePanel.js +0 -225
  740. package/packages/app-core/src/components/local-inference/ModelCard.d.ts +0 -20
  741. package/packages/app-core/src/components/local-inference/ModelCard.d.ts.map +0 -1
  742. package/packages/app-core/src/components/local-inference/ModelCard.js +0 -21
  743. package/packages/app-core/src/components/local-inference/ModelHubView.d.ts +0 -18
  744. package/packages/app-core/src/components/local-inference/ModelHubView.d.ts.map +0 -1
  745. package/packages/app-core/src/components/local-inference/ModelHubView.js +0 -40
  746. package/packages/app-core/src/components/local-inference/ProvidersList.d.ts +0 -2
  747. package/packages/app-core/src/components/local-inference/ProvidersList.d.ts.map +0 -1
  748. package/packages/app-core/src/components/local-inference/ProvidersList.js +0 -51
  749. package/packages/app-core/src/components/local-inference/RoutingMatrix.d.ts +0 -2
  750. package/packages/app-core/src/components/local-inference/RoutingMatrix.d.ts.map +0 -1
  751. package/packages/app-core/src/components/local-inference/RoutingMatrix.js +0 -108
  752. package/packages/app-core/src/components/local-inference/SlotAssignments.d.ts +0 -15
  753. package/packages/app-core/src/components/local-inference/SlotAssignments.d.ts.map +0 -1
  754. package/packages/app-core/src/components/local-inference/SlotAssignments.js +0 -58
  755. package/packages/app-core/src/components/local-inference/hub-utils.d.ts +0 -27
  756. package/packages/app-core/src/components/local-inference/hub-utils.d.ts.map +0 -1
  757. package/packages/app-core/src/components/local-inference/hub-utils.js +0 -86
  758. package/packages/app-core/src/components/onboarding/BootstrapStep.d.ts +0 -35
  759. package/packages/app-core/src/components/onboarding/BootstrapStep.d.ts.map +0 -1
  760. package/packages/app-core/src/components/onboarding/BootstrapStep.js +0 -150
  761. package/packages/app-core/src/components/onboarding/onboarding-form-primitives.d.ts +0 -54
  762. package/packages/app-core/src/components/onboarding/onboarding-form-primitives.d.ts.map +0 -1
  763. package/packages/app-core/src/components/onboarding/onboarding-form-primitives.js +0 -55
  764. package/packages/app-core/src/components/onboarding/onboarding-step-chrome.d.ts +0 -40
  765. package/packages/app-core/src/components/onboarding/onboarding-step-chrome.d.ts.map +0 -1
  766. package/packages/app-core/src/components/onboarding/onboarding-step-chrome.js +0 -74
  767. package/packages/app-core/src/components/pages/AdvancedPageView.d.ts +0 -4
  768. package/packages/app-core/src/components/pages/AdvancedPageView.d.ts.map +0 -1
  769. package/packages/app-core/src/components/pages/AdvancedPageView.js +0 -72
  770. package/packages/app-core/src/components/pages/AppDetailsView.d.ts +0 -34
  771. package/packages/app-core/src/components/pages/AppDetailsView.d.ts.map +0 -1
  772. package/packages/app-core/src/components/pages/AppDetailsView.js +0 -350
  773. package/packages/app-core/src/components/pages/AppsPageView.d.ts +0 -12
  774. package/packages/app-core/src/components/pages/AppsPageView.d.ts.map +0 -1
  775. package/packages/app-core/src/components/pages/AppsPageView.js +0 -58
  776. package/packages/app-core/src/components/pages/AppsView.d.ts +0 -3
  777. package/packages/app-core/src/components/pages/AppsView.d.ts.map +0 -1
  778. package/packages/app-core/src/components/pages/AppsView.js +0 -883
  779. package/packages/app-core/src/components/pages/AutomationsView.d.ts +0 -6
  780. package/packages/app-core/src/components/pages/AutomationsView.d.ts.map +0 -1
  781. package/packages/app-core/src/components/pages/AutomationsView.js +0 -2512
  782. package/packages/app-core/src/components/pages/BrowserWorkspaceView.d.ts +0 -17
  783. package/packages/app-core/src/components/pages/BrowserWorkspaceView.d.ts.map +0 -1
  784. package/packages/app-core/src/components/pages/BrowserWorkspaceView.js +0 -1326
  785. package/packages/app-core/src/components/pages/ChatModalView.d.ts +0 -13
  786. package/packages/app-core/src/components/pages/ChatModalView.d.ts.map +0 -1
  787. package/packages/app-core/src/components/pages/ChatModalView.js +0 -17
  788. package/packages/app-core/src/components/pages/ChatView.d.ts +0 -24
  789. package/packages/app-core/src/components/pages/ChatView.d.ts.map +0 -1
  790. package/packages/app-core/src/components/pages/ChatView.js +0 -534
  791. package/packages/app-core/src/components/pages/ConfigPageView.d.ts +0 -12
  792. package/packages/app-core/src/components/pages/ConfigPageView.d.ts.map +0 -1
  793. package/packages/app-core/src/components/pages/ConfigPageView.js +0 -263
  794. package/packages/app-core/src/components/pages/ConnectorsPageView.d.ts +0 -8
  795. package/packages/app-core/src/components/pages/ConnectorsPageView.d.ts.map +0 -1
  796. package/packages/app-core/src/components/pages/ConnectorsPageView.js +0 -8
  797. package/packages/app-core/src/components/pages/DatabasePageView.d.ts +0 -5
  798. package/packages/app-core/src/components/pages/DatabasePageView.d.ts.map +0 -1
  799. package/packages/app-core/src/components/pages/DatabasePageView.js +0 -33
  800. package/packages/app-core/src/components/pages/DatabaseView.d.ts +0 -6
  801. package/packages/app-core/src/components/pages/DatabaseView.d.ts.map +0 -1
  802. package/packages/app-core/src/components/pages/DatabaseView.js +0 -247
  803. package/packages/app-core/src/components/pages/ElizaCloudDashboard.d.ts +0 -2
  804. package/packages/app-core/src/components/pages/ElizaCloudDashboard.d.ts.map +0 -1
  805. package/packages/app-core/src/components/pages/ElizaCloudDashboard.js +0 -380
  806. package/packages/app-core/src/components/pages/HeartbeatForm.d.ts +0 -56
  807. package/packages/app-core/src/components/pages/HeartbeatForm.d.ts.map +0 -1
  808. package/packages/app-core/src/components/pages/HeartbeatForm.js +0 -215
  809. package/packages/app-core/src/components/pages/HeartbeatsView.d.ts +0 -3
  810. package/packages/app-core/src/components/pages/HeartbeatsView.d.ts.map +0 -1
  811. package/packages/app-core/src/components/pages/HeartbeatsView.js +0 -399
  812. package/packages/app-core/src/components/pages/InventoryView.d.ts +0 -2
  813. package/packages/app-core/src/components/pages/InventoryView.d.ts.map +0 -1
  814. package/packages/app-core/src/components/pages/InventoryView.js +0 -837
  815. package/packages/app-core/src/components/pages/KnowledgeView.d.ts +0 -12
  816. package/packages/app-core/src/components/pages/KnowledgeView.d.ts.map +0 -1
  817. package/packages/app-core/src/components/pages/KnowledgeView.js +0 -546
  818. package/packages/app-core/src/components/pages/LogsPageView.d.ts +0 -6
  819. package/packages/app-core/src/components/pages/LogsPageView.d.ts.map +0 -1
  820. package/packages/app-core/src/components/pages/LogsPageView.js +0 -6
  821. package/packages/app-core/src/components/pages/LogsView.d.ts +0 -2
  822. package/packages/app-core/src/components/pages/LogsView.d.ts.map +0 -1
  823. package/packages/app-core/src/components/pages/LogsView.js +0 -81
  824. package/packages/app-core/src/components/pages/MediaGalleryView.d.ts +0 -6
  825. package/packages/app-core/src/components/pages/MediaGalleryView.d.ts.map +0 -1
  826. package/packages/app-core/src/components/pages/MediaGalleryView.js +0 -273
  827. package/packages/app-core/src/components/pages/MemoryDetailPanel.d.ts +0 -5
  828. package/packages/app-core/src/components/pages/MemoryDetailPanel.d.ts.map +0 -1
  829. package/packages/app-core/src/components/pages/MemoryDetailPanel.js +0 -17
  830. package/packages/app-core/src/components/pages/MemoryViewerView.d.ts +0 -5
  831. package/packages/app-core/src/components/pages/MemoryViewerView.d.ts.map +0 -1
  832. package/packages/app-core/src/components/pages/MemoryViewerView.js +0 -234
  833. package/packages/app-core/src/components/pages/MiladyOsAppsView.d.ts +0 -4
  834. package/packages/app-core/src/components/pages/MiladyOsAppsView.d.ts.map +0 -1
  835. package/packages/app-core/src/components/pages/MiladyOsAppsView.js +0 -618
  836. package/packages/app-core/src/components/pages/PageScopedChatPane.d.ts +0 -48
  837. package/packages/app-core/src/components/pages/PageScopedChatPane.d.ts.map +0 -1
  838. package/packages/app-core/src/components/pages/PageScopedChatPane.js +0 -503
  839. package/packages/app-core/src/components/pages/PluginCard.d.ts +0 -36
  840. package/packages/app-core/src/components/pages/PluginCard.d.ts.map +0 -1
  841. package/packages/app-core/src/components/pages/PluginCard.js +0 -128
  842. package/packages/app-core/src/components/pages/PluginConfigForm.d.ts +0 -29
  843. package/packages/app-core/src/components/pages/PluginConfigForm.d.ts.map +0 -1
  844. package/packages/app-core/src/components/pages/PluginConfigForm.js +0 -133
  845. package/packages/app-core/src/components/pages/PluginsPageView.d.ts +0 -9
  846. package/packages/app-core/src/components/pages/PluginsPageView.d.ts.map +0 -1
  847. package/packages/app-core/src/components/pages/PluginsPageView.js +0 -5
  848. package/packages/app-core/src/components/pages/PluginsView.d.ts +0 -11
  849. package/packages/app-core/src/components/pages/PluginsView.d.ts.map +0 -1
  850. package/packages/app-core/src/components/pages/PluginsView.js +0 -813
  851. package/packages/app-core/src/components/pages/RelationshipsGraphPanel.d.ts +0 -8
  852. package/packages/app-core/src/components/pages/RelationshipsGraphPanel.d.ts.map +0 -1
  853. package/packages/app-core/src/components/pages/RelationshipsGraphPanel.js +0 -696
  854. package/packages/app-core/src/components/pages/RelationshipsIdentityCluster.d.ts +0 -5
  855. package/packages/app-core/src/components/pages/RelationshipsIdentityCluster.d.ts.map +0 -1
  856. package/packages/app-core/src/components/pages/RelationshipsIdentityCluster.js +0 -17
  857. package/packages/app-core/src/components/pages/RelationshipsView.d.ts +0 -5
  858. package/packages/app-core/src/components/pages/RelationshipsView.d.ts.map +0 -1
  859. package/packages/app-core/src/components/pages/RelationshipsView.js +0 -5
  860. package/packages/app-core/src/components/pages/ReleaseCenterView.d.ts +0 -2
  861. package/packages/app-core/src/components/pages/ReleaseCenterView.d.ts.map +0 -1
  862. package/packages/app-core/src/components/pages/ReleaseCenterView.js +0 -216
  863. package/packages/app-core/src/components/pages/RuntimeView.d.ts +0 -5
  864. package/packages/app-core/src/components/pages/RuntimeView.d.ts.map +0 -1
  865. package/packages/app-core/src/components/pages/RuntimeView.js +0 -283
  866. package/packages/app-core/src/components/pages/ScratchpadView.d.ts +0 -2
  867. package/packages/app-core/src/components/pages/ScratchpadView.d.ts.map +0 -1
  868. package/packages/app-core/src/components/pages/ScratchpadView.js +0 -364
  869. package/packages/app-core/src/components/pages/SecretsView.d.ts +0 -5
  870. package/packages/app-core/src/components/pages/SecretsView.d.ts.map +0 -1
  871. package/packages/app-core/src/components/pages/SecretsView.js +0 -245
  872. package/packages/app-core/src/components/pages/SettingsView.d.ts +0 -6
  873. package/packages/app-core/src/components/pages/SettingsView.d.ts.map +0 -1
  874. package/packages/app-core/src/components/pages/SettingsView.js +0 -498
  875. package/packages/app-core/src/components/pages/SkillsView.d.ts +0 -6
  876. package/packages/app-core/src/components/pages/SkillsView.d.ts.map +0 -1
  877. package/packages/app-core/src/components/pages/SkillsView.js +0 -205
  878. package/packages/app-core/src/components/pages/SqlEditorPanel.d.ts +0 -13
  879. package/packages/app-core/src/components/pages/SqlEditorPanel.d.ts.map +0 -1
  880. package/packages/app-core/src/components/pages/SqlEditorPanel.js +0 -19
  881. package/packages/app-core/src/components/pages/StreamView.d.ts +0 -4
  882. package/packages/app-core/src/components/pages/StreamView.d.ts.map +0 -1
  883. package/packages/app-core/src/components/pages/StreamView.js +0 -113
  884. package/packages/app-core/src/components/pages/TasksPageView.d.ts +0 -2
  885. package/packages/app-core/src/components/pages/TasksPageView.d.ts.map +0 -1
  886. package/packages/app-core/src/components/pages/TasksPageView.js +0 -10
  887. package/packages/app-core/src/components/pages/TrajectoriesView.d.ts +0 -9
  888. package/packages/app-core/src/components/pages/TrajectoriesView.d.ts.map +0 -1
  889. package/packages/app-core/src/components/pages/TrajectoriesView.js +0 -278
  890. package/packages/app-core/src/components/pages/TrajectoryDetailView.d.ts +0 -7
  891. package/packages/app-core/src/components/pages/TrajectoryDetailView.d.ts.map +0 -1
  892. package/packages/app-core/src/components/pages/TrajectoryDetailView.js +0 -173
  893. package/packages/app-core/src/components/pages/TriggersView.d.ts +0 -3
  894. package/packages/app-core/src/components/pages/TriggersView.d.ts.map +0 -1
  895. package/packages/app-core/src/components/pages/TriggersView.js +0 -2
  896. package/packages/app-core/src/components/pages/VectorBrowserView.d.ts +0 -13
  897. package/packages/app-core/src/components/pages/VectorBrowserView.d.ts.map +0 -1
  898. package/packages/app-core/src/components/pages/VectorBrowserView.js +0 -846
  899. package/packages/app-core/src/components/pages/WorkflowGraphViewer.d.ts +0 -15
  900. package/packages/app-core/src/components/pages/WorkflowGraphViewer.d.ts.map +0 -1
  901. package/packages/app-core/src/components/pages/WorkflowGraphViewer.js +0 -403
  902. package/packages/app-core/src/components/pages/automation-conversations.d.ts +0 -16
  903. package/packages/app-core/src/components/pages/automation-conversations.d.ts.map +0 -1
  904. package/packages/app-core/src/components/pages/automation-conversations.js +0 -204
  905. package/packages/app-core/src/components/pages/chat-view-hooks.d.ts +0 -63
  906. package/packages/app-core/src/components/pages/chat-view-hooks.d.ts.map +0 -1
  907. package/packages/app-core/src/components/pages/chat-view-hooks.js +0 -531
  908. package/packages/app-core/src/components/pages/cloud-dashboard-utils.d.ts +0 -91
  909. package/packages/app-core/src/components/pages/cloud-dashboard-utils.d.ts.map +0 -1
  910. package/packages/app-core/src/components/pages/cloud-dashboard-utils.js +0 -284
  911. package/packages/app-core/src/components/pages/config-page-sections.d.ts +0 -86
  912. package/packages/app-core/src/components/pages/config-page-sections.d.ts.map +0 -1
  913. package/packages/app-core/src/components/pages/config-page-sections.js +0 -205
  914. package/packages/app-core/src/components/pages/database-utils.d.ts +0 -30
  915. package/packages/app-core/src/components/pages/database-utils.d.ts.map +0 -1
  916. package/packages/app-core/src/components/pages/database-utils.js +0 -133
  917. package/packages/app-core/src/components/pages/heartbeat-utils.d.ts +0 -105
  918. package/packages/app-core/src/components/pages/heartbeat-utils.d.ts.map +0 -1
  919. package/packages/app-core/src/components/pages/heartbeat-utils.js +0 -368
  920. package/packages/app-core/src/components/pages/knowledge-detail.d.ts +0 -9
  921. package/packages/app-core/src/components/pages/knowledge-detail.d.ts.map +0 -1
  922. package/packages/app-core/src/components/pages/knowledge-detail.js +0 -149
  923. package/packages/app-core/src/components/pages/knowledge-upload.d.ts +0 -27
  924. package/packages/app-core/src/components/pages/knowledge-upload.d.ts.map +0 -1
  925. package/packages/app-core/src/components/pages/knowledge-upload.js +0 -125
  926. package/packages/app-core/src/components/pages/page-scoped-conversations.d.ts +0 -62
  927. package/packages/app-core/src/components/pages/page-scoped-conversations.d.ts.map +0 -1
  928. package/packages/app-core/src/components/pages/page-scoped-conversations.js +0 -266
  929. package/packages/app-core/src/components/pages/plugin-list-utils.d.ts +0 -67
  930. package/packages/app-core/src/components/pages/plugin-list-utils.d.ts.map +0 -1
  931. package/packages/app-core/src/components/pages/plugin-list-utils.js +0 -665
  932. package/packages/app-core/src/components/pages/plugin-view-connectors.d.ts +0 -57
  933. package/packages/app-core/src/components/pages/plugin-view-connectors.d.ts.map +0 -1
  934. package/packages/app-core/src/components/pages/plugin-view-connectors.js +0 -275
  935. package/packages/app-core/src/components/pages/plugin-view-dialogs.d.ts +0 -36
  936. package/packages/app-core/src/components/pages/plugin-view-dialogs.d.ts.map +0 -1
  937. package/packages/app-core/src/components/pages/plugin-view-dialogs.js +0 -63
  938. package/packages/app-core/src/components/pages/plugin-view-modal.d.ts +0 -34
  939. package/packages/app-core/src/components/pages/plugin-view-modal.d.ts.map +0 -1
  940. package/packages/app-core/src/components/pages/plugin-view-modal.js +0 -29
  941. package/packages/app-core/src/components/pages/plugin-view-sidebar.d.ts +0 -36
  942. package/packages/app-core/src/components/pages/plugin-view-sidebar.d.ts.map +0 -1
  943. package/packages/app-core/src/components/pages/plugin-view-sidebar.js +0 -42
  944. package/packages/app-core/src/components/pages/relationships/RelationshipsActivityFeed.d.ts +0 -2
  945. package/packages/app-core/src/components/pages/relationships/RelationshipsActivityFeed.d.ts.map +0 -1
  946. package/packages/app-core/src/components/pages/relationships/RelationshipsActivityFeed.js +0 -85
  947. package/packages/app-core/src/components/pages/relationships/RelationshipsCandidateMergesPanel.d.ts +0 -6
  948. package/packages/app-core/src/components/pages/relationships/RelationshipsCandidateMergesPanel.d.ts.map +0 -1
  949. package/packages/app-core/src/components/pages/relationships/RelationshipsCandidateMergesPanel.js +0 -73
  950. package/packages/app-core/src/components/pages/relationships/RelationshipsPersonPanels.d.ts +0 -27
  951. package/packages/app-core/src/components/pages/relationships/RelationshipsPersonPanels.d.ts.map +0 -1
  952. package/packages/app-core/src/components/pages/relationships/RelationshipsPersonPanels.js +0 -241
  953. package/packages/app-core/src/components/pages/relationships/RelationshipsSidebar.d.ts +0 -10
  954. package/packages/app-core/src/components/pages/relationships/RelationshipsSidebar.d.ts.map +0 -1
  955. package/packages/app-core/src/components/pages/relationships/RelationshipsSidebar.js +0 -16
  956. package/packages/app-core/src/components/pages/relationships/RelationshipsWorkspaceView.d.ts +0 -7
  957. package/packages/app-core/src/components/pages/relationships/RelationshipsWorkspaceView.d.ts.map +0 -1
  958. package/packages/app-core/src/components/pages/relationships/RelationshipsWorkspaceView.js +0 -130
  959. package/packages/app-core/src/components/pages/relationships/relationships-utils.d.ts +0 -16
  960. package/packages/app-core/src/components/pages/relationships/relationships-utils.d.ts.map +0 -1
  961. package/packages/app-core/src/components/pages/relationships/relationships-utils.js +0 -105
  962. package/packages/app-core/src/components/pages/settings/IdentitySettingsSection.d.ts +0 -2
  963. package/packages/app-core/src/components/pages/settings/IdentitySettingsSection.d.ts.map +0 -1
  964. package/packages/app-core/src/components/pages/settings/IdentitySettingsSection.js +0 -310
  965. package/packages/app-core/src/components/pages/skill-detail-panel.d.ts +0 -13
  966. package/packages/app-core/src/components/pages/skill-detail-panel.d.ts.map +0 -1
  967. package/packages/app-core/src/components/pages/skill-detail-panel.js +0 -161
  968. package/packages/app-core/src/components/pages/skill-marketplace.d.ts +0 -38
  969. package/packages/app-core/src/components/pages/skill-marketplace.d.ts.map +0 -1
  970. package/packages/app-core/src/components/pages/skill-marketplace.js +0 -114
  971. package/packages/app-core/src/components/pages/useBrowserWorkspaceWalletBridge.d.ts +0 -43
  972. package/packages/app-core/src/components/pages/useBrowserWorkspaceWalletBridge.d.ts.map +0 -1
  973. package/packages/app-core/src/components/pages/useBrowserWorkspaceWalletBridge.js +0 -362
  974. package/packages/app-core/src/components/pages/vector-browser-utils.d.ts +0 -2
  975. package/packages/app-core/src/components/pages/vector-browser-utils.d.ts.map +0 -1
  976. package/packages/app-core/src/components/pages/vector-browser-utils.js +0 -1
  977. package/packages/app-core/src/components/pages/workflow-graph-events.d.ts +0 -6
  978. package/packages/app-core/src/components/pages/workflow-graph-events.d.ts.map +0 -1
  979. package/packages/app-core/src/components/pages/workflow-graph-events.js +0 -7
  980. package/packages/app-core/src/components/permissions/PermissionIcon.d.ts +0 -4
  981. package/packages/app-core/src/components/permissions/PermissionIcon.d.ts.map +0 -1
  982. package/packages/app-core/src/components/permissions/PermissionIcon.js +0 -13
  983. package/packages/app-core/src/components/permissions/StreamingPermissions.d.ts +0 -21
  984. package/packages/app-core/src/components/permissions/StreamingPermissions.d.ts.map +0 -1
  985. package/packages/app-core/src/components/permissions/StreamingPermissions.js +0 -284
  986. package/packages/app-core/src/components/phone-companion/Chat.d.ts +0 -15
  987. package/packages/app-core/src/components/phone-companion/Chat.d.ts.map +0 -1
  988. package/packages/app-core/src/components/phone-companion/Chat.js +0 -76
  989. package/packages/app-core/src/components/phone-companion/Pairing.d.ts +0 -9
  990. package/packages/app-core/src/components/phone-companion/Pairing.d.ts.map +0 -1
  991. package/packages/app-core/src/components/phone-companion/Pairing.js +0 -124
  992. package/packages/app-core/src/components/phone-companion/PhoneCompanionApp.d.ts +0 -9
  993. package/packages/app-core/src/components/phone-companion/PhoneCompanionApp.d.ts.map +0 -1
  994. package/packages/app-core/src/components/phone-companion/PhoneCompanionApp.js +0 -108
  995. package/packages/app-core/src/components/phone-companion/RemoteSession.d.ts +0 -9
  996. package/packages/app-core/src/components/phone-companion/RemoteSession.d.ts.map +0 -1
  997. package/packages/app-core/src/components/phone-companion/RemoteSession.js +0 -364
  998. package/packages/app-core/src/components/phone-companion/index.d.ts +0 -5
  999. package/packages/app-core/src/components/phone-companion/index.d.ts.map +0 -1
  1000. package/packages/app-core/src/components/phone-companion/index.js +0 -4
  1001. package/packages/app-core/src/components/plugins/showcase-data.d.ts +0 -4
  1002. package/packages/app-core/src/components/plugins/showcase-data.d.ts.map +0 -1
  1003. package/packages/app-core/src/components/plugins/showcase-data.js +0 -461
  1004. package/packages/app-core/src/components/policy-controls/ApprovedAddressesSection.d.ts +0 -7
  1005. package/packages/app-core/src/components/policy-controls/ApprovedAddressesSection.d.ts.map +0 -1
  1006. package/packages/app-core/src/components/policy-controls/ApprovedAddressesSection.js +0 -74
  1007. package/packages/app-core/src/components/policy-controls/AutoApproveSection.d.ts +0 -7
  1008. package/packages/app-core/src/components/policy-controls/AutoApproveSection.d.ts.map +0 -1
  1009. package/packages/app-core/src/components/policy-controls/AutoApproveSection.js +0 -14
  1010. package/packages/app-core/src/components/policy-controls/PolicyToggle.d.ts +0 -15
  1011. package/packages/app-core/src/components/policy-controls/PolicyToggle.d.ts.map +0 -1
  1012. package/packages/app-core/src/components/policy-controls/PolicyToggle.js +0 -12
  1013. package/packages/app-core/src/components/policy-controls/RateLimitSection.d.ts +0 -7
  1014. package/packages/app-core/src/components/policy-controls/RateLimitSection.d.ts.map +0 -1
  1015. package/packages/app-core/src/components/policy-controls/RateLimitSection.js +0 -11
  1016. package/packages/app-core/src/components/policy-controls/SpendingLimitSection.d.ts +0 -7
  1017. package/packages/app-core/src/components/policy-controls/SpendingLimitSection.d.ts.map +0 -1
  1018. package/packages/app-core/src/components/policy-controls/SpendingLimitSection.js +0 -15
  1019. package/packages/app-core/src/components/policy-controls/TimeWindowSection.d.ts +0 -7
  1020. package/packages/app-core/src/components/policy-controls/TimeWindowSection.d.ts.map +0 -1
  1021. package/packages/app-core/src/components/policy-controls/TimeWindowSection.js +0 -40
  1022. package/packages/app-core/src/components/policy-controls/constants.d.ts +0 -11
  1023. package/packages/app-core/src/components/policy-controls/constants.d.ts.map +0 -1
  1024. package/packages/app-core/src/components/policy-controls/constants.js +0 -41
  1025. package/packages/app-core/src/components/policy-controls/helpers.d.ts +0 -13
  1026. package/packages/app-core/src/components/policy-controls/helpers.d.ts.map +0 -1
  1027. package/packages/app-core/src/components/policy-controls/helpers.js +0 -43
  1028. package/packages/app-core/src/components/policy-controls/index.d.ts +0 -10
  1029. package/packages/app-core/src/components/policy-controls/index.d.ts.map +0 -1
  1030. package/packages/app-core/src/components/policy-controls/index.js +0 -9
  1031. package/packages/app-core/src/components/policy-controls/types.d.ts +0 -58
  1032. package/packages/app-core/src/components/policy-controls/types.d.ts.map +0 -1
  1033. package/packages/app-core/src/components/policy-controls/types.js +0 -7
  1034. package/packages/app-core/src/components/release-center/shared.d.ts +0 -13
  1035. package/packages/app-core/src/components/release-center/shared.d.ts.map +0 -1
  1036. package/packages/app-core/src/components/release-center/shared.js +0 -38
  1037. package/packages/app-core/src/components/release-center/types.d.ts +0 -79
  1038. package/packages/app-core/src/components/release-center/types.d.ts.map +0 -1
  1039. package/packages/app-core/src/components/release-center/types.js +0 -5
  1040. package/packages/app-core/src/components/settings/ApiKeyConfig.d.ts +0 -21
  1041. package/packages/app-core/src/components/settings/ApiKeyConfig.d.ts.map +0 -1
  1042. package/packages/app-core/src/components/settings/ApiKeyConfig.js +0 -111
  1043. package/packages/app-core/src/components/settings/AppearanceSettingsSection.d.ts +0 -2
  1044. package/packages/app-core/src/components/settings/AppearanceSettingsSection.d.ts.map +0 -1
  1045. package/packages/app-core/src/components/settings/AppearanceSettingsSection.js +0 -253
  1046. package/packages/app-core/src/components/settings/AppsManagementSection.d.ts +0 -12
  1047. package/packages/app-core/src/components/settings/AppsManagementSection.d.ts.map +0 -1
  1048. package/packages/app-core/src/components/settings/AppsManagementSection.js +0 -285
  1049. package/packages/app-core/src/components/settings/CapabilitiesSection.d.ts +0 -2
  1050. package/packages/app-core/src/components/settings/CapabilitiesSection.d.ts.map +0 -1
  1051. package/packages/app-core/src/components/settings/CapabilitiesSection.js +0 -97
  1052. package/packages/app-core/src/components/settings/DesktopWorkspaceSection.d.ts +0 -7
  1053. package/packages/app-core/src/components/settings/DesktopWorkspaceSection.d.ts.map +0 -1
  1054. package/packages/app-core/src/components/settings/DesktopWorkspaceSection.js +0 -502
  1055. package/packages/app-core/src/components/settings/PermissionsSection.d.ts +0 -8
  1056. package/packages/app-core/src/components/settings/PermissionsSection.d.ts.map +0 -1
  1057. package/packages/app-core/src/components/settings/PermissionsSection.js +0 -310
  1058. package/packages/app-core/src/components/settings/PolicyControlsView.d.ts +0 -2
  1059. package/packages/app-core/src/components/settings/PolicyControlsView.d.ts.map +0 -1
  1060. package/packages/app-core/src/components/settings/PolicyControlsView.js +0 -231
  1061. package/packages/app-core/src/components/settings/ProviderSwitcher.d.ts +0 -22
  1062. package/packages/app-core/src/components/settings/ProviderSwitcher.d.ts.map +0 -1
  1063. package/packages/app-core/src/components/settings/ProviderSwitcher.js +0 -618
  1064. package/packages/app-core/src/components/settings/SecuritySettingsSection.d.ts +0 -2
  1065. package/packages/app-core/src/components/settings/SecuritySettingsSection.d.ts.map +0 -1
  1066. package/packages/app-core/src/components/settings/SecuritySettingsSection.js +0 -381
  1067. package/packages/app-core/src/components/settings/SubscriptionStatus.d.ts +0 -28
  1068. package/packages/app-core/src/components/settings/SubscriptionStatus.d.ts.map +0 -1
  1069. package/packages/app-core/src/components/settings/SubscriptionStatus.js +0 -266
  1070. package/packages/app-core/src/components/settings/VoiceConfigView.d.ts +0 -5
  1071. package/packages/app-core/src/components/settings/VoiceConfigView.d.ts.map +0 -1
  1072. package/packages/app-core/src/components/settings/VoiceConfigView.js +0 -505
  1073. package/packages/app-core/src/components/settings/cloud-model-schema.d.ts +0 -26
  1074. package/packages/app-core/src/components/settings/cloud-model-schema.d.ts.map +0 -1
  1075. package/packages/app-core/src/components/settings/cloud-model-schema.js +0 -103
  1076. package/packages/app-core/src/components/settings/permission-controls.d.ts +0 -37
  1077. package/packages/app-core/src/components/settings/permission-controls.d.ts.map +0 -1
  1078. package/packages/app-core/src/components/settings/permission-controls.js +0 -437
  1079. package/packages/app-core/src/components/settings/permission-types.d.ts +0 -44
  1080. package/packages/app-core/src/components/settings/permission-types.d.ts.map +0 -1
  1081. package/packages/app-core/src/components/settings/permission-types.js +0 -215
  1082. package/packages/app-core/src/components/settings/settings-control-primitives.d.ts +0 -11
  1083. package/packages/app-core/src/components/settings/settings-control-primitives.d.ts.map +0 -1
  1084. package/packages/app-core/src/components/settings/settings-control-primitives.js +0 -14
  1085. package/packages/app-core/src/components/shared/AppPageSidebar.d.ts +0 -12
  1086. package/packages/app-core/src/components/shared/AppPageSidebar.d.ts.map +0 -1
  1087. package/packages/app-core/src/components/shared/AppPageSidebar.js +0 -119
  1088. package/packages/app-core/src/components/shared/CollapsibleSidebarSection.d.ts +0 -19
  1089. package/packages/app-core/src/components/shared/CollapsibleSidebarSection.d.ts.map +0 -1
  1090. package/packages/app-core/src/components/shared/CollapsibleSidebarSection.js +0 -12
  1091. package/packages/app-core/src/components/shared/LanguageDropdown.d.ts +0 -24
  1092. package/packages/app-core/src/components/shared/LanguageDropdown.d.ts.map +0 -1
  1093. package/packages/app-core/src/components/shared/LanguageDropdown.js +0 -37
  1094. package/packages/app-core/src/components/shared/ThemeToggle.d.ts +0 -14
  1095. package/packages/app-core/src/components/shared/ThemeToggle.d.ts.map +0 -1
  1096. package/packages/app-core/src/components/shared/ThemeToggle.js +0 -14
  1097. package/packages/app-core/src/components/shared/confirm-delete-control.d.ts +0 -19
  1098. package/packages/app-core/src/components/shared/confirm-delete-control.d.ts.map +0 -1
  1099. package/packages/app-core/src/components/shared/confirm-delete-control.js +0 -19
  1100. package/packages/app-core/src/components/shell/BugReportModal.d.ts +0 -2
  1101. package/packages/app-core/src/components/shell/BugReportModal.d.ts.map +0 -1
  1102. package/packages/app-core/src/components/shell/BugReportModal.js +0 -366
  1103. package/packages/app-core/src/components/shell/CommandPalette.d.ts +0 -2
  1104. package/packages/app-core/src/components/shell/CommandPalette.d.ts.map +0 -1
  1105. package/packages/app-core/src/components/shell/CommandPalette.js +0 -185
  1106. package/packages/app-core/src/components/shell/ComputerUseApprovalOverlay.d.ts +0 -2
  1107. package/packages/app-core/src/components/shell/ComputerUseApprovalOverlay.d.ts.map +0 -1
  1108. package/packages/app-core/src/components/shell/ComputerUseApprovalOverlay.js +0 -171
  1109. package/packages/app-core/src/components/shell/ConnectionFailedBanner.d.ts +0 -6
  1110. package/packages/app-core/src/components/shell/ConnectionFailedBanner.d.ts.map +0 -1
  1111. package/packages/app-core/src/components/shell/ConnectionFailedBanner.js +0 -23
  1112. package/packages/app-core/src/components/shell/ConnectionLostOverlay.d.ts +0 -2
  1113. package/packages/app-core/src/components/shell/ConnectionLostOverlay.d.ts.map +0 -1
  1114. package/packages/app-core/src/components/shell/ConnectionLostOverlay.js +0 -49
  1115. package/packages/app-core/src/components/shell/Header.d.ts +0 -13
  1116. package/packages/app-core/src/components/shell/Header.d.ts.map +0 -1
  1117. package/packages/app-core/src/components/shell/Header.js +0 -298
  1118. package/packages/app-core/src/components/shell/LoadingScreen.d.ts +0 -13
  1119. package/packages/app-core/src/components/shell/LoadingScreen.d.ts.map +0 -1
  1120. package/packages/app-core/src/components/shell/LoadingScreen.js +0 -86
  1121. package/packages/app-core/src/components/shell/PairingView.d.ts +0 -2
  1122. package/packages/app-core/src/components/shell/PairingView.d.ts.map +0 -1
  1123. package/packages/app-core/src/components/shell/PairingView.js +0 -41
  1124. package/packages/app-core/src/components/shell/RestartBanner.d.ts +0 -2
  1125. package/packages/app-core/src/components/shell/RestartBanner.d.ts.map +0 -1
  1126. package/packages/app-core/src/components/shell/RestartBanner.js +0 -39
  1127. package/packages/app-core/src/components/shell/RuntimeGate.d.ts +0 -22
  1128. package/packages/app-core/src/components/shell/RuntimeGate.d.ts.map +0 -1
  1129. package/packages/app-core/src/components/shell/RuntimeGate.js +0 -640
  1130. package/packages/app-core/src/components/shell/ShellHeaderControls.d.ts +0 -44
  1131. package/packages/app-core/src/components/shell/ShellHeaderControls.d.ts.map +0 -1
  1132. package/packages/app-core/src/components/shell/ShellHeaderControls.js +0 -80
  1133. package/packages/app-core/src/components/shell/ShellOverlays.d.ts +0 -5
  1134. package/packages/app-core/src/components/shell/ShellOverlays.d.ts.map +0 -1
  1135. package/packages/app-core/src/components/shell/ShellOverlays.js +0 -15
  1136. package/packages/app-core/src/components/shell/ShortcutsOverlay.d.ts +0 -2
  1137. package/packages/app-core/src/components/shell/ShortcutsOverlay.d.ts.map +0 -1
  1138. package/packages/app-core/src/components/shell/ShortcutsOverlay.js +0 -58
  1139. package/packages/app-core/src/components/shell/StartupFailureView.d.ts +0 -8
  1140. package/packages/app-core/src/components/shell/StartupFailureView.d.ts.map +0 -1
  1141. package/packages/app-core/src/components/shell/StartupFailureView.js +0 -148
  1142. package/packages/app-core/src/components/shell/StartupShell.d.ts +0 -12
  1143. package/packages/app-core/src/components/shell/StartupShell.d.ts.map +0 -1
  1144. package/packages/app-core/src/components/shell/StartupShell.js +0 -230
  1145. package/packages/app-core/src/components/shell/SystemWarningBanner.d.ts +0 -6
  1146. package/packages/app-core/src/components/shell/SystemWarningBanner.d.ts.map +0 -1
  1147. package/packages/app-core/src/components/shell/SystemWarningBanner.js +0 -44
  1148. package/packages/app-core/src/components/steward/injected.d.ts +0 -5
  1149. package/packages/app-core/src/components/steward/injected.d.ts.map +0 -1
  1150. package/packages/app-core/src/components/steward/injected.js +0 -14
  1151. package/packages/app-core/src/components/stream/StatusBar.d.ts +0 -10
  1152. package/packages/app-core/src/components/stream/StatusBar.d.ts.map +0 -1
  1153. package/packages/app-core/src/components/stream/StatusBar.js +0 -65
  1154. package/packages/app-core/src/components/stream/helpers.d.ts +0 -15
  1155. package/packages/app-core/src/components/stream/helpers.d.ts.map +0 -1
  1156. package/packages/app-core/src/components/stream/helpers.js +0 -16
  1157. package/packages/app-core/src/components/training/injected.d.ts +0 -3
  1158. package/packages/app-core/src/components/training/injected.d.ts.map +0 -1
  1159. package/packages/app-core/src/components/training/injected.js +0 -6
  1160. package/packages/app-core/src/components/workspace/AppWorkspaceChrome.d.ts +0 -62
  1161. package/packages/app-core/src/components/workspace/AppWorkspaceChrome.d.ts.map +0 -1
  1162. package/packages/app-core/src/components/workspace/AppWorkspaceChrome.js +0 -220
  1163. package/packages/app-core/src/config/app-config.d.ts +0 -121
  1164. package/packages/app-core/src/config/app-config.d.ts.map +0 -1
  1165. package/packages/app-core/src/config/app-config.js +0 -31
  1166. package/packages/app-core/src/config/boot-config-react.d.ts +0 -5
  1167. package/packages/app-core/src/config/boot-config-react.d.ts.map +0 -1
  1168. package/packages/app-core/src/config/boot-config-react.js +0 -7
  1169. package/packages/app-core/src/config/cloud-only.d.ts +0 -6
  1170. package/packages/app-core/src/config/cloud-only.d.ts.map +0 -1
  1171. package/packages/app-core/src/config/cloud-only.js +0 -15
  1172. package/packages/app-core/src/config/config-catalog.d.ts +0 -376
  1173. package/packages/app-core/src/config/config-catalog.d.ts.map +0 -1
  1174. package/packages/app-core/src/config/config-catalog.js +0 -732
  1175. package/packages/app-core/src/config/index.d.ts +0 -12
  1176. package/packages/app-core/src/config/index.d.ts.map +0 -1
  1177. package/packages/app-core/src/config/index.js +0 -11
  1178. package/packages/app-core/src/config/plugin-auto-enable.d.ts +0 -5
  1179. package/packages/app-core/src/config/plugin-auto-enable.d.ts.map +0 -1
  1180. package/packages/app-core/src/config/plugin-auto-enable.js +0 -47
  1181. package/packages/app-core/src/config/plugin-ui-spec.d.ts +0 -42
  1182. package/packages/app-core/src/config/plugin-ui-spec.d.ts.map +0 -1
  1183. package/packages/app-core/src/config/plugin-ui-spec.js +0 -256
  1184. package/packages/app-core/src/config/ui-spec.d.ts +0 -164
  1185. package/packages/app-core/src/config/ui-spec.d.ts.map +0 -1
  1186. package/packages/app-core/src/config/ui-spec.js +0 -13
  1187. package/packages/app-core/src/config/wechat-config.d.ts +0 -3
  1188. package/packages/app-core/src/config/wechat-config.d.ts.map +0 -1
  1189. package/packages/app-core/src/config/wechat-config.js +0 -21
  1190. package/packages/app-core/src/content-packs/apply-pack.d.ts +0 -33
  1191. package/packages/app-core/src/content-packs/apply-pack.d.ts.map +0 -1
  1192. package/packages/app-core/src/content-packs/apply-pack.js +0 -96
  1193. package/packages/app-core/src/content-packs/bundled-packs.d.ts +0 -14
  1194. package/packages/app-core/src/content-packs/bundled-packs.d.ts.map +0 -1
  1195. package/packages/app-core/src/content-packs/bundled-packs.js +0 -106
  1196. package/packages/app-core/src/content-packs/index.d.ts +0 -4
  1197. package/packages/app-core/src/content-packs/index.d.ts.map +0 -1
  1198. package/packages/app-core/src/content-packs/index.js +0 -3
  1199. package/packages/app-core/src/content-packs/load-pack.d.ts +0 -34
  1200. package/packages/app-core/src/content-packs/load-pack.d.ts.map +0 -1
  1201. package/packages/app-core/src/content-packs/load-pack.js +0 -151
  1202. package/packages/app-core/src/events/index.d.ts +0 -62
  1203. package/packages/app-core/src/events/index.d.ts.map +0 -1
  1204. package/packages/app-core/src/events/index.js +0 -51
  1205. package/packages/app-core/src/hooks/index.d.ts +0 -14
  1206. package/packages/app-core/src/hooks/index.d.ts.map +0 -1
  1207. package/packages/app-core/src/hooks/index.js +0 -13
  1208. package/packages/app-core/src/hooks/useAccounts.d.ts +0 -41
  1209. package/packages/app-core/src/hooks/useAccounts.d.ts.map +0 -1
  1210. package/packages/app-core/src/hooks/useAccounts.js +0 -250
  1211. package/packages/app-core/src/hooks/useActivityEvents.d.ts +0 -20
  1212. package/packages/app-core/src/hooks/useActivityEvents.d.ts.map +0 -1
  1213. package/packages/app-core/src/hooks/useActivityEvents.js +0 -126
  1214. package/packages/app-core/src/hooks/useAuthStatus.d.ts +0 -49
  1215. package/packages/app-core/src/hooks/useAuthStatus.d.ts.map +0 -1
  1216. package/packages/app-core/src/hooks/useAuthStatus.js +0 -90
  1217. package/packages/app-core/src/hooks/useBugReport.d.ts +0 -26
  1218. package/packages/app-core/src/hooks/useBugReport.d.ts.map +0 -1
  1219. package/packages/app-core/src/hooks/useBugReport.js +0 -28
  1220. package/packages/app-core/src/hooks/useCanvasWindow.d.ts +0 -38
  1221. package/packages/app-core/src/hooks/useCanvasWindow.d.ts.map +0 -1
  1222. package/packages/app-core/src/hooks/useCanvasWindow.js +0 -277
  1223. package/packages/app-core/src/hooks/useChatAvatarVoiceBridge.d.ts +0 -12
  1224. package/packages/app-core/src/hooks/useChatAvatarVoiceBridge.d.ts.map +0 -1
  1225. package/packages/app-core/src/hooks/useChatAvatarVoiceBridge.js +0 -21
  1226. package/packages/app-core/src/hooks/useContextMenu.d.ts +0 -17
  1227. package/packages/app-core/src/hooks/useContextMenu.d.ts.map +0 -1
  1228. package/packages/app-core/src/hooks/useContextMenu.js +0 -142
  1229. package/packages/app-core/src/hooks/useKeyboardShortcuts.d.ts +0 -5
  1230. package/packages/app-core/src/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  1231. package/packages/app-core/src/hooks/useKeyboardShortcuts.js +0 -32
  1232. package/packages/app-core/src/hooks/useMediaQuery.d.ts +0 -4
  1233. package/packages/app-core/src/hooks/useMediaQuery.d.ts.map +0 -1
  1234. package/packages/app-core/src/hooks/useMediaQuery.js +0 -30
  1235. package/packages/app-core/src/hooks/useMusicPlayer.d.ts +0 -54
  1236. package/packages/app-core/src/hooks/useMusicPlayer.d.ts.map +0 -1
  1237. package/packages/app-core/src/hooks/useMusicPlayer.js +0 -117
  1238. package/packages/app-core/src/hooks/useRenderGuard.d.ts +0 -17
  1239. package/packages/app-core/src/hooks/useRenderGuard.d.ts.map +0 -1
  1240. package/packages/app-core/src/hooks/useRenderGuard.js +0 -36
  1241. package/packages/app-core/src/hooks/useSignalPairing.d.ts +0 -12
  1242. package/packages/app-core/src/hooks/useSignalPairing.d.ts.map +0 -1
  1243. package/packages/app-core/src/hooks/useSignalPairing.js +0 -129
  1244. package/packages/app-core/src/hooks/useStreamPopoutNavigation.d.ts +0 -3
  1245. package/packages/app-core/src/hooks/useStreamPopoutNavigation.d.ts.map +0 -1
  1246. package/packages/app-core/src/hooks/useStreamPopoutNavigation.js +0 -4
  1247. package/packages/app-core/src/hooks/useVoiceChat.d.ts +0 -37
  1248. package/packages/app-core/src/hooks/useVoiceChat.d.ts.map +0 -1
  1249. package/packages/app-core/src/hooks/useVoiceChat.js +0 -1310
  1250. package/packages/app-core/src/hooks/useWhatsAppPairing.d.ts +0 -12
  1251. package/packages/app-core/src/hooks/useWhatsAppPairing.d.ts.map +0 -1
  1252. package/packages/app-core/src/hooks/useWhatsAppPairing.js +0 -95
  1253. package/packages/app-core/src/hooks/useWorkflowGenerationState.d.ts +0 -23
  1254. package/packages/app-core/src/hooks/useWorkflowGenerationState.d.ts.map +0 -1
  1255. package/packages/app-core/src/hooks/useWorkflowGenerationState.js +0 -46
  1256. package/packages/app-core/src/hooks/voice-chat-playback.d.ts +0 -32
  1257. package/packages/app-core/src/hooks/voice-chat-playback.d.ts.map +0 -1
  1258. package/packages/app-core/src/hooks/voice-chat-playback.js +0 -203
  1259. package/packages/app-core/src/hooks/voice-chat-recording.d.ts +0 -6
  1260. package/packages/app-core/src/hooks/voice-chat-recording.d.ts.map +0 -1
  1261. package/packages/app-core/src/hooks/voice-chat-recording.js +0 -46
  1262. package/packages/app-core/src/hooks/voice-chat-types.d.ts +0 -193
  1263. package/packages/app-core/src/hooks/voice-chat-types.d.ts.map +0 -1
  1264. package/packages/app-core/src/hooks/voice-chat-types.js +0 -185
  1265. package/packages/app-core/src/i18n/index.d.ts +0 -7
  1266. package/packages/app-core/src/i18n/index.d.ts.map +0 -1
  1267. package/packages/app-core/src/i18n/index.js +0 -57
  1268. package/packages/app-core/src/i18n/locales/en.json +0 -3231
  1269. package/packages/app-core/src/i18n/locales/es.json +0 -3231
  1270. package/packages/app-core/src/i18n/locales/ko.json +0 -3231
  1271. package/packages/app-core/src/i18n/locales/pt.json +0 -3231
  1272. package/packages/app-core/src/i18n/locales/tl.json +0 -3231
  1273. package/packages/app-core/src/i18n/locales/vi.json +0 -3231
  1274. package/packages/app-core/src/i18n/locales/zh-CN.json +0 -3231
  1275. package/packages/app-core/src/i18n/messages.d.ts +0 -6
  1276. package/packages/app-core/src/i18n/messages.d.ts.map +0 -1
  1277. package/packages/app-core/src/i18n/messages.js +0 -26
  1278. package/packages/app-core/src/index.d.ts +0 -54
  1279. package/packages/app-core/src/index.d.ts.map +0 -1
  1280. package/packages/app-core/src/index.js +0 -50
  1281. package/packages/app-core/src/onboarding/flow.d.ts +0 -66
  1282. package/packages/app-core/src/onboarding/flow.d.ts.map +0 -1
  1283. package/packages/app-core/src/onboarding/flow.js +0 -100
  1284. package/packages/app-core/src/onboarding/mobile-runtime-mode.d.ts +0 -8
  1285. package/packages/app-core/src/onboarding/mobile-runtime-mode.d.ts.map +0 -1
  1286. package/packages/app-core/src/onboarding/mobile-runtime-mode.js +0 -57
  1287. package/packages/app-core/src/onboarding/probe-local-agent.d.ts +0 -44
  1288. package/packages/app-core/src/onboarding/probe-local-agent.d.ts.map +0 -1
  1289. package/packages/app-core/src/onboarding/probe-local-agent.js +0 -126
  1290. package/packages/app-core/src/onboarding/server-target.d.ts +0 -4
  1291. package/packages/app-core/src/onboarding/server-target.d.ts.map +0 -1
  1292. package/packages/app-core/src/onboarding/server-target.js +0 -13
  1293. package/packages/app-core/src/onboarding-config.d.ts +0 -61
  1294. package/packages/app-core/src/onboarding-config.d.ts.map +0 -1
  1295. package/packages/app-core/src/onboarding-config.js +0 -172
  1296. package/packages/app-core/src/platform/browser-launch.d.ts +0 -10
  1297. package/packages/app-core/src/platform/browser-launch.d.ts.map +0 -1
  1298. package/packages/app-core/src/platform/browser-launch.js +0 -147
  1299. package/packages/app-core/src/platform/cloud-preference-patch.d.ts +0 -11
  1300. package/packages/app-core/src/platform/cloud-preference-patch.d.ts.map +0 -1
  1301. package/packages/app-core/src/platform/cloud-preference-patch.js +0 -85
  1302. package/packages/app-core/src/platform/desktop-permissions-client.d.ts +0 -3
  1303. package/packages/app-core/src/platform/desktop-permissions-client.d.ts.map +0 -1
  1304. package/packages/app-core/src/platform/desktop-permissions-client.js +0 -128
  1305. package/packages/app-core/src/platform/index.d.ts +0 -15
  1306. package/packages/app-core/src/platform/index.d.ts.map +0 -1
  1307. package/packages/app-core/src/platform/index.js +0 -23
  1308. package/packages/app-core/src/platform/init.d.ts +0 -46
  1309. package/packages/app-core/src/platform/init.d.ts.map +0 -1
  1310. package/packages/app-core/src/platform/init.js +0 -169
  1311. package/packages/app-core/src/platform/is-native-server.d.ts +0 -14
  1312. package/packages/app-core/src/platform/is-native-server.d.ts.map +0 -1
  1313. package/packages/app-core/src/platform/is-native-server.js +0 -16
  1314. package/packages/app-core/src/platform/onboarding-reset.d.ts +0 -11
  1315. package/packages/app-core/src/platform/onboarding-reset.d.ts.map +0 -1
  1316. package/packages/app-core/src/platform/onboarding-reset.js +0 -127
  1317. package/packages/app-core/src/platform/types.d.ts +0 -28
  1318. package/packages/app-core/src/platform/types.d.ts.map +0 -1
  1319. package/packages/app-core/src/platform/types.js +0 -1
  1320. package/packages/app-core/src/platform/window-shell.d.ts +0 -28
  1321. package/packages/app-core/src/platform/window-shell.d.ts.map +0 -1
  1322. package/packages/app-core/src/platform/window-shell.js +0 -73
  1323. package/packages/app-core/src/providers/index.d.ts +0 -26
  1324. package/packages/app-core/src/providers/index.d.ts.map +0 -1
  1325. package/packages/app-core/src/providers/index.js +0 -107
  1326. package/packages/app-core/src/runtime/channel-plugin-map.d.ts +0 -6
  1327. package/packages/app-core/src/runtime/channel-plugin-map.d.ts.map +0 -1
  1328. package/packages/app-core/src/runtime/channel-plugin-map.js +0 -10
  1329. package/packages/app-core/src/security/agent-vault-id.d.ts +0 -14
  1330. package/packages/app-core/src/security/agent-vault-id.d.ts.map +0 -1
  1331. package/packages/app-core/src/security/agent-vault-id.js +0 -32
  1332. package/packages/app-core/src/security/platform-secure-store-node.d.ts +0 -15
  1333. package/packages/app-core/src/security/platform-secure-store-node.d.ts.map +0 -1
  1334. package/packages/app-core/src/security/platform-secure-store-node.js +0 -296
  1335. package/packages/app-core/src/security/platform-secure-store.d.ts +0 -47
  1336. package/packages/app-core/src/security/platform-secure-store.d.ts.map +0 -1
  1337. package/packages/app-core/src/security/platform-secure-store.js +0 -10
  1338. package/packages/app-core/src/services/account-pool.d.ts +0 -98
  1339. package/packages/app-core/src/services/account-pool.d.ts.map +0 -1
  1340. package/packages/app-core/src/services/account-pool.js +0 -506
  1341. package/packages/app-core/src/services/account-usage.d.ts +0 -75
  1342. package/packages/app-core/src/services/account-usage.d.ts.map +0 -1
  1343. package/packages/app-core/src/services/account-usage.js +0 -179
  1344. package/packages/app-core/src/services/auth-store.d.ts +0 -185
  1345. package/packages/app-core/src/services/auth-store.d.ts.map +0 -1
  1346. package/packages/app-core/src/services/auth-store.js +0 -418
  1347. package/packages/app-core/src/services/cloud-jwks-store.d.ts +0 -62
  1348. package/packages/app-core/src/services/cloud-jwks-store.d.ts.map +0 -1
  1349. package/packages/app-core/src/services/cloud-jwks-store.js +0 -118
  1350. package/packages/app-core/src/services/local-inference/active-model.d.ts +0 -59
  1351. package/packages/app-core/src/services/local-inference/active-model.d.ts.map +0 -1
  1352. package/packages/app-core/src/services/local-inference/active-model.js +0 -120
  1353. package/packages/app-core/src/services/local-inference/device-bridge.d.ts +0 -131
  1354. package/packages/app-core/src/services/local-inference/device-bridge.d.ts.map +0 -1
  1355. package/packages/app-core/src/services/local-inference/device-bridge.js +0 -748
  1356. package/packages/app-core/src/services/local-inference/engine.d.ts +0 -52
  1357. package/packages/app-core/src/services/local-inference/engine.d.ts.map +0 -1
  1358. package/packages/app-core/src/services/local-inference/engine.js +0 -138
  1359. package/packages/app-core/src/services/local-inference/external-scanner.d.ts +0 -17
  1360. package/packages/app-core/src/services/local-inference/external-scanner.d.ts.map +0 -1
  1361. package/packages/app-core/src/services/local-inference/external-scanner.js +0 -261
  1362. package/packages/app-core/src/services/local-inference/handler-registry.d.ts +0 -72
  1363. package/packages/app-core/src/services/local-inference/handler-registry.d.ts.map +0 -1
  1364. package/packages/app-core/src/services/local-inference/handler-registry.js +0 -160
  1365. package/packages/app-core/src/services/local-inference/hardware.d.ts +0 -26
  1366. package/packages/app-core/src/services/local-inference/hardware.d.ts.map +0 -1
  1367. package/packages/app-core/src/services/local-inference/hardware.js +0 -139
  1368. package/packages/app-core/src/services/local-inference/paths.d.ts +0 -24
  1369. package/packages/app-core/src/services/local-inference/paths.d.ts.map +0 -1
  1370. package/packages/app-core/src/services/local-inference/paths.js +0 -41
  1371. package/packages/app-core/src/services/local-inference/providers.d.ts +0 -61
  1372. package/packages/app-core/src/services/local-inference/providers.d.ts.map +0 -1
  1373. package/packages/app-core/src/services/local-inference/providers.js +0 -277
  1374. package/packages/app-core/src/services/local-inference/registry.d.ts +0 -35
  1375. package/packages/app-core/src/services/local-inference/registry.d.ts.map +0 -1
  1376. package/packages/app-core/src/services/local-inference/registry.js +0 -108
  1377. package/packages/app-core/src/services/local-inference/routing-preferences.d.ts +0 -31
  1378. package/packages/app-core/src/services/local-inference/routing-preferences.d.ts.map +0 -1
  1379. package/packages/app-core/src/services/local-inference/routing-preferences.js +0 -72
  1380. package/packages/app-core/src/services/local-inference/types.d.ts +0 -121
  1381. package/packages/app-core/src/services/local-inference/types.d.ts.map +0 -1
  1382. package/packages/app-core/src/services/local-inference/types.js +0 -14
  1383. package/packages/app-core/src/services/local-inference/verify.d.ts +0 -39
  1384. package/packages/app-core/src/services/local-inference/verify.d.ts.map +0 -1
  1385. package/packages/app-core/src/services/local-inference/verify.js +0 -104
  1386. package/packages/app-core/src/services/phone-companion/env.d.ts +0 -11
  1387. package/packages/app-core/src/services/phone-companion/env.d.ts.map +0 -1
  1388. package/packages/app-core/src/services/phone-companion/env.js +0 -21
  1389. package/packages/app-core/src/services/phone-companion/index.d.ts +0 -14
  1390. package/packages/app-core/src/services/phone-companion/index.d.ts.map +0 -1
  1391. package/packages/app-core/src/services/phone-companion/index.js +0 -13
  1392. package/packages/app-core/src/services/phone-companion/logger.d.ts +0 -14
  1393. package/packages/app-core/src/services/phone-companion/logger.d.ts.map +0 -1
  1394. package/packages/app-core/src/services/phone-companion/logger.js +0 -57
  1395. package/packages/app-core/src/services/phone-companion/milady-intent.d.ts +0 -63
  1396. package/packages/app-core/src/services/phone-companion/milady-intent.d.ts.map +0 -1
  1397. package/packages/app-core/src/services/phone-companion/milady-intent.js +0 -50
  1398. package/packages/app-core/src/services/phone-companion/navigation.d.ts +0 -17
  1399. package/packages/app-core/src/services/phone-companion/navigation.d.ts.map +0 -1
  1400. package/packages/app-core/src/services/phone-companion/navigation.js +0 -99
  1401. package/packages/app-core/src/services/phone-companion/push.d.ts +0 -27
  1402. package/packages/app-core/src/services/phone-companion/push.d.ts.map +0 -1
  1403. package/packages/app-core/src/services/phone-companion/push.js +0 -80
  1404. package/packages/app-core/src/services/phone-companion/session-client.d.ts +0 -114
  1405. package/packages/app-core/src/services/phone-companion/session-client.d.ts.map +0 -1
  1406. package/packages/app-core/src/services/phone-companion/session-client.js +0 -211
  1407. package/packages/app-core/src/shell/AppWindowRenderer.d.ts +0 -17
  1408. package/packages/app-core/src/shell/AppWindowRenderer.d.ts.map +0 -1
  1409. package/packages/app-core/src/shell/AppWindowRenderer.js +0 -319
  1410. package/packages/app-core/src/shell/DesktopOnboardingRuntime.d.ts +0 -9
  1411. package/packages/app-core/src/shell/DesktopOnboardingRuntime.d.ts.map +0 -1
  1412. package/packages/app-core/src/shell/DesktopOnboardingRuntime.js +0 -10
  1413. package/packages/app-core/src/shell/DesktopSurfaceNavigationRuntime.d.ts +0 -2
  1414. package/packages/app-core/src/shell/DesktopSurfaceNavigationRuntime.d.ts.map +0 -1
  1415. package/packages/app-core/src/shell/DesktopSurfaceNavigationRuntime.js +0 -48
  1416. package/packages/app-core/src/shell/DesktopTrayRuntime.d.ts +0 -11
  1417. package/packages/app-core/src/shell/DesktopTrayRuntime.d.ts.map +0 -1
  1418. package/packages/app-core/src/shell/DesktopTrayRuntime.js +0 -265
  1419. package/packages/app-core/src/shell/DetachedShellRoot.d.ts +0 -10
  1420. package/packages/app-core/src/shell/DetachedShellRoot.d.ts.map +0 -1
  1421. package/packages/app-core/src/shell/DetachedShellRoot.js +0 -114
  1422. package/packages/app-core/src/shell/index.d.ts +0 -6
  1423. package/packages/app-core/src/shell/index.d.ts.map +0 -1
  1424. package/packages/app-core/src/shell/index.js +0 -5
  1425. package/packages/app-core/src/state/AppContext.d.ts +0 -13
  1426. package/packages/app-core/src/state/AppContext.d.ts.map +0 -1
  1427. package/packages/app-core/src/state/AppContext.js +0 -1896
  1428. package/packages/app-core/src/state/ChatComposerContext.d.ts +0 -28
  1429. package/packages/app-core/src/state/ChatComposerContext.d.ts.map +0 -1
  1430. package/packages/app-core/src/state/ChatComposerContext.js +0 -30
  1431. package/packages/app-core/src/state/CompanionSceneConfigContext.d.ts +0 -27
  1432. package/packages/app-core/src/state/CompanionSceneConfigContext.d.ts.map +0 -1
  1433. package/packages/app-core/src/state/CompanionSceneConfigContext.js +0 -32
  1434. package/packages/app-core/src/state/PtySessionsContext.d.ts +0 -15
  1435. package/packages/app-core/src/state/PtySessionsContext.d.ts.map +0 -1
  1436. package/packages/app-core/src/state/PtySessionsContext.js +0 -15
  1437. package/packages/app-core/src/state/TranslationContext.d.ts +0 -29
  1438. package/packages/app-core/src/state/TranslationContext.d.ts.map +0 -1
  1439. package/packages/app-core/src/state/TranslationContext.js +0 -61
  1440. package/packages/app-core/src/state/agent-profile-types.d.ts +0 -29
  1441. package/packages/app-core/src/state/agent-profile-types.d.ts.map +0 -1
  1442. package/packages/app-core/src/state/agent-profile-types.js +0 -1
  1443. package/packages/app-core/src/state/agent-profiles.d.ts +0 -16
  1444. package/packages/app-core/src/state/agent-profiles.d.ts.map +0 -1
  1445. package/packages/app-core/src/state/agent-profiles.js +0 -119
  1446. package/packages/app-core/src/state/agent-startup-timing.d.ts +0 -15
  1447. package/packages/app-core/src/state/agent-startup-timing.d.ts.map +0 -1
  1448. package/packages/app-core/src/state/agent-startup-timing.js +0 -28
  1449. package/packages/app-core/src/state/chat-conversation-guards.d.ts +0 -6
  1450. package/packages/app-core/src/state/chat-conversation-guards.d.ts.map +0 -1
  1451. package/packages/app-core/src/state/chat-conversation-guards.js +0 -47
  1452. package/packages/app-core/src/state/complete-reset-local-state-after-wipe.d.ts +0 -30
  1453. package/packages/app-core/src/state/complete-reset-local-state-after-wipe.d.ts.map +0 -1
  1454. package/packages/app-core/src/state/complete-reset-local-state-after-wipe.js +0 -24
  1455. package/packages/app-core/src/state/config-readers.d.ts +0 -7
  1456. package/packages/app-core/src/state/config-readers.d.ts.map +0 -1
  1457. package/packages/app-core/src/state/config-readers.js +0 -8
  1458. package/packages/app-core/src/state/connector-deeplink.d.ts +0 -30
  1459. package/packages/app-core/src/state/connector-deeplink.d.ts.map +0 -1
  1460. package/packages/app-core/src/state/connector-deeplink.js +0 -46
  1461. package/packages/app-core/src/state/handle-reset-applied-from-main.d.ts +0 -31
  1462. package/packages/app-core/src/state/handle-reset-applied-from-main.d.ts.map +0 -1
  1463. package/packages/app-core/src/state/handle-reset-applied-from-main.js +0 -38
  1464. package/packages/app-core/src/state/index.d.ts +0 -14
  1465. package/packages/app-core/src/state/index.d.ts.map +0 -1
  1466. package/packages/app-core/src/state/index.js +0 -13
  1467. package/packages/app-core/src/state/internal.d.ts +0 -9
  1468. package/packages/app-core/src/state/internal.d.ts.map +0 -1
  1469. package/packages/app-core/src/state/internal.js +0 -9
  1470. package/packages/app-core/src/state/navigation-events.d.ts +0 -12
  1471. package/packages/app-core/src/state/navigation-events.d.ts.map +0 -1
  1472. package/packages/app-core/src/state/navigation-events.js +0 -25
  1473. package/packages/app-core/src/state/onboarding-bootstrap.d.ts +0 -28
  1474. package/packages/app-core/src/state/onboarding-bootstrap.d.ts.map +0 -1
  1475. package/packages/app-core/src/state/onboarding-bootstrap.js +0 -76
  1476. package/packages/app-core/src/state/onboarding-resume.d.ts +0 -9
  1477. package/packages/app-core/src/state/onboarding-resume.d.ts.map +0 -1
  1478. package/packages/app-core/src/state/onboarding-resume.js +0 -93
  1479. package/packages/app-core/src/state/parsers.d.ts +0 -33
  1480. package/packages/app-core/src/state/parsers.d.ts.map +0 -1
  1481. package/packages/app-core/src/state/parsers.js +0 -354
  1482. package/packages/app-core/src/state/persistence.d.ts +0 -111
  1483. package/packages/app-core/src/state/persistence.d.ts.map +0 -1
  1484. package/packages/app-core/src/state/persistence.js +0 -749
  1485. package/packages/app-core/src/state/shell-routing.d.ts +0 -12
  1486. package/packages/app-core/src/state/shell-routing.d.ts.map +0 -1
  1487. package/packages/app-core/src/state/shell-routing.js +0 -21
  1488. package/packages/app-core/src/state/startup-coordinator.d.ts +0 -137
  1489. package/packages/app-core/src/state/startup-coordinator.d.ts.map +0 -1
  1490. package/packages/app-core/src/state/startup-coordinator.js +0 -247
  1491. package/packages/app-core/src/state/startup-phase-hydrate.d.ts +0 -74
  1492. package/packages/app-core/src/state/startup-phase-hydrate.d.ts.map +0 -1
  1493. package/packages/app-core/src/state/startup-phase-hydrate.js +0 -494
  1494. package/packages/app-core/src/state/startup-phase-poll.d.ts +0 -61
  1495. package/packages/app-core/src/state/startup-phase-poll.d.ts.map +0 -1
  1496. package/packages/app-core/src/state/startup-phase-poll.js +0 -272
  1497. package/packages/app-core/src/state/startup-phase-restore.d.ts +0 -49
  1498. package/packages/app-core/src/state/startup-phase-restore.d.ts.map +0 -1
  1499. package/packages/app-core/src/state/startup-phase-restore.js +0 -145
  1500. package/packages/app-core/src/state/startup-phase-runtime.d.ts +0 -34
  1501. package/packages/app-core/src/state/startup-phase-runtime.d.ts.map +0 -1
  1502. package/packages/app-core/src/state/startup-phase-runtime.js +0 -126
  1503. package/packages/app-core/src/state/types.d.ts +0 -645
  1504. package/packages/app-core/src/state/types.d.ts.map +0 -1
  1505. package/packages/app-core/src/state/types.js +0 -62
  1506. package/packages/app-core/src/state/ui-preferences.d.ts +0 -3
  1507. package/packages/app-core/src/state/ui-preferences.d.ts.map +0 -1
  1508. package/packages/app-core/src/state/ui-preferences.js +0 -1
  1509. package/packages/app-core/src/state/useApp.d.ts +0 -4
  1510. package/packages/app-core/src/state/useApp.d.ts.map +0 -1
  1511. package/packages/app-core/src/state/useApp.js +0 -32
  1512. package/packages/app-core/src/state/useCharacterState.d.ts +0 -52
  1513. package/packages/app-core/src/state/useCharacterState.d.ts.map +0 -1
  1514. package/packages/app-core/src/state/useCharacterState.js +0 -208
  1515. package/packages/app-core/src/state/useChatCallbacks.d.ts +0 -168
  1516. package/packages/app-core/src/state/useChatCallbacks.d.ts.map +0 -1
  1517. package/packages/app-core/src/state/useChatCallbacks.js +0 -773
  1518. package/packages/app-core/src/state/useChatLifecycle.d.ts +0 -104
  1519. package/packages/app-core/src/state/useChatLifecycle.d.ts.map +0 -1
  1520. package/packages/app-core/src/state/useChatLifecycle.js +0 -584
  1521. package/packages/app-core/src/state/useChatSend.d.ts +0 -81
  1522. package/packages/app-core/src/state/useChatSend.d.ts.map +0 -1
  1523. package/packages/app-core/src/state/useChatSend.js +0 -924
  1524. package/packages/app-core/src/state/useChatState.d.ts +0 -144
  1525. package/packages/app-core/src/state/useChatState.d.ts.map +0 -1
  1526. package/packages/app-core/src/state/useChatState.js +0 -251
  1527. package/packages/app-core/src/state/useCloudState.d.ts +0 -71
  1528. package/packages/app-core/src/state/useCloudState.d.ts.map +0 -1
  1529. package/packages/app-core/src/state/useCloudState.js +0 -561
  1530. package/packages/app-core/src/state/useDataLoaders.d.ts +0 -88
  1531. package/packages/app-core/src/state/useDataLoaders.d.ts.map +0 -1
  1532. package/packages/app-core/src/state/useDataLoaders.js +0 -394
  1533. package/packages/app-core/src/state/useDisplayPreferences.d.ts +0 -23
  1534. package/packages/app-core/src/state/useDisplayPreferences.d.ts.map +0 -1
  1535. package/packages/app-core/src/state/useDisplayPreferences.js +0 -64
  1536. package/packages/app-core/src/state/useExportImportState.d.ts +0 -32
  1537. package/packages/app-core/src/state/useExportImportState.d.ts.map +0 -1
  1538. package/packages/app-core/src/state/useExportImportState.js +0 -140
  1539. package/packages/app-core/src/state/useLifecycleState.d.ts +0 -123
  1540. package/packages/app-core/src/state/useLifecycleState.d.ts.map +0 -1
  1541. package/packages/app-core/src/state/useLifecycleState.js +0 -258
  1542. package/packages/app-core/src/state/useLogsState.d.ts +0 -24
  1543. package/packages/app-core/src/state/useLogsState.d.ts.map +0 -1
  1544. package/packages/app-core/src/state/useLogsState.js +0 -87
  1545. package/packages/app-core/src/state/useMiscUiState.d.ts +0 -87
  1546. package/packages/app-core/src/state/useMiscUiState.d.ts.map +0 -1
  1547. package/packages/app-core/src/state/useMiscUiState.js +0 -150
  1548. package/packages/app-core/src/state/useNavigationState.d.ts +0 -29
  1549. package/packages/app-core/src/state/useNavigationState.d.ts.map +0 -1
  1550. package/packages/app-core/src/state/useNavigationState.js +0 -122
  1551. package/packages/app-core/src/state/useOnboardingCallbacks.d.ts +0 -100
  1552. package/packages/app-core/src/state/useOnboardingCallbacks.d.ts.map +0 -1
  1553. package/packages/app-core/src/state/useOnboardingCallbacks.js +0 -792
  1554. package/packages/app-core/src/state/useOnboardingCompat.d.ts +0 -61
  1555. package/packages/app-core/src/state/useOnboardingCompat.d.ts.map +0 -1
  1556. package/packages/app-core/src/state/useOnboardingCompat.js +0 -110
  1557. package/packages/app-core/src/state/useOnboardingState.d.ts +0 -126
  1558. package/packages/app-core/src/state/useOnboardingState.d.ts.map +0 -1
  1559. package/packages/app-core/src/state/useOnboardingState.js +0 -263
  1560. package/packages/app-core/src/state/usePairingState.d.ts +0 -21
  1561. package/packages/app-core/src/state/usePairingState.d.ts.map +0 -1
  1562. package/packages/app-core/src/state/usePairingState.js +0 -60
  1563. package/packages/app-core/src/state/usePluginsSkillsState.d.ts +0 -131
  1564. package/packages/app-core/src/state/usePluginsSkillsState.d.ts.map +0 -1
  1565. package/packages/app-core/src/state/usePluginsSkillsState.js +0 -572
  1566. package/packages/app-core/src/state/useStartupCoordinator.d.ts +0 -40
  1567. package/packages/app-core/src/state/useStartupCoordinator.d.ts.map +0 -1
  1568. package/packages/app-core/src/state/useStartupCoordinator.js +0 -183
  1569. package/packages/app-core/src/state/useTriggersState.d.ts +0 -29
  1570. package/packages/app-core/src/state/useTriggersState.d.ts.map +0 -1
  1571. package/packages/app-core/src/state/useTriggersState.js +0 -198
  1572. package/packages/app-core/src/state/useVincentState.d.ts +0 -3
  1573. package/packages/app-core/src/state/useVincentState.d.ts.map +0 -1
  1574. package/packages/app-core/src/state/useVincentState.js +0 -13
  1575. package/packages/app-core/src/state/useWalletState.d.ts +0 -97
  1576. package/packages/app-core/src/state/useWalletState.d.ts.map +0 -1
  1577. package/packages/app-core/src/state/useWalletState.js +0 -533
  1578. package/packages/app-core/src/state/vrm.d.ts +0 -2
  1579. package/packages/app-core/src/state/vrm.d.ts.map +0 -1
  1580. package/packages/app-core/src/state/vrm.js +0 -1
  1581. package/packages/app-core/src/test-support/test-helpers.d.ts +0 -111
  1582. package/packages/app-core/src/test-support/test-helpers.d.ts.map +0 -1
  1583. package/packages/app-core/src/test-support/test-helpers.js +0 -417
  1584. package/packages/app-core/src/themes/apply-theme.d.ts +0 -24
  1585. package/packages/app-core/src/themes/apply-theme.d.ts.map +0 -1
  1586. package/packages/app-core/src/themes/apply-theme.js +0 -130
  1587. package/packages/app-core/src/types/index.d.ts +0 -658
  1588. package/packages/app-core/src/types/index.d.ts.map +0 -1
  1589. package/packages/app-core/src/types/index.js +0 -4
  1590. package/packages/app-core/src/utils/asset-url.d.ts +0 -24
  1591. package/packages/app-core/src/utils/asset-url.d.ts.map +0 -1
  1592. package/packages/app-core/src/utils/asset-url.js +0 -150
  1593. package/packages/app-core/src/utils/assistant-text.d.ts +0 -2
  1594. package/packages/app-core/src/utils/assistant-text.d.ts.map +0 -1
  1595. package/packages/app-core/src/utils/assistant-text.js +0 -167
  1596. package/packages/app-core/src/utils/browser-tabs-renderer-registry.d.ts +0 -56
  1597. package/packages/app-core/src/utils/browser-tabs-renderer-registry.d.ts.map +0 -1
  1598. package/packages/app-core/src/utils/browser-tabs-renderer-registry.js +0 -738
  1599. package/packages/app-core/src/utils/character-message-examples.d.ts +0 -7
  1600. package/packages/app-core/src/utils/character-message-examples.d.ts.map +0 -1
  1601. package/packages/app-core/src/utils/character-message-examples.js +0 -122
  1602. package/packages/app-core/src/utils/clipboard.d.ts +0 -2
  1603. package/packages/app-core/src/utils/clipboard.d.ts.map +0 -1
  1604. package/packages/app-core/src/utils/clipboard.js +0 -38
  1605. package/packages/app-core/src/utils/cloud-status.d.ts +0 -3
  1606. package/packages/app-core/src/utils/cloud-status.d.ts.map +0 -1
  1607. package/packages/app-core/src/utils/cloud-status.js +0 -10
  1608. package/packages/app-core/src/utils/desktop-bug-report.d.ts +0 -35
  1609. package/packages/app-core/src/utils/desktop-bug-report.d.ts.map +0 -1
  1610. package/packages/app-core/src/utils/desktop-bug-report.js +0 -47
  1611. package/packages/app-core/src/utils/desktop-dialogs.d.ts +0 -24
  1612. package/packages/app-core/src/utils/desktop-dialogs.d.ts.map +0 -1
  1613. package/packages/app-core/src/utils/desktop-dialogs.js +0 -149
  1614. package/packages/app-core/src/utils/desktop-workspace.d.ts +0 -86
  1615. package/packages/app-core/src/utils/desktop-workspace.d.ts.map +0 -1
  1616. package/packages/app-core/src/utils/desktop-workspace.js +0 -162
  1617. package/packages/app-core/src/utils/eliza-cloud-model-route.d.ts +0 -3
  1618. package/packages/app-core/src/utils/eliza-cloud-model-route.d.ts.map +0 -1
  1619. package/packages/app-core/src/utils/eliza-cloud-model-route.js +0 -9
  1620. package/packages/app-core/src/utils/eliza-globals.d.ts +0 -15
  1621. package/packages/app-core/src/utils/eliza-globals.d.ts.map +0 -1
  1622. package/packages/app-core/src/utils/eliza-globals.js +0 -50
  1623. package/packages/app-core/src/utils/errors.d.ts +0 -13
  1624. package/packages/app-core/src/utils/errors.d.ts.map +0 -1
  1625. package/packages/app-core/src/utils/errors.js +0 -25
  1626. package/packages/app-core/src/utils/format.d.ts +0 -66
  1627. package/packages/app-core/src/utils/format.d.ts.map +0 -1
  1628. package/packages/app-core/src/utils/format.js +0 -121
  1629. package/packages/app-core/src/utils/index.d.ts +0 -15
  1630. package/packages/app-core/src/utils/index.d.ts.map +0 -1
  1631. package/packages/app-core/src/utils/index.js +0 -14
  1632. package/packages/app-core/src/utils/knowledge-upload-image.d.ts +0 -27
  1633. package/packages/app-core/src/utils/knowledge-upload-image.d.ts.map +0 -1
  1634. package/packages/app-core/src/utils/knowledge-upload-image.js +0 -146
  1635. package/packages/app-core/src/utils/labels.d.ts +0 -6
  1636. package/packages/app-core/src/utils/labels.d.ts.map +0 -1
  1637. package/packages/app-core/src/utils/labels.js +0 -41
  1638. package/packages/app-core/src/utils/name-tokens.d.ts +0 -24
  1639. package/packages/app-core/src/utils/name-tokens.d.ts.map +0 -1
  1640. package/packages/app-core/src/utils/name-tokens.js +0 -36
  1641. package/packages/app-core/src/utils/number-parsing.d.ts +0 -26
  1642. package/packages/app-core/src/utils/number-parsing.d.ts.map +0 -1
  1643. package/packages/app-core/src/utils/number-parsing.js +0 -51
  1644. package/packages/app-core/src/utils/openExternalUrl.d.ts +0 -21
  1645. package/packages/app-core/src/utils/openExternalUrl.d.ts.map +0 -1
  1646. package/packages/app-core/src/utils/openExternalUrl.js +0 -67
  1647. package/packages/app-core/src/utils/owner-name.d.ts +0 -3
  1648. package/packages/app-core/src/utils/owner-name.d.ts.map +0 -1
  1649. package/packages/app-core/src/utils/owner-name.js +0 -7
  1650. package/packages/app-core/src/utils/streaming-text.d.ts +0 -9
  1651. package/packages/app-core/src/utils/streaming-text.d.ts.map +0 -1
  1652. package/packages/app-core/src/utils/streaming-text.js +0 -112
  1653. package/packages/app-core/src/utils/subscription-auth.d.ts +0 -9
  1654. package/packages/app-core/src/utils/subscription-auth.d.ts.map +0 -1
  1655. package/packages/app-core/src/utils/subscription-auth.js +0 -48
  1656. package/packages/app-core/src/utils/trajectory-format.d.ts +0 -6
  1657. package/packages/app-core/src/utils/trajectory-format.d.ts.map +0 -1
  1658. package/packages/app-core/src/utils/trajectory-format.js +0 -43
  1659. package/packages/app-core/src/voice/character-voice-config.d.ts +0 -9
  1660. package/packages/app-core/src/voice/character-voice-config.d.ts.map +0 -1
  1661. package/packages/app-core/src/voice/character-voice-config.js +0 -83
  1662. package/packages/app-core/src/voice/index.d.ts +0 -3
  1663. package/packages/app-core/src/voice/index.d.ts.map +0 -1
  1664. package/packages/app-core/src/voice/index.js +0 -2
  1665. package/packages/app-core/src/voice/types.d.ts +0 -40
  1666. package/packages/app-core/src/voice/types.d.ts.map +0 -1
  1667. package/packages/app-core/src/voice/types.js +0 -295
  1668. package/packages/app-core/src/wallet-rpc.d.ts +0 -9
  1669. package/packages/app-core/src/wallet-rpc.d.ts.map +0 -1
  1670. package/packages/app-core/src/wallet-rpc.js +0 -133
  1671. package/packages/app-core/src/widgets/WidgetHost.d.ts +0 -32
  1672. package/packages/app-core/src/widgets/WidgetHost.d.ts.map +0 -1
  1673. package/packages/app-core/src/widgets/WidgetHost.js +0 -57
  1674. package/packages/app-core/src/widgets/index.d.ts +0 -6
  1675. package/packages/app-core/src/widgets/index.d.ts.map +0 -1
  1676. package/packages/app-core/src/widgets/index.js +0 -2
  1677. package/packages/app-core/src/widgets/registry.d.ts +0 -58
  1678. package/packages/app-core/src/widgets/registry.d.ts.map +0 -1
  1679. package/packages/app-core/src/widgets/registry.js +0 -221
  1680. package/packages/app-core/src/widgets/types.d.ts +0 -50
  1681. package/packages/app-core/src/widgets/types.d.ts.map +0 -1
  1682. package/packages/app-core/src/widgets/types.js +0 -1
  1683. package/packages/app-core/src/widgets/useChatSidebarVisibility.d.ts +0 -16
  1684. package/packages/app-core/src/widgets/useChatSidebarVisibility.d.ts.map +0 -1
  1685. package/packages/app-core/src/widgets/useChatSidebarVisibility.js +0 -54
  1686. package/packages/app-core/src/widgets/visibility.d.ts +0 -55
  1687. package/packages/app-core/src/widgets/visibility.d.ts.map +0 -1
  1688. package/packages/app-core/src/widgets/visibility.js +0 -90
@@ -1,2512 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /**
3
- * AutomationsView — list/detail UI for tasks and n8n workflows.
4
- */
5
- import { Button, Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, FieldLabel, Input, PageLayout, PagePanel, SidebarCollapsedActionButton, SidebarContent, SidebarPanel, SidebarScrollRegion, StatusBadge, StatusDot, Textarea, } from "@elizaos/ui";
6
- import { ArrowRight, Calendar, CheckCircle2, ChevronDown, ChevronRight, Circle, Clock3, Copy, Edit as EditIcon, FileText, GitBranch, Grid3x3, LayoutDashboard, Mail, Pause, Play, Plus, RefreshCw, Rss, Settings, Share2, Signal, SquareTerminal, Trash2, Workflow, Zap, } from "lucide-react";
7
- import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, } from "react";
8
- import { client } from "../../api";
9
- import { isMissingCredentialsResponse, } from "../../api/client";
10
- import { useWorkflowGenerationState } from "../../hooks/useWorkflowGenerationState";
11
- import { dispatchFocusConnector, prettyCredName, providerFromCredType, useApp, } from "../../state";
12
- import { confirmDesktopAction } from "../../utils";
13
- import { formatDateTime, formatDurationMs } from "../../utils/format";
14
- // Direct sub-path import: `widgets/index.ts` re-exports `WidgetHost` while
15
- // also pulling other widgets/* modules that depend back through the barrel.
16
- // Going through the index from here drags Rollup into a chunk-level cycle
17
- // (warning: "reexported through module ... while both modules are
18
- // dependencies of each other"); the direct import skips it.
19
- import { WidgetHost } from "../../widgets/WidgetHost";
20
- import { AppPageSidebar } from "../shared/AppPageSidebar";
21
- import { AppWorkspaceChrome, useAppWorkspaceChatChrome, } from "../workspace/AppWorkspaceChrome";
22
- import { buildAutomationDraftConversationMetadata, buildAutomationResponseRoutingMetadata, buildCoordinatorConversationMetadata, buildCoordinatorTriggerConversationMetadata, buildWorkflowConversationMetadata, buildWorkflowDraftConversationMetadata, getAutomationBridgeConversationId, resolveAutomationConversation, } from "./automation-conversations";
23
- import { HeartbeatForm } from "./HeartbeatForm";
24
- import { buildCreateRequest, buildUpdateRequest, emptyForm, formFromTrigger, humanizeEventKind, loadUserTemplates, localizedExecutionStatus, railMonogram, saveUserTemplates, scheduleLabel, toneForLastStatus, validateForm, } from "./heartbeat-utils";
25
- import { PageScopedChatPane } from "./PageScopedChatPane";
26
- import { WorkflowGraphViewer } from "./WorkflowGraphViewer";
27
- import { VISUALIZE_WORKFLOW_EVENT, } from "./workflow-graph-events";
28
- const WORKFLOW_DRAFT_TITLE = "New Workflow Draft";
29
- const WORKFLOW_SYSTEM_ADDENDUM = "You are in a workflow-specific automation room. Focus only on this " +
30
- "workflow. Use the linked terminal conversation only when it directly " +
31
- "informs the workflow. Request keys and connector setup when needed, and " +
32
- "prefer owner-scoped LifeOps integrations for personal services.";
33
- const AUTOMATION_DRAFT_SYSTEM_ADDENDUM = "You are in an automation-creation room. The user wants to create one " +
34
- "automation. Decide whether it should be a task or a workflow and call " +
35
- "the matching action exactly once:\n" +
36
- '- Task: a simple prompt that runs on a schedule or from an event, for example "every morning summarize my inbox" or "when I get a GitHub notification, make a todo". Use CREATE_TRIGGER_TASK with a clear displayName, instructions, and any needed schedule.\n' +
37
- '- Workflow: a multi-step n8n pipeline with deterministic steps and integrations, for example "when a Slack message matches X, post to Discord and log it". Create an n8n workflow via the n8n actions.\n' +
38
- "Ask one short clarifying question only if the shape is genuinely " +
39
- "ambiguous; otherwise create immediately. After creation, briefly " +
40
- "confirm what you made and how it starts.";
41
- const NODE_CLASS_ORDER = [
42
- "agent",
43
- "action",
44
- "context",
45
- "integration",
46
- "trigger",
47
- "flow-control",
48
- ];
49
- const PAGE_CHAT_PREFILL_EVENT = "milady:chat:prefill";
50
- const DESCRIBE_WORKFLOW_PROMPT = "Describe your workflow";
51
- const DESCRIBE_AUTOMATION_PROMPT = "What should happen?";
52
- const WORKFLOW_PROMPT_PLACEHOLDER = "Describe the trigger and steps, e.g. when a GitHub issue opens, summarize it and post to Discord";
53
- const AUTOMATION_PROMPT_PLACEHOLDER = "e.g. Every morning summarize my inbox, or when a GitHub issue opens, triage it";
54
- const AUTOMATIONS_OVERVIEW_VISIBILITY_EVENT = "milady:automations:overview-visibility";
55
- function createWorkflowDraftId() {
56
- return globalThis.crypto.randomUUID();
57
- }
58
- function prefillPageChat(text, options) {
59
- if (typeof window === "undefined")
60
- return;
61
- window.dispatchEvent(new CustomEvent(PAGE_CHAT_PREFILL_EVENT, {
62
- detail: {
63
- text,
64
- select: options?.select ?? true,
65
- },
66
- }));
67
- }
68
- function buildWorkflowCopyRequest(workflow, name) {
69
- return {
70
- name,
71
- nodes: workflow.nodes?.map((node) => ({
72
- name: node.name,
73
- type: node.type,
74
- typeVersion: node.typeVersion ?? 1,
75
- position: node.position ?? [0, 0],
76
- parameters: node.parameters ?? {},
77
- ...(node.notes ? { notes: node.notes } : {}),
78
- ...(node.notesInFlow !== undefined
79
- ? { notesInFlow: node.notesInFlow }
80
- : {}),
81
- })) ?? [],
82
- connections: workflow.connections ?? {},
83
- settings: {},
84
- };
85
- }
86
- function inferAutomationPromptKind(prompt) {
87
- const normalized = prompt.toLowerCase();
88
- const looksScheduledTask = /\b(every|daily|hourly|weekly|monthly|weekday|morning|evening|at \d{1,2})\b/.test(normalized);
89
- const looksWorkflow = /\b(when|if|after|then|workflow|pipeline|webhook|event|triage|route|label|enrich|crm)\b/.test(normalized) ||
90
- (normalized.includes(" and ") &&
91
- /\b(send|post|create|update|reply|notify|summarize)\b/.test(normalized));
92
- if (looksScheduledTask && !normalized.includes("when "))
93
- return "task";
94
- return looksWorkflow ? "workflow" : "task";
95
- }
96
- function titleFromAutomationPrompt(prompt) {
97
- const cleaned = prompt
98
- .replace(/[^\p{L}\p{N}\s-]/gu, " ")
99
- .replace(/\s+/g, " ")
100
- .trim();
101
- if (!cleaned)
102
- return "New task";
103
- const title = cleaned.split(" ").slice(0, 7).join(" ");
104
- return title.charAt(0).toUpperCase() + title.slice(1);
105
- }
106
- // Reads `#automations.trigger=<id>` from the URL hash. The LifeOps chat-sidebar
107
- // Automations widget writes this when a row is clicked, so /automations can
108
- // focus the matching trigger card on navigation. Duplicated here (instead of
109
- // cross-importing from @elizaos/app-lifeops) to keep the package dep graph
110
- // one-way (app-lifeops → app-core).
111
- const AUTOMATIONS_TRIGGER_HASH_KEY = "automations.trigger";
112
- function readAutomationsTriggerFromHash() {
113
- if (typeof window === "undefined")
114
- return null;
115
- const raw = window.location.hash.startsWith("#")
116
- ? window.location.hash.slice(1)
117
- : window.location.hash;
118
- if (!raw)
119
- return null;
120
- for (const chunk of raw.split("&")) {
121
- if (!chunk)
122
- continue;
123
- const eq = chunk.indexOf("=");
124
- if (eq < 0)
125
- continue;
126
- try {
127
- const key = decodeURIComponent(chunk.slice(0, eq));
128
- if (key !== AUTOMATIONS_TRIGGER_HASH_KEY)
129
- continue;
130
- const value = decodeURIComponent(chunk.slice(eq + 1));
131
- return value || null;
132
- }
133
- catch {
134
- // Skip malformed encodings.
135
- }
136
- }
137
- return null;
138
- }
139
- function getNavigationPathFromWindow() {
140
- if (typeof window === "undefined")
141
- return "/";
142
- return window.location.protocol === "file:"
143
- ? window.location.hash.replace(/^#/, "") || "/"
144
- : window.location.pathname || "/";
145
- }
146
- function normalizeAutomationPath(pathname) {
147
- if (!pathname)
148
- return "/";
149
- const normalized = pathname.startsWith("/") ? pathname : `/${pathname}`;
150
- return normalized.length > 1 ? normalized.replace(/\/+$/, "") : normalized;
151
- }
152
- function getAutomationSubpageFromPath(pathname) {
153
- const normalized = normalizeAutomationPath(pathname);
154
- if (normalized === "/node-catalog" ||
155
- normalized === "/automations/node-catalog") {
156
- return "node-catalog";
157
- }
158
- return "list";
159
- }
160
- function getPathForAutomationSubpage(subpage) {
161
- return subpage === "node-catalog"
162
- ? "/automations/node-catalog"
163
- : "/automations";
164
- }
165
- function syncAutomationSubpagePath(subpage, mode = "push") {
166
- if (typeof window === "undefined")
167
- return;
168
- const nextPath = getPathForAutomationSubpage(subpage);
169
- const currentPath = normalizeAutomationPath(getNavigationPathFromWindow());
170
- if (currentPath === nextPath)
171
- return;
172
- if (window.location.protocol === "file:") {
173
- window.location.hash = nextPath;
174
- return;
175
- }
176
- window.history[mode === "replace" ? "replaceState" : "pushState"](null, "", nextPath);
177
- }
178
- function getSelectionKind(item) {
179
- if (!item)
180
- return null;
181
- if (item.type === "n8n_workflow")
182
- return "workflow";
183
- if (item.task)
184
- return "task";
185
- if (item.trigger)
186
- return "trigger";
187
- return null;
188
- }
189
- function getAutomationDisplayTitle(item) {
190
- return item.isDraft ? "Draft" : item.title;
191
- }
192
- function getOverviewDisplayTitle(item) {
193
- if (!item.isDraft) {
194
- return getAutomationDisplayTitle(item);
195
- }
196
- if (item.type === "automation_draft") {
197
- return "Draft automation";
198
- }
199
- return `Draft ${getAutomationGroupLabel(item).toLowerCase()}`;
200
- }
201
- function getAutomationGroupLabel(item) {
202
- if (item.type === "n8n_workflow") {
203
- return "Workflow";
204
- }
205
- if (item.system) {
206
- return "Agent owned";
207
- }
208
- return "Task";
209
- }
210
- function collectScheduledAutomationEntries(items) {
211
- return items.flatMap((item) => item.schedules.map((schedule) => ({
212
- item,
213
- schedule,
214
- key: `${item.id}:${schedule.id}`,
215
- })));
216
- }
217
- function isTimeBasedTrigger(trigger) {
218
- return trigger.triggerType !== "event";
219
- }
220
- function formatScheduleCount(count) {
221
- return count === 1 ? "1 schedule" : `${count} schedules`;
222
- }
223
- function getAutomationBridgeIdForItem(item, activeConversationId, conversations) {
224
- return (item?.room?.terminalBridgeConversationId ??
225
- item?.room?.sourceConversationId ??
226
- getAutomationBridgeConversationId(activeConversationId, conversations));
227
- }
228
- function getWorkflowNodeCount(item) {
229
- return item.workflow?.nodeCount ?? item.workflow?.nodes?.length ?? 0;
230
- }
231
- function getAutomationUpdatedAtMs(item) {
232
- if (!item.updatedAt) {
233
- return 0;
234
- }
235
- const ts = Date.parse(item.updatedAt);
236
- return Number.isFinite(ts) ? ts : 0;
237
- }
238
- function sortAutomationsByUpdatedAtDesc(items) {
239
- return [...items].sort((left, right) => getAutomationUpdatedAtMs(right) - getAutomationUpdatedAtMs(left));
240
- }
241
- function getAutomationIndicatorTone(item) {
242
- if (item.type === "n8n_workflow") {
243
- return item.enabled ? "accent" : undefined;
244
- }
245
- if (item.task) {
246
- return item.task.isCompleted ? undefined : "accent";
247
- }
248
- if (item.trigger) {
249
- return item.trigger.enabled ? "accent" : undefined;
250
- }
251
- return undefined;
252
- }
253
- function getAutomationStatusTone(item) {
254
- if (item.isDraft)
255
- return "warning";
256
- if (item.type === "n8n_workflow") {
257
- return item.enabled ? "success" : "muted";
258
- }
259
- if (item.trigger) {
260
- const lastTone = toneForLastStatus(item.trigger.lastStatus);
261
- if (lastTone === "danger")
262
- return "danger";
263
- return item.trigger.enabled ? "success" : "muted";
264
- }
265
- if (item.task) {
266
- return item.task.isCompleted ? "muted" : "success";
267
- }
268
- return "muted";
269
- }
270
- function getTriggerWakeModeLabel(trigger) {
271
- return trigger.wakeMode === "inject_now"
272
- ? "Interrupt and run now"
273
- : "Queue for next cycle";
274
- }
275
- function getTriggerStartModeLabel(trigger) {
276
- if (trigger.triggerType === "once")
277
- return "One time";
278
- if (trigger.triggerType === "cron")
279
- return "Cron schedule";
280
- if (trigger.triggerType === "event")
281
- return "Event";
282
- return "Repeating";
283
- }
284
- function buildTriggerSchedulePrompt(trigger) {
285
- if (trigger.triggerType === "interval") {
286
- return `Schedule: interval every ${trigger.intervalMs ?? 0}ms.`;
287
- }
288
- if (trigger.triggerType === "once") {
289
- return `Schedule: run once at ${trigger.scheduledAtIso ?? "an unspecified time"}.`;
290
- }
291
- if (trigger.triggerType === "cron") {
292
- return `Schedule: cron ${trigger.cronExpression ?? ""}.`;
293
- }
294
- if (trigger.triggerType === "event") {
295
- return `Event: ${trigger.eventKind ?? "event"}.`;
296
- }
297
- return `Schedule type: ${trigger.triggerType}.`;
298
- }
299
- function buildWorkflowCompilationPrompt(item) {
300
- const lines = [
301
- "Compile this coordinator automation into an n8n workflow.",
302
- `Automation title: ${item.title}`,
303
- `Description: ${item.description || "No additional description provided."}`,
304
- "Keep the workflow in this dedicated automation room.",
305
- "Use runtime actions and providers as workflow nodes when they fit the job.",
306
- "Use owner-scoped LifeOps nodes for Gmail, Calendar, Signal, Telegram, Discord, and GitHub when they are set up. If not, request the required setup or keys.",
307
- ];
308
- if (item.task) {
309
- lines.push(`Task description: ${item.task.description || "No task description."}`);
310
- }
311
- if (item.trigger) {
312
- lines.push(`Coordinator instructions: ${item.trigger.instructions}`);
313
- lines.push(buildTriggerSchedulePrompt(item.trigger));
314
- }
315
- if (item.schedules.length > 0) {
316
- lines.push("Existing schedules:");
317
- for (const schedule of item.schedules) {
318
- lines.push(`- ${buildTriggerSchedulePrompt(schedule)}`);
319
- }
320
- }
321
- lines.push("Ask follow-up questions only when workflow intent is genuinely ambiguous.");
322
- return lines.join("\n");
323
- }
324
- function getNodeClassLabel(className) {
325
- switch (className) {
326
- case "agent":
327
- return "Agent";
328
- case "action":
329
- return "Actions";
330
- case "context":
331
- return "Context";
332
- case "integration":
333
- return "Integrations";
334
- case "trigger":
335
- return "Triggers";
336
- case "flow-control":
337
- return "Flow Control";
338
- default:
339
- return className;
340
- }
341
- }
342
- function getNodeIcon(node) {
343
- if (node.source === "lifeops_event") {
344
- return _jsx(Zap, { className: "h-3.5 w-3.5" });
345
- }
346
- if (node.source === "lifeops") {
347
- if (node.id === "lifeops:gmail")
348
- return _jsx(Mail, { className: "h-3.5 w-3.5" });
349
- if (node.id === "lifeops:signal")
350
- return _jsx(Signal, { className: "h-3.5 w-3.5" });
351
- if (node.id === "lifeops:github") {
352
- return _jsx(GitBranch, { className: "h-3.5 w-3.5" });
353
- }
354
- }
355
- if (node.class === "agent") {
356
- return _jsx(SquareTerminal, { className: "h-3.5 w-3.5" });
357
- }
358
- if (node.class === "integration") {
359
- return _jsx(Workflow, { className: "h-3.5 w-3.5" });
360
- }
361
- if (node.class === "context") {
362
- return _jsx(Settings, { className: "h-3.5 w-3.5" });
363
- }
364
- if (node.class === "trigger") {
365
- return _jsx(Clock3, { className: "h-3.5 w-3.5" });
366
- }
367
- return _jsx(Zap, { className: "h-3.5 w-3.5" });
368
- }
369
- function useAutomationsViewController() {
370
- const { triggers = [], triggersLoaded = false, triggersLoading = false, triggersSaving = false, triggerRunsById = {}, triggerError = null, loadTriggers = async () => { }, createTrigger = async () => null, updateTrigger = async () => null, deleteTrigger = async () => true, runTriggerNow = async () => true, loadTriggerRuns = async () => { }, loadTriggerHealth = async () => { }, ensureTriggersLoaded = async () => {
371
- await loadTriggers(triggersLoaded ? { silent: true } : undefined);
372
- }, t, uiLanguage, } = useApp();
373
- const [taskError, setTaskError] = useState(null);
374
- const [taskSaving, setTaskSaving] = useState(false);
375
- const [form, setForm] = useState(emptyForm);
376
- const [editingId, setEditingId] = useState(null);
377
- const [selectedItemId, setSelectedItemId] = useState(null);
378
- const [selectedItemKind, setSelectedItemKind] = useState(null);
379
- const [formError, setFormError] = useState(null);
380
- const [editorOpen, setEditorOpen] = useState(false);
381
- const [editorMode, setEditorMode] = useState("trigger");
382
- const [userTemplates, setUserTemplates] = useState(loadUserTemplates);
383
- const [templateNotice, setTemplateNotice] = useState(null);
384
- const [taskFormName, setTaskFormName] = useState("");
385
- const [taskFormDescription, setTaskFormDescription] = useState("");
386
- const [editingTaskId, setEditingTaskId] = useState(null);
387
- const [filter, setFilter] = useState("all");
388
- const [automationItems, setAutomationItems] = useState([]);
389
- const [automationNodes, setAutomationNodes] = useState([]);
390
- const [automationsLoading, setAutomationsLoading] = useState(false);
391
- const [automationsLoaded, setAutomationsLoaded] = useState(false);
392
- const [automationsError, setAutomationsError] = useState(null);
393
- const [n8nStatus, setN8nStatus] = useState(null);
394
- const [workflowFetchError, setWorkflowFetchError] = useState(null);
395
- const didBootstrapDataRef = useRef(false);
396
- const lastSelectedIdRef = useRef(null);
397
- const refreshAutomations = useCallback(async () => {
398
- setAutomationsLoading(true);
399
- try {
400
- const [automationData, nodeCatalog] = await Promise.all([
401
- client.listAutomations(),
402
- client.getAutomationNodeCatalog(),
403
- ]);
404
- setAutomationItems(automationData.automations ?? []);
405
- setAutomationNodes(nodeCatalog.nodes ?? []);
406
- setN8nStatus(automationData.n8nStatus ?? null);
407
- setWorkflowFetchError(automationData.workflowFetchError ?? null);
408
- setAutomationsError(null);
409
- return automationData;
410
- }
411
- catch (error) {
412
- setAutomationsError(error instanceof Error
413
- ? error.message
414
- : t("automations.loadFailed", {
415
- defaultValue: "Failed to load automations.",
416
- }));
417
- return null;
418
- }
419
- finally {
420
- setAutomationsLoaded(true);
421
- setAutomationsLoading(false);
422
- }
423
- }, [t]);
424
- const createWorkbenchTask = useCallback(async (data) => {
425
- setTaskSaving(true);
426
- try {
427
- const res = await client.createWorkbenchTask(data);
428
- setTaskError(null);
429
- await refreshAutomations();
430
- return res.task;
431
- }
432
- catch (error) {
433
- setTaskError(error instanceof Error
434
- ? error.message
435
- : t("automations.taskCreateFailed", {
436
- defaultValue: "Failed to create task.",
437
- }));
438
- return null;
439
- }
440
- finally {
441
- setTaskSaving(false);
442
- }
443
- }, [refreshAutomations, t]);
444
- const updateWorkbenchTask = useCallback(async (id, data) => {
445
- setTaskSaving(true);
446
- try {
447
- const res = await client.updateWorkbenchTask(id, data);
448
- setTaskError(null);
449
- await refreshAutomations();
450
- return res.task;
451
- }
452
- catch (error) {
453
- setTaskError(error instanceof Error
454
- ? error.message
455
- : t("automations.taskUpdateFailed", {
456
- defaultValue: "Failed to update task.",
457
- }));
458
- return null;
459
- }
460
- finally {
461
- setTaskSaving(false);
462
- }
463
- }, [refreshAutomations, t]);
464
- const deleteWorkbenchTask = useCallback(async (id) => {
465
- setTaskSaving(true);
466
- try {
467
- await client.deleteWorkbenchTask(id);
468
- setTaskError(null);
469
- await refreshAutomations();
470
- return true;
471
- }
472
- catch (error) {
473
- setTaskError(error instanceof Error
474
- ? error.message
475
- : t("automations.taskDeleteFailed", {
476
- defaultValue: "Failed to delete task.",
477
- }));
478
- return false;
479
- }
480
- finally {
481
- setTaskSaving(false);
482
- }
483
- }, [refreshAutomations, t]);
484
- const saveFormAsTemplate = useCallback(() => {
485
- const name = form.displayName.trim();
486
- if (!name)
487
- return;
488
- const template = {
489
- id: `user_${Date.now()}_${Math.random().toString(36).slice(2, 6)}`,
490
- name,
491
- instructions: form.instructions.trim(),
492
- interval: form.durationValue || "1",
493
- unit: form.durationUnit,
494
- };
495
- setUserTemplates((previous) => {
496
- const next = [...previous, template];
497
- saveUserTemplates(next);
498
- return next;
499
- });
500
- }, [form]);
501
- const deleteUserTemplate = useCallback((id) => {
502
- setUserTemplates((previous) => {
503
- const next = previous.filter((template) => template.id !== id);
504
- saveUserTemplates(next);
505
- return next;
506
- });
507
- }, []);
508
- useEffect(() => {
509
- if (didBootstrapDataRef.current)
510
- return;
511
- didBootstrapDataRef.current = true;
512
- void loadTriggerHealth();
513
- void ensureTriggersLoaded();
514
- void refreshAutomations();
515
- }, [ensureTriggersLoaded, loadTriggerHealth, refreshAutomations]);
516
- useEffect(() => {
517
- const handler = (event) => {
518
- const detail = event
519
- .detail;
520
- if (detail?.filter) {
521
- setFilter(detail.filter);
522
- }
523
- };
524
- window.addEventListener("milady:automations:setFilter", handler);
525
- return () => window.removeEventListener("milady:automations:setFilter", handler);
526
- }, []);
527
- const allItems = automationItems;
528
- const filteredItems = useMemo(() => {
529
- switch (filter) {
530
- case "coordinator":
531
- return allItems.filter((item) => item.type === "coordinator_text");
532
- case "workflows":
533
- return allItems.filter((item) => item.type === "n8n_workflow");
534
- case "scheduled":
535
- return allItems.filter((item) => item.schedules.length > 0);
536
- default:
537
- return allItems;
538
- }
539
- }, [allItems, filter]);
540
- useEffect(() => {
541
- if (!selectedItemId)
542
- return;
543
- // Exempt in-flight workflow drafts — they're not in allItems until
544
- // generateWorkflowFromPrompt finishes and refreshAutomations
545
- // surfaces the real workflow. Without this exemption the draft
546
- // selection gets cleared mid-generation, the auto-select effect
547
- // below picks lastSelectedIdRef (typically a task like Heartbeat),
548
- // and the user lands somewhere unexpected — defeating the
549
- // WorkflowGenerationProgress UI we just added on the draft pane.
550
- if (selectedItemId.startsWith("workflow-draft:"))
551
- return;
552
- if (!allItems.some((item) => item.id === selectedItemId)) {
553
- setSelectedItemId(null);
554
- setSelectedItemKind(null);
555
- }
556
- }, [allItems, selectedItemId]);
557
- useEffect(() => {
558
- if (selectedItemId) {
559
- lastSelectedIdRef.current = selectedItemId;
560
- }
561
- }, [selectedItemId]);
562
- useEffect(() => {
563
- if (editorOpen ||
564
- editingId ||
565
- editingTaskId ||
566
- selectedItemId ||
567
- allItems.length === 0) {
568
- return;
569
- }
570
- const preferred = lastSelectedIdRef.current;
571
- if (!preferred)
572
- return;
573
- const item = allItems.find((candidate) => candidate.id === preferred);
574
- if (!item)
575
- return;
576
- setSelectedItemId(preferred);
577
- setSelectedItemKind(getSelectionKind(item));
578
- }, [allItems, editingId, editingTaskId, editorOpen, selectedItemId]);
579
- useEffect(() => {
580
- if (!editorOpen)
581
- return undefined;
582
- const onKeyDown = (event) => {
583
- if (event.key === "Escape") {
584
- setEditorOpen(false);
585
- setEditingId(null);
586
- setEditingTaskId(null);
587
- setForm(emptyForm);
588
- setFormError(null);
589
- setTaskFormName("");
590
- setTaskFormDescription("");
591
- }
592
- };
593
- window.addEventListener("keydown", onKeyDown);
594
- return () => window.removeEventListener("keydown", onKeyDown);
595
- }, [editorOpen]);
596
- // When the LifeOps chat-sidebar Automations widget row is clicked, it
597
- // writes `#automations.trigger=<id>` and `setTab("automations")`s over.
598
- // Read the hash on mount and on any hashchange to focus that trigger.
599
- useEffect(() => {
600
- function applyHash() {
601
- const hashTriggerId = readAutomationsTriggerFromHash();
602
- if (!hashTriggerId)
603
- return;
604
- const nextId = `trigger:${hashTriggerId}`;
605
- setSelectedItemId((prev) => (prev === nextId ? prev : nextId));
606
- setSelectedItemKind("trigger");
607
- }
608
- applyHash();
609
- window.addEventListener("hashchange", applyHash);
610
- return () => window.removeEventListener("hashchange", applyHash);
611
- }, []);
612
- const resetEditor = () => {
613
- setForm(emptyForm);
614
- setEditingId(null);
615
- setEditingTaskId(null);
616
- setFormError(null);
617
- setTaskFormName("");
618
- setTaskFormDescription("");
619
- };
620
- const closeEditor = () => {
621
- setEditorOpen(false);
622
- resetEditor();
623
- };
624
- const openCreateTrigger = () => {
625
- resetEditor();
626
- setEditorMode("trigger");
627
- setEditorOpen(true);
628
- };
629
- const openCreateTask = () => {
630
- openCreateTrigger();
631
- };
632
- const openEditTrigger = (trigger) => {
633
- setEditingId(trigger.id);
634
- setForm(formFromTrigger(trigger));
635
- setFormError(null);
636
- setSelectedItemId(`trigger:${trigger.id}`);
637
- setSelectedItemKind("trigger");
638
- setEditorMode("trigger");
639
- setEditorOpen(true);
640
- };
641
- const openEditTask = (task) => {
642
- setEditingTaskId(task.id);
643
- setTaskFormName(task.name);
644
- setTaskFormDescription(task.description);
645
- setSelectedItemId(`task:${task.id}`);
646
- setSelectedItemKind("task");
647
- setEditorMode("task");
648
- setEditorOpen(true);
649
- };
650
- const setField = (key, value) => setForm((previous) => ({ ...previous, [key]: value }));
651
- const onSubmitTrigger = async () => {
652
- const error = validateForm(form, t);
653
- if (error) {
654
- setFormError(error);
655
- return;
656
- }
657
- setFormError(null);
658
- if (editingId) {
659
- const updated = await updateTrigger(editingId, buildUpdateRequest(form));
660
- if (updated) {
661
- if (updated.kind === "workflow" && updated.workflowId) {
662
- setSelectedItemId(`workflow:${updated.workflowId}`);
663
- setSelectedItemKind("workflow");
664
- }
665
- else {
666
- setSelectedItemId(`trigger:${updated.id}`);
667
- setSelectedItemKind("trigger");
668
- }
669
- await refreshAutomations();
670
- closeEditor();
671
- }
672
- return;
673
- }
674
- const created = await createTrigger(buildCreateRequest(form));
675
- if (created) {
676
- if (created.kind === "workflow" && created.workflowId) {
677
- setSelectedItemId(`workflow:${created.workflowId}`);
678
- setSelectedItemKind("workflow");
679
- }
680
- else {
681
- setSelectedItemId(`trigger:${created.id}`);
682
- setSelectedItemKind("trigger");
683
- }
684
- void loadTriggerRuns(created.id);
685
- await refreshAutomations();
686
- closeEditor();
687
- }
688
- };
689
- const onSubmitTask = async () => {
690
- const name = taskFormName.trim();
691
- if (!name) {
692
- setFormError(t("automations.nameRequired", {
693
- defaultValue: "Name is required.",
694
- }));
695
- return;
696
- }
697
- setFormError(null);
698
- if (editingTaskId) {
699
- const updated = await updateWorkbenchTask(editingTaskId, {
700
- name,
701
- description: taskFormDescription.trim(),
702
- });
703
- if (updated) {
704
- setSelectedItemId(`task:${updated.id}`);
705
- setSelectedItemKind("task");
706
- closeEditor();
707
- }
708
- return;
709
- }
710
- const created = await createWorkbenchTask({
711
- name,
712
- description: taskFormDescription.trim(),
713
- });
714
- if (created) {
715
- setSelectedItemId(`task:${created.id}`);
716
- setSelectedItemKind("task");
717
- closeEditor();
718
- }
719
- };
720
- const onDeleteTrigger = async () => {
721
- if (!editingId)
722
- return;
723
- const confirmed = await confirmDesktopAction({
724
- title: t("heartbeatsview.deleteTitle"),
725
- message: t("heartbeatsview.deleteMessage", { name: form.displayName }),
726
- confirmLabel: t("common.delete"),
727
- cancelLabel: t("common.cancel"),
728
- type: "warning",
729
- });
730
- if (!confirmed)
731
- return;
732
- const deleted = await deleteTrigger(editingId);
733
- if (!deleted)
734
- return;
735
- if (selectedItemId === `trigger:${editingId}`) {
736
- setSelectedItemId(null);
737
- setSelectedItemKind(null);
738
- }
739
- await refreshAutomations();
740
- closeEditor();
741
- };
742
- const onDeleteTask = async (taskId) => {
743
- const confirmed = await confirmDesktopAction({
744
- title: t("automations.taskDeleteTitle", {
745
- defaultValue: "Delete task",
746
- }),
747
- message: t("automations.taskDeleteMessage", {
748
- defaultValue: "Are you sure you want to delete this task?",
749
- }),
750
- confirmLabel: t("common.delete"),
751
- cancelLabel: t("common.cancel"),
752
- type: "warning",
753
- });
754
- if (!confirmed)
755
- return;
756
- const deleted = await deleteWorkbenchTask(taskId);
757
- if (!deleted)
758
- return;
759
- if (selectedItemId === `task:${taskId}`) {
760
- setSelectedItemId(null);
761
- setSelectedItemKind(null);
762
- }
763
- if (editingTaskId === taskId) {
764
- closeEditor();
765
- }
766
- };
767
- const onRunSelectedTrigger = async (triggerId) => {
768
- setSelectedItemId(`trigger:${triggerId}`);
769
- setSelectedItemKind("trigger");
770
- await runTriggerNow(triggerId);
771
- await loadTriggerRuns(triggerId);
772
- await refreshAutomations();
773
- };
774
- const onToggleTriggerEnabled = async (triggerId, currentlyEnabled) => {
775
- const updated = await updateTrigger(triggerId, {
776
- enabled: !currentlyEnabled,
777
- });
778
- if (updated && editingId === updated.id) {
779
- setForm(formFromTrigger(updated));
780
- }
781
- await refreshAutomations();
782
- };
783
- const onToggleTaskCompleted = async (taskId, currentlyCompleted) => {
784
- await updateWorkbenchTask(taskId, {
785
- isCompleted: !currentlyCompleted,
786
- });
787
- };
788
- const resolvedSelectedItem = useMemo(() => {
789
- if (editorOpen || editingId || editingTaskId)
790
- return null;
791
- if (selectedItemId) {
792
- const found = allItems.find((item) => item.id === selectedItemId);
793
- if (found)
794
- return found;
795
- // In-flight workflow draft (createWorkflowDraft set selectedItemId
796
- // BEFORE refreshAutomations surfaced the real workflow). Synthesize
797
- // a minimal draft item so AutomationDraftPane renders with the
798
- // WorkflowGenerationProgress card during the LLM call.
799
- //
800
- // The `room` field is left null here. `activeWorkflowConversation`
801
- // — the live conversation tied to this draft — lives in
802
- // AutomationsLayout (a different scope from this controller hook),
803
- // so we cannot read it from here without a larger refactor.
804
- // Instead, handleDeleteDraft reads activeWorkflowConversation
805
- // directly and falls back to it when item.room is missing on a
806
- // synthesized draft (see the handler below).
807
- if (selectedItemId.startsWith("workflow-draft:")) {
808
- const draftId = selectedItemId.slice("workflow-draft:".length);
809
- const synthesized = {
810
- id: selectedItemId,
811
- type: "automation_draft",
812
- source: "workflow_draft",
813
- title: "New workflow",
814
- description: "",
815
- status: "draft",
816
- enabled: false,
817
- system: false,
818
- isDraft: true,
819
- hasBackingWorkflow: false,
820
- updatedAt: null,
821
- draftId,
822
- schedules: [],
823
- room: null,
824
- };
825
- return synthesized;
826
- }
827
- return null;
828
- }
829
- return allItems[0] ?? null;
830
- }, [allItems, editingId, editingTaskId, editorOpen, selectedItemId]);
831
- const modalTitle = editorMode === "trigger"
832
- ? form.kind === "workflow"
833
- ? editingId
834
- ? `Edit ${form.displayName.trim() || "schedule"}`
835
- : "New schedule"
836
- : editingId
837
- ? t("heartbeatsview.editTitle", {
838
- name: form.displayName.trim() ||
839
- t("automations.taskLabel", {
840
- defaultValue: "Task",
841
- }),
842
- defaultValue: "Edit {{name}}",
843
- })
844
- : t("automations.newTask", {
845
- defaultValue: "New task",
846
- })
847
- : editingTaskId
848
- ? t("automations.editTask", {
849
- defaultValue: "Edit task",
850
- })
851
- : t("automations.newTextTask", {
852
- defaultValue: "New text task",
853
- });
854
- const editorEnabled = editingId != null
855
- ? (triggers.find((trigger) => trigger.id === editingId)?.enabled ??
856
- form.enabled)
857
- : form.enabled;
858
- const hasItems = allItems.length > 0;
859
- const isLoading = triggersLoading || automationsLoading;
860
- const combinedError = automationsError || triggerError || taskError;
861
- const showFirstRunEmptyState = !isLoading && !combinedError && !hasItems;
862
- const showDetailPane = Boolean(editorOpen || editingId || editingTaskId || resolvedSelectedItem);
863
- return {
864
- filter,
865
- setFilter,
866
- allItems,
867
- filteredItems,
868
- selectedItemId,
869
- selectedItemKind,
870
- setSelectedItemId,
871
- setSelectedItemKind,
872
- resolvedSelectedItem,
873
- form,
874
- setForm,
875
- setField,
876
- editingId,
877
- setEditingId,
878
- editorOpen,
879
- setEditorOpen,
880
- editorMode,
881
- setEditorMode,
882
- formError,
883
- setFormError,
884
- editorEnabled,
885
- modalTitle,
886
- templateNotice,
887
- setTemplateNotice,
888
- userTemplates,
889
- taskFormName,
890
- setTaskFormName,
891
- taskFormDescription,
892
- setTaskFormDescription,
893
- editingTaskId,
894
- setEditingTaskId,
895
- taskSaving,
896
- closeEditor,
897
- openCreateTrigger,
898
- openCreateTask,
899
- openEditTrigger,
900
- openEditTask,
901
- onSubmitTrigger,
902
- onSubmitTask,
903
- onDeleteTrigger,
904
- onDeleteTask,
905
- onRunSelectedTrigger,
906
- onToggleTriggerEnabled,
907
- onToggleTaskCompleted,
908
- saveFormAsTemplate,
909
- deleteUserTemplate,
910
- loadTriggerRuns,
911
- refreshAutomations,
912
- automationNodes,
913
- automationsLoading,
914
- automationsLoaded,
915
- automationsError,
916
- n8nStatus,
917
- workflowFetchError,
918
- triggers,
919
- triggerRunsById,
920
- triggersSaving,
921
- triggersLoading,
922
- triggerError,
923
- taskError,
924
- hasItems,
925
- isLoading,
926
- combinedError,
927
- showFirstRunEmptyState,
928
- showDetailPane,
929
- t,
930
- uiLanguage,
931
- };
932
- }
933
- const AutomationsViewContext = createContext(null);
934
- function useAutomationsViewContext() {
935
- const context = useContext(AutomationsViewContext);
936
- if (!context) {
937
- throw new Error("Automations view context is unavailable.");
938
- }
939
- return context;
940
- }
941
- function AutomationCollapsibleSection({ sectionKey, label, icon, count, collapsed, onToggleCollapsed, onAdd, addLabel, emptyLabel, children, }) {
942
- const Chevron = collapsed ? ChevronRight : ChevronDown;
943
- return (_jsxs("section", { "data-testid": `automation-section-${sectionKey}`, className: "group/section space-y-0", children: [_jsxs("div", { className: "flex items-center gap-1", children: [_jsxs("button", { type: "button", onClick: () => onToggleCollapsed(sectionKey), "aria-expanded": !collapsed, className: "inline-flex min-w-0 flex-1 items-center gap-1.5 rounded-[var(--radius-sm)] bg-transparent px-1.5 py-1 text-left text-2xs font-semibold uppercase tracking-[0.16em] text-muted transition-colors hover:text-txt", children: [_jsx("span", { className: "inline-flex shrink-0 items-center justify-center text-muted", children: icon }), _jsx("span", { className: "truncate", children: label }), _jsx(Chevron, { "aria-hidden": true, className: "ml-auto h-3 w-3 shrink-0 text-muted" })] }), onAdd ? (_jsx("button", { type: "button", onClick: onAdd, "aria-label": addLabel ?? "Add", title: addLabel, className: "inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-[var(--radius-sm)] bg-transparent text-muted transition-colors hover:text-txt", children: _jsx(Plus, { className: "h-3.5 w-3.5", "aria-hidden": true }) })) : null] }), collapsed ? null : count === 0 ? (_jsx("div", { className: "py-1 pl-8 pr-1 text-2xs text-muted/70", children: emptyLabel })) : (_jsx("div", { className: "space-y-0 pl-3 pr-0.5", children: children }))] }));
944
- }
945
- function getWorkflowTemplates(t) {
946
- return [
947
- {
948
- id: "daily-email-digest",
949
- icon: Mail,
950
- title: t("automations.templates.emailDigest.title", {
951
- defaultValue: "Daily Email Digest",
952
- }),
953
- description: t("automations.templates.emailDigest.desc", {
954
- defaultValue: "Summarize your inbox each morning and post to Slack.",
955
- }),
956
- seedPrompt: t("automations.templates.emailDigest.prompt", {
957
- defaultValue: "Every weekday at 9am, read my Gmail inbox from the last 24 hours, summarize the important messages, and post the summary to my #daily channel in Slack.",
958
- }),
959
- },
960
- {
961
- id: "slack-discord-bridge",
962
- icon: Share2,
963
- title: "Slack \u2194 Discord Bridge",
964
- description: "Cross-post messages between Slack and Discord channels.",
965
- seedPrompt: "Whenever a message is posted in the #announcements channel in Slack, forward it to the #general channel in Discord.",
966
- },
967
- {
968
- id: "rss-to-summary",
969
- icon: Rss,
970
- title: "RSS to Summary",
971
- description: "Poll an RSS feed and summarize new articles via email.",
972
- seedPrompt: "Check my RSS feed https://example.com/feed.xml every hour. For each new article, generate a 3-sentence summary and email it to me.",
973
- },
974
- {
975
- id: "calendar-to-slack",
976
- icon: Calendar,
977
- title: "Calendar to Slack",
978
- description: "Post your day's agenda to Slack each morning.",
979
- seedPrompt: "Every weekday at 8am, read today's events from my Google Calendar and post a formatted agenda to my #daily-standup channel in Slack.",
980
- },
981
- {
982
- id: "github-issue-triage",
983
- icon: GitBranch,
984
- title: "GitHub Issue Triage",
985
- description: "Auto-classify and label new GitHub issues.",
986
- seedPrompt: "When a new issue is opened on my GitHub repo, classify it (bug/feature/question/docs), add the matching label, and post a welcoming comment.",
987
- },
988
- {
989
- id: "email-to-notion",
990
- icon: FileText,
991
- title: "Email \u2192 Notion",
992
- description: "Turn tagged emails into Notion pages.",
993
- seedPrompt: "When I receive a Gmail message labeled 'Task', extract the key details and create a new page in my Notion 'Inbox' database with the subject as the title and body as content.",
994
- },
995
- ];
996
- }
997
- function WorkflowTemplatesModal({ open, onOpenChange, onSelectTemplate, onSelectCustom, }) {
998
- const { t } = useAutomationsViewContext();
999
- const templates = getWorkflowTemplates(t);
1000
- return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "w-[min(calc(100vw_-_1.5rem),56rem)] max-w-none", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: t("automations.templatesModalTitle", {
1001
- defaultValue: "Start with a template",
1002
- }) }), _jsx(DialogDescription, { children: t("automations.templatesModalSubtitle", {
1003
- defaultValue: "Pick a workflow to customize, or start blank.",
1004
- }) })] }), _jsxs("div", { className: "grid gap-3 overflow-y-auto pr-1 sm:grid-cols-2 max-h-[min(32rem,calc(100dvh_-_12rem))]", children: [templates.map((template) => {
1005
- const Icon = template.icon;
1006
- return (_jsxs("div", { className: "flex flex-col gap-3 rounded-xl border border-border/40 bg-bg/30 p-4 hover:border-accent/30 hover:bg-accent/5 transition-colors", children: [_jsxs("div", { className: "flex items-start gap-3", children: [_jsx("div", { className: "mt-0.5 rounded-lg bg-accent/10 p-2 text-accent shrink-0", children: _jsx(Icon, { className: "h-4 w-4" }) }), _jsxs("div", { className: "min-w-0 flex-1 space-y-1", children: [_jsx("div", { className: "text-sm font-semibold text-txt", children: template.title }), _jsx("p", { className: "text-sm text-muted leading-snug", children: template.description })] })] }), _jsx(Button, { variant: "outline", size: "sm", className: "self-end h-7 px-3 text-xs", onClick: () => onSelectTemplate(template.seedPrompt), children: t("automations.templateUseButton", {
1007
- defaultValue: "Use template",
1008
- }) })] }, template.id));
1009
- }), _jsxs("div", { className: "flex flex-col gap-3 rounded-xl border border-dashed border-border/40 bg-transparent p-4 hover:border-accent/30 hover:bg-accent/5 transition-colors", children: [_jsxs("div", { className: "flex items-start gap-3", children: [_jsx("div", { className: "mt-0.5 rounded-lg bg-muted/10 p-2 text-muted shrink-0", children: _jsx(Plus, { className: "h-4 w-4" }) }), _jsxs("div", { className: "min-w-0 flex-1 space-y-1", children: [_jsx("div", { className: "text-sm font-semibold text-txt", children: t("automations.templateCustom.title", {
1010
- defaultValue: "Custom",
1011
- }) }), _jsx("p", { className: "text-sm text-muted leading-snug", children: t("automations.templateCustom.desc", {
1012
- defaultValue: "Describe your own workflow in chat.",
1013
- }) })] })] }), _jsx(Button, { variant: "outline", size: "sm", className: "self-end h-7 px-3 text-xs", onClick: onSelectCustom, children: t("automations.templateUseButton", {
1014
- defaultValue: "Use template",
1015
- }) })] })] })] }) }));
1016
- }
1017
- function CreateAutomationDialog({ open, onOpenChange, onCreateTask, onCreateWorkflow, onDescribeAutomation, }) {
1018
- return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "w-[min(calc(100vw_-_1.5rem),34rem)] max-w-none", children: [_jsx(DialogHeader, { children: _jsx(DialogTitle, { children: "Create automation" }) }), _jsx(AutomationCommandBar, { autoFocus: true, onSubmit: async (prompt) => {
1019
- await onDescribeAutomation(prompt);
1020
- onOpenChange(false);
1021
- } }), _jsxs("div", { className: "grid gap-3 sm:grid-cols-2", children: [_jsx("button", { type: "button", onClick: onCreateTask, className: "rounded-xl border border-border/30 bg-bg/30 p-4 text-left transition-colors hover:border-accent/40 hover:bg-accent/5", children: _jsx("div", { className: "text-sm font-semibold text-txt", children: "Task" }) }), _jsx("button", { type: "button", onClick: onCreateWorkflow, className: "rounded-xl border border-border/30 bg-bg/30 p-4 text-left transition-colors hover:border-accent/40 hover:bg-accent/5", children: _jsx("div", { className: "text-sm font-semibold text-txt", children: "Workflow" }) })] })] }) }));
1022
- }
1023
- // ---------------------------------------------------------------------------
1024
- // Zero-state onboarding CTA (Item 9)
1025
- // ---------------------------------------------------------------------------
1026
- function AutomationsZeroState({ onBrowseTemplates, onNewTrigger, onNewTask, }) {
1027
- const { t } = useAutomationsViewContext();
1028
- return (_jsx("div", { className: "flex min-h-0 flex-1 items-center justify-center px-8 py-12", children: _jsxs(PagePanel, { variant: "padded", className: "w-full max-w-lg text-center space-y-5", children: [_jsx("div", { className: "flex justify-center", children: _jsx("div", { className: "rounded-2xl bg-accent/10 p-4 text-accent", children: _jsx(Zap, { className: "h-8 w-8" }) }) }), _jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "text-xl font-semibold text-txt", children: t("automations.zeroState.title", {
1029
- defaultValue: "What would you like your agent to do?",
1030
- }) }), _jsx("p", { className: "text-sm text-muted leading-relaxed", children: t("automations.zeroState.subtitle", {
1031
- defaultValue: "I can build workflows for you, run prompts on a schedule, or keep a checklist of tasks.",
1032
- }) })] }), _jsxs("div", { className: "flex flex-wrap justify-center gap-2 pt-1", children: [_jsx(Button, { variant: "default", size: "sm", className: "h-8 gap-1.5 px-4 text-sm", onClick: onBrowseTemplates, children: t("automations.zeroState.browseTemplates", {
1033
- defaultValue: "Browse templates \u2192",
1034
- }) }), _jsxs(Button, { variant: "outline", size: "sm", className: "h-8 gap-1.5 px-3 text-sm", onClick: onNewTrigger, children: [_jsx(Clock3, { className: "h-3.5 w-3.5" }), t("automations.newTriggerButton", {
1035
- defaultValue: "+ New trigger",
1036
- })] }), _jsxs(Button, { variant: "outline", size: "sm", className: "h-8 gap-1.5 px-3 text-sm", onClick: onNewTask, children: [_jsx(SquareTerminal, { className: "h-3.5 w-3.5" }), t("automations.newTaskButton", { defaultValue: "+ New task" })] })] })] }) }));
1037
- }
1038
- function TaskForm() {
1039
- const { taskFormName, setTaskFormName, taskFormDescription, setTaskFormDescription, editingTaskId, formError, taskSaving, onSubmitTask, onDeleteTask, closeEditor, modalTitle, t, } = useAutomationsViewContext();
1040
- return (_jsxs(PagePanel, { variant: "padded", className: "space-y-5", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h3", { className: "text-lg font-semibold text-txt", children: modalTitle }), _jsx(Button, { variant: "ghost", size: "sm", onClick: closeEditor, children: t("common.cancel") })] }), formError && (_jsx("div", { className: "rounded-lg border border-danger/20 bg-danger/10 p-3 text-sm text-danger", children: formError })), _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { children: [_jsx(FieldLabel, { children: "Task name" }), _jsx(Input, { value: taskFormName, onChange: (event) => setTaskFormName(event.target.value), placeholder: "Task name...", autoFocus: true })] }), _jsxs("div", { children: [_jsx(FieldLabel, { children: "Prompt" }), _jsx(Textarea, { value: taskFormDescription, onChange: (event) => setTaskFormDescription(event.target.value), placeholder: "What should this task do?", rows: 4 })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Button, { variant: "default", size: "sm", disabled: taskSaving || !taskFormName.trim(), onClick: () => void onSubmitTask(), children: editingTaskId
1041
- ? t("automations.saveTask", {
1042
- defaultValue: "Save task",
1043
- })
1044
- : t("automations.createTask", {
1045
- defaultValue: "Create task",
1046
- }) }), editingTaskId && (_jsx(Button, { variant: "outline", size: "sm", className: "border-danger/30 text-danger hover:bg-danger/10", onClick: () => void onDeleteTask(editingTaskId), children: t("common.delete") }))] })] }));
1047
- }
1048
- function WorkflowRuntimeNotice({ status, workflowFetchError, busy, onRefresh, onStartLocal, }) {
1049
- // Auto-start kicks the local sidecar at runtime boot. While it is
1050
- // starting (or briefly stopped before the first tick), suppress the
1051
- // alarm UI — the fetch error is expected and resolves itself.
1052
- const isAutoStarting = status?.mode === "local" &&
1053
- (status.status === "starting" || status.status === "stopped");
1054
- if (!status && !workflowFetchError) {
1055
- return null;
1056
- }
1057
- if (status?.mode === "disabled") {
1058
- return (_jsxs("div", { className: "mb-2 flex items-center justify-between gap-3 rounded-[var(--radius-sm)] border border-border/25 bg-bg/30 px-3 py-1.5 text-xs-tight", children: [_jsx("span", { className: "text-muted", children: "Workflow deploy requires n8n. Text tasks still work without it." }), status.platform !== "mobile" && (_jsx("button", { type: "button", disabled: busy, onClick: onStartLocal, className: "text-2xs font-semibold uppercase tracking-[0.12em] text-accent hover:text-accent/80 disabled:opacity-50", children: "Enable" }))] }));
1059
- }
1060
- if (isAutoStarting) {
1061
- return (_jsxs("div", { className: "mb-2 flex items-center gap-2 px-3 py-1 text-2xs text-muted/70", children: [_jsx("span", { className: "inline-block h-1.5 w-1.5 animate-pulse rounded-full bg-warning" }), _jsx("span", { children: "Starting local n8n\u2026" })] }));
1062
- }
1063
- if (workflowFetchError) {
1064
- return (_jsxs("div", { className: "mb-2 flex items-center justify-between gap-3 rounded-[var(--radius-sm)] border border-danger/25 bg-danger/5 px-3 py-1.5 text-xs-tight", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx("span", { className: "inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-danger" }), _jsx("span", { className: "truncate text-danger/90", children: workflowFetchError })] }), _jsxs("div", { className: "flex items-center gap-3", children: [status?.mode === "local" && status.status !== "ready" && (_jsx("button", { type: "button", disabled: busy, onClick: onStartLocal, className: "text-2xs font-semibold uppercase tracking-[0.12em] text-danger hover:text-danger/80 disabled:opacity-50", children: "Restart" })), _jsx("button", { type: "button", disabled: busy, onClick: onRefresh, className: "text-2xs font-semibold uppercase tracking-[0.12em] text-muted hover:text-txt disabled:opacity-50", children: "Refresh" })] })] }));
1065
- }
1066
- if (status?.mode === "local" && status.status === "error") {
1067
- return (_jsxs("div", { className: "mb-2 flex items-center justify-between gap-3 rounded-[var(--radius-sm)] border border-danger/25 bg-danger/5 px-3 py-1.5 text-xs-tight", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx("span", { className: "inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-danger" }), _jsx("span", { className: "text-danger/90", children: "Local n8n failed to start." })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("button", { type: "button", disabled: busy, onClick: onStartLocal, className: "text-2xs font-semibold uppercase tracking-[0.12em] text-danger hover:text-danger/80 disabled:opacity-50", children: "Retry" }), _jsx("button", { type: "button", disabled: busy, onClick: onRefresh, className: "text-2xs font-semibold uppercase tracking-[0.12em] text-muted hover:text-txt disabled:opacity-50", children: "Refresh" })] })] }));
1068
- }
1069
- if (status?.mode === "cloud" && status.cloudHealth === "degraded") {
1070
- return (_jsxs("div", { className: "mb-2 flex items-center justify-between gap-3 rounded-[var(--radius-sm)] border border-warning/25 bg-warning/5 px-3 py-1.5 text-xs-tight", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx("span", { className: "inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-warning" }), _jsx("span", { className: "text-warning", children: "Eliza Cloud workflow gateway is degraded." })] }), _jsx("button", { type: "button", disabled: busy, onClick: onRefresh, className: "text-2xs font-semibold uppercase tracking-[0.12em] text-muted hover:text-txt disabled:opacity-50", children: "Refresh" })] }));
1071
- }
1072
- return null;
1073
- }
1074
- function AutomationNodePalette({ nodes, title, }) {
1075
- const groupedNodes = useMemo(() => NODE_CLASS_ORDER.map((className) => ({
1076
- className,
1077
- nodes: nodes.filter((node) => node.class === className),
1078
- })).filter((group) => group.nodes.length > 0), [nodes]);
1079
- const enabledCount = nodes.filter((n) => n.availability === "enabled").length;
1080
- const disabledCount = nodes.filter((n) => n.availability === "disabled").length;
1081
- return (_jsxs("section", { className: "rounded-[var(--radius-sm)] border border-border/25 bg-bg/20", children: [_jsxs("div", { className: "flex items-center justify-between gap-2 border-b border-border/20 px-3 py-1.5", children: [_jsxs("div", { className: "flex items-center gap-2 text-2xs font-semibold uppercase tracking-[0.14em] text-muted", children: [_jsx("span", { children: title }), _jsx("span", { className: "text-muted/50", children: nodes.length })] }), _jsxs("div", { className: "flex items-center gap-1.5 text-[10px] tabular-nums", children: [_jsx("span", { className: "text-ok", children: enabledCount }), _jsx("span", { className: "text-muted/40", children: "\u00B7" }), _jsx("span", { className: "text-warning", children: disabledCount })] })] }), _jsx("div", { className: "space-y-2 px-2 py-2", children: groupedNodes.map((group) => (_jsxs("div", { children: [_jsx("div", { className: "px-1 pb-1 text-[10px] font-semibold uppercase tracking-[0.12em] text-muted/60", children: getNodeClassLabel(group.className) }), _jsx("div", { className: "grid gap-1 sm:grid-cols-2 xl:grid-cols-3", children: group.nodes.map((node) => (_jsxs("div", { title: node.disabledReason || node.description || node.label, className: `flex items-center gap-2 rounded-[var(--radius-sm)] border px-2 py-1 text-xs-tight ${node.availability === "enabled"
1082
- ? "border-border/20 bg-bg/30"
1083
- : "border-warning/20 bg-warning/5"}`, children: [_jsx("span", { className: node.availability === "enabled"
1084
- ? "text-accent/80"
1085
- : "text-warning", children: getNodeIcon(node) }), _jsx("span", { className: "truncate text-txt", children: node.label }), node.ownerScoped && (_jsx("span", { className: "ml-auto text-[9px] uppercase tracking-wider text-muted/60", children: "owner" }))] }, node.id))) })] }, group.className))) })] }));
1086
- }
1087
- function AutomationNodeCatalogPane({ nodes, }) {
1088
- return _jsx(AutomationNodePalette, { nodes: nodes, title: "Nodes" });
1089
- }
1090
- function TaskAutomationDetailPane({ automation, onPromoteToWorkflow, }) {
1091
- const { openEditTask, onDeleteTask, onToggleTaskCompleted, setEditorOpen, setEditorMode, setTaskFormDescription, setTaskFormName, setEditingTaskId, setSelectedItemId, setSelectedItemKind, t, uiLanguage, } = useAutomationsViewContext();
1092
- const task = automation.task;
1093
- if (!task) {
1094
- return null;
1095
- }
1096
- const statusLabel = automation.system
1097
- ? "System"
1098
- : task.isCompleted
1099
- ? "Completed"
1100
- : "Open";
1101
- const statusTone = automation.system ? "muted" : task.isCompleted ? "muted" : "success";
1102
- const nextScheduledRun = automation.schedules
1103
- .filter(isTimeBasedTrigger)
1104
- .map((schedule) => schedule.nextRunAtMs ?? 0)
1105
- .filter((value) => value > 0)
1106
- .sort((left, right) => left - right)[0];
1107
- const taskTypeLabel = automation.system ? "Agent owned" : "Task";
1108
- return (_jsxs("div", { className: "space-y-4", children: [_jsx(DetailHeader, { icon: automation.system ? (_jsx(Settings, { className: "h-3.5 w-3.5", "aria-hidden": true })) : (_jsx(FileText, { className: "h-3.5 w-3.5", "aria-hidden": true })), title: getAutomationDisplayTitle(automation), description: automation.description ||
1109
- (automation.system ? "Internal manual task." : "Simple text task."), status: _jsx(DetailStatusIndicator, { label: statusLabel, tone: statusTone, dotOnly: !automation.system && !task.isCompleted }), actions: !automation.system ? (_jsxs(_Fragment, { children: [_jsx(IconAction, { label: task.isCompleted ? "Reopen" : "Complete", onClick: () => void onToggleTaskCompleted(task.id, task.isCompleted), icon: task.isCompleted ? (_jsx(Circle, { className: "h-3.5 w-3.5" })) : (_jsx(CheckCircle2, { className: "h-3.5 w-3.5" })), tone: task.isCompleted ? "ok" : undefined }), _jsx(IconAction, { label: "Duplicate", onClick: () => {
1110
- setTaskFormName(`${task.name} copy`);
1111
- setTaskFormDescription(task.description);
1112
- setEditingTaskId(null);
1113
- setEditorMode("task");
1114
- setSelectedItemId(null);
1115
- setSelectedItemKind(null);
1116
- setEditorOpen(true);
1117
- }, icon: _jsx(Copy, { className: "h-3.5 w-3.5" }) }), _jsx(IconAction, { label: "Compile to Workflow", onClick: () => void onPromoteToWorkflow(automation), icon: _jsx(GitBranch, { className: "h-3.5 w-3.5" }) }), _jsx(IconAction, { label: t("common.edit"), onClick: () => openEditTask(task), icon: _jsx(EditIcon, { className: "h-3.5 w-3.5" }) }), _jsx(IconAction, { label: t("common.delete"), onClick: () => void onDeleteTask(task.id), icon: _jsx(Trash2, { className: "h-3.5 w-3.5" }), tone: "danger" })] })) : null }), _jsxs("div", { className: "grid gap-2 sm:grid-cols-2 xl:grid-cols-4", children: [_jsx(OverviewMetricCard, { label: "Task type", value: taskTypeLabel, detail: automation.schedules.length > 0
1118
- ? formatScheduleCount(automation.schedules.length)
1119
- : "Run it manually" }), _jsx(OverviewMetricCard, { label: "Status", value: statusLabel, detail: task.isCompleted ? "Already completed" : "Still open", tone: task.isCompleted ? "default" : "ok" }), _jsx(OverviewMetricCard, { label: "Starts", value: nextScheduledRun
1120
- ? formatRelativeFuture(nextScheduledRun, t)
1121
- : "Manual", detail: nextScheduledRun
1122
- ? formatDateTime(nextScheduledRun, {
1123
- fallback: "—",
1124
- locale: uiLanguage,
1125
- })
1126
- : "Run it yourself or attach a schedule", tone: nextScheduledRun ? "ok" : "default" }), _jsx(OverviewMetricCard, { label: "Updated", value: formatRelativePast(automation.updatedAt, t), detail: formatDateTime(automation.updatedAt, { fallback: "—" }) })] }), _jsxs("div", { className: "grid gap-4 xl:grid-cols-[minmax(0,1.12fr)_minmax(320px,0.88fr)]", children: [_jsxs("div", { className: "space-y-4", children: [_jsx(DetailSection, { title: "Prompt", children: _jsx("div", { className: "min-h-[10rem] px-4 py-4 text-sm leading-relaxed text-muted/85 whitespace-pre-wrap", children: task.description || "Describe what this task should do." }) }), _jsx(DetailSection, { title: automation.schedules.length > 0 ? "Starts when" : "How it starts", children: automation.schedules.length > 0 ? (_jsx("div", { className: "divide-y divide-border/20", children: automation.schedules.map((schedule) => (_jsx(OverviewListItem, { title: schedule.displayName, meta: scheduleLabel(schedule, t, uiLanguage), detail: formatDateTime(schedule.nextRunAtMs ?? null, {
1127
- fallback: "No next run queued",
1128
- locale: uiLanguage,
1129
- }), trailing: schedule.enabled ? "Live" : "Paused", tone: schedule.enabled ? "success" : "muted" }, schedule.id))) })) : (_jsx("div", { className: "px-4 py-4 text-xs-tight text-muted/70", children: "This task is manual right now. Add a schedule if you want it to start on its own." })) })] }), _jsx("div", { className: "space-y-4", children: _jsx(DetailSection, { title: "Details", children: _jsx(DetailFactList, { items: [
1130
- {
1131
- label: "State",
1132
- value: task.isCompleted ? "Completed" : "Open",
1133
- },
1134
- {
1135
- label: "Source",
1136
- value: automation.system
1137
- ? "Internal checklist item"
1138
- : "Simple prompt task",
1139
- },
1140
- {
1141
- label: "Next run",
1142
- value: nextScheduledRun
1143
- ? formatDateTime(nextScheduledRun, {
1144
- fallback: "—",
1145
- locale: uiLanguage,
1146
- })
1147
- : "Manual",
1148
- },
1149
- {
1150
- label: "Tags",
1151
- value: task.tags.length > 0 ? (_jsx("div", { className: "flex flex-wrap justify-end gap-1", children: task.tags.map((tag) => (_jsx("span", { className: "rounded bg-bg/50 px-1.5 py-0.5 text-[10px] text-muted", children: tag }, tag))) })) : ("None"),
1152
- },
1153
- ] }) }) })] })] }));
1154
- }
1155
- const AUTOMATION_DRAFT_EXAMPLES = [
1156
- {
1157
- icon: Mail,
1158
- kind: "task",
1159
- label: "Daily inbox digest",
1160
- blurb: "A simple recurring prompt that keeps your morning brief tight.",
1161
- prompt: "Every weekday at 9am, summarize my Gmail inbox from the last 24 hours and post the summary to my #daily channel in Slack.",
1162
- },
1163
- {
1164
- icon: Clock3,
1165
- kind: "task",
1166
- label: "Hourly health check",
1167
- blurb: "A lightweight prompt that watches for anything stuck or failing.",
1168
- prompt: "Every hour, review recent activity, check that nothing is stuck or errored, and notify me if anything needs attention.",
1169
- },
1170
- {
1171
- icon: GitBranch,
1172
- kind: "workflow",
1173
- label: "GitHub issue triage",
1174
- blurb: "An event-driven pipeline that labels, routes, and replies.",
1175
- prompt: "When a new issue is opened on my GitHub repo, classify it (bug / feature / question / docs), add the matching label, and post a welcoming comment.",
1176
- },
1177
- {
1178
- icon: Share2,
1179
- kind: "workflow",
1180
- label: "Lead handoff",
1181
- blurb: "A cross-app flow that enriches, routes, and notifies.",
1182
- prompt: "When a new website lead arrives, enrich it, create the contact in my CRM, and post a summary to Slack for the team.",
1183
- },
1184
- ];
1185
- function OverviewIdeaGrid({ ideas, onSelect, }) {
1186
- return (_jsx("div", { className: "grid gap-1.5", children: ideas.map((idea) => {
1187
- const Icon = idea.icon;
1188
- return (_jsxs("button", { type: "button", onClick: () => onSelect(idea), className: "group flex items-start gap-2 rounded-[var(--radius-sm)] border border-border/25 bg-bg/30 px-3 py-2 text-left transition-colors hover:border-accent/40 hover:bg-accent/5", children: [_jsx(Icon, { className: "mt-0.5 h-3.5 w-3.5 shrink-0 text-accent/80", "aria-hidden": true }), _jsxs("div", { className: "min-w-0 flex-1 space-y-0.5", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "truncate text-xs-tight font-semibold text-txt", children: idea.label }), _jsx("span", { className: "rounded bg-bg/50 px-1.5 py-0.5 text-[10px] uppercase tracking-[0.12em] text-muted/70", children: idea.kind })] }), _jsx("div", { className: "text-[11px] leading-snug text-muted/70", children: idea.blurb })] })] }, idea.label));
1189
- }) }));
1190
- }
1191
- function AutomationCommandBar({ onSubmit, autoFocus = false, }) {
1192
- const [prompt, setPrompt] = useState("");
1193
- const [submitting, setSubmitting] = useState(false);
1194
- const submit = useCallback(async () => {
1195
- const trimmed = prompt.trim();
1196
- if (!trimmed || submitting)
1197
- return;
1198
- setSubmitting(true);
1199
- try {
1200
- await onSubmit(trimmed);
1201
- setPrompt("");
1202
- }
1203
- finally {
1204
- setSubmitting(false);
1205
- }
1206
- }, [onSubmit, prompt, submitting]);
1207
- return (_jsx("div", { className: "rounded-2xl border border-border/30 bg-bg/55 p-1.5 shadow-sm", children: _jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-center", children: [_jsx(Input, { value: prompt, onChange: (event) => setPrompt(event.target.value), onKeyDown: (event) => {
1208
- if (event.key === "Enter" && !event.shiftKey) {
1209
- event.preventDefault();
1210
- void submit();
1211
- }
1212
- }, placeholder: AUTOMATION_PROMPT_PLACEHOLDER, "aria-label": DESCRIBE_AUTOMATION_PROMPT, className: "min-h-11 flex-1 border-0 bg-transparent px-4 text-sm shadow-none focus-visible:ring-0", autoFocus: autoFocus }), _jsx(Button, { variant: "default", size: "sm", className: "h-10 shrink-0 rounded-xl px-4 text-sm", disabled: submitting || prompt.trim().length === 0, onClick: () => void submit(), children: submitting ? "Creating..." : "Create" })] }) }));
1213
- }
1214
- function AutomationStatusStrip({ entries, }) {
1215
- return (_jsx("div", { className: "flex flex-wrap gap-2", children: entries.map((entry) => (_jsxs("div", { className: "inline-flex items-center gap-2 rounded-full border border-border/25 bg-bg/40 px-2.5 py-1 text-xs", children: [_jsx(StatusDot, { tone: entry.tone }), _jsx("span", { className: "font-medium text-txt", children: entry.label }), _jsx("span", { className: "tabular-nums text-muted", children: entry.value })] }, entry.label))) }));
1216
- }
1217
- function formatRelativeFuture(targetMs, t) {
1218
- const delta = targetMs - Date.now();
1219
- if (delta <= 0)
1220
- return "now";
1221
- return `in ${formatDurationMs(delta, { t })}`;
1222
- }
1223
- function formatRelativePast(iso, t) {
1224
- if (!iso)
1225
- return "—";
1226
- const ts = typeof iso === "string" ? Date.parse(iso) : iso;
1227
- if (!Number.isFinite(ts))
1228
- return "—";
1229
- const delta = Date.now() - ts;
1230
- if (delta < 0)
1231
- return "now";
1232
- return `${formatDurationMs(delta, { t })} ago`;
1233
- }
1234
- function OverviewMetricCard({ label, value, detail, tone = "default", }) {
1235
- const valueClass = tone === "ok"
1236
- ? "text-ok"
1237
- : tone === "warning"
1238
- ? "text-warning"
1239
- : tone === "danger"
1240
- ? "text-danger"
1241
- : "text-txt";
1242
- return (_jsxs("div", { className: "rounded-xl border border-border/25 bg-bg/35 px-3 py-3 shadow-[inset_0_1px_0_rgba(255,255,255,0.04)]", children: [_jsx("div", { className: "text-[10px] font-semibold uppercase tracking-[0.14em] text-muted/70", children: label }), _jsx("div", { className: `mt-2 text-lg font-semibold leading-none ${valueClass}`, children: value }), _jsx("div", { className: "mt-2 text-[11px] leading-snug text-muted/70", children: detail })] }));
1243
- }
1244
- function OverviewListItem({ title, badge, meta, detail, trailing, tone = "muted", onClick, }) {
1245
- const content = (_jsxs("div", { className: "flex items-start gap-2", children: [_jsx(StatusDot, { tone: tone, className: "mt-1 shrink-0" }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "truncate font-medium text-txt", children: title }), badge ? (_jsx("span", { className: "rounded bg-bg/50 px-1.5 py-0.5 text-[10px] uppercase tracking-[0.12em] text-muted/70", children: badge })) : null, trailing ? (_jsx("span", { className: "ml-auto shrink-0 text-[11px] text-muted/70", children: trailing })) : null] }), meta ? (_jsx("div", { className: "mt-0.5 text-[11px] leading-snug text-muted/70", children: meta })) : null, detail ? (_jsx("div", { className: "mt-1 line-clamp-1 text-[11px] leading-snug text-muted/60", children: detail })) : null] })] }));
1246
- if (!onClick) {
1247
- return _jsx("div", { className: "px-3 py-2 text-xs-tight", children: content });
1248
- }
1249
- return (_jsx("button", { type: "button", onClick: onClick, className: "w-full px-3 py-2 text-left text-xs-tight transition-colors hover:bg-bg-muted/40", children: content }));
1250
- }
1251
- function AutomationsDashboard({ items, onSelectItem, onCreateTask, onCreateWorkflow, onDescribeAutomation, onUseIdea, }) {
1252
- const { t, uiLanguage } = useAutomationsViewContext();
1253
- const now = Date.now();
1254
- const visibleItems = useMemo(() => items.filter((item) => !item.system), [items]);
1255
- const scheduledEntries = useMemo(() => collectScheduledAutomationEntries(visibleItems), [visibleItems]);
1256
- const draftItems = useMemo(() => sortAutomationsByUpdatedAtDesc(visibleItems.filter((item) => item.isDraft)).slice(0, 4), [visibleItems]);
1257
- const taskHighlights = useMemo(() => sortAutomationsByUpdatedAtDesc(visibleItems.filter((item) => item.type !== "n8n_workflow")).slice(0, 6), [visibleItems]);
1258
- const workflowHighlights = useMemo(() => sortAutomationsByUpdatedAtDesc(visibleItems.filter((item) => item.type === "n8n_workflow")).slice(0, 6), [visibleItems]);
1259
- const liveItems = useMemo(() => sortAutomationsByUpdatedAtDesc(visibleItems.filter((item) => item.enabled && !item.isDraft)).slice(0, 5), [visibleItems]);
1260
- const recentItems = useMemo(() => sortAutomationsByUpdatedAtDesc(visibleItems).slice(0, 6), [visibleItems]);
1261
- const taskCount = visibleItems.filter((item) => item.type !== "n8n_workflow").length;
1262
- const workflowCount = visibleItems.filter((item) => item.type === "n8n_workflow").length;
1263
- const activeCount = visibleItems.filter((item) => item.enabled && !item.isDraft).length;
1264
- const activeScheduleCount = scheduledEntries.filter(({ schedule }) => schedule.enabled && isTimeBasedTrigger(schedule)).length;
1265
- const activeEventCount = scheduledEntries.filter(({ schedule }) => schedule.enabled && schedule.triggerType === "event").length;
1266
- const upcoming = useMemo(() => scheduledEntries
1267
- .filter(({ schedule }) => schedule.enabled &&
1268
- isTimeBasedTrigger(schedule) &&
1269
- typeof schedule.nextRunAtMs === "number" &&
1270
- schedule.nextRunAtMs > now)
1271
- .sort((a, b) => (a.schedule.nextRunAtMs ?? 0) - (b.schedule.nextRunAtMs ?? 0))
1272
- .slice(0, 6), [scheduledEntries, now]);
1273
- const failures = useMemo(() => scheduledEntries
1274
- .filter(({ schedule }) => toneForLastStatus(schedule.lastStatus) === "danger")
1275
- .slice(0, 5), [scheduledEntries]);
1276
- const taskIdeas = useMemo(() => AUTOMATION_DRAFT_EXAMPLES.filter((idea) => idea.kind === "task"), []);
1277
- const workflowIdeas = useMemo(() => AUTOMATION_DRAFT_EXAMPLES.filter((idea) => idea.kind === "workflow"), []);
1278
- const nextUpcoming = upcoming[0] ?? null;
1279
- const attentionEntries = useMemo(() => {
1280
- const next = failures.map(({ key, item, schedule }) => ({
1281
- key,
1282
- item,
1283
- tone: "danger",
1284
- title: getOverviewDisplayTitle(item),
1285
- groupLabel: getAutomationGroupLabel(item),
1286
- meta: scheduleLabel(schedule, t, uiLanguage),
1287
- detail: schedule.lastError?.trim() ||
1288
- `Last run ${formatRelativePast(schedule.lastRunAtIso, t)}.`,
1289
- trailing: formatRelativePast(schedule.lastRunAtIso, t),
1290
- }));
1291
- return next.slice(0, 6);
1292
- }, [failures, t, uiLanguage]);
1293
- const statusEntries = [
1294
- {
1295
- label: "Live",
1296
- value: activeCount,
1297
- tone: activeCount > 0 ? "success" : "muted",
1298
- },
1299
- {
1300
- label: "Timed",
1301
- value: activeScheduleCount,
1302
- tone: activeScheduleCount > 0 ? "success" : "muted",
1303
- },
1304
- {
1305
- label: "Events",
1306
- value: activeEventCount,
1307
- tone: activeEventCount > 0 ? "success" : "muted",
1308
- },
1309
- {
1310
- label: "Attention",
1311
- value: attentionEntries.length,
1312
- tone: attentionEntries.length > 0 ? "danger" : "success",
1313
- },
1314
- ];
1315
- if (taskCount === 0 && workflowCount === 0) {
1316
- return (_jsxs("div", { className: "space-y-4 px-1 pt-4", children: [_jsx("section", { className: "overflow-hidden rounded-xl border border-border/25 bg-[radial-gradient(circle_at_top_left,rgba(34,211,238,0.14),transparent_38%),radial-gradient(circle_at_top_right,rgba(34,197,94,0.12),transparent_32%),rgba(255,255,255,0.02)]", children: _jsxs("div", { className: "space-y-3 px-4 py-4 sm:px-5", children: [_jsxs("div", { className: "inline-flex items-center gap-2 rounded-full border border-border/25 bg-bg/40 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.14em] text-muted/70", children: [_jsx(LayoutDashboard, { className: "h-3 w-3", "aria-hidden": true }), "Overview"] }), _jsxs("div", { className: "space-y-1", children: [_jsx("h2", { className: "text-lg font-semibold text-txt", children: "Build your first automation" }), _jsx("p", { className: "text-xs-tight text-muted/80", children: "Workflows handle multi-step pipelines; tasks are simple prompts that run on a schedule or from an event." })] }), _jsx(AutomationCommandBar, { onSubmit: onDescribeAutomation, autoFocus: true }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Button, { variant: "default", size: "sm", onClick: onCreateTask, children: "New task" }), _jsx(Button, { variant: "outline", size: "sm", onClick: onCreateWorkflow, children: "New workflow" })] })] }) }), _jsxs("div", { className: "grid gap-3 xl:grid-cols-2", children: [_jsx(DetailSection, { title: "Task ideas", children: _jsx("div", { className: "p-2", children: _jsx(OverviewIdeaGrid, { ideas: taskIdeas, onSelect: (idea) => onUseIdea(idea) }) }) }), _jsx(DetailSection, { title: "Workflow ideas", children: _jsx("div", { className: "p-2", children: _jsx(OverviewIdeaGrid, { ideas: workflowIdeas, onSelect: (idea) => onUseIdea(idea) }) }) })] }), draftItems.length > 0 && (_jsx(DetailSection, { title: "Drafts in progress", children: _jsx("div", { className: "divide-y divide-border/20", children: draftItems.map((item) => (_jsx(OverviewListItem, { onClick: () => onSelectItem(item), title: getOverviewDisplayTitle(item), badge: "Draft", meta: formatRelativePast(item.updatedAt, t), detail: item.description.trim() ||
1317
- "Open it and keep shaping it in the sidebar agent.", tone: "warning" }, item.id))) }) }))] }));
1318
- }
1319
- return (_jsxs("div", { className: "space-y-4 px-1 pt-4", children: [_jsxs("section", { className: "grid gap-4 xl:grid-cols-[minmax(0,1.15fr)_minmax(320px,0.85fr)]", children: [_jsx("div", { className: "rounded-xl border border-border/25 bg-[radial-gradient(circle_at_top_left,rgba(34,197,94,0.1),transparent_34%),radial-gradient(circle_at_top_right,rgba(56,189,248,0.12),transparent_30%),rgba(255,255,255,0.02)] px-4 py-4 sm:px-5", children: _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "inline-flex items-center gap-2 rounded-full border border-border/25 bg-bg/40 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.14em] text-muted/70", children: [_jsx(LayoutDashboard, { className: "h-3 w-3", "aria-hidden": true }), "Overview"] }), _jsx(AutomationStatusStrip, { entries: statusEntries })] }), _jsx(AutomationCommandBar, { onSubmit: onDescribeAutomation }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: onCreateTask, children: "New task" }), _jsx(Button, { variant: "ghost", size: "sm", onClick: onCreateWorkflow, children: "New workflow" })] })] }) }), _jsx(DetailSection, { title: "Next up", className: "h-full", children: nextUpcoming?.schedule.nextRunAtMs ? (_jsxs("button", { type: "button", onClick: () => onSelectItem(nextUpcoming.item), className: "flex w-full flex-col gap-2 px-4 py-4 text-left transition-colors hover:bg-bg-muted/40", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(StatusDot, { tone: "success", className: "shrink-0" }), _jsx("span", { className: "truncate text-sm font-semibold text-txt", children: getOverviewDisplayTitle(nextUpcoming.item) }), _jsx("span", { className: "rounded bg-bg/50 px-1.5 py-0.5 text-[10px] uppercase tracking-[0.12em] text-muted/70", children: getAutomationGroupLabel(nextUpcoming.item) })] }), _jsx("div", { className: "pl-4 text-[11px] text-muted/70", children: scheduleLabel(nextUpcoming.schedule, t, uiLanguage) }), _jsxs("div", { className: "pl-4", children: [_jsx("div", { className: "text-lg font-semibold text-txt", children: formatRelativeFuture(nextUpcoming.schedule.nextRunAtMs, t) }), _jsx("div", { className: "mt-1 text-[11px] text-muted/70", children: formatDateTime(nextUpcoming.schedule.nextRunAtMs, {
1320
- fallback: "—",
1321
- locale: uiLanguage,
1322
- }) })] })] })) : (_jsxs("div", { className: "flex h-full min-h-[11.75rem] flex-col justify-between gap-3 px-4 py-4", children: [_jsx("div", { className: "space-y-1", children: _jsx("div", { className: "text-sm font-medium text-txt", children: "None queued." }) }), draftItems[0] ? (_jsx(Button, { variant: "outline", size: "sm", className: "w-fit", onClick: () => onSelectItem(draftItems[0]), children: "Continue draft" })) : null] })) })] }), attentionEntries.length > 0 ? (_jsx(DetailSection, { title: "Needs attention", children: _jsx("div", { className: "divide-y divide-border/20", children: attentionEntries.map((entry) => (_jsx(OverviewListItem, { onClick: () => onSelectItem(entry.item), title: entry.title, badge: entry.groupLabel, meta: entry.meta, detail: entry.detail, trailing: entry.trailing, tone: entry.tone }, entry.key))) }) })) : null, _jsxs("div", { className: "grid gap-4 xl:grid-cols-2", children: [_jsx(DetailSection, { title: "Running", className: "h-full", children: liveItems.length > 0 ? (_jsx("div", { className: "divide-y divide-border/20", children: liveItems.map((item) => (_jsx(OverviewListItem, { onClick: () => onSelectItem(item), title: getOverviewDisplayTitle(item), badge: getAutomationGroupLabel(item), meta: item.schedules[0]
1323
- ? scheduleLabel(item.schedules[0], t, uiLanguage)
1324
- : "Manual or event", trailing: formatRelativePast(item.updatedAt, t), tone: "success" }, item.id))) })) : (_jsx("div", { className: "px-3 py-4 text-xs-tight text-muted/70", children: "Nothing live." })) }), _jsx(DetailSection, { title: "Drafts", className: "h-full", children: draftItems.length > 0 ? (_jsx("div", { className: "divide-y divide-border/20", children: draftItems.map((item) => (_jsx(OverviewListItem, { onClick: () => onSelectItem(item), title: getOverviewDisplayTitle(item), badge: getAutomationGroupLabel(item), meta: "Continue", trailing: formatRelativePast(item.updatedAt, t), tone: "warning" }, item.id))) })) : (_jsx("div", { className: "px-3 py-4 text-xs-tight text-muted/70", children: "No drafts." })) })] }), _jsx(DetailSection, { title: "Recently changed", children: recentItems.length > 0 ? (_jsx("div", { className: "grid divide-y divide-border/20 md:grid-cols-2 md:divide-x md:divide-y-0", children: recentItems.map((item) => (_jsx(OverviewListItem, { onClick: () => onSelectItem(item), title: getOverviewDisplayTitle(item), badge: getAutomationGroupLabel(item), meta: item.schedules[0]
1325
- ? scheduleLabel(item.schedules[0], t, uiLanguage)
1326
- : item.isDraft
1327
- ? "Draft"
1328
- : "Manual or event", trailing: formatRelativePast(item.updatedAt, t), tone: getAutomationStatusTone(item) }, item.id))) })) : (_jsx("div", { className: "px-3 py-4 text-xs-tight text-muted/70", children: "No recent changes." })) }), _jsxs("div", { className: "grid gap-4 xl:grid-cols-2", children: [_jsx(DetailSection, { title: "Tasks", className: "h-full", action: _jsx(Button, { variant: "ghost", size: "sm", className: "h-7 px-2 text-xs", onClick: onCreateTask, children: "New task" }), children: taskHighlights.length > 0 ? (_jsx("div", { className: "divide-y divide-border/20", children: taskHighlights.map((item) => (_jsx(OverviewListItem, { onClick: () => onSelectItem(item), title: getOverviewDisplayTitle(item), badge: item.isDraft
1329
- ? "Draft"
1330
- : item.schedules.length > 0
1331
- ? formatScheduleCount(item.schedules.length)
1332
- : undefined, meta: item.isDraft
1333
- ? "In progress"
1334
- : item.schedules.length > 0
1335
- ? scheduleLabel(item.schedules[0], t, uiLanguage)
1336
- : "Event or manual", trailing: formatRelativePast(item.updatedAt, t), tone: getAutomationStatusTone(item) }, item.id))) })) : (_jsx("div", { className: "px-3 py-4 text-xs-tight text-muted/70", children: "No tasks yet." })) }), _jsx(DetailSection, { title: "Workflows", className: "h-full", action: _jsx(Button, { variant: "ghost", size: "sm", className: "h-7 px-2 text-xs", onClick: onCreateWorkflow, children: "New workflow" }), children: workflowHighlights.length > 0 ? (_jsx("div", { className: "divide-y divide-border/20", children: workflowHighlights.map((item) => (_jsx(OverviewListItem, { onClick: () => onSelectItem(item), title: getOverviewDisplayTitle(item), badge: item.isDraft
1337
- ? "Draft"
1338
- : `${getWorkflowNodeCount(item)} nodes`, meta: item.isDraft
1339
- ? "In progress"
1340
- : item.schedules.length > 0
1341
- ? scheduleLabel(item.schedules[0], t, uiLanguage)
1342
- : "Event or manual", trailing: formatRelativePast(item.updatedAt, t), tone: getAutomationStatusTone(item) }, item.id))) })) : (_jsx("div", { className: "px-3 py-4 text-xs-tight text-muted/70", children: "No workflows yet." })) })] })] }));
1343
- }
1344
- function AutomationDraftPane({ automation, onSeedPrompt, onDeleteDraft, }) {
1345
- const chatChrome = useAppWorkspaceChatChrome();
1346
- const openSidebarDraftChat = useCallback((prompt) => {
1347
- chatChrome?.openChat();
1348
- onSeedPrompt(prompt);
1349
- }, [chatChrome, onSeedPrompt]);
1350
- return (_jsxs("div", { className: "space-y-4 px-4 pt-6", children: [_jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("h2", { className: "text-lg font-semibold text-txt", children: getAutomationDisplayTitle(automation) }), _jsx("p", { className: "max-w-2xl text-xs-tight text-muted/80", children: "Use the sidebar agent to turn this draft into a task or workflow. Say what should start it and what result you want." })] }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Button, { variant: "outline", size: "sm", className: "h-8 gap-1.5 px-3 text-sm", onClick: () => openSidebarDraftChat(DESCRIBE_WORKFLOW_PROMPT), children: DESCRIBE_WORKFLOW_PROMPT }), _jsx(Button, { variant: "ghost", size: "sm", className: "h-8 px-3 text-sm text-danger hover:bg-danger/10 hover:text-danger", onClick: () => void onDeleteDraft(automation), children: "Delete draft" })] })] }), _jsx("div", { className: "grid gap-1.5 sm:grid-cols-2", children: AUTOMATION_DRAFT_EXAMPLES.map((example) => {
1351
- const Icon = example.icon;
1352
- return (_jsxs("button", { type: "button", onClick: () => openSidebarDraftChat(example.prompt), className: "group flex items-start gap-2 rounded-[var(--radius-sm)] border border-border/25 bg-bg/30 px-3 py-2 text-left transition-colors hover:border-accent/40 hover:bg-accent/5", children: [_jsx(Icon, { className: "mt-0.5 h-3.5 w-3.5 shrink-0 text-accent/80", "aria-hidden": true }), _jsxs("div", { className: "min-w-0 flex-1 space-y-0.5", children: [_jsx("div", { className: "text-xs-tight font-semibold text-txt", children: example.label }), _jsx("div", { className: "line-clamp-2 text-[11px] leading-snug text-muted/70", children: example.prompt })] })] }, example.label));
1353
- }) }), _jsx("p", { className: "px-1 text-[11px] text-muted/60", children: "The draft updates here as the automation takes shape." })] }));
1354
- }
1355
- function IconAction({ icon, label, onClick, tone, disabled, ariaBusy, }) {
1356
- const toneClass = tone === "warning"
1357
- ? "text-warning hover:bg-warning/10"
1358
- : tone === "ok"
1359
- ? "text-ok hover:bg-ok/10"
1360
- : tone === "danger"
1361
- ? "text-danger hover:bg-danger/10"
1362
- : "text-muted hover:text-txt hover:bg-bg-muted/50";
1363
- return (_jsx("button", { type: "button", onClick: onClick, "aria-label": label, "aria-busy": ariaBusy, title: label, disabled: disabled, className: `inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] transition-colors disabled:cursor-not-allowed disabled:opacity-40 ${toneClass}`, children: icon }));
1364
- }
1365
- function DetailHeader({ icon, title, description, status, actions, }) {
1366
- return (_jsxs("div", { className: "flex items-start gap-3 border-b border-border/20 pb-3", children: [_jsxs("div", { className: "min-w-0 flex-1 space-y-0.5", children: [_jsxs("div", { className: "flex items-center gap-1.5 text-muted", children: [icon, _jsx("h2", { className: "truncate text-base font-semibold text-txt", children: title }), status] }), description ? (_jsx("p", { className: "text-xs-tight leading-snug text-muted/80", children: description })) : null] }), actions ? (_jsx("div", { className: "flex shrink-0 items-center gap-0.5", children: actions })) : null] }));
1367
- }
1368
- function DetailStatusIndicator({ label, tone, dotOnly = false, }) {
1369
- if (dotOnly) {
1370
- return (_jsxs("span", { className: "inline-flex items-center", children: [_jsx(StatusDot, { tone: tone }), _jsx("span", { className: "sr-only", children: label })] }));
1371
- }
1372
- return _jsx(StatusBadge, { label: label, variant: tone, withDot: true });
1373
- }
1374
- function DetailSection({ title, action, children, className, }) {
1375
- return (_jsxs("section", { className: `rounded-[var(--radius-sm)] border border-border/25 bg-bg/20 ${className ?? ""}`, children: [_jsxs("div", { className: "flex items-center justify-between gap-2 border-b border-border/20 px-3 py-1.5", children: [_jsx("div", { className: "text-2xs font-semibold uppercase tracking-[0.14em] text-muted", children: title }), action] }), _jsx("div", { className: "py-1", children: children })] }));
1376
- }
1377
- function DetailFactList({ items, }) {
1378
- return (_jsx("dl", { className: "divide-y divide-border/20", children: items.map((item) => (_jsxs("div", { className: "flex items-start justify-between gap-3 px-3 py-2 text-xs-tight", children: [_jsx("dt", { className: "shrink-0 text-muted/70", children: item.label }), _jsx("dd", { className: "min-w-0 text-right text-txt", children: item.value })] }, item.label))) }));
1379
- }
1380
- function getWorkflowFlowNodes(workflow) {
1381
- const nodes = workflow?.nodes ?? [];
1382
- return [...nodes]
1383
- .sort((left, right) => {
1384
- const leftX = left.position?.[0] ?? 0;
1385
- const rightX = right.position?.[0] ?? 0;
1386
- if (leftX !== rightX)
1387
- return leftX - rightX;
1388
- const leftY = left.position?.[1] ?? 0;
1389
- const rightY = right.position?.[1] ?? 0;
1390
- if (leftY !== rightY)
1391
- return leftY - rightY;
1392
- return left.name.localeCompare(right.name);
1393
- })
1394
- .map((node) => ({
1395
- id: node.id ?? node.name,
1396
- label: node.name,
1397
- type: (node.type ?? "node").split(".").pop() ?? "node",
1398
- }));
1399
- }
1400
- function WorkflowDataFlowStrip({ workflow }) {
1401
- const flowNodes = getWorkflowFlowNodes(workflow);
1402
- if (flowNodes.length === 0) {
1403
- return (_jsx("div", { className: "px-4 py-3 text-xs-tight text-muted/70", children: "Generate the workflow to see its data path." }));
1404
- }
1405
- return (_jsxs("div", { className: "flex flex-wrap items-center gap-2 px-3 py-3", children: [_jsx("span", { className: "rounded-full border border-border/25 bg-bg/40 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.12em] text-muted", children: "Input" }), flowNodes.map((node, index) => (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(ArrowRight, { className: "h-3 w-3 text-muted/50", "aria-hidden": true }), _jsx("span", { className: "max-w-[12rem] truncate rounded-full border border-border/25 bg-bg/45 px-2.5 py-1 text-xs text-txt", children: node.label }), _jsx("span", { className: "hidden rounded bg-bg/40 px-1.5 py-0.5 text-[9px] uppercase tracking-[0.1em] text-muted/60 sm:inline", children: node.type }), index === flowNodes.length - 1 ? (_jsxs(_Fragment, { children: [_jsx(ArrowRight, { className: "h-3 w-3 text-muted/50", "aria-hidden": true }), _jsx("span", { className: "rounded-full border border-border/25 bg-bg/40 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.12em] text-muted", children: "Output" })] })) : null] }, node.id)))] }));
1406
- }
1407
- function TriggerAutomationDetailPane({ automation, onPromoteToWorkflow, }) {
1408
- const { t, uiLanguage, openEditTrigger, onRunSelectedTrigger, onToggleTriggerEnabled, loadTriggerRuns, triggerRunsById, setForm, setEditorOpen, setEditingId, setSelectedItemId, setSelectedItemKind, } = useAutomationsViewContext();
1409
- const trigger = automation.trigger;
1410
- const triggerId = trigger?.id;
1411
- const selectedRuns = triggerId ? (triggerRunsById[triggerId] ?? []) : [];
1412
- const hasLoadedRuns = triggerId
1413
- ? Object.hasOwn(triggerRunsById, triggerId)
1414
- : false;
1415
- useEffect(() => {
1416
- if (triggerId && !hasLoadedRuns) {
1417
- void loadTriggerRuns(triggerId);
1418
- }
1419
- }, [hasLoadedRuns, loadTriggerRuns, triggerId]);
1420
- if (!trigger) {
1421
- return null;
1422
- }
1423
- const { failureCount, successCount } = selectedRuns.reduce((counts, run) => {
1424
- const tone = toneForLastStatus(run.status);
1425
- if (tone === "success")
1426
- counts.successCount += 1;
1427
- else if (tone === "danger")
1428
- counts.failureCount += 1;
1429
- return counts;
1430
- }, { failureCount: 0, successCount: 0 });
1431
- const nextRunLabel = trigger.nextRunAtMs
1432
- ? trigger.triggerType === "event"
1433
- ? `On ${humanizeEventKind(trigger.eventKind ?? "event")}`
1434
- : formatRelativeFuture(trigger.nextRunAtMs, t)
1435
- : "Event or manual";
1436
- const whatRuns = trigger.kind === "workflow"
1437
- ? trigger.workflowName || "Selected workflow"
1438
- : trigger.instructions || "No prompt yet.";
1439
- return (_jsxs("div", { className: "space-y-4", children: [_jsx(DetailHeader, { icon: _jsx(Clock3, { className: "h-3.5 w-3.5", "aria-hidden": true }), title: getAutomationDisplayTitle(automation), description: automation.description, status: _jsx(DetailStatusIndicator, { label: trigger.enabled ? "Active" : "Paused", tone: trigger.enabled ? "success" : "muted", dotOnly: trigger.enabled }), actions: _jsxs(_Fragment, { children: [_jsx(IconAction, { label: trigger.enabled ? "Pause" : "Resume", onClick: () => void onToggleTriggerEnabled(trigger.id, trigger.enabled), icon: trigger.enabled ? (_jsx(Pause, { className: "h-3.5 w-3.5" })) : (_jsx(Play, { className: "h-3.5 w-3.5" })), tone: trigger.enabled ? "warning" : "ok" }), _jsx(IconAction, { label: t("triggersview.RunNow"), onClick: () => void onRunSelectedTrigger(trigger.id), icon: _jsx(Zap, { className: "h-3.5 w-3.5" }) }), _jsx(IconAction, { label: t("common.edit"), onClick: () => openEditTrigger(trigger), icon: _jsx(EditIcon, { className: "h-3.5 w-3.5" }) }), _jsx(IconAction, { label: t("heartbeatsview.duplicate"), onClick: () => {
1440
- setForm({
1441
- ...formFromTrigger(trigger),
1442
- displayName: `${trigger.displayName} (copy)`,
1443
- });
1444
- setEditorOpen(true);
1445
- setEditingId(null);
1446
- setSelectedItemId(null);
1447
- setSelectedItemKind(null);
1448
- }, icon: _jsx(Copy, { className: "h-3.5 w-3.5" }) }), _jsx(IconAction, { label: "Compile to Workflow", onClick: () => void onPromoteToWorkflow(automation), icon: _jsx(GitBranch, { className: "h-3.5 w-3.5" }) })] }) }), _jsxs("div", { className: "grid gap-2 sm:grid-cols-2 xl:grid-cols-5", children: [_jsx(OverviewMetricCard, { label: "Runs", value: _jsx("span", { className: "tabular-nums", children: selectedRuns.length }), detail: `${successCount} successful · ${failureCount} failed`, tone: failureCount > 0 ? "danger" : successCount > 0 ? "ok" : "default" }), _jsx(OverviewMetricCard, { label: "Starts", value: getTriggerStartModeLabel(trigger), detail: scheduleLabel(trigger, t, uiLanguage) }), _jsx(OverviewMetricCard, { label: "When it fires", value: getTriggerWakeModeLabel(trigger), detail: trigger.enabled ? "Enabled" : "Paused", tone: trigger.enabled ? "ok" : "default" }), _jsx(OverviewMetricCard, { label: "Next run", value: nextRunLabel, detail: trigger.triggerType === "event"
1449
- ? "Waiting for event input"
1450
- : formatDateTime(trigger.nextRunAtMs, {
1451
- fallback: "No time-based run queued",
1452
- locale: uiLanguage,
1453
- }), tone: trigger.nextRunAtMs || trigger.triggerType === "event"
1454
- ? "ok"
1455
- : "default" }), _jsx(OverviewMetricCard, { label: "Last run", value: formatRelativePast(trigger.lastRunAtIso, t), detail: formatDateTime(trigger.lastRunAtIso, {
1456
- fallback: "Not run yet",
1457
- locale: uiLanguage,
1458
- }) })] }), _jsx(DetailSection, { title: trigger.kind === "workflow" ? "Runs this workflow" : "Prompt", children: _jsx("div", { className: "min-h-[8rem] px-4 py-4 text-sm leading-relaxed text-muted/85 whitespace-pre-wrap", children: whatRuns }) }), _jsxs("div", { className: "grid gap-4 xl:grid-cols-[minmax(0,1fr)_minmax(320px,0.95fr)]", children: [_jsx(DetailSection, { title: "Run history", className: "h-full", action: _jsx(IconAction, { label: t("common.refresh"), onClick: () => void loadTriggerRuns(trigger.id), icon: _jsx(RefreshCw, { className: "h-3.5 w-3.5" }) }), children: !hasLoadedRuns ? (_jsxs("div", { className: "flex items-center gap-2 px-3 py-2 text-xs-tight text-muted/70", children: [_jsx("div", { className: "h-3 w-3 animate-spin rounded-full border-2 border-muted/30 border-t-muted/80" }), t("appsview.Loading")] })) : selectedRuns.length === 0 ? (_jsx("div", { className: "px-3 py-3 text-xs-tight text-muted/60", children: "No runs yet." })) : (_jsx("div", { className: "divide-y divide-border/20", children: selectedRuns.map((run) => (_jsxs("div", { className: "flex flex-wrap items-center gap-2 px-3 py-2 text-xs-tight", children: [_jsx(StatusBadge, { label: localizedExecutionStatus(run.status, t), variant: toneForLastStatus(run.status) }), _jsx("span", { className: "text-muted/70 tabular-nums", children: formatDateTime(run.startedAt, { locale: uiLanguage }) }), _jsx("span", { className: "text-muted/60", children: formatDurationMs(run.latencyMs, { t }) }), _jsx("span", { className: "ml-auto rounded bg-bg/40 px-1 py-0.5 font-mono text-[10px] text-muted/60", children: run.source }), run.error ? (_jsx("div", { className: "basis-full whitespace-pre-wrap rounded border border-danger/20 bg-danger/10 px-2 py-1 font-mono text-[11px] text-danger/90", children: run.error })) : null] }, run.triggerRunId))) })) }), _jsx(DetailSection, { title: "Schedule & behavior", className: "h-full", children: _jsx(DetailFactList, { items: [
1459
- {
1460
- label: "Schedule",
1461
- value: scheduleLabel(trigger, t, uiLanguage),
1462
- },
1463
- {
1464
- label: "Trigger type",
1465
- value: getTriggerStartModeLabel(trigger),
1466
- },
1467
- ...(trigger.triggerType === "event"
1468
- ? [
1469
- {
1470
- label: "Event",
1471
- value: trigger.eventKind
1472
- ? humanizeEventKind(trigger.eventKind)
1473
- : "Unknown",
1474
- },
1475
- ]
1476
- : []),
1477
- {
1478
- label: "Wake mode",
1479
- value: getTriggerWakeModeLabel(trigger),
1480
- },
1481
- {
1482
- label: "Status",
1483
- value: trigger.enabled ? "Enabled" : "Paused",
1484
- },
1485
- {
1486
- label: "Max runs",
1487
- value: trigger.maxRuns ? String(trigger.maxRuns) : "Unlimited",
1488
- },
1489
- ] }) })] })] }));
1490
- }
1491
- function WorkflowAutomationDetailPane({ automation, n8nStatus, workflowFetchError, workflowBusyId, workflowOpsBusy, onDeleteDraft, onDeleteWorkflow, onDuplicateWorkflow, onGenerateWorkflow, onRefreshWorkflows, onScheduleWorkflow, onStartLocalN8n, onToggleWorkflowActive, }) {
1492
- const { t, uiLanguage } = useApp();
1493
- const chatChrome = useAppWorkspaceChatChrome();
1494
- const [fullWorkflow, setFullWorkflow] = useState(automation.workflow ?? null);
1495
- const [workflowLoading, setWorkflowLoading] = useState(false);
1496
- const [workflowPrompt, setWorkflowPrompt] = useState("");
1497
- const [workflowPromptError, setWorkflowPromptError] = useState(null);
1498
- const [workflowPromptSaving, setWorkflowPromptSaving] = useState(false);
1499
- const workflowGenerating = useWorkflowGenerationState(automation.workflowId);
1500
- const busy = workflowOpsBusy ||
1501
- (automation.workflowId != null && workflowBusyId === automation.workflowId);
1502
- const graphWorkflow = fullWorkflow ?? automation.workflow ?? null;
1503
- const nodeCount = graphWorkflow?.nodeCount ??
1504
- graphWorkflow?.nodes?.length ??
1505
- getWorkflowNodeCount(automation);
1506
- const workflowIsActive = graphWorkflow?.active ?? automation.enabled;
1507
- const nextWorkflowRun = automation.schedules
1508
- .filter(isTimeBasedTrigger)
1509
- .map((schedule) => schedule.nextRunAtMs ?? 0)
1510
- .filter((value) => value > 0)
1511
- .sort((left, right) => left - right)[0];
1512
- const workflowIdeas = AUTOMATION_DRAFT_EXAMPLES.filter((idea) => idea.kind === "workflow");
1513
- const showWorkflowStarterIdeas = automation.isDraft || nodeCount === 0;
1514
- const showWorkflowPromptBox = automation.isDraft || nodeCount === 0;
1515
- const handleDescribeWorkflow = useCallback(() => {
1516
- chatChrome?.openChat();
1517
- prefillPageChat(DESCRIBE_WORKFLOW_PROMPT, { select: true });
1518
- }, [chatChrome]);
1519
- const handleUseWorkflowIdea = useCallback((idea) => {
1520
- chatChrome?.openChat();
1521
- prefillPageChat(idea.prompt, { select: true });
1522
- }, [chatChrome]);
1523
- const submitWorkflowPrompt = useCallback(async () => {
1524
- const prompt = workflowPrompt.trim();
1525
- if (!prompt) {
1526
- setWorkflowPromptError("Describe what this workflow should do.");
1527
- return;
1528
- }
1529
- setWorkflowPromptError(null);
1530
- setWorkflowPromptSaving(true);
1531
- try {
1532
- await onGenerateWorkflow(automation, prompt);
1533
- setWorkflowPrompt("");
1534
- chatChrome?.openChat();
1535
- prefillPageChat(prompt, { select: false });
1536
- }
1537
- catch (error) {
1538
- setWorkflowPromptError(error instanceof Error ? error.message : "Failed to generate workflow.");
1539
- }
1540
- finally {
1541
- setWorkflowPromptSaving(false);
1542
- }
1543
- }, [automation, chatChrome, onGenerateWorkflow, workflowPrompt]);
1544
- useEffect(() => {
1545
- let cancelled = false;
1546
- setFullWorkflow(automation.workflow ?? null);
1547
- if (!automation.workflowId || !automation.hasBackingWorkflow) {
1548
- setWorkflowLoading(false);
1549
- return undefined;
1550
- }
1551
- setWorkflowLoading(true);
1552
- void client
1553
- .getN8nWorkflow(automation.workflowId)
1554
- .then((workflow) => {
1555
- if (!cancelled) {
1556
- setFullWorkflow(workflow);
1557
- }
1558
- })
1559
- .catch(() => {
1560
- if (!cancelled) {
1561
- setFullWorkflow(automation.workflow ?? null);
1562
- }
1563
- })
1564
- .finally(() => {
1565
- if (!cancelled) {
1566
- setWorkflowLoading(false);
1567
- }
1568
- });
1569
- return () => {
1570
- cancelled = true;
1571
- };
1572
- }, [
1573
- automation.hasBackingWorkflow,
1574
- automation.workflow,
1575
- automation.workflowId,
1576
- ]);
1577
- return (_jsxs("div", { className: "space-y-4", children: [_jsx(WorkflowRuntimeNotice, { status: n8nStatus, workflowFetchError: workflowFetchError, busy: busy, onRefresh: () => void onRefreshWorkflows(), onStartLocal: () => void onStartLocalN8n() }), _jsx(DetailHeader, { icon: _jsx(Workflow, { className: "h-3.5 w-3.5", "aria-hidden": true }), title: getAutomationDisplayTitle(automation), description: null, status: _jsx(DetailStatusIndicator, { label: automation.isDraft
1578
- ? "Draft"
1579
- : automation.enabled
1580
- ? "Active"
1581
- : "Paused", tone: automation.isDraft
1582
- ? "warning"
1583
- : automation.enabled
1584
- ? "success"
1585
- : "muted", dotOnly: !automation.isDraft && automation.enabled }), actions: automation.isDraft ? (_jsx(IconAction, { label: "Delete draft", onClick: () => void onDeleteDraft(automation), icon: _jsx(Trash2, { className: "h-3.5 w-3.5" }), tone: "danger" })) : automation.workflowId ? (_jsxs(_Fragment, { children: [_jsx(IconAction, { label: busy
1586
- ? t("common.updating", {
1587
- defaultValue: "Updating...",
1588
- })
1589
- : workflowIsActive
1590
- ? t("automations.n8n.deactivate", {
1591
- defaultValue: "Deactivate",
1592
- })
1593
- : t("automations.n8n.activate", {
1594
- defaultValue: "Activate",
1595
- }), onClick: () => void onToggleWorkflowActive(automation), disabled: busy, ariaBusy: busy, icon: workflowIsActive ? (_jsx(Pause, { className: "h-3.5 w-3.5" })) : (_jsx(Play, { className: "h-3.5 w-3.5" })), tone: workflowIsActive ? "warning" : "ok" }), _jsx(IconAction, { label: "Schedule workflow", onClick: () => onScheduleWorkflow(automation), disabled: busy, icon: _jsx(Clock3, { className: "h-3.5 w-3.5" }) }), _jsx(IconAction, { label: "Duplicate workflow", onClick: () => void onDuplicateWorkflow(automation), disabled: busy, icon: _jsx(Copy, { className: "h-3.5 w-3.5" }) }), _jsx(IconAction, { label: busy
1596
- ? t("common.updating", {
1597
- defaultValue: "Updating...",
1598
- })
1599
- : t("automations.n8n.deleteWorkflow", {
1600
- defaultValue: "Delete workflow",
1601
- }), onClick: () => void onDeleteWorkflow(automation), disabled: busy, ariaBusy: busy, icon: _jsx(Trash2, { className: "h-3.5 w-3.5" }), tone: "danger" })] })) : null }), _jsxs("div", { className: "grid gap-2 sm:grid-cols-2 xl:grid-cols-5", children: [_jsx(OverviewMetricCard, { label: "Status", value: automation.isDraft
1602
- ? "Draft"
1603
- : workflowIsActive
1604
- ? "Active"
1605
- : "Paused", detail: automation.schedules.length > 0
1606
- ? formatScheduleCount(automation.schedules.length)
1607
- : "No schedule attached", tone: automation.isDraft ? "warning" : workflowIsActive ? "ok" : "default" }), _jsx(OverviewMetricCard, { label: "Nodes", value: _jsx("span", { className: "tabular-nums", children: nodeCount }), detail: nodeCount > 0 ? "Visible in the graph below" : "Still blank" }), _jsx(OverviewMetricCard, { label: "Starts", value: automation.schedules.length > 0
1608
- ? formatScheduleCount(automation.schedules.length)
1609
- : "Event or manual", detail: automation.schedules.length > 0
1610
- ? scheduleLabel(automation.schedules[0], t, uiLanguage)
1611
- : "No time-based schedule yet" }), _jsx(OverviewMetricCard, { label: "Next run", value: nextWorkflowRun
1612
- ? formatRelativeFuture(nextWorkflowRun, t)
1613
- : "Not queued", detail: nextWorkflowRun
1614
- ? formatDateTime(nextWorkflowRun, {
1615
- fallback: "—",
1616
- locale: uiLanguage,
1617
- })
1618
- : "Trigger it from an event or attach a schedule", tone: nextWorkflowRun ? "ok" : "default" }), _jsx(OverviewMetricCard, { label: "Updated", value: formatRelativePast(automation.updatedAt, t), detail: formatDateTime(automation.updatedAt, {
1619
- fallback: "—",
1620
- locale: uiLanguage,
1621
- }) })] }), showWorkflowPromptBox && (_jsx(DetailSection, { title: "Create workflow", children: _jsxs("div", { className: "p-3", children: [_jsxs("div", { className: "flex flex-col gap-2 rounded-full border border-border/30 bg-bg/50 p-1.5 shadow-sm sm:flex-row sm:items-center", children: [_jsx(Input, { "data-workflow-prompt-input": "true", value: workflowPrompt, onChange: (event) => setWorkflowPrompt(event.target.value), onKeyDown: (event) => {
1622
- if (event.key === "Enter" && !event.shiftKey) {
1623
- event.preventDefault();
1624
- void submitWorkflowPrompt();
1625
- }
1626
- }, placeholder: WORKFLOW_PROMPT_PLACEHOLDER, className: "min-h-10 flex-1 border-0 bg-transparent px-4 shadow-none focus-visible:ring-0", autoFocus: automation.isDraft }), _jsx(Button, { variant: "default", size: "sm", className: "h-10 shrink-0 rounded-full px-5", disabled: workflowPromptSaving || busy, onClick: () => void submitWorkflowPrompt(), children: workflowPromptSaving ? "Generating..." : "Generate" })] }), workflowPromptError && (_jsx("div", { className: "mt-2 text-xs text-danger", children: workflowPromptError }))] }) })), _jsx(DetailSection, { title: "Workflow graph", action: automation.isDraft || nodeCount === 0 ? (_jsx(Button, { variant: "ghost", size: "sm", className: "h-7 px-2 text-xs", onClick: () => {
1627
- const input = document.querySelector("[data-workflow-prompt-input='true']");
1628
- input?.focus();
1629
- if (!input)
1630
- handleDescribeWorkflow();
1631
- }, children: DESCRIBE_WORKFLOW_PROMPT })) : undefined, children: _jsx("div", { className: "p-3", children: _jsx(WorkflowGraphViewer, { workflow: graphWorkflow, loading: workflowLoading, isGenerating: workflowGenerating, emptyStateActionLabel: DESCRIBE_WORKFLOW_PROMPT, emptyStateHelpText: "Describe it above to generate the graph.", onEmptyStateAction: () => {
1632
- const input = document.querySelector("[data-workflow-prompt-input='true']");
1633
- input?.focus();
1634
- if (!input)
1635
- handleDescribeWorkflow();
1636
- }, status: n8nStatus }) }) }), _jsx(DetailSection, { title: "Data flow", children: _jsx(WorkflowDataFlowStrip, { workflow: graphWorkflow }) }), _jsxs("div", { className: "grid gap-4 xl:grid-cols-[minmax(0,1fr)_minmax(320px,0.95fr)]", children: [_jsx(DetailSection, { title: "Starts when", className: "h-full", children: automation.schedules.length > 0 ? (_jsx("div", { className: "divide-y divide-border/20", children: automation.schedules.map((schedule) => (_jsx(OverviewListItem, { title: schedule.displayName, meta: scheduleLabel(schedule, t, uiLanguage), detail: formatDateTime(schedule.nextRunAtMs ?? null, {
1637
- fallback: "No next run queued",
1638
- locale: uiLanguage,
1639
- }), trailing: schedule.enabled ? "Live" : "Paused", tone: schedule.enabled ? "success" : "muted" }, schedule.id))) })) : (_jsx("div", { className: "px-4 py-4 text-xs-tight text-muted/70", children: "No schedule yet. Start it from an event or add one in the sidebar." })) }), showWorkflowStarterIdeas ? (_jsx(DetailSection, { title: "Starter ideas", className: "h-full", children: _jsx("div", { className: "p-2", children: _jsx(OverviewIdeaGrid, { ideas: workflowIdeas, onSelect: handleUseWorkflowIdea }) }) })) : (_jsx(DetailSection, { title: "Details", className: "h-full", children: _jsx(DetailFactList, { items: [
1640
- {
1641
- label: "Type",
1642
- value: automation.isDraft ? "Draft" : "n8n workflow",
1643
- },
1644
- {
1645
- label: "Nodes",
1646
- value: String(nodeCount),
1647
- },
1648
- {
1649
- label: "Schedules",
1650
- value: String(automation.schedules.length),
1651
- },
1652
- {
1653
- label: "Updated",
1654
- value: formatRelativePast(automation.updatedAt, t),
1655
- },
1656
- ] }) }))] })] }));
1657
- }
1658
- function AutomationSidebarItem({ item, selected, onClick, onDoubleClick, }) {
1659
- let Icon = Zap;
1660
- let tone = "muted";
1661
- let titleClass = "text-txt";
1662
- if (item.type === "n8n_workflow") {
1663
- Icon = Workflow;
1664
- tone = item.isDraft ? "warning" : item.enabled ? "success" : "muted";
1665
- }
1666
- else if (item.type === "automation_draft") {
1667
- Icon = FileText;
1668
- tone = "warning";
1669
- }
1670
- else if (item.trigger) {
1671
- Icon = Clock3;
1672
- tone = item.trigger.enabled ? "success" : "muted";
1673
- if (item.trigger.lastStatus) {
1674
- const lastTone = toneForLastStatus(item.trigger.lastStatus);
1675
- if (lastTone === "danger")
1676
- tone = "danger";
1677
- }
1678
- }
1679
- else if (item.task) {
1680
- if (item.system) {
1681
- Icon = Settings;
1682
- tone = "muted";
1683
- titleClass = "text-muted";
1684
- }
1685
- else if (item.task.isCompleted) {
1686
- Icon = CheckCircle2;
1687
- tone = "muted";
1688
- titleClass = "text-muted line-through";
1689
- }
1690
- else {
1691
- Icon = Circle;
1692
- tone = "success";
1693
- }
1694
- }
1695
- else {
1696
- return null;
1697
- }
1698
- return (_jsxs("button", { type: "button", onClick: onClick, onDoubleClick: onDoubleClick, "aria-current": selected ? "page" : undefined, className: `group flex w-full min-w-0 items-center gap-1.5 rounded-[var(--radius-sm)] py-1 pl-2 pr-1.5 text-left transition-colors ${selected ? "bg-accent/15 text-txt" : "text-txt hover:bg-bg-muted/50"} ${item.system ? "opacity-60" : ""}`, children: [_jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 text-muted/70", "aria-hidden": true }), _jsx("span", { className: `truncate text-xs-tight ${titleClass}`, children: getAutomationDisplayTitle(item) }), _jsx(StatusDot, { tone: tone, className: "ml-auto h-1.5 w-1.5 shrink-0" })] }));
1699
- }
1700
- function AutomationsSidebarChatGuideActions() {
1701
- return (_jsx(Button, { variant: "outline", size: "sm", className: "h-8 gap-1.5 px-3 text-sm", onClick: () => prefillPageChat(DESCRIBE_WORKFLOW_PROMPT, { select: true }), children: DESCRIBE_WORKFLOW_PROMPT }));
1702
- }
1703
- function AutomationsSidebarChat({ activeItem, }) {
1704
- const { activeConversationId, conversations, t } = useApp();
1705
- const { refreshAutomations } = useAutomationsViewContext();
1706
- const [overviewVisible, setOverviewVisible] = useState(false);
1707
- const scopedActiveItem = overviewVisible ? null : activeItem;
1708
- useEffect(() => {
1709
- const overviewWindow = window;
1710
- setOverviewVisible(Boolean(overviewWindow.__miladyAutomationsOverviewVisible));
1711
- const handleOverviewVisibility = (event) => {
1712
- const detail = event
1713
- .detail;
1714
- setOverviewVisible(Boolean(detail?.visible));
1715
- };
1716
- window.addEventListener(AUTOMATIONS_OVERVIEW_VISIBILITY_EVENT, handleOverviewVisibility);
1717
- return () => window.removeEventListener(AUTOMATIONS_OVERVIEW_VISIBILITY_EVENT, handleOverviewVisibility);
1718
- }, []);
1719
- const automationConversationAdapter = useMemo(() => {
1720
- if (!scopedActiveItem) {
1721
- return null;
1722
- }
1723
- const bridgeConversationId = getAutomationBridgeIdForItem(scopedActiveItem, activeConversationId, conversations);
1724
- if (scopedActiveItem.type === "n8n_workflow") {
1725
- const metadata = scopedActiveItem.workflowId
1726
- ? buildWorkflowConversationMetadata(scopedActiveItem.workflowId, scopedActiveItem.title, bridgeConversationId)
1727
- : buildWorkflowDraftConversationMetadata(scopedActiveItem.draftId ?? scopedActiveItem.id, bridgeConversationId);
1728
- return {
1729
- allowClear: false,
1730
- buildRoutingMetadata: () => buildAutomationResponseRoutingMetadata(metadata),
1731
- identityKey: JSON.stringify({
1732
- metadata,
1733
- title: scopedActiveItem.title,
1734
- }),
1735
- onAfterSend: () => void refreshAutomations(),
1736
- resolveConversation: () => resolveAutomationConversation({
1737
- title: scopedActiveItem.title,
1738
- metadata,
1739
- }),
1740
- };
1741
- }
1742
- if (scopedActiveItem.type === "automation_draft") {
1743
- const metadata = buildAutomationDraftConversationMetadata(scopedActiveItem.draftId ?? scopedActiveItem.id, bridgeConversationId);
1744
- return {
1745
- allowClear: false,
1746
- buildRoutingMetadata: () => buildAutomationResponseRoutingMetadata(metadata),
1747
- identityKey: JSON.stringify({
1748
- metadata,
1749
- title: getAutomationDisplayTitle(scopedActiveItem),
1750
- }),
1751
- onAfterSend: () => void refreshAutomations(),
1752
- resolveConversation: () => resolveAutomationConversation({
1753
- title: getAutomationDisplayTitle(scopedActiveItem),
1754
- metadata,
1755
- }),
1756
- };
1757
- }
1758
- return null;
1759
- }, [
1760
- scopedActiveItem,
1761
- activeConversationId,
1762
- conversations,
1763
- refreshAutomations,
1764
- ]);
1765
- if (scopedActiveItem?.type === "n8n_workflow") {
1766
- return (_jsx(PageScopedChatPane, { scope: "page-automations", conversationAdapter: automationConversationAdapter ?? undefined, introOverride: {
1767
- title: scopedActiveItem.isDraft ? "Workflow draft" : "Workflow",
1768
- body: scopedActiveItem.isDraft
1769
- ? "Describe the trigger and steps. The graph updates here."
1770
- : "Ask to inspect, change, or troubleshoot this workflow.",
1771
- actions: scopedActiveItem.isDraft ? (_jsx(AutomationsSidebarChatGuideActions, {})) : undefined,
1772
- }, placeholderOverride: scopedActiveItem.isDraft
1773
- ? DESCRIBE_WORKFLOW_PROMPT
1774
- : t("automations.chat.placeholder"), systemAddendumOverride: WORKFLOW_SYSTEM_ADDENDUM }));
1775
- }
1776
- if (scopedActiveItem?.type === "automation_draft") {
1777
- return (_jsx(PageScopedChatPane, { scope: "page-automations", conversationAdapter: automationConversationAdapter ?? undefined, introOverride: {
1778
- title: "Draft",
1779
- body: "Describe the result and what should start it.",
1780
- }, placeholderOverride: "Describe your automation", systemAddendumOverride: AUTOMATION_DRAFT_SYSTEM_ADDENDUM }));
1781
- }
1782
- return (_jsx(PageScopedChatPane, { scope: "page-automations", placeholderOverride: "Describe your workflow, task, or schedule", introOverride: {
1783
- title: "Automations",
1784
- body: "Create or inspect a task or workflow.",
1785
- actions: _jsx(AutomationsSidebarChatGuideActions, {}),
1786
- } }));
1787
- }
1788
- function AutomationsLayout() {
1789
- const { activeConversationId, conversations, setTab } = useApp();
1790
- const ctx = useAutomationsViewContext();
1791
- const { closeEditor, editorEnabled, editingId, editingTaskId, editorOpen, editorMode, form, formError, loadTriggerRuns, modalTitle, onDeleteTrigger, onRunSelectedTrigger, onSubmitTrigger, onToggleTriggerEnabled, openCreateTrigger, openCreateTask, saveFormAsTemplate, selectedItemId, setEditingId, setEditorOpen, setEditorMode, setField, setFilter, setForm, setFormError, setSelectedItemId, setSelectedItemKind, showDetailPane, showFirstRunEmptyState, resolvedSelectedItem, t, templateNotice, triggers, filteredItems, triggerRunsById, triggersSaving, automationNodes, combinedError, isLoading, n8nStatus, workflowFetchError, } = ctx;
1792
- const [showDashboard, setShowDashboard] = useState(true);
1793
- const [collapsedSections, setCollapsedSections] = useState(() => new Set(["agent-owned"]));
1794
- const toggleSectionCollapsed = useCallback((key) => {
1795
- setCollapsedSections((prev) => {
1796
- const next = new Set(prev);
1797
- if (next.has(key))
1798
- next.delete(key);
1799
- else
1800
- next.add(key);
1801
- return next;
1802
- });
1803
- }, []);
1804
- const [pageNotice, setPageNotice] = useState(null);
1805
- const [missingCredentials, setMissingCredentials] = useState(null);
1806
- const [workflowBusyId, setWorkflowBusyId] = useState(null);
1807
- const [workflowOpsBusy, setWorkflowOpsBusy] = useState(false);
1808
- const [activeWorkflowConversation, setActiveWorkflowConversation] = useState(null);
1809
- const [createDialogMode, setCreateDialogMode] = useState(null);
1810
- const [templatesModalOpen, setTemplatesModalOpen] = useState(false);
1811
- const [activeSubpage, setActiveSubpage] = useState(() => getAutomationSubpageFromPath(getNavigationPathFromWindow()));
1812
- const visibleItems = filteredItems;
1813
- useEffect(() => {
1814
- if (!showDashboard)
1815
- return;
1816
- setSelectedItemId(null);
1817
- setSelectedItemKind(null);
1818
- }, [setSelectedItemId, setSelectedItemKind, showDashboard]);
1819
- useEffect(() => {
1820
- window.__miladyAutomationsOverviewVisible =
1821
- showDashboard;
1822
- window.dispatchEvent(new CustomEvent(AUTOMATIONS_OVERVIEW_VISIBILITY_EVENT, {
1823
- detail: { visible: showDashboard },
1824
- }));
1825
- }, [showDashboard]);
1826
- const syncSubpageFromLocation = useCallback(() => {
1827
- const pathname = getNavigationPathFromWindow();
1828
- const nextSubpage = getAutomationSubpageFromPath(pathname);
1829
- setActiveSubpage((previous) => previous === nextSubpage ? previous : nextSubpage);
1830
- if (normalizeAutomationPath(pathname) === "/node-catalog") {
1831
- syncAutomationSubpagePath("node-catalog", "replace");
1832
- }
1833
- }, []);
1834
- useEffect(() => {
1835
- syncSubpageFromLocation();
1836
- window.addEventListener("popstate", syncSubpageFromLocation);
1837
- window.addEventListener("hashchange", syncSubpageFromLocation);
1838
- return () => {
1839
- window.removeEventListener("popstate", syncSubpageFromLocation);
1840
- window.removeEventListener("hashchange", syncSubpageFromLocation);
1841
- };
1842
- }, [syncSubpageFromLocation]);
1843
- const showAutomationsList = useCallback((mode = "push") => {
1844
- setActiveSubpage("list");
1845
- syncAutomationSubpagePath("list", mode);
1846
- }, []);
1847
- const showNodeCatalog = useCallback((mode = "push") => {
1848
- setEditorOpen(false);
1849
- setEditingId(null);
1850
- ctx.setEditingTaskId(null);
1851
- setActiveSubpage("node-catalog");
1852
- syncAutomationSubpagePath("node-catalog", mode);
1853
- }, [ctx, setEditingId, setEditorOpen]);
1854
- const mobileSidebarLabel = activeSubpage === "node-catalog"
1855
- ? "Nodes"
1856
- : showDashboard
1857
- ? "Overview"
1858
- : editorOpen || editingId || editingTaskId
1859
- ? modalTitle
1860
- : resolvedSelectedItem
1861
- ? getAutomationDisplayTitle(resolvedSelectedItem)
1862
- : "Automations";
1863
- const selectItem = useCallback((item) => {
1864
- showAutomationsList();
1865
- setShowDashboard(false);
1866
- setSelectedItemId(item.id);
1867
- setSelectedItemKind(getSelectionKind(item));
1868
- setEditorOpen(false);
1869
- setEditingId(null);
1870
- ctx.setEditingTaskId(null);
1871
- if (item.trigger) {
1872
- void loadTriggerRuns(item.trigger.id);
1873
- }
1874
- }, [
1875
- ctx,
1876
- loadTriggerRuns,
1877
- setEditingId,
1878
- setEditorOpen,
1879
- setSelectedItemId,
1880
- setSelectedItemKind,
1881
- showAutomationsList,
1882
- ]);
1883
- const showOverview = useCallback(() => {
1884
- showAutomationsList();
1885
- setShowDashboard(true);
1886
- setSelectedItemId(null);
1887
- setSelectedItemKind(null);
1888
- setEditorOpen(false);
1889
- setEditingId(null);
1890
- ctx.setEditingTaskId(null);
1891
- }, [
1892
- ctx,
1893
- setEditingId,
1894
- setEditorOpen,
1895
- setSelectedItemId,
1896
- setSelectedItemKind,
1897
- showAutomationsList,
1898
- ]);
1899
- // Event consumer for agent-driven graph focus
1900
- useEffect(() => {
1901
- const handler = (event) => {
1902
- const { workflowId } = event.detail;
1903
- const match = filteredItems.find((item) => item.workflowId === workflowId || item.id === workflowId);
1904
- if (match) {
1905
- selectItem(match);
1906
- }
1907
- };
1908
- window.addEventListener(VISUALIZE_WORKFLOW_EVENT, handler);
1909
- return () => window.removeEventListener(VISUALIZE_WORKFLOW_EVENT, handler);
1910
- }, [filteredItems, selectItem]);
1911
- const findAutomationForConversation = useCallback((data, conversationId) => data?.automations.find((item) => item.room?.conversationId === conversationId) ?? null, []);
1912
- const refreshAutomationsWithDraftBinding = useCallback(async (draftConversation) => {
1913
- const previousWorkflowIds = new Set(ctx.allItems
1914
- .filter((item) => item.type === "n8n_workflow" &&
1915
- item.workflowId != null &&
1916
- !item.isDraft)
1917
- .map((item) => item.workflowId));
1918
- const previousTriggerIds = new Set(ctx.allItems
1919
- .filter((item) => item.trigger?.id)
1920
- .map((item) => item.trigger?.id));
1921
- const previousTaskIds = new Set(ctx.allItems
1922
- .filter((item) => item.task?.id)
1923
- .map((item) => item.task?.id));
1924
- const data = await ctx.refreshAutomations();
1925
- const draftScope = draftConversation?.metadata?.scope;
1926
- if (!draftConversation || !draftScope) {
1927
- return data;
1928
- }
1929
- const bridgeConversationId = draftConversation.metadata?.terminalBridgeConversationId;
1930
- // Workflow-draft scope: rebind on new n8n workflow (existing path).
1931
- if (draftScope === "automation-workflow-draft" &&
1932
- draftConversation.metadata?.automationType === "n8n_workflow") {
1933
- const createdWorkflows = data?.automations.filter((item) => item.type === "n8n_workflow" &&
1934
- item.workflowId != null &&
1935
- !item.isDraft &&
1936
- !previousWorkflowIds.has(item.workflowId)) ?? [];
1937
- if (createdWorkflows.length !== 1)
1938
- return data;
1939
- const created = createdWorkflows[0];
1940
- const reboundMetadata = buildWorkflowConversationMetadata(created.workflowId, created.title, bridgeConversationId);
1941
- const { conversation } = await client.updateConversation(draftConversation.id, { title: created.title, metadata: reboundMetadata });
1942
- setActiveWorkflowConversation(conversation);
1943
- return await ctx.refreshAutomations();
1944
- }
1945
- // Shape-undecided draft: detect what the agent created and rebind.
1946
- if (draftScope === "automation-draft") {
1947
- const createdTriggers = data?.automations.filter((item) => item.trigger != null && !previousTriggerIds.has(item.trigger.id)) ?? [];
1948
- const createdTasks = data?.automations.filter((item) => item.task != null &&
1949
- !item.system &&
1950
- !previousTaskIds.has(item.task.id)) ?? [];
1951
- const createdWorkflows = data?.automations.filter((item) => item.type === "n8n_workflow" &&
1952
- item.workflowId != null &&
1953
- !item.isDraft &&
1954
- !previousWorkflowIds.has(item.workflowId)) ?? [];
1955
- const createdCount = createdTriggers.length +
1956
- createdTasks.length +
1957
- createdWorkflows.length;
1958
- if (createdCount !== 1) {
1959
- return data;
1960
- }
1961
- const draftItemId = `automation-draft:${draftConversation.metadata?.draftId ?? ""}`;
1962
- const draftWasSelected = selectedItemId === draftItemId;
1963
- const followSelection = (nextItemId, kind) => {
1964
- if (!draftWasSelected)
1965
- return;
1966
- setSelectedItemId(nextItemId);
1967
- setSelectedItemKind(kind);
1968
- };
1969
- if (createdTriggers.length === 1) {
1970
- const created = createdTriggers[0];
1971
- const trigger = created.trigger;
1972
- if (!trigger)
1973
- return await ctx.refreshAutomations();
1974
- const reboundMetadata = buildCoordinatorTriggerConversationMetadata(trigger.id, bridgeConversationId);
1975
- await client.updateConversation(draftConversation.id, {
1976
- title: created.title,
1977
- metadata: reboundMetadata,
1978
- });
1979
- followSelection(created.id, "trigger");
1980
- return await ctx.refreshAutomations();
1981
- }
1982
- if (createdTasks.length === 1) {
1983
- const created = createdTasks[0];
1984
- const task = created.task;
1985
- if (!task)
1986
- return await ctx.refreshAutomations();
1987
- const reboundMetadata = buildCoordinatorConversationMetadata(task.id, bridgeConversationId);
1988
- await client.updateConversation(draftConversation.id, {
1989
- title: created.title,
1990
- metadata: reboundMetadata,
1991
- });
1992
- followSelection(created.id, "task");
1993
- return await ctx.refreshAutomations();
1994
- }
1995
- if (createdWorkflows.length === 1) {
1996
- const created = createdWorkflows[0];
1997
- const reboundMetadata = buildWorkflowConversationMetadata(created.workflowId, created.title, bridgeConversationId);
1998
- const { conversation } = await client.updateConversation(draftConversation.id, { title: created.title, metadata: reboundMetadata });
1999
- setActiveWorkflowConversation(conversation);
2000
- followSelection(created.id, "workflow");
2001
- return await ctx.refreshAutomations();
2002
- }
2003
- }
2004
- return data;
2005
- }, [ctx, selectedItemId, setSelectedItemId, setSelectedItemKind]);
2006
- const bindConversationToWorkflow = useCallback(async (conversation, workflow, bridgeConversationId) => {
2007
- const reboundMetadata = buildWorkflowConversationMetadata(workflow.id, workflow.name, bridgeConversationId ?? undefined);
2008
- const { conversation: reboundConversation } = await client.updateConversation(conversation.id, {
2009
- title: workflow.name,
2010
- metadata: reboundMetadata,
2011
- });
2012
- setActiveWorkflowConversation(reboundConversation);
2013
- return reboundConversation;
2014
- }, []);
2015
- const selectWorkflowById = useCallback((workflowId) => {
2016
- setShowDashboard(false);
2017
- setSelectedItemId(`workflow:${workflowId}`);
2018
- setSelectedItemKind("workflow");
2019
- setEditorOpen(false);
2020
- setEditingId(null);
2021
- ctx.setEditingTaskId(null);
2022
- }, [ctx, setEditingId, setEditorOpen, setSelectedItemId, setSelectedItemKind]);
2023
- const generateWorkflowFromPrompt = useCallback(async ({ prompt, title, conversation, bridgeConversationId, workflowId, }) => {
2024
- setWorkflowOpsBusy(true);
2025
- setPageNotice(null);
2026
- setMissingCredentials(null);
2027
- try {
2028
- const result = await client.generateN8nWorkflow({
2029
- prompt,
2030
- ...(title?.trim() ? { name: title.trim() } : {}),
2031
- ...(workflowId ? { workflowId } : {}),
2032
- ...(bridgeConversationId ? { bridgeConversationId } : {}),
2033
- });
2034
- if (isMissingCredentialsResponse(result)) {
2035
- setMissingCredentials(result.missingCredentials);
2036
- return null;
2037
- }
2038
- if (conversation) {
2039
- await bindConversationToWorkflow(conversation, result, bridgeConversationId);
2040
- }
2041
- await ctx.refreshAutomations();
2042
- selectWorkflowById(result.id);
2043
- return result;
2044
- }
2045
- finally {
2046
- setWorkflowOpsBusy(false);
2047
- }
2048
- }, [bindConversationToWorkflow, ctx, selectWorkflowById]);
2049
- const createWorkflowDraft = useCallback(async (options) => {
2050
- setPageNotice(null);
2051
- showAutomationsList();
2052
- const draftId = createWorkflowDraftId();
2053
- setShowDashboard(false);
2054
- setFilter("all");
2055
- setSelectedItemId(`workflow-draft:${draftId}`);
2056
- setSelectedItemKind("workflow");
2057
- setEditorOpen(false);
2058
- setEditingId(null);
2059
- ctx.setEditingTaskId(null);
2060
- const bridgeConversationId = getAutomationBridgeIdForItem(resolvedSelectedItem, activeConversationId, conversations);
2061
- const metadata = buildWorkflowDraftConversationMetadata(draftId, bridgeConversationId);
2062
- try {
2063
- const conversation = await resolveAutomationConversation({
2064
- title: options?.title?.trim() || WORKFLOW_DRAFT_TITLE,
2065
- metadata,
2066
- });
2067
- setActiveWorkflowConversation(conversation);
2068
- if (options?.initialPrompt?.trim()) {
2069
- await generateWorkflowFromPrompt({
2070
- prompt: options.initialPrompt.trim(),
2071
- title: options.title?.trim() || undefined,
2072
- conversation,
2073
- bridgeConversationId,
2074
- });
2075
- return;
2076
- }
2077
- const data = await ctx.refreshAutomations();
2078
- const resolvedItem = findAutomationForConversation(data, conversation.id);
2079
- setSelectedItemId(resolvedItem?.id ?? `workflow-draft:${draftId}`);
2080
- setSelectedItemKind("workflow");
2081
- }
2082
- catch (error) {
2083
- setPageNotice(error instanceof Error
2084
- ? error.message
2085
- : "Failed to create the workflow draft room.");
2086
- }
2087
- }, [
2088
- activeConversationId,
2089
- conversations,
2090
- ctx,
2091
- findAutomationForConversation,
2092
- generateWorkflowFromPrompt,
2093
- resolvedSelectedItem,
2094
- setFilter,
2095
- setEditingId,
2096
- setEditorOpen,
2097
- setSelectedItemId,
2098
- setSelectedItemKind,
2099
- showAutomationsList,
2100
- ]);
2101
- const promoteAutomationToWorkflow = useCallback(async (item) => {
2102
- await createWorkflowDraft({
2103
- title: `${item.title} Workflow`,
2104
- initialPrompt: buildWorkflowCompilationPrompt(item),
2105
- });
2106
- }, [createWorkflowDraft]);
2107
- // Open a workflow draft and seed it with the selected template prompt.
2108
- const handleTemplateSelected = useCallback(async (seedPrompt) => {
2109
- setTemplatesModalOpen(false);
2110
- await createWorkflowDraft({ initialPrompt: seedPrompt });
2111
- }, [createWorkflowDraft]);
2112
- // Zero-state: open trigger or task forms, switching filter first.
2113
- const handleZeroStateNewTrigger = useCallback(() => {
2114
- showAutomationsList();
2115
- openCreateTrigger();
2116
- }, [openCreateTrigger, showAutomationsList]);
2117
- const handleZeroStateNewTask = useCallback(() => {
2118
- showAutomationsList();
2119
- openCreateTask();
2120
- }, [openCreateTask, showAutomationsList]);
2121
- const openSeededTask = useCallback((idea) => {
2122
- showAutomationsList();
2123
- openCreateTrigger();
2124
- setForm({
2125
- ...emptyForm,
2126
- displayName: idea.label,
2127
- instructions: idea.prompt,
2128
- });
2129
- }, [openCreateTrigger, setForm, showAutomationsList]);
2130
- const handleDescribeAutomation = useCallback(async (prompt) => {
2131
- const trimmed = prompt.trim();
2132
- if (!trimmed)
2133
- return;
2134
- if (inferAutomationPromptKind(trimmed) === "workflow") {
2135
- await createWorkflowDraft({
2136
- title: titleFromAutomationPrompt(trimmed),
2137
- initialPrompt: trimmed,
2138
- });
2139
- return;
2140
- }
2141
- showAutomationsList();
2142
- openCreateTrigger();
2143
- setForm({
2144
- ...emptyForm,
2145
- displayName: titleFromAutomationPrompt(trimmed),
2146
- instructions: trimmed,
2147
- });
2148
- }, [createWorkflowDraft, openCreateTrigger, setForm, showAutomationsList]);
2149
- const handleRefreshWorkflows = useCallback(async () => {
2150
- setPageNotice(null);
2151
- const data = await refreshAutomationsWithDraftBinding(activeWorkflowConversation);
2152
- if (!data && ctx.automationsError) {
2153
- setPageNotice(ctx.automationsError);
2154
- }
2155
- }, [
2156
- activeWorkflowConversation,
2157
- ctx.automationsError,
2158
- refreshAutomationsWithDraftBinding,
2159
- ]);
2160
- const handleStartLocalN8n = useCallback(async () => {
2161
- setWorkflowOpsBusy(true);
2162
- setPageNotice(null);
2163
- try {
2164
- await client.startN8nSidecar();
2165
- await ctx.refreshAutomations();
2166
- }
2167
- catch (error) {
2168
- setPageNotice(error instanceof Error
2169
- ? error.message
2170
- : t("automations.n8n.startFailed", {
2171
- defaultValue: "Failed to start local automations.",
2172
- }));
2173
- }
2174
- finally {
2175
- setWorkflowOpsBusy(false);
2176
- }
2177
- }, [ctx, t]);
2178
- const handleToggleWorkflowActive = useCallback(async (item) => {
2179
- if (!item.workflowId) {
2180
- return;
2181
- }
2182
- setWorkflowBusyId(item.workflowId);
2183
- setPageNotice(null);
2184
- try {
2185
- if (item.enabled) {
2186
- await client.deactivateN8nWorkflow(item.workflowId);
2187
- }
2188
- else {
2189
- await client.activateN8nWorkflow(item.workflowId);
2190
- }
2191
- await ctx.refreshAutomations();
2192
- }
2193
- catch (error) {
2194
- setPageNotice(error instanceof Error
2195
- ? error.message
2196
- : t("automations.n8n.updateStateFailed", {
2197
- defaultValue: "Failed to update workflow state.",
2198
- }));
2199
- }
2200
- finally {
2201
- setWorkflowBusyId(null);
2202
- }
2203
- }, [ctx, t]);
2204
- const handleGenerateWorkflow = useCallback(async (item, prompt) => {
2205
- const conversationId = item.room?.conversationId;
2206
- const conversation = conversationId
2207
- ? (conversations.find((candidate) => candidate.id === conversationId) ??
2208
- null)
2209
- : null;
2210
- const title = item.title.trim() && item.title !== WORKFLOW_DRAFT_TITLE
2211
- ? item.title
2212
- : undefined;
2213
- await generateWorkflowFromPrompt({
2214
- prompt,
2215
- title,
2216
- conversation,
2217
- bridgeConversationId: item.room?.terminalBridgeConversationId,
2218
- workflowId: item.hasBackingWorkflow ? item.workflowId : null,
2219
- });
2220
- }, [conversations, generateWorkflowFromPrompt]);
2221
- const handleScheduleWorkflow = useCallback((item) => {
2222
- if (!item.workflowId) {
2223
- setPageNotice("Generate the workflow before scheduling it.");
2224
- return;
2225
- }
2226
- setForm({
2227
- ...emptyForm,
2228
- displayName: `Run ${item.title}`,
2229
- kind: "workflow",
2230
- workflowId: item.workflowId,
2231
- workflowName: item.title,
2232
- });
2233
- setEditorMode("trigger");
2234
- setEditingId(null);
2235
- ctx.setEditingTaskId(null);
2236
- setSelectedItemId(null);
2237
- setSelectedItemKind(null);
2238
- setEditorOpen(true);
2239
- setShowDashboard(false);
2240
- }, [
2241
- ctx,
2242
- setEditingId,
2243
- setEditorMode,
2244
- setEditorOpen,
2245
- setForm,
2246
- setSelectedItemId,
2247
- setSelectedItemKind,
2248
- ]);
2249
- const handleDeleteWorkflow = useCallback(async (item) => {
2250
- if (!item.workflowId) {
2251
- return;
2252
- }
2253
- const confirmed = await confirmDesktopAction({
2254
- title: t("automations.n8n.deleteWorkflow", {
2255
- defaultValue: "Delete workflow",
2256
- }),
2257
- message: item.schedules.length > 0
2258
- ? `Delete "${item.title}" and ${item.schedules.length} attached schedule${item.schedules.length === 1 ? "" : "s"}? This cannot be undone.`
2259
- : t("automations.n8n.deleteConfirmWorkflow", {
2260
- defaultValue: 'Delete "{{name}}"? This cannot be undone.',
2261
- name: item.title,
2262
- }),
2263
- confirmLabel: t("automations.n8n.deleteWorkflow", {
2264
- defaultValue: "Delete workflow",
2265
- }),
2266
- cancelLabel: t("common.cancel"),
2267
- type: "warning",
2268
- });
2269
- if (!confirmed)
2270
- return;
2271
- setWorkflowBusyId(item.workflowId);
2272
- setPageNotice(null);
2273
- try {
2274
- await client.deleteN8nWorkflow(item.workflowId);
2275
- await Promise.all(item.schedules.map((schedule) => client.deleteTrigger(schedule.id)));
2276
- // Also delete the chat conversation/room that backed this workflow.
2277
- // Without this, the `/api/automations` aggregator keeps surfacing the
2278
- // workflow row as a ghost entry because rooms with workflowId
2279
- // metadata are listed even when the underlying n8n workflow is gone.
2280
- const conversationId = item.room?.conversationId;
2281
- if (conversationId) {
2282
- try {
2283
- await client.deleteConversation(conversationId);
2284
- }
2285
- catch (roomErr) {
2286
- // Non-fatal: the workflow itself is deleted; surface the room
2287
- // failure to the user but don't roll back.
2288
- setPageNotice(`Workflow deleted, but its chat room could not be removed: ${roomErr instanceof Error ? roomErr.message : String(roomErr)}`);
2289
- }
2290
- }
2291
- if (selectedItemId === item.id) {
2292
- setSelectedItemId(null);
2293
- setSelectedItemKind(null);
2294
- }
2295
- // Mirror handleDeleteDraft: also clear the active workflow
2296
- // conversation if it's the one tied to the deleted workflow.
2297
- // Without this, refreshAutomationsWithDraftBinding keeps receiving
2298
- // a stale conversation reference on subsequent refreshes.
2299
- if (conversationId &&
2300
- activeWorkflowConversation?.id === conversationId) {
2301
- setActiveWorkflowConversation(null);
2302
- }
2303
- await ctx.refreshAutomations();
2304
- }
2305
- catch (error) {
2306
- setPageNotice(error instanceof Error
2307
- ? error.message
2308
- : t("automations.n8n.deleteFailed", {
2309
- defaultValue: "Failed to delete workflow.",
2310
- }));
2311
- }
2312
- finally {
2313
- setWorkflowBusyId(null);
2314
- }
2315
- }, [
2316
- activeWorkflowConversation?.id,
2317
- ctx,
2318
- selectedItemId,
2319
- setSelectedItemId,
2320
- setSelectedItemKind,
2321
- t,
2322
- ]);
2323
- const handleDuplicateWorkflow = useCallback(async (item) => {
2324
- if (!item.workflowId) {
2325
- return;
2326
- }
2327
- setPageNotice(null);
2328
- try {
2329
- const workflow = await client.getN8nWorkflow(item.workflowId);
2330
- const copy = await client.createN8nWorkflow(buildWorkflowCopyRequest(workflow, `${item.title} Copy`));
2331
- await ctx.refreshAutomations();
2332
- selectWorkflowById(copy.id);
2333
- }
2334
- catch (error) {
2335
- setPageNotice(error instanceof Error
2336
- ? error.message
2337
- : "Failed to duplicate workflow.");
2338
- }
2339
- }, [ctx, selectWorkflowById]);
2340
- const handleDeleteDraft = useCallback(async (item) => {
2341
- // Synthesized in-flight drafts (workflow-draft:* ids surfaced
2342
- // before refreshAutomations completes) have no `room` because the
2343
- // controller's resolvedSelectedItem useMemo can't reach
2344
- // activeWorkflowConversation from its scope. Fall back to the
2345
- // live activeWorkflowConversation when item.room is missing —
2346
- // that's the same conversation the synthesized item represents.
2347
- const conversationId = item.room?.conversationId ?? activeWorkflowConversation?.id ?? null;
2348
- if (!conversationId) {
2349
- setPageNotice("This draft is missing its automation room.");
2350
- return;
2351
- }
2352
- const confirmed = await confirmDesktopAction({
2353
- title: "Delete draft",
2354
- message: `Delete "${getAutomationDisplayTitle(item)}"? This removes the draft room and its conversation.`,
2355
- confirmLabel: "Delete draft",
2356
- cancelLabel: t("common.cancel"),
2357
- type: "warning",
2358
- });
2359
- if (!confirmed)
2360
- return;
2361
- setPageNotice(null);
2362
- try {
2363
- await client.deleteConversation(conversationId);
2364
- if (selectedItemId === item.id) {
2365
- setSelectedItemId(null);
2366
- setSelectedItemKind(null);
2367
- }
2368
- if (activeWorkflowConversation?.id === conversationId) {
2369
- setActiveWorkflowConversation(null);
2370
- }
2371
- await ctx.refreshAutomations();
2372
- setShowDashboard(true);
2373
- }
2374
- catch (error) {
2375
- setPageNotice(error instanceof Error ? error.message : "Failed to delete draft.");
2376
- }
2377
- }, [
2378
- activeWorkflowConversation?.id,
2379
- ctx,
2380
- selectedItemId,
2381
- setSelectedItemId,
2382
- setSelectedItemKind,
2383
- t,
2384
- ]);
2385
- const workflowItems = useMemo(() => visibleItems.filter((item) => item.type === "n8n_workflow"), [visibleItems]);
2386
- const taskItems = useMemo(() => visibleItems.filter((item) => item.type === "automation_draft" || item.trigger != null), [visibleItems]);
2387
- const agentOwnedItems = useMemo(() => visibleItems.filter((item) => item.task != null && item.system), [visibleItems]);
2388
- // Watch active drafts: while any unbound draft exists, poll the
2389
- // automations list and try to rebind it to whatever the agent
2390
- // materialized (trigger / task / workflow). Loop self-terminates as
2391
- // soon as the draft is rebound (it disappears from `allItems`).
2392
- const allDraftItems = useMemo(() => ctx.allItems.filter((item) => item.type === "automation_draft"), [ctx.allItems]);
2393
- useEffect(() => {
2394
- if (allDraftItems.length === 0)
2395
- return undefined;
2396
- const draftConversations = allDraftItems
2397
- .map((item) => {
2398
- const conversationId = item.room?.conversationId;
2399
- if (!conversationId)
2400
- return null;
2401
- return conversations.find((c) => c.id === conversationId) ?? null;
2402
- })
2403
- .filter((c) => c != null);
2404
- if (draftConversations.length === 0)
2405
- return undefined;
2406
- const interval = window.setInterval(() => {
2407
- for (const draftConversation of draftConversations) {
2408
- void refreshAutomationsWithDraftBinding(draftConversation);
2409
- }
2410
- }, 5000);
2411
- return () => window.clearInterval(interval);
2412
- }, [allDraftItems, conversations, refreshAutomationsWithDraftBinding]);
2413
- const renderItem = (item) => (_jsx(AutomationSidebarItem, { item: item, selected: selectedItemId === item.id, onClick: () => selectItem(item), onDoubleClick: item.task && !item.system
2414
- ? () => {
2415
- showAutomationsList();
2416
- ctx.openEditTask(item.task);
2417
- }
2418
- : item.trigger
2419
- ? () => {
2420
- showAutomationsList();
2421
- ctx.openEditTrigger(item.trigger);
2422
- void loadTriggerRuns(item.trigger.id);
2423
- }
2424
- : undefined }, item.id));
2425
- const nodeCatalogActive = activeSubpage === "node-catalog";
2426
- const nodeCatalogLabel = t("automations.nodeCatalog", {
2427
- defaultValue: "Nodes",
2428
- });
2429
- const automationsSidebar = (_jsx(AppPageSidebar, { testId: "automations-sidebar", collapsible: true, contentIdentity: "automations", collapseButtonTestId: "automations-sidebar-collapse-toggle", expandButtonTestId: "automations-sidebar-expand-toggle", collapseButtonAriaLabel: t("automations.collapse", {
2430
- defaultValue: "Collapse automations",
2431
- }), expandButtonAriaLabel: t("automations.expand", {
2432
- defaultValue: "Expand automations",
2433
- }), bottomAction: _jsxs("button", { type: "button", onClick: () => showNodeCatalog(), "aria-pressed": nodeCatalogActive, title: nodeCatalogLabel, className: `inline-flex h-6 shrink-0 items-center gap-1.5 rounded-[var(--radius-sm)] bg-transparent px-1.5 text-2xs font-semibold uppercase tracking-[0.12em] transition-colors ${nodeCatalogActive ? "text-txt" : "text-muted hover:text-txt"}`, children: [_jsx(Grid3x3, { className: "h-3.5 w-3.5", "aria-hidden": true }), _jsx("span", { children: nodeCatalogLabel })] }), collapsedRailAction: _jsx(SidebarCollapsedActionButton, { "aria-label": "Create task or workflow", onClick: () => setCreateDialogMode("all"), children: _jsx(Plus, { className: "h-4 w-4" }) }), collapsedRailItems: visibleItems.map((item) => (_jsx(SidebarContent.RailItem, { "aria-label": getAutomationDisplayTitle(item), title: getAutomationDisplayTitle(item), active: item.id === selectedItemId, indicatorTone: getAutomationIndicatorTone(item), onClick: () => selectItem(item), children: railMonogram(getAutomationDisplayTitle(item)) }, item.id))), children: _jsx(SidebarScrollRegion, { className: "!px-0 !pb-2 !pt-0 [scrollbar-gutter:auto]", style: { scrollbarGutter: "auto" }, children: _jsxs(SidebarPanel, { className: "bg-transparent gap-0 p-0 shadow-none", children: [isLoading && (_jsxs("div", { className: "flex items-center gap-2 px-2 py-1.5 text-2xs text-muted", children: [_jsx("div", { className: "h-3 w-3 animate-spin rounded-full border-2 border-muted/30 border-t-muted/80" }), t("common.loading")] })), _jsxs("button", { type: "button", onClick: showOverview, "aria-current": showDashboard ? "page" : undefined, className: `mt-0 flex w-full items-center gap-2 rounded-[var(--radius-sm)] px-2 py-1 text-left text-xs-tight transition-colors ${showDashboard
2434
- ? "bg-accent/15 text-txt"
2435
- : "text-txt hover:bg-bg-muted/50"}`, children: [_jsx(LayoutDashboard, { className: "h-3.5 w-3.5 shrink-0 text-muted/70", "aria-hidden": true }), _jsx("span", { className: "truncate", children: "Overview" })] }), _jsxs("div", { className: "mt-0.5 space-y-1", children: [_jsx(AutomationCollapsibleSection, { sectionKey: "tasks", label: "Tasks", icon: _jsx(FileText, { className: "h-3.5 w-3.5", "aria-hidden": true }), count: taskItems.length, collapsed: collapsedSections.has("tasks"), onToggleCollapsed: toggleSectionCollapsed, onAdd: handleZeroStateNewTask, addLabel: "Create task", emptyLabel: "No tasks", children: taskItems.map(renderItem) }), _jsx(AutomationCollapsibleSection, { sectionKey: "workflows", label: "Workflows", icon: _jsx(Workflow, { className: "h-3.5 w-3.5", "aria-hidden": true }), count: workflowItems.length, collapsed: collapsedSections.has("workflows"), onToggleCollapsed: toggleSectionCollapsed, onAdd: () => void createWorkflowDraft(), addLabel: "Create workflow", emptyLabel: "No workflows", children: workflowItems.map(renderItem) }), _jsx(AutomationCollapsibleSection, { sectionKey: "agent-owned", label: "Internal", icon: _jsx(SquareTerminal, { className: "h-3.5 w-3.5", "aria-hidden": true }), count: agentOwnedItems.length, collapsed: collapsedSections.has("agent-owned"), onToggleCollapsed: toggleSectionCollapsed, emptyLabel: "No internal automations", children: agentOwnedItems.map(renderItem) })] })] }) }) }));
2436
- return (_jsxs(PageLayout, { className: "h-full bg-transparent", "data-testid": "automations-shell", sidebar: automationsSidebar, contentInnerClassName: "w-full", footer: _jsx(WidgetHost, { slot: "automations", className: "py-2" }), mobileSidebarLabel: mobileSidebarLabel, children: [_jsxs("div", { className: "flex min-h-0 flex-1 flex-col", children: [activeSubpage === "node-catalog" ||
2437
- (!showDashboard && showDetailPane) ? (_jsx("button", { type: "button", className: "mb-3 flex items-center gap-2 rounded-2xl border border-border/30 bg-bg/25 px-4 py-3 text-base font-medium text-muted hover:text-txt md:hidden", onClick: () => {
2438
- if (activeSubpage === "node-catalog") {
2439
- showAutomationsList();
2440
- return;
2441
- }
2442
- setSelectedItemId(null);
2443
- setSelectedItemKind(null);
2444
- setEditorOpen(false);
2445
- setEditingId(null);
2446
- ctx.setEditingTaskId(null);
2447
- }, children: "\u2190 Back" })) : null, missingCredentials && missingCredentials.length > 0 && (_jsx(PagePanel, { variant: "padded", className: "mb-4 border border-warn/40 bg-warn-subtle", children: _jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "space-y-1", children: [_jsxs("p", { className: "text-sm font-semibold text-warn", children: ["Workflow needs ", missingCredentials.length, " credential", missingCredentials.length === 1 ? "" : "s"] }), _jsxs("p", { className: "text-xs text-muted", children: ["Connect", " ", missingCredentials
2448
- .map((cred) => prettyCredName(cred.credType))
2449
- .join(", "), " ", "to activate this workflow."] }), _jsx("div", { className: "mt-2 flex flex-wrap gap-2", children: missingCredentials.map((cred) => (_jsxs(Button, { size: "sm", variant: "outline", onClick: () => {
2450
- setTab("settings");
2451
- dispatchFocusConnector(providerFromCredType(cred.credType));
2452
- setMissingCredentials(null);
2453
- }, children: ["Connect ", prettyCredName(cred.credType), " \u2192"] }, cred.credType))) })] }), _jsx(Button, { variant: "ghost", size: "sm", className: "text-muted hover:text-txt", onClick: () => setMissingCredentials(null), children: "Dismiss" })] }) })), (pageNotice || combinedError) && (_jsx(PagePanel, { variant: "padded", className: "mb-4 border border-danger/20 bg-danger/5", children: _jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsx("p", { className: "text-sm text-danger", children: pageNotice ?? combinedError }), pageNotice && (_jsx(Button, { variant: "ghost", size: "sm", className: "text-danger hover:bg-danger/10", onClick: () => setPageNotice(null), children: "Dismiss" }))] }) })), editorOpen || editingId || editingTaskId ? (editorMode === "task" || editingTaskId ? (_jsx(TaskForm, {})) : (_jsx(HeartbeatForm, { form: form, editingId: editingId, editorEnabled: editorEnabled, modalTitle: modalTitle, formError: formError, triggersSaving: triggersSaving, templateNotice: templateNotice, triggers: triggers, triggerRunsById: triggerRunsById, t: t, selectedTriggerId: editingId, setField: setField, setForm: setForm, setFormError: setFormError, closeEditor: closeEditor, onSubmit: onSubmitTrigger, onDelete: onDeleteTrigger, onRunSelectedTrigger: onRunSelectedTrigger, onToggleTriggerEnabled: onToggleTriggerEnabled, saveFormAsTemplate: saveFormAsTemplate, loadTriggerRuns: loadTriggerRuns, kickerLabelCreate: form.kind === "workflow" ? "New schedule" : "New task", kickerLabelEdit: form.kind === "workflow" ? "Edit schedule" : "Edit task", submitLabelCreate: form.kind === "workflow" ? "Create schedule" : "Create task", submitLabelEdit: form.kind === "workflow" ? "Save schedule" : "Save task" }))) : activeSubpage === "node-catalog" ? (_jsx(AutomationNodeCatalogPane, { nodes: automationNodes })) : showDashboard ? (_jsx(AutomationsDashboard, { items: ctx.allItems, onSelectItem: selectItem, onCreateTask: handleZeroStateNewTask, onCreateWorkflow: () => void createWorkflowDraft(), onDescribeAutomation: handleDescribeAutomation, onUseIdea: (idea) => {
2454
- if (idea.kind === "workflow") {
2455
- void createWorkflowDraft({
2456
- title: idea.label,
2457
- initialPrompt: idea.prompt,
2458
- });
2459
- return;
2460
- }
2461
- openSeededTask(idea);
2462
- } })) : resolvedSelectedItem?.type === "automation_draft" ? (_jsx(AutomationDraftPane, { automation: resolvedSelectedItem, onSeedPrompt: (prompt) => prefillPageChat(prompt, { select: true }), onDeleteDraft: handleDeleteDraft })) : resolvedSelectedItem?.type === "n8n_workflow" ? (_jsx(WorkflowAutomationDetailPane, { automation: resolvedSelectedItem, n8nStatus: n8nStatus, workflowFetchError: workflowFetchError, workflowBusyId: workflowBusyId, workflowOpsBusy: workflowOpsBusy, onDeleteDraft: handleDeleteDraft, onDeleteWorkflow: handleDeleteWorkflow, onDuplicateWorkflow: handleDuplicateWorkflow, onGenerateWorkflow: handleGenerateWorkflow, onRefreshWorkflows: handleRefreshWorkflows, onScheduleWorkflow: handleScheduleWorkflow, onStartLocalN8n: handleStartLocalN8n, onToggleWorkflowActive: handleToggleWorkflowActive })) : resolvedSelectedItem?.trigger ? (_jsx(TriggerAutomationDetailPane, { automation: resolvedSelectedItem, onPromoteToWorkflow: promoteAutomationToWorkflow })) : resolvedSelectedItem?.task ? (_jsx(TaskAutomationDetailPane, { automation: resolvedSelectedItem, onPromoteToWorkflow: promoteAutomationToWorkflow })) : showFirstRunEmptyState ? (_jsx(AutomationsZeroState, { onBrowseTemplates: () => setTemplatesModalOpen(true), onNewTrigger: handleZeroStateNewTrigger, onNewTask: handleZeroStateNewTask })) : (_jsx("div", { className: "flex min-h-0 flex-1 items-center justify-center px-8 py-10 text-center", children: _jsx("div", { className: "space-y-3", children: _jsx("h3", { className: "text-lg font-semibold text-txt-strong", children: "Select a task or workflow" }) }) }))] }), _jsx(CreateAutomationDialog, { open: createDialogMode !== null, onOpenChange: (open) => {
2463
- if (!open) {
2464
- setCreateDialogMode(null);
2465
- }
2466
- }, onCreateTask: () => {
2467
- setCreateDialogMode(null);
2468
- handleZeroStateNewTask();
2469
- }, onCreateWorkflow: () => {
2470
- setCreateDialogMode(null);
2471
- void createWorkflowDraft();
2472
- }, onDescribeAutomation: handleDescribeAutomation }), _jsx(WorkflowTemplatesModal, { open: templatesModalOpen, onOpenChange: setTemplatesModalOpen, onSelectTemplate: (seedPrompt) => void handleTemplateSelected(seedPrompt), onSelectCustom: () => {
2473
- setTemplatesModalOpen(false);
2474
- void createWorkflowDraft();
2475
- } })] }));
2476
- }
2477
- export function AutomationsView() {
2478
- const controller = useAutomationsViewController();
2479
- return (_jsx(AutomationsViewContext.Provider, { value: controller, children: _jsx(AutomationsLayout, {}) }));
2480
- }
2481
- export function AutomationsDesktopShell() {
2482
- const controller = useAutomationsViewController();
2483
- // Collapse the right-rail chat dock when no workflow / draft is
2484
- // selected. The Automations Overview page already has a centered hero
2485
- // compose ("Describe a task or workflow…") that's the canonical create
2486
- // surface; the bottom-right dock + hero showed two inputs at once and
2487
- // confused users. When a workflow or draft IS selected, the rail (and
2488
- // its PageScopedChatPane) opens so the user can edit/refine.
2489
- //
2490
- // Stay in CONTROLLED mode at all times. An earlier revision flipped
2491
- // between controlled (when nothing selected) and uncontrolled (when
2492
- // something selected); that left AppWorkspaceChrome's internal
2493
- // `internalCollapsed` stuck at `true` after the controlled phase, so
2494
- // the rail never opened on the first selection. Always-controlled
2495
- // avoids that transition entirely.
2496
- const hasScopedItem = controller.resolvedSelectedItem != null;
2497
- const [userCollapsedWhenSelected, setUserCollapsedWhenSelected] = useState(false);
2498
- // When the user clears the selection, also reset the toggle so the next
2499
- // selection starts with the rail open by default.
2500
- useEffect(() => {
2501
- if (!hasScopedItem)
2502
- setUserCollapsedWhenSelected(false);
2503
- }, [hasScopedItem]);
2504
- const chatCollapsed = hasScopedItem ? userCollapsedWhenSelected : true;
2505
- const handleToggleChat = useCallback((next) => {
2506
- // No-op when nothing is selected — the rail is force-closed in that
2507
- // state and the toggle button is hidden, so this should never fire.
2508
- if (hasScopedItem)
2509
- setUserCollapsedWhenSelected(next);
2510
- }, [hasScopedItem]);
2511
- return (_jsx(AutomationsViewContext.Provider, { value: controller, children: _jsx(AppWorkspaceChrome, { testId: "automations-workspace", chat: _jsx(AutomationsSidebarChat, { activeItem: controller.resolvedSelectedItem }), chatCollapsed: chatCollapsed, onToggleChat: handleToggleChat, hideCollapseButton: !hasScopedItem, main: _jsx("div", { className: "flex flex-col flex-1 min-h-0 min-w-0 overflow-hidden", children: _jsx(AutomationsLayout, {}) }) }) }));
2512
- }