@futdevpro/ccap 1.1.2501 → 1.1.2582

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 (316) hide show
  1. package/client-dist/{agent-instances.module-LTDXV2IY.js → agent-instances.module-7VEBBM5Y.js} +2 -2
  2. package/client-dist/ca.module-ZFHRCLF7.js +5 -0
  3. package/client-dist/ca.module-ZFHRCLF7.js.map +7 -0
  4. package/client-dist/cc.module-JZX6WYEJ.js +4 -0
  5. package/client-dist/cc.module-JZX6WYEJ.js.map +7 -0
  6. package/client-dist/{chunk-EM3SZVDU.js → chunk-25EU3GLD.js} +2 -2
  7. package/client-dist/{chunk-GFTD3PFY.js → chunk-2O52ESML.js} +2 -2
  8. package/client-dist/{chunk-UUVX445C.js → chunk-2SPJ3JFQ.js} +2 -2
  9. package/client-dist/{chunk-ZLFERKG3.js → chunk-3FTM2EWS.js} +2 -2
  10. package/client-dist/{chunk-3UOIDPAC.js → chunk-3SNKGBZL.js} +2 -2
  11. package/client-dist/{chunk-HFR2YVDI.js → chunk-3TXLV3DA.js} +2 -2
  12. package/client-dist/chunk-53QIVVCG.js +2 -0
  13. package/client-dist/chunk-53QIVVCG.js.map +7 -0
  14. package/client-dist/{chunk-WEVE5VD3.js → chunk-6BANNHB6.js} +2 -2
  15. package/client-dist/{chunk-7RCG5AUK.js → chunk-AHZ2P3Z3.js} +2 -2
  16. package/client-dist/{chunk-SUTYJTHV.js → chunk-AYBZUIVP.js} +2 -2
  17. package/client-dist/{chunk-IOTAEA7L.js → chunk-BC56SIVJ.js} +3 -3
  18. package/client-dist/chunk-BC56SIVJ.js.map +1 -0
  19. package/client-dist/{chunk-QZNDAR62.js → chunk-BDL5F3DK.js} +2 -2
  20. package/client-dist/{chunk-VWZZNYWE.js → chunk-CN2EISGD.js} +2 -2
  21. package/client-dist/{chunk-Z3GNAEVX.js → chunk-CTB35A3I.js} +3 -3
  22. package/client-dist/chunk-CTB35A3I.js.map +7 -0
  23. package/client-dist/{chunk-KPAFG4UR.js → chunk-CXE46KLX.js} +2 -2
  24. package/client-dist/{chunk-AQ6UDIDI.js → chunk-CZEGJES4.js} +2 -2
  25. package/client-dist/{chunk-ZDPUFUOX.js → chunk-D4YCGDYF.js} +2 -2
  26. package/client-dist/{chunk-UXSUGWC7.js → chunk-D5YBMGLK.js} +2 -2
  27. package/client-dist/{chunk-WBGOPUBJ.js → chunk-DR5CW2Q5.js} +2 -2
  28. package/client-dist/{chunk-ZLTD5EHK.js → chunk-DTMD64OK.js} +2 -2
  29. package/client-dist/{chunk-UI5GI7XJ.js → chunk-ERTQ57LC.js} +2 -2
  30. package/client-dist/{chunk-SCV6UFI3.js → chunk-F763HXOW.js} +2 -2
  31. package/client-dist/{chunk-2R2YN5EL.js → chunk-FH7BZ5KC.js} +2 -2
  32. package/client-dist/{chunk-OQBJMVZN.js → chunk-FKFHKEJ6.js} +2 -2
  33. package/client-dist/{chunk-GBTUS3NA.js → chunk-GH6753SA.js} +2 -2
  34. package/client-dist/{chunk-FF6BDAQ3.js → chunk-GYAPUB7L.js} +2 -2
  35. package/client-dist/{chunk-6QUQUVFA.js → chunk-IX66ULOP.js} +2 -2
  36. package/client-dist/{chunk-X7RDMQ3C.js → chunk-KNCYCQVI.js} +2 -2
  37. package/client-dist/{chunk-6DG4SANW.js → chunk-M4TYKIMG.js} +2 -2
  38. package/client-dist/{chunk-6HLT2T6S.js → chunk-NJZZZGTL.js} +2 -2
  39. package/client-dist/{chunk-6KYIRW2G.js → chunk-OVYV3NO4.js} +2 -2
  40. package/client-dist/{chunk-EGJCQMSF.js → chunk-OZ2XX74S.js} +2 -2
  41. package/client-dist/{chunk-NOJ5LBG5.js → chunk-PWFZ6PI4.js} +2 -2
  42. package/client-dist/{chunk-PPC5TB5D.js → chunk-RIPG5ILJ.js} +2 -2
  43. package/client-dist/{chunk-HXI4T6RD.js → chunk-T3KV2MBE.js} +2 -2
  44. package/client-dist/{chunk-2BHHN7VT.js → chunk-T7O5N6F5.js} +2 -2
  45. package/client-dist/{chunk-LV57US6X.js → chunk-TYFIVDHM.js} +2 -2
  46. package/client-dist/{chunk-YGNJ5SA4.js → chunk-U4EZD6B3.js} +2 -2
  47. package/client-dist/chunk-U7PPOB3Z.js +3 -0
  48. package/client-dist/{chunk-4GZ62WW2.js.map → chunk-U7PPOB3Z.js.map} +4 -4
  49. package/client-dist/{chunk-WTMQ54UE.js → chunk-UDXUA4QP.js} +2 -2
  50. package/client-dist/{chunk-MKW5NDHN.js → chunk-UKMTMXFC.js} +2 -2
  51. package/client-dist/{chunk-IF3SDXO3.js → chunk-UKTCBZ23.js} +2 -2
  52. package/client-dist/{chunk-PCOACAKZ.js → chunk-USYW262H.js} +2 -2
  53. package/client-dist/{chunk-ESXT6PE7.js → chunk-UXQXE4O4.js} +2 -2
  54. package/client-dist/{chunk-XRFAWHWF.js → chunk-VA5ORQEA.js} +2 -2
  55. package/client-dist/{chunk-XKVTWHUQ.js → chunk-VD2IXKGO.js} +2 -2
  56. package/client-dist/{chunk-BOSO7V5W.js → chunk-W3N4KJQU.js} +2 -2
  57. package/client-dist/{chunk-Q6AFYXZZ.js → chunk-WKKV76Y4.js} +2 -2
  58. package/client-dist/{chunk-QF3XZDPL.js → chunk-WRTBJFYJ.js} +2 -2
  59. package/client-dist/{chunk-APQCANPB.js → chunk-WTKKMZP3.js} +2 -2
  60. package/client-dist/{chunk-O2FFMKAR.js → chunk-XZ6U37UV.js} +2 -2
  61. package/client-dist/{chunk-OCZXZA7H.js → chunk-YKPMO3C3.js} +2 -2
  62. package/client-dist/{chunk-JVQWRB3X.js → chunk-ZIAX3RD5.js} +2 -2
  63. package/client-dist/{chunk-6UTCOTTK.js → chunk-ZPHUSRQ2.js} +2 -2
  64. package/client-dist/chunk-ZR3JTDG2.js +2 -0
  65. package/client-dist/chunk-ZR3JTDG2.js.map +7 -0
  66. package/client-dist/{chunk-XPGMSC4M.js → chunk-ZVEM6BEV.js} +2 -2
  67. package/client-dist/{consultant.module-5XH5HTTH.js → consultant.module-355QJ5VP.js} +2 -2
  68. package/client-dist/{crd.module-53UQTTLA.js → crd.module-23O7HPSP.js} +2 -2
  69. package/client-dist/{dashboard.module-KOHITRUW.js → dashboard.module-B3DBG7VA.js} +2 -2
  70. package/client-dist/do-chat-popup.component-3NJKFEEW.css.map +7 -0
  71. package/client-dist/{do-instance-panel.component-K5IGXVCT.css.map → do-instance-panel.component-MDYTDDAF.css.map} +2 -2
  72. package/client-dist/do-office-scene.component-Z3ULZ7BC.css.map +7 -0
  73. package/client-dist/do.module-T3T4EI72.js +18 -0
  74. package/client-dist/do.module-T3T4EI72.js.map +7 -0
  75. package/client-dist/{document-library.module-72JKQJ2J.js → document-library.module-HCB3IBFU.js} +2 -2
  76. package/client-dist/{embedding-eval.module-3WCRH2K6.js → embedding-eval.module-Y4S72P6L.js} +2 -2
  77. package/client-dist/{embedding-registry.module-TG4TN5QC.js → embedding-registry.module-WRLE4M2R.js} +2 -2
  78. package/client-dist/{err.module-RJW3NXTH.js → err.module-NEHVNIDC.js} +2 -2
  79. package/client-dist/{feedback.module-FWEGEGYQ.js → feedback.module-M22IIOC3.js} +2 -2
  80. package/client-dist/{host-runtime-mcp.module-KAAHVFSN.js → host-runtime-mcp.module-BTQGLDN3.js} +2 -2
  81. package/client-dist/index.html +2 -2
  82. package/client-dist/{live-dev-pipeline.module-QHCYBTUC.js → live-dev-pipeline.module-TBWOJ2K7.js} +2 -2
  83. package/client-dist/{logs.module-4LFK3T3K.js → logs.module-WLXYHRBN.js} +2 -2
  84. package/client-dist/main-CPF6CLMC.js +7 -0
  85. package/client-dist/main-CPF6CLMC.js.map +7 -0
  86. package/client-dist/{master-control-remote-poc.module-WED7JUNZ.js → master-control-remote-poc.module-NZ4AZJHI.js} +2 -2
  87. package/client-dist/{mobile-app.module-AXH7W53A.js → mobile-app.module-JUBFTHW3.js} +2 -2
  88. package/client-dist/{model-registry.module-SGHIKUWI.js → model-registry.module-AIAGFPNO.js} +2 -2
  89. package/client-dist/oc.module-KYUWTHHM.js +3 -0
  90. package/client-dist/oc.module-KYUWTHHM.js.map +7 -0
  91. package/client-dist/{orc.module-DGB2CPYK.js → orc.module-BMV7EOI7.js} +2 -2
  92. package/client-dist/{project-management.module-7PYZ6SMH.js → project-management.module-X5VO2F54.js} +11 -11
  93. package/client-dist/project-management.module-X5VO2F54.js.map +7 -0
  94. package/client-dist/project-source-routed.module-CTOB53C7.js +2 -0
  95. package/client-dist/{scheduler.module-KG43N2FH.js → scheduler.module-IKACZ62P.js} +2 -2
  96. package/client-dist/session.module-GLASF7US.js +12 -0
  97. package/client-dist/session.module-GLASF7US.js.map +7 -0
  98. package/client-dist/set.module-COGQHP7X.js +11 -0
  99. package/client-dist/{set.module-Y3LNLS4R.js.map → set.module-COGQHP7X.js.map} +3 -3
  100. package/client-dist/{setup.module-CB5LKKCH.js → setup.module-CWFUSK2V.js} +2 -2
  101. package/client-dist/styles-JBAOFG2I.css +2 -0
  102. package/client-dist/styles-JBAOFG2I.css.map +7 -0
  103. package/client-dist/{terminals.module-Y4AD2WBX.js → terminals.module-FIV7G4Y6.js} +2 -2
  104. package/client-dist/{voice-notes-poc.module-YNGGW2OL.js → voice-notes-poc.module-HWX6J3HW.js} +2 -2
  105. package/client-dist/{wfs.module-JD7CMBRB.js → wfs.module-AF5XUOHR.js} +2 -2
  106. package/package.json +1 -1
  107. package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.js +1 -1
  108. package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.js.map +1 -1
  109. package/server/build/src/_modules/ai-systems/_modules/model-registry/_models/data-models/mrg-instance-registry.data-model.d.ts +7 -0
  110. package/server/build/src/_modules/ai-systems/_modules/model-registry/_models/data-models/mrg-instance-registry.data-model.d.ts.map +1 -1
  111. package/server/build/src/_modules/ai-systems/_modules/model-registry/_models/data-models/mrg-instance-registry.data-model.js +8 -0
  112. package/server/build/src/_modules/ai-systems/_modules/model-registry/_models/data-models/mrg-instance-registry.data-model.js.map +1 -1
  113. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.d.ts +5 -0
  114. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.d.ts.map +1 -1
  115. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.js +19 -2
  116. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.js.map +1 -1
  117. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.spec.js +12 -0
  118. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.spec.js.map +1 -1
  119. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.d.ts +18 -1
  120. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.d.ts.map +1 -1
  121. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.js +44 -2
  122. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.js.map +1 -1
  123. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.spec.js +76 -2
  124. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.spec.js.map +1 -1
  125. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.d.ts +31 -0
  126. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.d.ts.map +1 -0
  127. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.js +29 -0
  128. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.js.map +1 -0
  129. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.d.ts +28 -0
  130. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.d.ts.map +1 -0
  131. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.js +40 -0
  132. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.js.map +1 -0
  133. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.spec.d.ts +6 -0
  134. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.spec.d.ts.map +1 -0
  135. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.spec.js +39 -0
  136. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.spec.js.map +1 -0
  137. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.d.ts +13 -0
  138. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.d.ts.map +1 -1
  139. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.js +13 -3
  140. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.js.map +1 -1
  141. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.spec.js +40 -0
  142. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.spec.js.map +1 -1
  143. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.d.ts.map +1 -1
  144. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.js +19 -0
  145. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.js.map +1 -1
  146. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.d.ts +21 -0
  147. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.d.ts.map +1 -1
  148. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.js +45 -1
  149. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.js.map +1 -1
  150. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.d.ts.map +1 -1
  151. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js +48 -11
  152. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js.map +1 -1
  153. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.d.ts +12 -0
  154. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.d.ts.map +1 -1
  155. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.js +87 -7
  156. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.js.map +1 -1
  157. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-grace-period.control-service.spec.js +41 -0
  158. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-grace-period.control-service.spec.js.map +1 -1
  159. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-runner-versions.control-service.spec.d.ts +12 -0
  160. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-runner-versions.control-service.spec.d.ts.map +1 -0
  161. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-runner-versions.control-service.spec.js +62 -0
  162. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-runner-versions.control-service.spec.js.map +1 -0
  163. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts +32 -18
  164. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts.map +1 -1
  165. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js +126 -55
  166. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js.map +1 -1
  167. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.d.ts +1 -0
  168. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.d.ts.map +1 -1
  169. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.js +6 -0
  170. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.js.map +1 -1
  171. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.d.ts +33 -0
  172. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.d.ts.map +1 -0
  173. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.js +3 -0
  174. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.js.map +1 -0
  175. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.d.ts +33 -0
  176. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.d.ts.map +1 -1
  177. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.js +78 -1
  178. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.js.map +1 -1
  179. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.spec.js +60 -0
  180. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.spec.js.map +1 -1
  181. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.d.ts.map +1 -1
  182. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js +3 -0
  183. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js.map +1 -1
  184. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.spec.d.ts +9 -0
  185. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.spec.d.ts.map +1 -0
  186. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.spec.js +43 -0
  187. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.spec.js.map +1 -0
  188. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts +44 -0
  189. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts.map +1 -1
  190. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js +94 -0
  191. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js.map +1 -1
  192. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts +39 -2
  193. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts.map +1 -1
  194. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.js +0 -7
  195. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.js.map +1 -1
  196. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-peer-result.interface.d.ts +13 -0
  197. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-peer-result.interface.d.ts.map +1 -0
  198. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-peer-result.interface.js +3 -0
  199. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-peer-result.interface.js.map +1 -0
  200. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-ws-result.interface.d.ts +23 -0
  201. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-ws-result.interface.d.ts.map +1 -0
  202. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-ws-result.interface.js +3 -0
  203. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-ws-result.interface.js.map +1 -0
  204. package/server/build/src/_modules/setup-config/_routes/setup-config.controller.d.ts.map +1 -1
  205. package/server/build/src/_modules/setup-config/_routes/setup-config.controller.js +24 -0
  206. package/server/build/src/_modules/setup-config/_routes/setup-config.controller.js.map +1 -1
  207. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.d.ts +43 -5
  208. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.d.ts.map +1 -1
  209. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js +156 -7
  210. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js.map +1 -1
  211. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.spec.d.ts +4 -3
  212. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.spec.d.ts.map +1 -1
  213. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.spec.js +91 -3
  214. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.spec.js.map +1 -1
  215. package/server/build/src/_modules/setup-config/_services/setup-config.control-service.js +1 -1
  216. package/server/build/src/_modules/setup-config/_services/setup-config.control-service.js.map +1 -1
  217. package/client-dist/ca.module-X4AI3X6G.js +0 -5
  218. package/client-dist/ca.module-X4AI3X6G.js.map +0 -7
  219. package/client-dist/cc.module-6QEV2L5A.js +0 -4
  220. package/client-dist/cc.module-6QEV2L5A.js.map +0 -7
  221. package/client-dist/chunk-4GZ62WW2.js +0 -3
  222. package/client-dist/chunk-EIOAQCYO.js +0 -2
  223. package/client-dist/chunk-EIOAQCYO.js.map +0 -7
  224. package/client-dist/chunk-IOTAEA7L.js.map +0 -1
  225. package/client-dist/chunk-W5MWZVSL.js +0 -2
  226. package/client-dist/chunk-W5MWZVSL.js.map +0 -7
  227. package/client-dist/chunk-Z3GNAEVX.js.map +0 -7
  228. package/client-dist/do-character.component-7LDXQOB6.css.map +0 -7
  229. package/client-dist/do-chat-popup.component-FXZ46EHV.css.map +0 -7
  230. package/client-dist/do-office-scene.component-ILYUPFGH.css.map +0 -7
  231. package/client-dist/do.module-EOBGMEAU.js +0 -18
  232. package/client-dist/do.module-EOBGMEAU.js.map +0 -7
  233. package/client-dist/main-LZQUL77P.js +0 -7
  234. package/client-dist/main-LZQUL77P.js.map +0 -7
  235. package/client-dist/oc.module-JNAPKZRS.js +0 -3
  236. package/client-dist/oc.module-JNAPKZRS.js.map +0 -7
  237. package/client-dist/project-management.module-7PYZ6SMH.js.map +0 -7
  238. package/client-dist/project-source-routed.module-B5RDOGY7.js +0 -2
  239. package/client-dist/session.module-T5TLRVUA.js +0 -12
  240. package/client-dist/session.module-T5TLRVUA.js.map +0 -7
  241. package/client-dist/set.module-Y3LNLS4R.js +0 -11
  242. package/client-dist/styles-ILB5HBSL.css +0 -2
  243. package/client-dist/styles-ILB5HBSL.css.map +0 -7
  244. /package/client-dist/{agent-instances.module-LTDXV2IY.js.map → agent-instances.module-7VEBBM5Y.js.map} +0 -0
  245. /package/client-dist/{chunk-EM3SZVDU.js.map → chunk-25EU3GLD.js.map} +0 -0
  246. /package/client-dist/{chunk-GFTD3PFY.js.map → chunk-2O52ESML.js.map} +0 -0
  247. /package/client-dist/{chunk-UUVX445C.js.map → chunk-2SPJ3JFQ.js.map} +0 -0
  248. /package/client-dist/{chunk-ZLFERKG3.js.map → chunk-3FTM2EWS.js.map} +0 -0
  249. /package/client-dist/{chunk-3UOIDPAC.js.map → chunk-3SNKGBZL.js.map} +0 -0
  250. /package/client-dist/{chunk-HFR2YVDI.js.map → chunk-3TXLV3DA.js.map} +0 -0
  251. /package/client-dist/{chunk-WEVE5VD3.js.map → chunk-6BANNHB6.js.map} +0 -0
  252. /package/client-dist/{chunk-7RCG5AUK.js.map → chunk-AHZ2P3Z3.js.map} +0 -0
  253. /package/client-dist/{chunk-SUTYJTHV.js.map → chunk-AYBZUIVP.js.map} +0 -0
  254. /package/client-dist/{chunk-QZNDAR62.js.map → chunk-BDL5F3DK.js.map} +0 -0
  255. /package/client-dist/{chunk-VWZZNYWE.js.map → chunk-CN2EISGD.js.map} +0 -0
  256. /package/client-dist/{chunk-KPAFG4UR.js.map → chunk-CXE46KLX.js.map} +0 -0
  257. /package/client-dist/{chunk-AQ6UDIDI.js.map → chunk-CZEGJES4.js.map} +0 -0
  258. /package/client-dist/{chunk-ZDPUFUOX.js.map → chunk-D4YCGDYF.js.map} +0 -0
  259. /package/client-dist/{chunk-UXSUGWC7.js.map → chunk-D5YBMGLK.js.map} +0 -0
  260. /package/client-dist/{chunk-WBGOPUBJ.js.map → chunk-DR5CW2Q5.js.map} +0 -0
  261. /package/client-dist/{chunk-ZLTD5EHK.js.map → chunk-DTMD64OK.js.map} +0 -0
  262. /package/client-dist/{chunk-UI5GI7XJ.js.map → chunk-ERTQ57LC.js.map} +0 -0
  263. /package/client-dist/{chunk-SCV6UFI3.js.map → chunk-F763HXOW.js.map} +0 -0
  264. /package/client-dist/{chunk-2R2YN5EL.js.map → chunk-FH7BZ5KC.js.map} +0 -0
  265. /package/client-dist/{chunk-OQBJMVZN.js.map → chunk-FKFHKEJ6.js.map} +0 -0
  266. /package/client-dist/{chunk-GBTUS3NA.js.map → chunk-GH6753SA.js.map} +0 -0
  267. /package/client-dist/{chunk-FF6BDAQ3.js.map → chunk-GYAPUB7L.js.map} +0 -0
  268. /package/client-dist/{chunk-6QUQUVFA.js.map → chunk-IX66ULOP.js.map} +0 -0
  269. /package/client-dist/{chunk-X7RDMQ3C.js.map → chunk-KNCYCQVI.js.map} +0 -0
  270. /package/client-dist/{chunk-6DG4SANW.js.map → chunk-M4TYKIMG.js.map} +0 -0
  271. /package/client-dist/{chunk-6HLT2T6S.js.map → chunk-NJZZZGTL.js.map} +0 -0
  272. /package/client-dist/{chunk-6KYIRW2G.js.map → chunk-OVYV3NO4.js.map} +0 -0
  273. /package/client-dist/{chunk-EGJCQMSF.js.map → chunk-OZ2XX74S.js.map} +0 -0
  274. /package/client-dist/{chunk-NOJ5LBG5.js.map → chunk-PWFZ6PI4.js.map} +0 -0
  275. /package/client-dist/{chunk-PPC5TB5D.js.map → chunk-RIPG5ILJ.js.map} +0 -0
  276. /package/client-dist/{chunk-HXI4T6RD.js.map → chunk-T3KV2MBE.js.map} +0 -0
  277. /package/client-dist/{chunk-2BHHN7VT.js.map → chunk-T7O5N6F5.js.map} +0 -0
  278. /package/client-dist/{chunk-LV57US6X.js.map → chunk-TYFIVDHM.js.map} +0 -0
  279. /package/client-dist/{chunk-YGNJ5SA4.js.map → chunk-U4EZD6B3.js.map} +0 -0
  280. /package/client-dist/{chunk-WTMQ54UE.js.map → chunk-UDXUA4QP.js.map} +0 -0
  281. /package/client-dist/{chunk-MKW5NDHN.js.map → chunk-UKMTMXFC.js.map} +0 -0
  282. /package/client-dist/{chunk-IF3SDXO3.js.map → chunk-UKTCBZ23.js.map} +0 -0
  283. /package/client-dist/{chunk-PCOACAKZ.js.map → chunk-USYW262H.js.map} +0 -0
  284. /package/client-dist/{chunk-ESXT6PE7.js.map → chunk-UXQXE4O4.js.map} +0 -0
  285. /package/client-dist/{chunk-XRFAWHWF.js.map → chunk-VA5ORQEA.js.map} +0 -0
  286. /package/client-dist/{chunk-XKVTWHUQ.js.map → chunk-VD2IXKGO.js.map} +0 -0
  287. /package/client-dist/{chunk-BOSO7V5W.js.map → chunk-W3N4KJQU.js.map} +0 -0
  288. /package/client-dist/{chunk-Q6AFYXZZ.js.map → chunk-WKKV76Y4.js.map} +0 -0
  289. /package/client-dist/{chunk-QF3XZDPL.js.map → chunk-WRTBJFYJ.js.map} +0 -0
  290. /package/client-dist/{chunk-APQCANPB.js.map → chunk-WTKKMZP3.js.map} +0 -0
  291. /package/client-dist/{chunk-O2FFMKAR.js.map → chunk-XZ6U37UV.js.map} +0 -0
  292. /package/client-dist/{chunk-OCZXZA7H.js.map → chunk-YKPMO3C3.js.map} +0 -0
  293. /package/client-dist/{chunk-JVQWRB3X.js.map → chunk-ZIAX3RD5.js.map} +0 -0
  294. /package/client-dist/{chunk-6UTCOTTK.js.map → chunk-ZPHUSRQ2.js.map} +0 -0
  295. /package/client-dist/{chunk-XPGMSC4M.js.map → chunk-ZVEM6BEV.js.map} +0 -0
  296. /package/client-dist/{consultant.module-5XH5HTTH.js.map → consultant.module-355QJ5VP.js.map} +0 -0
  297. /package/client-dist/{crd.module-53UQTTLA.js.map → crd.module-23O7HPSP.js.map} +0 -0
  298. /package/client-dist/{dashboard.module-KOHITRUW.js.map → dashboard.module-B3DBG7VA.js.map} +0 -0
  299. /package/client-dist/{document-library.module-72JKQJ2J.js.map → document-library.module-HCB3IBFU.js.map} +0 -0
  300. /package/client-dist/{embedding-eval.module-3WCRH2K6.js.map → embedding-eval.module-Y4S72P6L.js.map} +0 -0
  301. /package/client-dist/{embedding-registry.module-TG4TN5QC.js.map → embedding-registry.module-WRLE4M2R.js.map} +0 -0
  302. /package/client-dist/{err.module-RJW3NXTH.js.map → err.module-NEHVNIDC.js.map} +0 -0
  303. /package/client-dist/{feedback.module-FWEGEGYQ.js.map → feedback.module-M22IIOC3.js.map} +0 -0
  304. /package/client-dist/{host-runtime-mcp.module-KAAHVFSN.js.map → host-runtime-mcp.module-BTQGLDN3.js.map} +0 -0
  305. /package/client-dist/{live-dev-pipeline.module-QHCYBTUC.js.map → live-dev-pipeline.module-TBWOJ2K7.js.map} +0 -0
  306. /package/client-dist/{logs.module-4LFK3T3K.js.map → logs.module-WLXYHRBN.js.map} +0 -0
  307. /package/client-dist/{master-control-remote-poc.module-WED7JUNZ.js.map → master-control-remote-poc.module-NZ4AZJHI.js.map} +0 -0
  308. /package/client-dist/{mobile-app.module-AXH7W53A.js.map → mobile-app.module-JUBFTHW3.js.map} +0 -0
  309. /package/client-dist/{model-registry.module-SGHIKUWI.js.map → model-registry.module-AIAGFPNO.js.map} +0 -0
  310. /package/client-dist/{orc.module-DGB2CPYK.js.map → orc.module-BMV7EOI7.js.map} +0 -0
  311. /package/client-dist/{project-source-routed.module-B5RDOGY7.js.map → project-source-routed.module-CTOB53C7.js.map} +0 -0
  312. /package/client-dist/{scheduler.module-KG43N2FH.js.map → scheduler.module-IKACZ62P.js.map} +0 -0
  313. /package/client-dist/{setup.module-CB5LKKCH.js.map → setup.module-CWFUSK2V.js.map} +0 -0
  314. /package/client-dist/{terminals.module-Y4AD2WBX.js.map → terminals.module-FIV7G4Y6.js.map} +0 -0
  315. /package/client-dist/{voice-notes-poc.module-YNGGW2OL.js.map → voice-notes-poc.module-HWX6J3HW.js.map} +0 -0
  316. /package/client-dist/{wfs.module-JD7CMBRB.js.map → wfs.module-AF5XUOHR.js.map} +0 -0
@@ -1,3 +0,0 @@
1
- import{a as ae,b as Ge}from"./chunk-ESXT6PE7.js";import{a as Y,b as Z,c as Ke,d as ee}from"./chunk-7RCG5AUK.js";import"./chunk-EGRHWZRV.js";import{a as Xe}from"./chunk-EGJCQMSF.js";import{a as Qe}from"./chunk-3UOIDPAC.js";import{a as B}from"./chunk-Q2PKIGLB.js";import{a as oe}from"./chunk-YRVQSWSZ.js";import{a as Ve}from"./chunk-MKW5NDHN.js";import{a as Re,b as K}from"./chunk-X7RDMQ3C.js";import"./chunk-FF6BDAQ3.js";import{a as je}from"./chunk-Q6AFYXZZ.js";import{b as k}from"./chunk-JVQWRB3X.js";import"./chunk-WBGOPUBJ.js";import"./chunk-ZLFERKG3.js";import"./chunk-OCZXZA7H.js";import"./chunk-SUTYJTHV.js";import{g as He}from"./chunk-GFTD3PFY.js";import"./chunk-O2FFMKAR.js";import{a as Ne}from"./chunk-7JUIBZEE.js";import{a as Fe,b as Ue,c as ze}from"./chunk-C7XPBJTG.js";import{b as V,e as qe,f as Be}from"./chunk-XRFAWHWF.js";import"./chunk-WPHEQXWB.js";import{c as We}from"./chunk-GBTUS3NA.js";import{a as se,b as G,c as J}from"./chunk-AQ6UDIDI.js";import"./chunk-2BHHN7VT.js";import"./chunk-UI5GI7XJ.js";import"./chunk-Q2NVIOCY.js";import"./chunk-QZNDAR62.js";import"./chunk-ZLTD5EHK.js";import"./chunk-QF3XZDPL.js";import"./chunk-V3VQWJQL.js";import"./chunk-6KYIRW2G.js";import"./chunk-UUVX445C.js";import"./chunk-ZBTWQZNB.js";import"./chunk-FLAJXIYW.js";import{o as Pe,p as Ae,v as Me}from"./chunk-EO4DNTT4.js";import{k as X}from"./chunk-OQBJMVZN.js";import{a as w}from"./chunk-5UPNU54P.js";import"./chunk-EM3SZVDU.js";import{N as Le}from"./chunk-IOTAEA7L.js";import{$a as I,Aa as ve,Ba as be,C as v,Cb as Ie,D as P,E as _e,Eb as Q,Fa as c,Fb as Ee,G as W,Ga as O,Gb as Te,Ha as $,Hb as Oe,Ia as we,J as _,Ja as ye,K as p,Kb as ke,L as pe,M as ue,N as me,Pa as H,Qa as j,Ra as M,T as xe,Ua as ie,Va as $e,W as Se,Z as l,_ as he,aa as m,ab as E,ca as fe,da as h,ga as f,ha as Ce,hb as T,ia as ne,ja as A,k as L,la as u,mb as N,oa as F,pa as U,qa as s,ra as o,sa as D,ua as y,ub as De,va as x,wa as d,y as ce,z as de,za as ge}from"./chunk-TBMJSIBB.js";var b="ccap-ocSession",S=class{static saveStatusFilter(a){w.writeString(`${b}:statusFilter`,a)}static loadStatusFilter(){return w.readString(`${b}:statusFilter`)??""}static saveLastWorkspacePath(a){w.writeString(`${b}:lastWorkspacePath`,a)}static loadLastWorkspacePath(){return w.readString(`${b}:lastWorkspacePath`)??""}static saveLastLabel(a){w.writeString(`${b}:lastLabel`,a)}static loadLastLabel(){return w.readString(`${b}:lastLabel`)??""}static saveLastAgentName(a){w.writeString(`${b}:lastAgentName`,a)}static loadLastAgentName(){return w.readString(`${b}:lastAgentName`)??""}static savePromptDraft(a,e){ee.saveDraft(b,a,e)}static loadPromptDraft(a){return ee.loadDraft(b,a)}static clearPromptDraft(a){ee.clearDraft(b,a)}static savePanelOpen(a,e){w.writeBoolean(`${b}:panelOpen:${a}`,e)}static loadPanelOpen(a,e){return w.readBoolean(`${b}:panelOpen:${a}`,e)}static savePanelWidth(a,e){w.writeNumber(`${b}:panelWidth:${a}`,e)}static loadPanelWidth(a,e){return w.readNumber(`${b}:panelWidth:${a}`,e)}static saveSessionMode(a){w.writeString(`${b}:sessionMode`,a)}static loadSessionMode(){return w.readString(`${b}:sessionMode`)??"normal"}static saveSessionEffort(a){w.writeString(`${b}:sessionEffort`,a)}static loadSessionEffort(){return w.readString(`${b}:sessionEffort`)??"high"}static saveShowArchived(a){w.writeBoolean(`${b}:showArchived`,a)}static loadShowArchived(){return w.readBoolean(`${b}:showArchived`,!1)}static saveLastSessionId(a){w.writeString(`${b}:lastSessionId`,a)}static loadLastSessionId(){return w.readString(`${b}:lastSessionId`)??""}static saveSelectedInstanceId(a){w.writeString(`${b}:selectedInstanceId`,a)}static loadSelectedInstanceId(){return w.readString(`${b}:selectedInstanceId`)??""}};var z=(()=>{class n{oc_DS=v(k);isTimelinePanelOpen_$=m(S.loadPanelOpen("timeline",!1));isMetadataPanelOpen_$=m(S.loadPanelOpen("metadata",!1));isStopping_$=m(!1);handleToggleTimeline(){let e=!this.isTimelinePanelOpen_$();this.isTimelinePanelOpen_$.set(e),S.savePanelOpen("timeline",e)}handleToggleMetadata(){let e=!this.isMetadataPanelOpen_$();this.isMetadataPanelOpen_$.set(e),S.savePanelOpen("metadata",e)}handleStopExecution(){return L(this,null,function*(){let e=this.oc_DS.selectedSession_$();if(!e||this.isStopping_$())return;let i=e.session?.sessionId??"";if(i){this.isStopping_$.set(!0);try{yield this.oc_DS.stopExecution({sessionId:i})}catch{}finally{this.isStopping_$.set(!1)}}})}static \u0275fac=function(i){return new(i||n)};static \u0275prov=ce({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var St=(n,a)=>a.instanceId;function ht(n,a){if(n&1&&(s(0,"option",11),c(1),o()),n&2){let e=a.$implicit;f("value",e.instanceId),l(),ye(" ",e.label||"Unnamed"," \u2014 ",e.gatewayUrl,"",e.pairingStatus==="paired"?" (paired)":e.pairingStatus==="pending"?" (pending)":" (not paired)"," ")}}function ft(n,a){if(n&1){let e=y();s(0,"select",10),x("change",function(t){_(e);let r=d(2);return p(r.handleInstanceChange(t.target.value))}),F(1,ht,2,4,"option",11,St),o()}if(n&2){let e=d(2);f("value",e.selectedInstanceId_$()),l(),U(e.ocRegistry_$())}}function Ct(n,a){n&1&&(s(0,"div",9),c(1," Nincs regisztr\xE1lt OpenClaw instance \u2014 hozz l\xE9tre egyet a Settings oldalon. "),o())}function gt(n,a){if(n&1&&h(0,ft,3,1,"select",8)(1,Ct,2,0,"div",9),n&2){let e=d();u(e.ocRegistry_$().length?0:1)}}function vt(n,a){n&1&&(s(0,"div",4),c(1,"Bet\xF6lt\xE9s\u2026"),o())}function bt(n,a){n&1&&(s(0,"a",30)(1,"div",32),c(2,"P\xE1ros\xEDt\xE1s sz\xFCks\xE9ges"),o(),s(3,"p",33),c(4," Ez az OpenClaw instance m\xE9g nincs p\xE1ros\xEDtva. A session-\xF6k megtekint\xE9s\xE9hez el\u0151bb p\xE1ros\xEDtsd a gateway-t. "),o(),s(5,"p",34),c(6," Kattints ide a be\xE1ll\xEDt\xE1sokhoz \u2192 "),s(7,"span",35),c(8,"Pair"),o()()())}function wt(n,a){if(n&1&&D(0,"app-ccap-error-display",31),n&2){let e=d(3);f("error",e.ocSession_DS.sessionsLoadError_$())}}function yt(n,a){if(n&1&&(s(0,"div",25),h(1,bt,9,0,"a",30)(2,wt,1,1,"app-ccap-error-display",31),o()),n&2){let e=d(2);l(),u(e.isPairingRequiredError()?1:2)}}function $t(n,a){n&1&&(s(0,"div",27),c(1," Loading\u2026 "),o())}function Dt(n,a){if(n&1){let e=y();s(0,"div",28)(1,"span",36),c(2,"No sessions found"),o(),s(3,"button",37),x("click",function(){_(e);let t=d(2);return p(t.handleOpenCreateDialog())}),c(4," Create first session "),o()()}}function It(n,a){if(n&1){let e=y();s(0,"app-s-session-select",38),x("selected",function(t){_(e);let r=d(2);return p(r.handleSelectSession(t))})("contextMenu",function(t){_(e);let r=d(2);return p(r.handleRowContextMenu(t))})("scheduleIndicatorClicked",function(t){_(e);let r=d(2);return p(r.handleScheduleIndicatorClick(t))})("coordinatorIndicatorClicked",function(t){_(e);let r=d(2);return p(r.handleCoordinatorIndicatorClick(t))}),o()}if(n&2){let e=d(2);f("rows",e.sessionRowViews_$())("activeId",e.ocSession_DS.activeSessionId_$())("showWorkspacePath",!0)("showPromptCount",!0)("hideSearch",!0)}}function Et(n,a){if(n&1){let e=y();s(0,"div",12)(1,"input",13),x("input",function(t){_(e);let r=d();return p(r.searchQuery_$.set(t.target.value))}),o(),s(2,"div",14)(3,"select",15),x("change",function(t){_(e);let r=d();return p(r.handleStatusFilterChange(t.target.value))}),s(4,"option",16),c(5,"All statuses"),o(),s(6,"option",17),c(7,"Waiting"),o(),s(8,"option",18),c(9,"Running"),o(),s(10,"option",19),c(11,"Connecting"),o(),s(12,"option",20),c(13,"Disconnected"),o(),s(14,"option",21),c(15,"Errored"),o(),s(16,"option",22),c(17,"Completed"),o(),s(18,"option",23),c(19,"Terminated"),o()(),s(20,"button",24),x("click",function(){_(e);let t=d();return p(t.handleToggleShowArchived())}),c(21," Arch "),o()()(),h(22,yt,3,1,"div",25),s(23,"div",26),h(24,$t,2,0,"div",27)(25,Dt,5,0,"div",28)(26,It,1,5,"app-s-session-select",29),o()}if(n&2){let e=d();l(),f("value",e.searchQuery_$()),l(2),f("value",e.statusFilter_$()),l(17),A(e.showArchived_$()?"border-ccapAccent/60 text-ccapAccent/80 bg-ccapAccent/10":"border-neutral-700 text-neutral-500 hover:border-neutral-600"),l(2),u(e.ocSession_DS.sessionsLoadError_$()?22:-1),l(2),u(e.ocSession_DS.sessionsLoading_$()?24:!e.filteredSessions_$().length&&!e.ocSession_DS.sessionsLoadError_$()?25:26)}}function Tt(n,a){n&1&&(s(0,"div",5)(1,"span",36),c(2,"V\xE1lassz OpenClaw instance-t a session-\xF6k megtekint\xE9s\xE9hez."),o()())}function Ot(n,a){if(n&1&&(s(0,"div",42),c(1," Instance: "),s(2,"span",51),c(3),o()()),n&2){let e=d(2);l(3),O(e.selectedInstance.label||e.selectedInstance.gatewayUrl)}}function kt(n,a){if(n&1){let e=y();s(0,"div",39),x("click",function(){_(e);let t=d();return p(t.handleCloseCreateDialog())}),s(1,"div",40),x("click",function(t){return _(e),p(t.stopPropagation())}),s(2,"div",41),c(3,"New OC Session"),o(),h(4,Ot,4,1,"div",42),s(5,"div",43)(6,"div")(7,"label",44),c(8,"Workspace Path *"),o(),s(9,"input",45),x("input",function(t){_(e);let r=d();return p(r.newSessionWorkspacePath_$.set(t.target.value))}),o()(),s(10,"div")(11,"label",44),c(12,"Label"),o(),s(13,"input",46),x("input",function(t){_(e);let r=d();return p(r.newSessionLabel_$.set(t.target.value))}),o()(),s(14,"div")(15,"label",44),c(16,"Agent Name"),o(),s(17,"input",47),x("input",function(t){_(e);let r=d();return p(r.newSessionAgentName_$.set(t.target.value))}),o()()(),s(18,"div",48)(19,"button",49),x("click",function(){_(e);let t=d();return p(t.handleCloseCreateDialog())}),c(20," Cancel "),o(),s(21,"button",50),x("click",function(){_(e);let t=d();return p(t.handleCreateSession())}),c(22),o()()()()}if(n&2){let e=d();l(4),u(e.selectedInstance?4:-1),l(5),f("value",e.newSessionWorkspacePath_$()),l(4),f("value",e.newSessionLabel_$()),l(4),f("value",e.newSessionAgentName_$()),l(4),f("disabled",!e.newSessionWorkspacePath_$().trim()||e.isCreating_$()),l(),$(" ",e.isCreating_$()?"Creating\u2026":"Create"," ")}}function Pt(n,a){if(n&1){let e=y();s(0,"div",52),x("click",function(){_(e);let t=d();return p(t.handleCloseCtxMenu())}),o(),s(1,"div",53)(2,"button",54),x("click",function(){_(e);let t=d();return p(t.handleCtxToggleArchive())}),c(3),o()()}if(n&2){let e=d();l(),Ce("left",e.ctxMenuPos_$().x,"px")("top",e.ctxMenuPos_$().y,"px"),l(2),$(" ",a.isArchived?"Unarchive":"Archive"," ")}}var Je=(()=>{class n{ocSession_DS=v(k);settingsGeneral_DS=v(Le);openclawRegistry_DS=v(je);scheduledJobs_DS=v(Qe);coordinator_DS=v(Xe);router=v(Te);statusFilter_$=m("");searchQuery_$=m("");isCreateDialogOpen_$=m(!1);schedulePopupSessionId_$=m(null);coordinatorPopupSessionId_$=m(null);newSessionWorkspacePath_$=m("");newSessionLabel_$=m("");newSessionAgentName_$=m("");isCreating_$=m(!1);showArchived_$=m(!1);ocRegistry_$=m([]);selectedInstanceId_$=m("");registryLoaded_$=m(!1);sessionSelected=xe();ngOnInit(){let e=S.loadStatusFilter();e&&this.statusFilter_$.set(e);let i=S.loadShowArchived();this.showArchived_$.set(i),this.settingsGeneral_DS.loadDefaultWorkspacePath(),this.scheduledJobs_DS.loadAll(),this.coordinator_DS.loadAllCoordinatorsForManagementPage(),this.openclawRegistry_DS.load().then(()=>{let t=this.openclawRegistry_DS.section_$().form.instances;this.ocRegistry_$.set(t),this.registryLoaded_$.set(!0);let r=S.loadSelectedInstanceId();t.some(C=>C.instanceId===r)?this.selectInstance(r):t.length>0&&this.selectInstance(t[0].instanceId)}).catch(()=>{this.registryLoaded_$.set(!0)})}get selectedInstance(){let e=this.selectedInstanceId_$();return this.ocRegistry_$().find(i=>i.instanceId===e)}selectInstance(e){this.selectedInstanceId_$.set(e),S.saveSelectedInstanceId(e);let i=this.ocRegistry_$().find(t=>t.instanceId===e);i&&(this.ocSession_DS.activeInstanceId_$.set(e),this.ocSession_DS.setGatewayFilterOnly(i.gatewayUrl),this.loadSessionsForCurrentFilters())}handleInstanceChange(e){e&&this.selectInstance(e)}handleSelectSession(e){this.router.navigate(["/oc-session",e]),this.sessionSelected.emit()}handleStatusFilterChange(e){this.statusFilter_$.set(e),S.saveStatusFilter(e),this.loadSessionsForCurrentFilters()}handleToggleShowArchived(){let e=!this.showArchived_$();this.showArchived_$.set(e),S.saveShowArchived(e),this.loadSessionsForCurrentFilters()}handleOpenCreateDialog(){let e=S.loadLastWorkspacePath();this.newSessionWorkspacePath_$.set(e||this.settingsGeneral_DS.defaultWorkspacePath_$()),this.newSessionLabel_$.set(S.loadLastLabel()),this.newSessionAgentName_$.set(S.loadLastAgentName()),this.isCreateDialogOpen_$.set(!0)}handleCloseCreateDialog(){this.isCreateDialogOpen_$.set(!1)}handleCreateSession(){return L(this,null,function*(){let e=this.newSessionWorkspacePath_$().trim();if(!e)return;let i=this.selectedInstance;if(i){this.isCreating_$.set(!0);try{S.saveLastWorkspacePath(e),S.saveLastLabel(this.newSessionLabel_$().trim()),S.saveLastAgentName(this.newSessionAgentName_$().trim());let t=yield this.ocSession_DS.createSession({workspacePath:e,label:this.newSessionLabel_$().trim()||void 0,gatewayUrl:i.gatewayUrl,openclawAgentName:this.newSessionAgentName_$().trim()||void 0});this.isCreateDialogOpen_$.set(!1),t&&this.router.navigate(["/oc-session",t])}catch{}finally{this.isCreating_$.set(!1)}}})}filteredSessions_$=T(()=>{let e=this.searchQuery_$();return e.trim()?this.ocSession_DS.sessions_$().filter(i=>se.includesText(i.label,e)||se.includesText(i.workspacePath,e)):this.ocSession_DS.sessions_$()});sessionRowViews_$=T(()=>{let e=this.scheduledJobs_DS.scheduledSessionIds_$(),i=this.coordinator_DS.coordinatedSessionIds_$();return this.filteredSessions_$().map(t=>({id:t.sessionId,label:t.label||t.sessionId,status:t.status,statusColorClass:oe.resolve(t.status),workspacePath:t.workspacePath,isArchived:!!t.isArchived,lastActivityAt:t.lastActivityAt,promptCount:t.promptCount,isRunning:oe.isRunning(t.status),hasSchedule:e.has(t.sessionId),hasCoordinator:i.has(t.sessionId)}))});isPairingRequiredError(){let e=this.ocSession_DS.sessionsLoadError_$();if(!e||typeof e!="object")return!1;let t=e.error;if(t&&typeof t=="object"){let r=t,g=r._errorCode??r.errorCode??r.code,C=r._message??r.message;if(g==="NOT_PAIRED"||g==="PAIRING_REQUIRED"||typeof C=="string"&&C.toLowerCase().includes("pairing required"))return!0}return!1}ctxMenuSession_$=m(null);ctxMenuPos_$=m({x:0,y:0});handleRowContextMenu(e){let i=this.filteredSessions_$().find(t=>t.sessionId===e.id);i&&(this.ctxMenuSession_$.set(i),this.ctxMenuPos_$.set({x:e.event.clientX,y:e.event.clientY}))}handleCloseCtxMenu(){this.ctxMenuSession_$.set(null)}handleScheduleIndicatorClick(e){this.schedulePopupSessionId_$.set(e)}handleCloseSchedulePopup(){this.schedulePopupSessionId_$.set(null)}handleCoordinatorIndicatorClick(e){this.coordinatorPopupSessionId_$.set(e)}handleCloseCoordinatorPopup(){this.coordinatorPopupSessionId_$.set(null)}handleCtxToggleArchive(){return L(this,null,function*(){let e=this.ctxMenuSession_$();if(e){this.handleCloseCtxMenu();try{yield this.ocSession_DS.setSessionArchived({sessionId:e.sessionId,isArchived:!e.isArchived})}catch{}}})}loadSessionsForCurrentFilters(){return L(this,null,function*(){let e=this.selectedInstanceId_$();if(e&&(yield this.ocSession_DS.loadGatewaySessions({instanceId:e}),!this.ocSession_DS.activeSessionId_$())){let i=this.filteredSessions_$();i.length&&this.router.navigate(["/oc-session",i[0].sessionId])}})}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=P({type:n,selectors:[["app-ccap-oc-dashboard"]],hostAttrs:[1,"flex","flex-col","flex-1","min-h-0","overflow-hidden"],outputs:{sessionSelected:"sessionSelected"},decls:14,vars:9,consts:[[1,"shrink-0","px-2","py-1.5","border-b","border-neonDefault"],[1,"flex","items-center","gap-1","mb-1"],[1,"text-xs","font-semibold","text-neutral-300","flex-1"],["title","New OC Session",1,"px-1.5","py-0.5","text-xs","border","border-neonDefault","text-neutral-300","hover:bg-neutral-700","rounded","transition-colors","disabled:opacity-30",3,"click","disabled"],[1,"text-[10px]","text-neutral-500","py-0.5","animate-pulse"],[1,"flex-1","flex","items-center","justify-center"],[1,"fixed","inset-0","z-50","flex","items-center","justify-center","bg-black/60","p-4"],[3,"closed","sessionId","isOpen"],[1,"w-full","px-1.5","py-1","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","focus:outline-none","focus:border-ccapAccent",3,"value"],[1,"text-[10px]","text-neutral-500","py-0.5"],[1,"w-full","px-1.5","py-1","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","focus:outline-none","focus:border-ccapAccent",3,"change","value"],[3,"value"],[1,"shrink-0","px-2","py-1.5","border-b","border-neutral-800","flex","flex-col","gap-1"],["type","text","placeholder","Search sessions\u2026",1,"w-full","px-2","py-1","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","placeholder-neutral-500","focus:outline-none","focus:border-ccapAccent",3,"input","value"],[1,"flex","items-center","gap-1"],[1,"flex-1","px-1.5","py-0.5","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-300","rounded","focus:outline-none",3,"change","value"],["value",""],["value","waiting-input"],["value","running"],["value","connecting"],["value","disconnected"],["value","errored"],["value","completed"],["value","terminated"],["title","Show archived",1,"px-1.5","py-0.5","text-xs","border","rounded","transition-colors","shrink-0",3,"click"],[1,"shrink-0","px-2","py-1.5"],[1,"flex-1","overflow-y-auto"],[1,"flex","items-center","justify-center","py-8","text-xs","text-neutral-500"],[1,"flex","flex-col","items-center","justify-center","py-8","gap-2"],["kind","oc",3,"rows","activeId","showWorkspacePath","showPromptCount","hideSearch"],["routerLink","/settings/openclaw",1,"block","text-[10px]","bg-amber-500/10","border","border-amber-500/20","rounded","p-3","space-y-1.5","hover:bg-amber-500/15","hover:border-amber-500/30","transition-colors","cursor-pointer","no-underline"],["sourceLabelOverride","Gateway session lista",1,"block",3,"error"],[1,"text-amber-400","font-medium"],[1,"text-neutral-400","leading-relaxed"],[1,"text-neutral-500"],[1,"text-emerald-400","font-medium"],[1,"text-xs","text-neutral-500"],[1,"px-2","py-1","text-xs","border","border-neonDefault","text-neutral-300","hover:bg-neutral-700","rounded","transition-colors",3,"click"],["kind","oc",3,"selected","contextMenu","scheduleIndicatorClicked","coordinatorIndicatorClicked","rows","activeId","showWorkspacePath","showPromptCount","hideSearch"],[1,"fixed","inset-0","z-50","flex","items-center","justify-center","bg-black/60","p-4",3,"click"],[1,"bg-neutral-900","border","border-neutral-700","rounded-lg","shadow-2xl","w-full","max-w-md","p-4",3,"click"],[1,"text-sm","font-semibold","text-neutral-200","mb-1"],[1,"text-[10px]","text-neutral-500","mb-3"],[1,"space-y-2"],[1,"text-[10px]","text-neutral-500","block","mb-0.5"],["type","text","placeholder","/path/to/workspace",1,"w-full","px-2","py-1.5","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","focus:outline-none","focus:border-ccapAccent",3,"input","value"],["type","text","placeholder","Optional label",1,"w-full","px-2","py-1.5","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","focus:outline-none","focus:border-ccapAccent",3,"input","value"],["type","text","placeholder","default",1,"w-full","px-2","py-1.5","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","focus:outline-none","focus:border-ccapAccent",3,"input","value"],[1,"flex","gap-2","mt-4","justify-end"],[1,"px-3","py-1.5","text-xs","border","border-neutral-700","text-neutral-400","hover:bg-neutral-800","rounded","transition-colors",3,"click"],[1,"px-3","py-1.5","text-xs","bg-ccapAccent","text-black","font-medium","rounded","hover:bg-ccapAccent/80","transition-colors","disabled:opacity-50",3,"click","disabled"],[1,"text-neutral-300"],[1,"fixed","inset-0","z-40",3,"click"],[1,"fixed","z-50","min-w-[140px]","bg-neutral-900","border","border-neutral-700","rounded-lg","shadow-xl","py-1","text-xs"],[1,"w-full","text-left","px-3","py-1.5","text-neutral-300","hover:bg-neutral-800","transition-colors",3,"click"]],template:function(i,t){if(i&1&&(s(0,"div",0)(1,"div",1)(2,"span",2),c(3,"OC Sessions"),o(),s(4,"button",3),x("click",function(){return t.handleOpenCreateDialog()}),c(5," + New "),o()(),h(6,gt,2,1)(7,vt,2,0,"div",4),o(),h(8,Et,27,6)(9,Tt,3,0,"div",5)(10,kt,23,6,"div",6),s(11,"app-sch-schedule-popup",7),x("closed",function(){return t.handleCloseSchedulePopup()}),o(),s(12,"app-crd-info-popup",7),x("closed",function(){return t.handleCloseCoordinatorPopup()}),o(),h(13,Pt,4,5)),i&2){let r;l(4),f("disabled",!t.selectedInstanceId_$()),l(2),u(t.registryLoaded_$()?6:7),l(2),u(t.selectedInstanceId_$()?8:t.registryLoaded_$()&&t.ocRegistry_$().length?9:-1),l(2),u(t.isCreateDialogOpen_$()?10:-1),l(),f("sessionId",t.schedulePopupSessionId_$())("isOpen",t.schedulePopupSessionId_$()!==null),l(),f("sessionId",t.coordinatorPopupSessionId_$())("isOpen",t.coordinatorPopupSessionId_$()!==null),l(),u((r=t.ctxMenuSession_$())?13:-1,r)}},dependencies:[Pe,Ae,Oe,X,Y,Z,We],encapsulation:2})}return n})();var q=(()=>{class n{transform(e){switch(e){case"running":return"bg-yellow-500";case"waiting-input":return"bg-green-500";case"connecting":return"bg-yellow-500";case"creating":return"bg-yellow-400";case"completed":return"bg-blue-500";case"errored":return"bg-red-500";case"terminated":return"bg-red-700";case"disconnected":return"bg-amber-700";default:return"bg-neutral-600"}}static \u0275fac=function(i){return new(i||n)};static \u0275pipe=W({name:"ocSessionStatusColor",type:n,pure:!0})}return n})();function Lt(n,a){n&1&&D(0,"div",5)}function Vt(n,a){if(n&1){let e=y();s(0,"button",13),x("click",function(){_(e);let t=d();return p(t.detailUi_DS.handleToggleMetadata())}),c(1," Info "),o()}if(n&2){let e=d();A(e.detailUi_DS.isMetadataPanelOpen_$()?"border-neonCyan/50 text-neonCyan bg-neonCyan/10":"border-neutral-700 text-neutral-500 hover:text-neutral-300 hover:border-neutral-600")}}function Rt(n,a){n&1&&D(0,"span",17)}function Wt(n,a){if(n&1&&(D(0,"span",16),I(1,"ocSessionStatusColor"),h(2,Rt,1,0,"span",17)),n&2){d(2);let e=M(1);f("ngClass",E(1,3,e.detail.session.status))("title",e.detail.session.status),l(2),u(e.detail.runtime.isLive?2:-1)}}function Ft(n,a){n&1&&(s(0,"span",15),c(1,"Loading\u2026"),o())}function Ut(n,a){if(n&1&&(s(0,"span",14),c(1),o(),h(2,Wt,3,5)(3,Ft,2,0,"span",15)),n&2){d();let e=M(1);f("title",e.title),l(),$(" ",e.title," "),l(),u(e.detail?2:-1),l(),u(e.isLoading&&!e.detail?3:-1)}}function Nt(n,a){if(n&1){let e=y();D(0,"div",19),s(1,"button",20),x("click",function(){_(e);let t=d(2);return p(t.detailUi_DS.handleStopExecution())}),c(2),o()}if(n&2){let e=d(2);l(),f("disabled",e.detailUi_DS.isStopping_$()),l(),$(" ",e.detailUi_DS.isStopping_$()?"Stopping\u2026":"Stop"," ")}}function zt(n,a){if(n&1){let e=y();s(0,"button",18),x("click",function(){_(e);let t=d();return p(t.detailUi_DS.handleToggleTimeline())}),c(1," Timeline "),o(),h(2,Nt,3,2)}if(n&2){let e=d(),i=M(1);A(e.detailUi_DS.isTimelinePanelOpen_$()?"border-neonCyan/50 text-neonCyan bg-neonCyan/10":"border-neutral-700 text-neutral-500 hover:text-neutral-300 hover:border-neutral-600"),l(2),u(!(i.detail==null||i.detail.runtime==null)&&i.detail.runtime.isLive?2:-1)}}var nt=(()=>{class n{ocSession_DS=v(k);detailUi_DS=v(z);ocTopBarContext_$=T(()=>{let e=this.ocSession_DS.activeSessionId_$();if(!e)return null;let i=this.ocSession_DS.selectedSessionLoading_$(),t=this.ocSession_DS.selectedSession_$(),g=this.ocSession_DS.sessions_$().find(mt=>mt.sessionId===e),C=t?.session.sessionId===e;return{title:(C?t.session.label||t.session.sessionId:null)??(g?g.label||g.sessionId:e),detail:C?t:null,isLoading:i,showActions:C&&!i}});sidebarWidth_$=m(320);isSidebarOpen_$=m(!0);isResizing_$=m(!1);ngOnInit(){let e=S.loadPanelWidth("sidebar",320);this.sidebarWidth_$.set(Math.max(200,Math.min(600,e))),this.isSidebarOpen_$.set(S.loadPanelOpen("sidebar",!0))}handleSidebarResizeStart(e){let i=e.clientX,t=this.sidebarWidth_$();this.isResizing_$.set(!0),B.attachUntilPointerUp({startEvent:e,onMove:r=>{let g=r.clientX-i,C=Math.max(200,Math.min(600,t+g));this.sidebarWidth_$.set(C)},onEnd:()=>{this.isResizing_$.set(!1),S.savePanelWidth("sidebar",this.sidebarWidth_$())}})}handleToggleSidebar(){this.isSidebarOpen_$.update(e=>!e),S.savePanelOpen("sidebar",this.isSidebarOpen_$())}handleSessionSelectedFromDashboard(){window.innerWidth<640&&this.isSidebarOpen_$.set(!1)}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=P({type:n,selectors:[["app-ccap-oc-shell"]],hostAttrs:[1,"flex","min-h-0","w-full","flex-1","flex-col","overflow-hidden"],decls:19,vars:14,consts:[[1,"flex","min-h-0","w-full","flex-1","flex-col","overflow-hidden"],["sSessionToolbarLeft","",1,"flex","items-center","gap-1","min-w-0"],["type","button",1,"px-2","py-1","text-xs","border","border-neonDefault","text-neutral-300","hover:bg-neutral-700","rounded","transition-colors","flex","items-center","gap-1","shrink-0",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round",1,"w-3","h-3","shrink-0","transition-transform","duration-150"],["points","6 9 12 15 18 9"],[1,"w-px","h-4","bg-neutral-700","shrink-0","self-center","mx-0.5"],["type","button",1,"px-2","py-1","text-xs","border","rounded","transition-colors","shrink-0",3,"class"],["sSessionToolbarCenter","",1,"flex","items-center","justify-center","gap-2","min-w-0","max-w-[min(100vw-12rem,42rem)]"],["sSessionToolbarRight","",1,"flex","items-center","gap-1","min-w-0","flex-wrap","justify-end"],[3,"sidebarResizeStart","isSidebarOpen","sidebarWidthPx","isResizing"],["sSessionShellSidebar","",1,"flex","flex-col","overflow-hidden","h-full"],[3,"sessionSelected"],["sSessionShellMain","",1,"flex","min-h-0","flex-1","flex-col","overflow-hidden","[&>router-outlet]:contents"],["type","button",1,"px-2","py-1","text-xs","border","rounded","transition-colors","shrink-0",3,"click"],[1,"text-sm","font-semibold","text-neutral-200","truncate","text-center","min-w-0","max-w-[min(240px,35vw)]",3,"title"],[1,"text-[10px]","text-neutral-500","shrink-0"],[1,"w-2","h-2","rounded-full","shrink-0",3,"ngClass","title"],["title","Live",1,"w-2","h-2","rounded-full","bg-green-500","animate-pulse","shrink-0"],["type","button",1,"px-2","py-1","text-xs","border","rounded","transition-colors",3,"click"],[1,"hidden","sm:block","w-px","h-4","bg-neutral-700","shrink-0","self-center"],["type","button",1,"px-2","py-1","text-xs","border","border-neonRed/50","text-red-300","hover:bg-red-950/40","rounded","transition-colors","shrink-0","disabled:opacity-40",3,"click","disabled"]],template:function(i,t){if(i&1){let r=y();s(0,"div",0),H(1),s(2,"app-s-session-shell-toolbar")(3,"div",1)(4,"button",2),x("click",function(){return _(r),p(t.handleToggleSidebar())}),pe(),s(5,"svg",3),D(6,"polyline",4),o(),c(7," OC Sessions "),o(),h(8,Lt,1,0,"div",5)(9,Vt,2,2,"button",6),o(),ue(),s(10,"div",7),h(11,Ut,4,4),o(),s(12,"div",8),h(13,zt,3,3),o()(),s(14,"app-s-resizable-session-shell-layout",9),x("sidebarResizeStart",function(C){return _(r),p(t.handleSidebarResizeStart(C))}),s(15,"div",10)(16,"app-ccap-oc-dashboard",11),x("sessionSelected",function(){return _(r),p(t.handleSessionSelectedFromDashboard())}),o()(),s(17,"div",12),D(18,"router-outlet"),o()()()}if(i&2){ne("select-none",t.isResizing_$()),l();let r=j(t.ocTopBarContext_$());l(4),ne("rotate-90",t.isSidebarOpen_$())("-rotate-90",!t.isSidebarOpen_$()),l(3),u(r?8:-1),l(),u(r&&r.showActions?9:-1),l(2),u(r?11:-1),l(2),u(r&&r.showActions?13:-1),l(),f("isSidebarOpen",t.isSidebarOpen_$())("sidebarWidthPx",t.sidebarWidth_$())("isResizing",t.isResizing_$())}},dependencies:[N,Ee,Fe,Ue,Je,q],encapsulation:2})}return n})();var te=class n{static fromConsoleMessage(a){let e=n.mapTypeToKind(a.type),i=a.type==="prompt";return{listKey:a.listKey,kind:e,bodyText:a.text,timestampIso:a.timestamp,expandableContent:a.expandableContent,rawData:a.rawData,isUserAligned:i,flags:{showCopy:!0,showRawInfo:!0,useEditDiffForExpandable:!1}}}static mapTypeToKind(a){switch(a){case"prompt":return V.userPrompt;case"assistant":return V.assistant;case"tool":return V.tool;case"tool-result":return V.toolResult;case"error":return V.error;case"info":return V.info;case"status":return V.status;default:return V.info}}};var qt=["messagesEnd"],Bt=(n,a)=>a.listKey,Ht=()=>({"w-[90%]":!0,"ml-4":!0}),jt=()=>({"w-[85%]":!0});function Qt(n,a){if(n&1&&(s(0,"span",12),I(1,"ocSessionStatusColor"),c(2),o()),n&2){let e=a;A(E(1,3,e.session.status)),l(2),$(" ",e.session.status," ")}}function Xt(n,a){if(n&1&&(s(0,"span",13),c(1),o()),n&2){let e=d(2);l(),$(" Cost: $",e.ocSession_DS.sessionUsage_$().costUsd.toFixed(4)," ")}}function Kt(n,a){if(n&1&&(s(0,"div",5)(1,"span",13),c(2),o(),h(3,Xt,2,1,"span",13),o()),n&2){let e=d();l(2),we(" Tokens: ",e.ocSession_DS.sessionUsage_$().inputTokens.toLocaleString()," in / ",e.ocSession_DS.sessionUsage_$().outputTokens.toLocaleString()," out "),l(),u(e.ocSession_DS.sessionUsage_$().costUsd>0?3:-1)}}function Gt(n,a){n&1&&(s(0,"div",7),c(1," Loading session history\u2026 "),o())}function Jt(n,a){n&1&&(s(0,"div",7),c(1," No messages yet \u2014 send a prompt to start "),o())}function Yt(n,a){if(n&1){let e=y();s(0,"div")(1,"div",14)(2,"app-s-agent-console-message-bubble",15),x("ttsCached",function(t){_(e);let r=d();return p(r.handleTtsCached(t))}),o()()()}if(n&2){let e=a.$implicit,i=d();A(e.isUserAligned?"flex justify-end":"flex justify-start"),l(),f("ngClass",e.kind===i.bubbleKind.tool||e.kind===i.bubbleKind.toolResult?ie(4,Ht):ie(5,jt)),l(),f("view",e)}}var it=(()=>{class n{messagesEndRef;ocSession_DS=v(k);detailUi_DS=v(z);route=v(Q);voiceInputUi_DS=v(Re);sessionQueue_DS=v(Ke);promptInput_$=m("");isSending_$=m(!1);isExecuting_$=T(()=>this.ocSession_DS.selectedSession_$()?.runtime?.isLive===!0);messages_$=T(()=>this.ocSession_DS.consoleMessages_$());ttsCachedKeys_$=m(new Set);handleTtsCached(e){this.ttsCachedKeys_$.update(i=>new Set([...i,e]))}bubbleViews_$=T(()=>{let e=this.ocSession_DS.assembledMessages_$();if(e.length>0){let i=this.sessionId,t=this.ttsCachedKeys_$(),r=e.map(g=>Ge.fromAssembledMessage(g,{sessionId:i,cachedKeys:t}));return r=ae.groupSubAgentItems(r),r=ae.groupConsecutiveToolItems(r),r}return this.messages_$().map(i=>te.fromConsoleMessage(i))});bubbleKind=V;isComposerSendDisabled_$=T(()=>!this.promptInput_$().trim().length);get sessionId(){return this.ocSession_DS.activeSessionId_$()}previousConsoleMessageCount=0;ngAfterViewInit(){this.scheduleScrollToBottom()}ngAfterViewChecked(){let e=this.ocSession_DS.consoleMessages_$().length;e>this.previousConsoleMessageCount&&this.scheduleScrollToBottom(),this.previousConsoleMessageCount=e}ngOnInit(){let e=this.route.snapshot.paramMap.get("sessionId")??"";if(e){let i=S.loadPromptDraft(e);this.promptInput_$.set(i),this.sessionQueue_DS.subscribeToSession({sessionId:e,baseRoute:"oc-session"})}}handleSendPrompt(){return L(this,null,function*(){let e=this.promptInput_$().trim();if(!(!e||!this.sessionId||this.isSending_$())){S.clearPromptDraft(this.sessionId),this.promptInput_$.set(""),this.isSending_$.set(!0);try{yield this.ocSession_DS.sendPrompt({sessionId:this.sessionId,content:e})}catch{}finally{this.isSending_$.set(!1)}}})}handleComposerDraftChange(e){this.promptInput_$.set(e);let i=this.sessionId;i&&S.savePromptDraft(i,e)}handleVoiceSegment(e){let i=e.text.trim();if(!i.length)return;let t=this.promptInput_$().trim(),r=t.length>0?`${t} ${i}`:i;this.handleComposerDraftChange(r),this.voiceInputUi_DS.autoSendAfterVoice_$()&&e.isFinal&&this.handleSendPrompt()}scheduleScrollToBottom(){setTimeout(()=>{this.scrollToBottom()},0)}scrollToBottom(){let e=this.messagesEndRef?.nativeElement;e&&e.scrollIntoView({block:"end",inline:"nearest"})}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=P({type:n,selectors:[["app-ccap-oc-console"]],viewQuery:function(i,t){if(i&1&&ge(qt,5),i&2){let r;ve(r=be())&&(t.messagesEndRef=r.first)}},hostAttrs:[1,"flex","flex-col","flex-1","min-h-0","overflow-hidden","w-full","min-w-0"],decls:17,vars:15,consts:[["messagesEnd",""],["sChatColumnHeader","",1,"flex","shrink-0","flex-col"],[1,"flex","shrink-0","items-center","gap-2","border-b","border-neonDefault","bg-ccapSurface","px-3","py-1.5"],[1,"flex-1","truncate","font-mono","text-xs","text-neutral-400"],[1,"rounded","px-1.5","py-0.5","text-[10px]","font-medium","text-black",3,"class"],[1,"flex","shrink-0","items-center","gap-3","border-b","border-neutral-800","bg-neutral-900/50","px-3","py-1"],["sChatColumnScroll","",1,"space-y-3","px-3","py-3","text-xs"],[1,"flex","h-full","items-center","justify-center","text-xs","text-neutral-600"],[3,"class"],["sChatColumnComposer",""],["placeholder","Send a prompt\u2026 (Enter to send, Shift+Enter for newline)",3,"draftTextChange","sendRequested","queueRequested","stopRequested","queueEditStart","queueEditTextChange","queueEditSave","queueEditCancel","queueRemoveItem","queueSendNow","queueMoveUp","queueMoveDown","draftText","isExecuting","isSending","isStopping","enableAttachments","textareaRows","queueItems","isQueueLocked","editingQueueItemId","editingQueueText"],["sInputTextareaAccessory","",3,"transcriptSegmentReady","compactLayout"],[1,"rounded","px-1.5","py-0.5","text-[10px]","font-medium","text-black"],[1,"text-[10px]","text-neutral-500"],[1,"max-w-full",3,"ngClass"],[3,"ttsCached","view"]],template:function(i,t){if(i&1){let r=y();s(0,"app-s-session-chat-column-layout")(1,"div",1)(2,"div",2)(3,"span",3),c(4),o(),h(5,Qt,3,5,"span",4),o(),h(6,Kt,4,3,"div",5),o(),s(7,"div",6),h(8,Gt,2,0,"div",7)(9,Jt,2,0,"div",7),F(10,Yt,3,6,"div",8,Bt),D(12,"div",null,0),o(),s(14,"div",9)(15,"app-s-session-input",10),x("draftTextChange",function(C){return _(r),p(t.handleComposerDraftChange(C))})("sendRequested",function(){return _(r),p(t.handleSendPrompt())})("queueRequested",function(){return _(r),p(t.handleSendPrompt())})("stopRequested",function(){return _(r),p(t.detailUi_DS.handleStopExecution())})("queueEditStart",function(C){return _(r),p(t.sessionQueue_DS.startEditing(C))})("queueEditTextChange",function(C){return _(r),p(t.sessionQueue_DS.editingText_$.set(C))})("queueEditSave",function(){return _(r),p(t.sessionQueue_DS.saveEdit())})("queueEditCancel",function(){return _(r),p(t.sessionQueue_DS.cancelEdit())})("queueRemoveItem",function(C){return _(r),p(t.sessionQueue_DS.removeItem(C))})("queueSendNow",function(C){return _(r),p(t.sessionQueue_DS.sendNow(C))})("queueMoveUp",function(C){return _(r),p(t.sessionQueue_DS.reorderItem({queueItemId:C,direction:"up"}))})("queueMoveDown",function(C){return _(r),p(t.sessionQueue_DS.reorderItem({queueItemId:C,direction:"down"}))}),s(16,"app-ccap-voice-record-button",11),x("transcriptSegmentReady",function(C){return _(r),p(t.handleVoiceSegment(C))}),o()()()()}if(i&2){let r;l(4),$(" ",t.ocSession_DS.activeSessionId_$()||"No session"," "),l(),u((r=t.ocSession_DS.selectedSession_$())?5:-1,r),l(),u(t.ocSession_DS.sessionUsage_$().inputTokens>0||t.ocSession_DS.sessionUsage_$().outputTokens>0?6:-1),l(2),u(t.ocSession_DS.selectedSessionLoading_$()?8:t.bubbleViews_$().length?-1:9),l(2),U(t.bubbleViews_$()),l(5),f("draftText",t.promptInput_$())("isExecuting",t.isExecuting_$())("isSending",t.isSending_$())("isStopping",t.detailUi_DS.isStopping_$())("enableAttachments",!0)("textareaRows",3)("queueItems",t.sessionQueue_DS.items_$())("isQueueLocked",t.sessionQueue_DS.isLocked_$())("editingQueueItemId",t.sessionQueue_DS.editingItemId_$())("editingQueueText",t.sessionQueue_DS.editingText_$()),l(),f("compactLayout",!0)}},dependencies:[N,K,ze,qe,Be,q],encapsulation:2})}return n})();var ot=(()=>{class n{transform(e){switch(e){case"status-change":return"bg-purple-600";case"config-change":return"bg-purple-500";case"prompt-sent":return"bg-blue-600";case"response-chunk":return"bg-green-600";case"response-complete":return"bg-green-500";case"tool-call-start":return"bg-orange-500";case"tool-call-end":return"bg-orange-400";case"error":return"bg-red-600";case"session-attached":return"bg-cyan-600";case"session-detached":return"bg-cyan-700";case"usage-update":return"bg-neutral-500";case"connection-change":return"bg-blue-700";case"gateway-message":return"bg-neutral-600";default:return"bg-neutral-600"}}static \u0275fac=function(i){return new(i||n)};static \u0275pipe=W({name:"ocSessionEventTypeColor",type:n,pure:!0})}return n})();var st=(()=>{class n{sanitizer;constructor(e){this.sanitizer=e}transform(e){if(!e)return this.sanitizer.bypassSecurityTrustHtml('<span class="text-neutral-500">{}</span>');try{let i=JSON.stringify(e,null,2),t=this.highlightJson(i);return this.sanitizer.bypassSecurityTrustHtml(t)}catch{return this.sanitizer.bypassSecurityTrustHtml('<span class="text-neutral-500">{}</span>')}}MULTILINE_THRESHOLD=150;highlightJson(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/("(\\u[\da-fA-F]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?)/g,t=>/^"/.test(t)?/:$/.test(t)?`<span style="color:#7dd3fc">${t}</span>`:t.length>this.MULTILINE_THRESHOLD&&t.includes("\\n")?this.formatMultilineString(t):`<span style="color:#86efac">${t}</span>`:/true|false/.test(t)?`<span style="color:#fbbf24">${t}</span>`:/null/.test(t)?`<span style="color:#a78bfa">${t}</span>`:`<span style="color:#fb923c">${t}</span>`)}formatMultilineString(e){return'<span style="color:#86efac">"</span><span style="display:block;margin:2px 0;padding:4px 8px;border-left:2px solid rgba(134,239,172,0.25);background:rgba(134,239,172,0.04);border-radius:0 4px 4px 0;color:#86efac;opacity:0.85;white-space:pre-wrap;word-break:break-word;font-size:0.9em;line-height:1.5">'+e.slice(1,-1).replace(/\\n/g,`
2
- `).replace(/\\t/g," ").replace(/\\r/g,"").replace(/\\"/g,'"').replace(/\\\\/g,"\\")+'</span><span style="color:#86efac">"</span>'}static \u0275fac=function(i){return new(i||n)(he(Ie,16))};static \u0275pipe=W({name:"ocSessionJsonFormat",type:n,pure:!0})}return n})();var sn=(n,a)=>a.sequence,an=n=>({"bg-neutral-800/30":n});function rn(n,a){n&1&&(s(0,"div",0),c(1," No events yet "),o())}function ln(n,a){if(n&1&&(s(0,"div",8)(1,"div",9),c(2,"Event data:"),o(),D(3,"div",10),I(4,"ocSessionJsonFormat"),o()),n&2){let e=d().$implicit;l(3),f("innerHTML",E(4,1,e.data),Se)}}function cn(n,a){if(n&1){let e=y();s(0,"div",2),x("click",function(){let t=_(e).$implicit,r=d(2);return p(r.handleSelectEvent(t))}),s(1,"div",3)(2,"span",4),I(3,"ocSessionEventTypeColor"),c(4),o(),s(5,"span",5),c(6),o()(),s(7,"div",6),c(8),o(),s(9,"div",7),I(10,"sAbsoluteTime"),c(11),I(12,"sTimeAgo"),o(),h(13,ln,5,3,"div",8),o()}if(n&2){let e,i,t=a.$implicit,r=d(2);f("ngClass",$e(15,an,((e=r.selectedEvent_$())==null?null:e.sequence)===t.sequence)),l(2),A(E(3,9,t.eventType)),l(2),$(" ",t.eventType," "),l(2),$(" #",t.sequence," "),l(2),$(" ",r.getEventBrief(t)," "),l(),f("title",E(10,11,t.timestamp)),l(2),$(" ",E(12,13,t.timestamp)," "),l(2),u(((i=r.selectedEvent_$())==null?null:i.sequence)===t.sequence?13:-1)}}function dn(n,a){if(n&1&&F(0,cn,14,17,"div",1,sn),n&2){let e=d();U(e.events_$())}}var at=(()=>{class n{ocSession_DS=v(k);selectedEvent_$=m(null);events_$=T(()=>[...this.ocSession_DS.selectedSessionEvents_$()].reverse());handleSelectEvent(e){this.selectedEvent_$()?.sequence===e.sequence?this.selectedEvent_$.set(null):this.selectedEvent_$.set(e)}getEventBrief(e){let i=e.data;switch(e.eventType){case"status-change":{let t=typeof i.from=="string"?i.from:"",r=typeof i.to=="string"?i.to:"";return`${t} \u2192 ${r}`}case"prompt-sent":{let t=typeof i.content=="string"?i.content:"";return t.length>60?t.substring(0,60)+"\u2026":t}case"response-complete":{let t=typeof i.content=="string"?i.content:"";return t.length>60?t.substring(0,60)+"\u2026":t}case"tool-call-start":return typeof i.name=="string"?i.name:"";case"error":{let t=typeof i.message=="string"?i.message:"";return t.length>60?t.substring(0,60)+"\u2026":t}default:{let t=JSON.stringify(i);return t.length>60?t.substring(0,60)+"\u2026":t}}}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=P({type:n,selectors:[["app-ccap-oc-timeline"]],hostAttrs:[1,"flex","flex-col","h-full"],decls:2,vars:1,consts:[[1,"flex","items-center","justify-center","py-6","text-[10px]","text-neutral-600"],[1,"border-b","border-neutral-800/60","cursor-pointer","hover:bg-neutral-800/40","transition-colors",3,"ngClass"],[1,"border-b","border-neutral-800/60","cursor-pointer","hover:bg-neutral-800/40","transition-colors",3,"click","ngClass"],[1,"flex","items-center","gap-1","px-2","py-1"],[1,"text-[9px]","px-1","py-0.5","rounded","font-medium","text-black","shrink-0"],[1,"text-[9px]","text-neutral-600","shrink-0","ml-auto"],[1,"px-2","pb-1","text-[10px]","text-neutral-400","truncate","font-mono"],[1,"px-2","pb-1","text-[10px]","text-neutral-400",3,"title"],[1,"px-2","py-2","border-t","border-neutral-800/80","bg-neutral-900/40"],[1,"text-[10px]","text-neutral-500","mb-1"],[1,"text-[10px]","font-mono","overflow-x-auto",3,"innerHTML"]],template:function(i,t){i&1&&h(0,rn,2,0,"div",0)(1,dn,2,0),i&2&&u(t.events_$().length?1:0)},dependencies:[N,G,J,ot,st],encapsulation:2})}return n})();function pn(n,a){n&1&&(s(0,"div",0),c(1," Loading\u2026 "),o())}function un(n,a){n&1&&(s(0,"div",0),c(1," No session selected "),o())}function mn(n,a){n&1&&(s(0,"span",4),c(1,"\u25CF Live"),o())}function xn(n,a){if(n&1&&(s(0,"div",7)(1,"span",8),c(2,"Label"),o(),s(3,"span",10),c(4),o()()),n&2){d();let e=M(0);l(4),O(e.label)}}function Sn(n,a){if(n&1&&(s(0,"div",7)(1,"span",8),c(2,"OC Session ID"),o(),s(3,"span",17),c(4),o()()),n&2){d();let e=M(0);l(4),O(e.openclawSessionId)}}function hn(n,a){if(n&1&&(s(0,"div",12)(1,"span",8),c(2,"Cost"),o(),s(3,"span",10),c(4),o()()),n&2){d();let e=M(0);l(4),$("$",e.costUsdTotal.toFixed(4),"")}}function fn(n,a){if(n&1&&(s(0,"div",12)(1,"span",8),c(2,"Tokens in"),o(),s(3,"span",10),c(4),o()()),n&2){d();let e=M(0);l(4),O(e.inputTokensTotal.toLocaleString())}}function Cn(n,a){if(n&1&&(s(0,"div",18)(1,"span",8),c(2,"Started"),o(),s(3,"span",19),I(4,"sAbsoluteTime"),c(5),I(6,"sTimeAgo"),o()()),n&2){d(2);let e=M(0);l(3),f("title",E(4,2,e.startedAt)),l(2),O(E(6,4,e.startedAt))}}function gn(n,a){if(n&1&&(s(0,"div",18)(1,"span",8),c(2,"Last activity"),o(),s(3,"span",19),I(4,"sAbsoluteTime"),c(5),I(6,"sTimeAgo"),o()()),n&2){d(2);let e=M(0);l(3),f("title",E(4,2,e.lastActivityAt)),l(2),O(E(6,4,e.lastActivityAt))}}function vn(n,a){if(n&1&&(s(0,"div",13)(1,"div",6),c(2,"Activity"),o(),h(3,Cn,7,6,"div",18)(4,gn,7,6,"div",18),o()),n&2){d();let e=M(0);l(3),u(e.startedAt?3:-1),l(),u(e.lastActivityAt?4:-1)}}function bn(n,a){if(n&1){let e=y();s(0,"button",20),x("click",function(){_(e);let t=d(2);return p(t.handleReconnect())}),c(1),o()}if(n&2){let e=d(2);f("disabled",e.isReconnecting_$()),l(),$(" ",e.isReconnecting_$()?"Reconnecting\u2026":"Reconnect"," ")}}function wn(n,a){if(n&1){let e=y();s(0,"button",21),x("click",function(){_(e);let t=d(2);return p(t.handleTerminate())}),c(1),o()}if(n&2){let e=d(2);f("disabled",e.isTerminating_$()),l(),$(" ",e.isTerminating_$()?"Terminating\u2026":"Terminate"," ")}}function yn(n,a){if(n&1&&(H(0)(1),s(2,"div",1)(3,"div",2)(4,"span",3),I(5,"ocSessionStatusColor"),c(6),o(),h(7,mn,2,0,"span",4),o(),s(8,"div",5)(9,"div",6),c(10,"Session"),o(),s(11,"div",7)(12,"span",8),c(13,"ID"),o(),s(14,"span",9),c(15),o()(),h(16,xn,5,1,"div",7),s(17,"div",7)(18,"span",8),c(19,"Workspace"),o(),s(20,"span",9),c(21),o()()(),s(22,"div",5)(23,"div",6),c(24,"Gateway"),o(),s(25,"div",7)(26,"span",8),c(27,"URL"),o(),s(28,"span",9),c(29),o()(),s(30,"div",7)(31,"span",8),c(32,"Agent"),o(),s(33,"span",10),c(34),o()(),h(35,Sn,5,1,"div",7),o(),s(36,"div",5)(37,"div",6),c(38,"Stats"),o(),s(39,"div",11)(40,"div",12)(41,"span",8),c(42,"Prompts"),o(),s(43,"span",10),c(44),o()(),s(45,"div",12)(46,"span",8),c(47,"Tool calls"),o(),s(48,"span",10),c(49),o()(),h(50,hn,5,1,"div",12)(51,fn,5,1,"div",12),o()(),h(52,vn,5,2,"div",13),s(53,"div",14),h(54,bn,2,2,"button",15)(55,wn,2,2,"button",16),o()()),n&2){let e=d(),i=j(e.sessionDetail_$().session),t=e.sessionDetail_$().runtime;l(4),A(E(5,18,i.status)),l(2),$(" ",i.status," "),l(),u(t.isLive?7:-1),l(8),O(i.sessionId),l(),u(i.label?16:-1),l(5),O(i.workspacePath),l(8),O(i.gatewayUrl||"ws://127.0.0.1:18789"),l(5),O(i.openclawAgentName||"default"),l(),u(i.openclawSessionId?35:-1),l(9),O(i.promptCount),l(5),O(i.toolCallCount),l(),u(i.costUsdTotal?50:-1),l(),u(i.inputTokensTotal?51:-1),l(),u(i.startedAt||i.lastActivityAt?52:-1),l(2),u(i.status==="disconnected"||i.status==="errored"?54:-1),l(),u(i.status==="running"||i.status==="waiting-input"?55:-1)}}var rt=(()=>{class n{ocSession_DS=v(k);sessionDetail_$=T(()=>this.ocSession_DS.selectedSession_$());isLoading_$=T(()=>this.ocSession_DS.selectedSessionLoading_$());isReconnecting_$=m(!1);isTerminating_$=m(!1);handleReconnect(){return L(this,null,function*(){let e=this.sessionDetail_$();if(e){this.isReconnecting_$.set(!0);try{yield this.ocSession_DS.reconnectSession({sessionId:e.session.sessionId}),yield this.ocSession_DS.loadSessionDetail({sessionId:e.session.sessionId})}catch{}finally{this.isReconnecting_$.set(!1)}}})}handleTerminate(){return L(this,null,function*(){let e=this.sessionDetail_$();if(e){this.isTerminating_$.set(!0);try{yield this.ocSession_DS.terminateSession({sessionId:e.session.sessionId})}catch{}finally{this.isTerminating_$.set(!1)}}})}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=P({type:n,selectors:[["app-ccap-oc-metadata"]],hostAttrs:[1,"flex","flex-col"],decls:3,vars:1,consts:[[1,"flex","items-center","justify-center","py-6","text-[10px]","text-neutral-600"],[1,"p-2","space-y-3","text-xs"],[1,"flex","items-center","gap-2"],[1,"px-2","py-0.5","rounded","text-[10px]","font-medium","text-black"],[1,"text-[10px]","text-green-500","animate-pulse"],[1,"space-y-1.5"],[1,"text-[10px]","font-semibold","text-neutral-500","uppercase","tracking-wide"],[1,"flex","flex-col","gap-0.5"],[1,"text-[10px]","text-neutral-600"],[1,"font-mono","text-[10px]","text-neutral-300","break-all"],[1,"text-[10px]","text-neutral-300"],[1,"grid","grid-cols-2","gap-1"],[1,"flex","flex-col"],[1,"space-y-1"],[1,"flex","flex-col","gap-1.5","pt-1","border-t","border-neutral-800"],[1,"w-full","px-2","py-1.5","text-[10px]","border","border-blue-500/50","text-blue-400","hover:bg-blue-500/10","rounded","transition-colors","disabled:opacity-50",3,"disabled"],[1,"w-full","px-2","py-1.5","text-[10px]","border","border-red-500/50","text-red-400","hover:bg-red-500/10","rounded","transition-colors","disabled:opacity-50",3,"disabled"],[1,"font-mono","text-[10px]","text-neutral-400","break-all"],[1,"flex","items-center","justify-between"],[1,"text-[10px]","text-neutral-400",3,"title"],[1,"w-full","px-2","py-1.5","text-[10px]","border","border-blue-500/50","text-blue-400","hover:bg-blue-500/10","rounded","transition-colors","disabled:opacity-50",3,"click","disabled"],[1,"w-full","px-2","py-1.5","text-[10px]","border","border-red-500/50","text-red-400","hover:bg-red-500/10","rounded","transition-colors","disabled:opacity-50",3,"click","disabled"]],template:function(i,t){i&1&&h(0,pn,2,0,"div",0)(1,un,2,0,"div",0)(2,yn,56,20,"div",1),i&2&&u(t.isLoading_$()?0:t.sessionDetail_$()?2:1)},dependencies:[G,J,q],encapsulation:2})}return n})();function Dn(n,a){n&1&&(s(0,"div",0),c(1," Select a session from the sidebar "),o())}function In(n,a){n&1&&(s(0,"div",0),c(1," Loading session\u2026 "),o())}function En(n,a){if(n&1){let e=y();s(0,"app-s-session-detail-three-column-layout",2),x("startResizeStart",function(t){_(e);let r=d();return p(r.handleMetadataResizeStart(t))})("endResizeStart",function(t){_(e);let r=d();return p(r.handleTimelineResizeStart(t))}),s(1,"div",3),D(2,"app-ccap-oc-metadata"),o(),s(3,"div",4),D(4,"app-ccap-oc-console"),o(),s(5,"div",5),D(6,"app-ccap-oc-timeline"),o()()}if(n&2){let e=d();f("isStartOpen",e.detailUi_DS.isMetadataPanelOpen_$())("isEndOpen",e.detailUi_DS.isTimelinePanelOpen_$())("startWidthPx",e.metadataWidth_$())("endWidthPx",e.timelineWidth_$())("isResizing",e.isResizing_$())}}var le=(()=>{class n extends Ve{ocSession_DS=v(k);detailUi_DS=v(z);route=v(Q);sessionId_$=m("");metadataWidth_$=m(256);timelineWidth_$=m(288);isResizing_$=m(!1);ngOnInit(){this.metadataWidth_$.set(Math.max(160,Math.min(500,S.loadPanelWidth("metadata",256)))),this.timelineWidth_$.set(Math.max(200,Math.min(600,S.loadPanelWidth("timeline",288)))),this.addSubscription(this.route.paramMap.subscribe(e=>{let i=e.get("sessionId")??"";i&&i!==this.sessionId_$()&&this.loadSession(i)}))}ngOnDestroy(){super.ngOnDestroy(),this.ocSession_DS.setActiveSessionId("")}handleMetadataResizeStart(e){let i=this.metadataWidth_$(),t=e.clientX;this.isResizing_$.set(!0),B.attachUntilPointerUp({startEvent:e,onMove:r=>{let g=r.clientX-t,C=Math.max(160,Math.min(500,i+g));this.metadataWidth_$.set(C)},onEnd:()=>{this.isResizing_$.set(!1),S.savePanelWidth("metadata",this.metadataWidth_$())}})}handleTimelineResizeStart(e){let i=this.timelineWidth_$(),t=e.clientX;this.isResizing_$.set(!0),B.attachUntilPointerUp({startEvent:e,onMove:r=>{let g=t-r.clientX,C=Math.max(200,Math.min(600,i+g));this.timelineWidth_$.set(C)},onEnd:()=>{this.isResizing_$.set(!1),S.savePanelWidth("timeline",this.timelineWidth_$())}})}loadSession(e){this.sessionId_$.set(e),this.ocSession_DS.clearLiveOutput(),this.ocSession_DS.setActiveSessionId(e),S.saveLastSessionId(e),this.resolveInstanceIdAndLoadHistory(e,0)}resolveInstanceIdAndLoadHistory(e,i){let t=this.ocSession_DS.activeInstanceId_$();if(t||(t=S.loadSelectedInstanceId(),t&&this.ocSession_DS.activeInstanceId_$.set(t)),t){this.ocSession_DS.loadGatewaySessionHistory({sessionId:e,instanceId:t}).then(()=>{this.ocSession_DS.loadSessionDetail({sessionId:e,isSilent:!0})});return}if(i<10){setTimeout(()=>{this.resolveInstanceIdAndLoadHistory(e,i+1)},300);return}this.ocSession_DS.pushConsoleMessage({type:"error",text:"No OpenClaw instance selected \u2014 select an instance in the sidebar to load session history."})}static \u0275fac=(()=>{let e;return function(t){return(e||(e=me(n)))(t||n)}})();static \u0275cmp=P({type:n,selectors:[["app-ccap-oc-detail"]],hostAttrs:[1,"flex","flex-col","flex-1","min-h-0","overflow-hidden"],features:[fe],decls:3,vars:1,consts:[[1,"flex","items-center","justify-center","h-full","text-neutral-500","text-sm"],[3,"isStartOpen","isEndOpen","startWidthPx","endWidthPx","isResizing"],[3,"startResizeStart","endResizeStart","isStartOpen","isEndOpen","startWidthPx","endWidthPx","isResizing"],["sDetailColumnStart",""],["sDetailColumnMain",""],["sDetailColumnEnd",""]],template:function(i,t){i&1&&h(0,Dn,2,0,"div",0)(1,In,2,0,"div",0)(2,En,7,5,"app-s-session-detail-three-column-layout",1),i&2&&u(t.sessionId_$()?t.ocSession_DS.selectedSessionLoading_$()?1:2:0)},dependencies:[Ne,it,at,rt],encapsulation:2})}return n})();var Tn=[{path:"",component:nt,children:[{path:"",pathMatch:"full",component:le},{path:":sessionId",component:le}]}],$o=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=_e({type:n});static \u0275inj=de({imports:[De,Me,ke.forChild(Tn),X,K,Y,Z,He]})}return n})();export{$o as OcSession_Module};
3
- //# sourceMappingURL=oc.module-JNAPKZRS.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["src/app/_modules/external-sessions/_modules/openclaw/_collections/oc-input-storage.util.ts", "src/app/_modules/external-sessions/_modules/openclaw/_services/oc-detail-ui.data-service.ts", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-dashboard/oc-dashboard.component.ts", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-dashboard/oc-dashboard.component.html", "src/app/_modules/external-sessions/_modules/openclaw/_pipes/oc-status-color.pipe.ts", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-shell/oc-shell.component.ts", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-shell/oc-shell.component.html", "src/app/_modules/external-sessions/_modules/openclaw/_collections/oc-console-to-bubble-view.util.ts", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-console/oc-console.component.ts", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-console/oc-console.component.html", "src/app/_modules/external-sessions/_modules/openclaw/_pipes/oc-event-type-color.pipe.ts", "src/app/_modules/external-sessions/_modules/openclaw/_pipes/oc-json-format.pipe.ts", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-timeline/oc-timeline.component.ts", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-timeline/oc-timeline.component.html", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-metadata/oc-metadata.component.ts", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-metadata/oc-metadata.component.html", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-detail/oc-detail.component.ts", "src/app/_modules/external-sessions/_modules/openclaw/_components/ccap-oc-detail/oc-detail.component.html", "src/app/_modules/external-sessions/_modules/openclaw/oc.module.ts"],
4
- "sourcesContent": ["import { Shr_LocalStoragePersistence_Util } from '../../../../shared/_collections/utils/storage/shr-local-storage-persistence.util';\nimport { SHR_PromptDraftStorage_Util } from '../../../../shared/_collections/utils/shr-prompt-draft-storage.util';\n\n/** localStorage prefix az OC Session input-ok mentéséhez. */\nconst STORAGE_PREFIX: string = 'ccap-ocSession';\n\n/**\n * OC Session felület inputjainak localStorage kezelése.\n * Dashboard szűrők és per-session prompt piszkozat mentése/betöltése.\n *\n * REQ-UI-MENU-STATE-001 (cycle 446): a metódusok a shared\n * `Shr_LocalStoragePersistence_Util`-ra delegálnak, így a try/catch +\n * getItem/setItem boilerplate központosítva van. A prompt-draft hármas a\n * `SHR_PromptDraftStorage_Util`-ra megy. LocalStorage kulcs-formátum\n * változatlan (`ccap-ocSession:*` prefix) — backward-compat.\n */\nexport class Oc_InputStorage_Util {\n\n /** Dashboard status szűrő mentése. */\n static saveStatusFilter(value: string): void {\n Shr_LocalStoragePersistence_Util.writeString(`${STORAGE_PREFIX}:statusFilter`, value);\n }\n\n /** Dashboard status szűrő betöltése. */\n static loadStatusFilter(): string {\n return Shr_LocalStoragePersistence_Util.readString(`${STORAGE_PREFIX}:statusFilter`) ?? '';\n }\n\n /** Utolsó használt workspace path mentése. */\n static saveLastWorkspacePath(value: string): void {\n Shr_LocalStoragePersistence_Util.writeString(`${STORAGE_PREFIX}:lastWorkspacePath`, value);\n }\n\n /** Utolsó használt workspace path betöltése. */\n static loadLastWorkspacePath(): string {\n return Shr_LocalStoragePersistence_Util.readString(`${STORAGE_PREFIX}:lastWorkspacePath`) ?? '';\n }\n\n /** Utolsó használt session label mentése. */\n static saveLastLabel(value: string): void {\n Shr_LocalStoragePersistence_Util.writeString(`${STORAGE_PREFIX}:lastLabel`, value);\n }\n\n /** Utolsó használt session label betöltése. */\n static loadLastLabel(): string {\n return Shr_LocalStoragePersistence_Util.readString(`${STORAGE_PREFIX}:lastLabel`) ?? '';\n }\n\n /** Utolsó használt agent name mentése. */\n static saveLastAgentName(value: string): void {\n Shr_LocalStoragePersistence_Util.writeString(`${STORAGE_PREFIX}:lastAgentName`, value);\n }\n\n /** Utolsó használt agent name betöltése. */\n static loadLastAgentName(): string {\n return Shr_LocalStoragePersistence_Util.readString(`${STORAGE_PREFIX}:lastAgentName`) ?? '';\n }\n\n /** Per-session prompt piszkozat mentése. */\n static savePromptDraft(sessionId: string, content: string): void {\n SHR_PromptDraftStorage_Util.saveDraft(STORAGE_PREFIX, sessionId, content);\n }\n\n /** Per-session prompt piszkozat betöltése. */\n static loadPromptDraft(sessionId: string): string {\n return SHR_PromptDraftStorage_Util.loadDraft(STORAGE_PREFIX, sessionId);\n }\n\n /** Per-session prompt piszkozat törlése (sikeres küldés után). */\n static clearPromptDraft(sessionId: string): void {\n SHR_PromptDraftStorage_Util.clearDraft(STORAGE_PREFIX, sessionId);\n }\n\n /** Panel nyitott/zárt állapot mentése. */\n static savePanelOpen(panelKey: string, isOpen: boolean): void {\n Shr_LocalStoragePersistence_Util.writeBoolean(`${STORAGE_PREFIX}:panelOpen:${panelKey}`, isOpen);\n }\n\n /** Panel nyitott/zárt állapot betöltése, fallback a megadott default értékre. */\n static loadPanelOpen(panelKey: string, defaultOpen: boolean): boolean {\n return Shr_LocalStoragePersistence_Util.readBoolean(\n `${STORAGE_PREFIX}:panelOpen:${panelKey}`,\n defaultOpen,\n );\n }\n\n /** Panel szélesség mentése (px). */\n static savePanelWidth(panelKey: string, width: number): void {\n Shr_LocalStoragePersistence_Util.writeNumber(`${STORAGE_PREFIX}:panelWidth:${panelKey}`, width);\n }\n\n /** Panel szélesség betöltése (px), fallback a megadott default értékre. */\n static loadPanelWidth(panelKey: string, defaultWidth: number): number {\n return Shr_LocalStoragePersistence_Util.readNumber(\n `${STORAGE_PREFIX}:panelWidth:${panelKey}`,\n defaultWidth,\n );\n }\n\n /** OC Session mód mentése (normal, plan). */\n static saveSessionMode(value: string): void {\n Shr_LocalStoragePersistence_Util.writeString(`${STORAGE_PREFIX}:sessionMode`, value);\n }\n\n /** OC Session mód betöltése. */\n static loadSessionMode(): string {\n return Shr_LocalStoragePersistence_Util.readString(`${STORAGE_PREFIX}:sessionMode`) ?? 'normal';\n }\n\n /** OC Session effort (reasoning level) mentése. */\n static saveSessionEffort(value: string): void {\n Shr_LocalStoragePersistence_Util.writeString(`${STORAGE_PREFIX}:sessionEffort`, value);\n }\n\n /** OC Session effort betöltése. */\n static loadSessionEffort(): string {\n return Shr_LocalStoragePersistence_Util.readString(`${STORAGE_PREFIX}:sessionEffort`) ?? 'high';\n }\n\n /** Archivált session-ök megjelenítés állapot mentése. */\n static saveShowArchived(value: boolean): void {\n Shr_LocalStoragePersistence_Util.writeBoolean(`${STORAGE_PREFIX}:showArchived`, value);\n }\n\n /** Archivált session-ök megjelenítés állapot betöltése (alapértelmezés: kikapcsolva). */\n static loadShowArchived(): boolean {\n return Shr_LocalStoragePersistence_Util.readBoolean(`${STORAGE_PREFIX}:showArchived`, false);\n }\n\n /** Utolsó megnyitott session ID mentése. */\n static saveLastSessionId(sessionId: string): void {\n Shr_LocalStoragePersistence_Util.writeString(`${STORAGE_PREFIX}:lastSessionId`, sessionId);\n }\n\n /** Utolsó megnyitott session ID betöltése. */\n static loadLastSessionId(): string {\n return Shr_LocalStoragePersistence_Util.readString(`${STORAGE_PREFIX}:lastSessionId`) ?? '';\n }\n\n /** Kiválasztott OpenClaw instance ID mentése. */\n static saveSelectedInstanceId(instanceId: string): void {\n Shr_LocalStoragePersistence_Util.writeString(`${STORAGE_PREFIX}:selectedInstanceId`, instanceId);\n }\n\n /** Kiválasztott OpenClaw instance ID betöltése. */\n static loadSelectedInstanceId(): string {\n return Shr_LocalStoragePersistence_Util.readString(`${STORAGE_PREFIX}:selectedInstanceId`) ?? '';\n }\n}\n", "import { inject, Injectable, signal } from '@angular/core';\n\nimport { Oc_InputStorage_Util } from '../_collections/oc-input-storage.util';\nimport { Openclaw_DataService } from './openclaw.data-service';\n\n/**\n * OC Session detail chrome állapot (metadata / timeline toggle + stop execution) — SSOT a shell toolbar és a detail között.\n */\n@Injectable({ providedIn: 'root' })\nexport class Oc_DetailUi_DataService {\n\n private readonly oc_DS: Openclaw_DataService =\n inject(Openclaw_DataService);\n\n /**\n * Timeline panel nyitva/zárva.\n * REQ-CC-PANELS-DEFAULT-CLOSED-001 (cycle 437, cycle 435 follow-up): default\n * `false` (zárva), UX konzisztencia a CC Sessionnel. localStorage user-pref\n * felülírja, csak no-stored-value (első használat) esetén érvényes a default.\n */\n readonly isTimelinePanelOpen_$ = signal<boolean>(\n Oc_InputStorage_Util.loadPanelOpen('timeline', false),\n );\n\n /**\n * Metadata panel nyitva/zárva.\n * REQ-CC-PANELS-DEFAULT-CLOSED-001 (cycle 437, cycle 435 follow-up): default `false` (zárva).\n */\n readonly isMetadataPanelOpen_$ = signal<boolean>(\n Oc_InputStorage_Util.loadPanelOpen('metadata', false),\n );\n\n /** Stop execution folyamatban. */\n readonly isStopping_$ = signal<boolean>(false);\n\n /** Timeline panel toggle + localStorage. */\n handleToggleTimeline(): void {\n const newValue: boolean = !this.isTimelinePanelOpen_$();\n this.isTimelinePanelOpen_$.set(newValue);\n Oc_InputStorage_Util.savePanelOpen('timeline', newValue);\n }\n\n /** Metadata panel toggle + localStorage. */\n handleToggleMetadata(): void {\n const newValue: boolean = !this.isMetadataPanelOpen_$();\n this.isMetadataPanelOpen_$.set(newValue);\n Oc_InputStorage_Util.savePanelOpen('metadata', newValue);\n }\n\n /**\n * Futó execution leállítása az aktuális session-re (stop gomb).\n */\n async handleStopExecution(): Promise<void> {\n const selected = this.oc_DS.selectedSession_$();\n if (!selected || this.isStopping_$()) {\n return;\n }\n const sessionId: string = selected.session?.sessionId ?? '';\n if (!sessionId) {\n return;\n }\n\n this.isStopping_$.set(true);\n try {\n await this.oc_DS.stopExecution({ sessionId: sessionId });\n } catch {\n // Hiba már a data service-ben kezelve (console error message)\n } finally {\n this.isStopping_$.set(false);\n }\n }\n}\n", "import { Component, computed, inject, OnInit, output, signal } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { CCAP_TextSearch_Util } from '../../../../../../_collections/utils/ccap-text-search.util';\nimport { Openclaw_DataService } from '../../_services/openclaw.data-service';\nimport { Oc_ListItem_Interface } from '../../_models/interfaces/oc-list-item.interface';\nimport { SC_OpenclawInstance_Interface } from '../../../../../../_models/interfaces/settings/openclaw/ccap-openclaw-instance.interface';\nimport { S_SessionStatusColor_Util } from '../../../../../shared/_collections/utils/s-session-status-color.util';\nimport { S_SessionListRowView_Interface } from '../../../../../shared/_models/interfaces/s-session-list-row-view.interface';\nimport { Oc_InputStorage_Util } from '../../_collections/oc-input-storage.util';\nimport { Set_General_DataService } from '../../../../../config/_modules/settings/_services/data-services/global-settings/set-general.data-service';\nimport { Set_OpenclawRegistry_DataService } from '../../../../../config/_modules/settings/_services/data-services/provider-settings/set-openclaw-registry.data-service';\nimport { SCH_ScheduledJobs_DataService } from '../../../../../scheduler/_services/data-services/sch-scheduled-jobs.data-service';\nimport { Coordinator_DataService } from '../../../../../coordinator/_services/coordinator.data-service';\n\n/**\n * OpenClaw Session dashboard / lista komponens.\n * Mindig egy kiválasztott OpenClaw instance session-jeit jeleníti meg.\n * Az instance választó kötelező — nincs \"all instances\" mód.\n */\n@Component({\n selector: 'app-ccap-oc-dashboard',\n templateUrl: './oc-dashboard.component.html',\n host: { class: 'flex flex-col flex-1 min-h-0 overflow-hidden' },\n})\n/** Oc_Dashboard_Component class. */\nexport class Oc_Dashboard_Component implements OnInit {\n\n readonly ocSession_DS: Openclaw_DataService =\n inject(Openclaw_DataService);\n\n readonly settingsGeneral_DS: Set_General_DataService =\n inject(Set_General_DataService);\n\n readonly openclawRegistry_DS: Set_OpenclawRegistry_DataService =\n inject(Set_OpenclawRegistry_DataService);\n\n /** REQ-SES-SCH-IND-001: schedule-indicator a session row-on (calendar ikon). */\n readonly scheduledJobs_DS: SCH_ScheduledJobs_DataService =\n inject(SCH_ScheduledJobs_DataService);\n\n /** REQ-SES-CRD-IND-001 slice 2 (cycle 191): coordinator-indicator a session row-on (compass ikon). */\n readonly coordinator_DS: Coordinator_DataService =\n inject(Coordinator_DataService);\n\n private readonly router: Router = inject(Router);\n\n /** Szűrő: status. */\n readonly statusFilter_$ = signal<string>('');\n\n /** Keresés: session label / workspace. */\n readonly searchQuery_$ = signal<string>('');\n\n /** Új session létrehozás dialog megnyitva. */\n readonly isCreateDialogOpen_$ = signal<boolean>(false);\n\n /**\n * REQ-SCH-IND-CLICK-001 (cycle 201): a Schedule popup-on megjelenített sessionId.\n * `null` esetén a popup zárva.\n */\n readonly schedulePopupSessionId_$ = signal<string | null>(null);\n\n /**\n * REQ-SES-CRD-IND-001 Slice 3 (cycle 202): a Coordinator popup-on megjelenített sessionId.\n * `null` esetén a popup zárva.\n */\n readonly coordinatorPopupSessionId_$ = signal<string | null>(null);\n\n /** Új session workspace path. */\n readonly newSessionWorkspacePath_$ = signal<string>('');\n\n /** Új session label. */\n readonly newSessionLabel_$ = signal<string>('');\n\n /** Új session agent neve (opcionális). */\n readonly newSessionAgentName_$ = signal<string>('');\n\n /** Session létrehozás folyamatban. */\n readonly isCreating_$ = signal<boolean>(false);\n\n /** Archivált session-ök megjelenítése. */\n readonly showArchived_$ = signal<boolean>(false);\n\n /** OpenClaw registry instance lista. */\n readonly ocRegistry_$ = signal<SC_OpenclawInstance_Interface[]>([]);\n\n /** Kiválasztott OpenClaw instance ID. */\n readonly selectedInstanceId_$ = signal<string>('');\n\n /** Registry betöltés megtörtént-e (loading flag). */\n readonly registryLoaded_$ = signal<boolean>(false);\n\n /** Kiadja, amikor a user egy session-re kattint — a shell mobil nézeten bezárja a sidebar-t. */\n readonly sessionSelected = output<void>();\n\n ngOnInit(): void {\n const savedFilter: string = Oc_InputStorage_Util.loadStatusFilter();\n if (savedFilter) {\n this.statusFilter_$.set(savedFilter);\n }\n const savedShowArchived: boolean = Oc_InputStorage_Util.loadShowArchived();\n this.showArchived_$.set(savedShowArchived);\n\n void this.settingsGeneral_DS.loadDefaultWorkspacePath();\n\n // REQ-SES-SCH-IND-001: schedule-job-lista lekérése a session-row calendar-ikonjához.\n void this.scheduledJobs_DS.loadAll();\n // REQ-SES-CRD-IND-001 slice 2: koordinátor-lista lekérése a session-row compass-ikonjához.\n void this.coordinator_DS.loadAllCoordinatorsForManagementPage();\n\n void this.openclawRegistry_DS.load().then((): void => {\n const instances: SC_OpenclawInstance_Interface[] =\n this.openclawRegistry_DS.section_$().form.instances;\n this.ocRegistry_$.set(instances);\n this.registryLoaded_$.set(true);\n\n const savedInstanceId: string = Oc_InputStorage_Util.loadSelectedInstanceId();\n const savedExists: boolean = instances.some(\n (i: SC_OpenclawInstance_Interface): boolean => i.instanceId === savedInstanceId,\n );\n\n if (savedExists) {\n this.selectInstance(savedInstanceId);\n } else if (instances.length > 0) {\n this.selectInstance(instances[0].instanceId);\n }\n }).catch((): void => {\n this.registryLoaded_$.set(true);\n });\n }\n\n /** Kiválasztott instance getter (convenience). */\n get selectedInstance(): SC_OpenclawInstance_Interface | undefined {\n const id: string = this.selectedInstanceId_$();\n return this.ocRegistry_$().find(\n (i: SC_OpenclawInstance_Interface): boolean => i.instanceId === id,\n );\n }\n\n /**\n * Instance kiválasztása: beállítja a gateway filter-t és betölti a session-öket.\n * Fontos: a gatewayFilter_$ signal-t közvetlenül állítjuk (nem setGatewayFilter-en keresztül),\n * hogy ne legyen dupla loadSessions hívás.\n */\n selectInstance(instanceId: string): void {\n this.selectedInstanceId_$.set(instanceId);\n Oc_InputStorage_Util.saveSelectedInstanceId(instanceId);\n\n const instance: SC_OpenclawInstance_Interface | undefined = this.ocRegistry_$().find(\n (i: SC_OpenclawInstance_Interface): boolean => i.instanceId === instanceId,\n );\n\n if (instance) {\n // Instance ID és gateway filter beállítása, majd session lista betöltés\n this.ocSession_DS.activeInstanceId_$.set(instanceId);\n this.ocSession_DS.setGatewayFilterOnly(instance.gatewayUrl);\n this.loadSessionsForCurrentFilters();\n }\n }\n\n /**\n * Instance választó dropdown change handler.\n */\n handleInstanceChange(instanceId: string): void {\n if (instanceId) {\n this.selectInstance(instanceId);\n }\n }\n\n /**\n * Session kiválasztása (navigálás a detail nézetre).\n * Kiadja a `sessionSelected` event-et, hogy a shell mobil nézeten bezárja a sidebar-t.\n */\n handleSelectSession(sessionId: string): void {\n this.router.navigate(['/oc-session', sessionId]);\n this.sessionSelected.emit();\n }\n\n /**\n * Status szűrő változás: újratölti a listát és menti az értéket.\n */\n handleStatusFilterChange(value: string): void {\n this.statusFilter_$.set(value);\n Oc_InputStorage_Util.saveStatusFilter(value);\n this.loadSessionsForCurrentFilters();\n }\n\n /**\n * Archivált session-ök toggle.\n */\n handleToggleShowArchived(): void {\n const newValue: boolean = !this.showArchived_$();\n this.showArchived_$.set(newValue);\n Oc_InputStorage_Util.saveShowArchived(newValue);\n this.loadSessionsForCurrentFilters();\n }\n\n /**\n * Create dialog megnyitása — mentett input-ok előtöltése localStorage-ból.\n * Workspace: utolsó mentett path, fallback a default workspace path-ra.\n */\n handleOpenCreateDialog(): void {\n const savedWorkspace: string = Oc_InputStorage_Util.loadLastWorkspacePath();\n this.newSessionWorkspacePath_$.set(\n savedWorkspace || this.settingsGeneral_DS.defaultWorkspacePath_$(),\n );\n this.newSessionLabel_$.set(Oc_InputStorage_Util.loadLastLabel());\n this.newSessionAgentName_$.set(Oc_InputStorage_Util.loadLastAgentName());\n this.isCreateDialogOpen_$.set(true);\n }\n\n /** Create dialog bezárása. */\n handleCloseCreateDialog(): void {\n this.isCreateDialogOpen_$.set(false);\n }\n\n /**\n * Új session létrehozása a kiválasztott instance-hoz és navigálás a detail nézetre.\n */\n async handleCreateSession(): Promise<void> {\n const workspacePath: string = this.newSessionWorkspacePath_$().trim();\n if (!workspacePath) {\n return;\n }\n\n const instance: SC_OpenclawInstance_Interface | undefined = this.selectedInstance;\n if (!instance) {\n return;\n }\n\n this.isCreating_$.set(true);\n try {\n // Input-ok mentése localStorage-ba a következő session létrehozáshoz\n Oc_InputStorage_Util.saveLastWorkspacePath(workspacePath);\n Oc_InputStorage_Util.saveLastLabel(this.newSessionLabel_$().trim());\n Oc_InputStorage_Util.saveLastAgentName(this.newSessionAgentName_$().trim());\n\n const sessionId: string = await this.ocSession_DS.createSession({\n workspacePath: workspacePath,\n label: this.newSessionLabel_$().trim() || undefined,\n gatewayUrl: instance.gatewayUrl,\n openclawAgentName: this.newSessionAgentName_$().trim() || undefined,\n });\n this.isCreateDialogOpen_$.set(false);\n if (sessionId) {\n this.router.navigate(['/oc-session', sessionId]);\n }\n } catch {\n // Hiba: a data service már kezeli\n } finally {\n this.isCreating_$.set(false);\n }\n }\n\n readonly filteredSessions_$ = computed((): Oc_ListItem_Interface[] => {\n const query: string = this.searchQuery_$();\n if (!query.trim()) {\n return this.ocSession_DS.sessions_$();\n }\n // REQ-SE-001: ékezet- és kisbetű/nagybetű-érzéketlen match (label + workspacePath).\n return this.ocSession_DS.sessions_$().filter(\n (s: Oc_ListItem_Interface): boolean => {\n return CCAP_TextSearch_Util.includesText(s.label, query)\n || CCAP_TextSearch_Util.includesText(s.workspacePath, query);\n },\n );\n });\n\n /** Szűrt session lista → shared list row view model mapping.\n REQ-SES-SCH-IND-001: hasSchedule flag a `scheduledJobs_DS.scheduledSessionIds_$`-ből.\n REQ-SES-CRD-IND-001 slice 2: hasCoordinator flag a `coordinator_DS.coordinatedSessionIds_$`-ből. */\n readonly sessionRowViews_$ = computed(\n (): S_SessionListRowView_Interface[] => {\n const scheduledIds: Set<string> = this.scheduledJobs_DS.scheduledSessionIds_$();\n const coordinatedIds: Set<string> = this.coordinator_DS.coordinatedSessionIds_$();\n return this.filteredSessions_$().map((s: Oc_ListItem_Interface): S_SessionListRowView_Interface => ({\n id: s.sessionId,\n label: s.label || s.sessionId,\n status: s.status,\n statusColorClass: S_SessionStatusColor_Util.resolve(s.status),\n workspacePath: s.workspacePath,\n isArchived: !!s.isArchived,\n lastActivityAt: s.lastActivityAt,\n promptCount: s.promptCount,\n isRunning: S_SessionStatusColor_Util.isRunning(s.status),\n hasSchedule: scheduledIds.has(s.sessionId),\n hasCoordinator: coordinatedIds.has(s.sessionId),\n }));\n },\n );\n\n /**\n * Pairing required hiba detekció — a gateway NOT_PAIRED hibáját felismerjük\n * és user-friendly üzenetet mutatunk a nyers error helyett.\n */\n isPairingRequiredError(): boolean {\n const err: unknown = this.ocSession_DS.sessionsLoadError_$();\n if (!err || typeof err !== 'object') {\n return false;\n }\n const errObj: Record<string, unknown> = err as Record<string, unknown>;\n // HttpErrorResponse.error._errorCode vagy error.responseBody._errorCode\n const body: unknown = errObj.error;\n if (body && typeof body === 'object') {\n const bodyObj: Record<string, unknown> = body as Record<string, unknown>;\n const errorCode: unknown = bodyObj._errorCode ?? bodyObj.errorCode ?? bodyObj.code;\n const message: unknown = bodyObj._message ?? bodyObj.message;\n if (errorCode === 'NOT_PAIRED' || errorCode === 'PAIRING_REQUIRED') {\n return true;\n }\n if (typeof message === 'string' && message.toLowerCase().includes('pairing required')) {\n return true;\n }\n }\n return false;\n }\n\n // ── Context menu ─────────────────────────────────────────────\n\n /** Kontextmenü session-je (null = zárt). */\n readonly ctxMenuSession_$ = signal<Oc_ListItem_Interface | null>(null);\n\n /** Kontextmenü pozíció. */\n readonly ctxMenuPos_$ = signal<{ x: number; y: number }>({ x: 0, y: 0 });\n\n /** Shared list row contextMenu output kezelése. */\n handleRowContextMenu(payload: { event: MouseEvent; id: string }): void {\n const session: Oc_ListItem_Interface | undefined =\n this.filteredSessions_$().find(\n (s: Oc_ListItem_Interface): boolean => s.sessionId === payload.id,\n );\n if (!session) {\n return;\n }\n this.ctxMenuSession_$.set(session);\n this.ctxMenuPos_$.set({ x: payload.event.clientX, y: payload.event.clientY });\n }\n\n /** Kontextmenü bezárása. */\n handleCloseCtxMenu(): void {\n this.ctxMenuSession_$.set(null);\n }\n\n /**\n * REQ-SCH-IND-CLICK-001 (cycle 201): a row schedule-indicator gombján kattintás —\n * megnyitja a Schedule popup-ot a megadott sessionId-hoz.\n */\n handleScheduleIndicatorClick(sessionId: string): void {\n this.schedulePopupSessionId_$.set(sessionId);\n }\n\n /** Schedule popup bezárása. */\n handleCloseSchedulePopup(): void {\n this.schedulePopupSessionId_$.set(null);\n }\n\n /**\n * REQ-SES-CRD-IND-001 Slice 3 (cycle 202): coordinator-indicator gomb kattintás —\n * megnyitja a Coordinator popup-ot a megadott sessionId-hoz.\n */\n handleCoordinatorIndicatorClick(sessionId: string): void {\n this.coordinatorPopupSessionId_$.set(sessionId);\n }\n\n /** Coordinator popup bezárása. */\n handleCloseCoordinatorPopup(): void {\n this.coordinatorPopupSessionId_$.set(null);\n }\n\n /** Archive/Unarchive a kontextmenüből. */\n async handleCtxToggleArchive(): Promise<void> {\n const session: Oc_ListItem_Interface | null = this.ctxMenuSession_$();\n if (!session) {\n return;\n }\n this.handleCloseCtxMenu();\n try {\n await this.ocSession_DS.setSessionArchived({\n sessionId: session.sessionId,\n isArchived: !session.isArchived,\n });\n } catch {\n // HTTP hibát az interceptor kezeli\n }\n }\n\n // ── Private ──────────────────────────────────────────────────\n\n /**\n * Session lista betöltése a kiválasztott instance gateway-jéről.\n * Betöltés után az első (legfrissebb) session-re automatikusan navigál,\n * ha még nincs aktív session kiválasztva.\n */\n private async loadSessionsForCurrentFilters(): Promise<void> {\n const instanceId: string = this.selectedInstanceId_$();\n if (!instanceId) {\n return;\n }\n await this.ocSession_DS.loadGatewaySessions({ instanceId: instanceId });\n\n // Auto-select: ha nincs aktív session, navigáljunk az első (legfrissebb) session-re\n if (!this.ocSession_DS.activeSessionId_$()) {\n const sessions: Oc_ListItem_Interface[] = this.filteredSessions_$();\n if (sessions.length) {\n this.router.navigate(['/oc-session', sessions[0].sessionId]);\n }\n }\n }\n}\n", "<!-- Instance választó fejléc -->\n<div class=\"shrink-0 px-2 py-1.5 border-b border-neonDefault\">\n <div class=\"flex items-center gap-1 mb-1\">\n <span class=\"text-xs font-semibold text-neutral-300 flex-1\">OC Sessions</span>\n <button\n class=\"px-1.5 py-0.5 text-xs border border-neonDefault text-neutral-300 hover:bg-neutral-700 rounded transition-colors\n disabled:opacity-30\"\n [disabled]=\"!selectedInstanceId_$()\"\n (click)=\"handleOpenCreateDialog()\"\n title=\"New OC Session\">\n + New\n </button>\n </div>\n @if (registryLoaded_$()) {\n @if (ocRegistry_$().length) {\n <select\n class=\"w-full px-1.5 py-1 text-xs bg-neutral-800 border border-neutral-700 text-neutral-200 rounded focus:outline-none focus:border-ccapAccent\"\n [value]=\"selectedInstanceId_$()\"\n (change)=\"handleInstanceChange($any($event.target).value)\">\n @for (inst of ocRegistry_$(); track inst.instanceId) {\n <option [value]=\"inst.instanceId\">\n {{ inst.label || 'Unnamed' }} — {{ inst.gatewayUrl }}{{ inst.pairingStatus === 'paired' ? ' (paired)' : inst.pairingStatus === 'pending' ? ' (pending)' : ' (not paired)' }}\n </option>\n }\n </select>\n } @else {\n <div class=\"text-[10px] text-neutral-500 py-0.5\">\n Nincs regisztrált OpenClaw instance — hozz létre egyet a Settings oldalon.\n </div>\n }\n } @else {\n <div class=\"text-[10px] text-neutral-500 py-0.5 animate-pulse\">Betöltés…</div>\n }\n</div>\n\n@if (selectedInstanceId_$()) {\n <!-- Szűrők + keresés -->\n <div class=\"shrink-0 px-2 py-1.5 border-b border-neutral-800 flex flex-col gap-1\">\n <input\n type=\"text\"\n placeholder=\"Search sessions…\"\n class=\"w-full px-2 py-1 text-xs bg-neutral-800 border border-neutral-700 text-neutral-200 rounded placeholder-neutral-500 focus:outline-none focus:border-ccapAccent\"\n [value]=\"searchQuery_$()\"\n (input)=\"searchQuery_$.set($any($event.target).value)\" />\n <div class=\"flex items-center gap-1\">\n <select\n class=\"flex-1 px-1.5 py-0.5 text-xs bg-neutral-800 border border-neutral-700 text-neutral-300 rounded focus:outline-none\"\n [value]=\"statusFilter_$()\"\n (change)=\"handleStatusFilterChange($any($event.target).value)\">\n <option value=\"\">All statuses</option>\n <option value=\"waiting-input\">Waiting</option>\n <option value=\"running\">Running</option>\n <option value=\"connecting\">Connecting</option>\n <option value=\"disconnected\">Disconnected</option>\n <option value=\"errored\">Errored</option>\n <option value=\"completed\">Completed</option>\n <option value=\"terminated\">Terminated</option>\n </select>\n <button\n class=\"px-1.5 py-0.5 text-xs border rounded transition-colors shrink-0\"\n [class]=\"showArchived_$() ? 'border-ccapAccent/60 text-ccapAccent/80 bg-ccapAccent/10' : 'border-neutral-700 text-neutral-500 hover:border-neutral-600'\"\n (click)=\"handleToggleShowArchived()\"\n title=\"Show archived\">\n Arch\n </button>\n </div>\n </div>\n\n <!-- Session lista hiba -->\n @if (ocSession_DS.sessionsLoadError_$()) {\n <div class=\"shrink-0 px-2 py-1.5\">\n @if (isPairingRequiredError()) {\n <!-- Pairing szükséges — kattintható link a Settings oldalra -->\n <a routerLink=\"/settings/openclaw\"\n class=\"block text-[10px] bg-amber-500/10 border border-amber-500/20 rounded p-3 space-y-1.5\n hover:bg-amber-500/15 hover:border-amber-500/30 transition-colors cursor-pointer no-underline\">\n <div class=\"text-amber-400 font-medium\">Párosítás szükséges</div>\n <p class=\"text-neutral-400 leading-relaxed\">\n Ez az OpenClaw instance még nincs párosítva. A session-ök megtekintéséhez előbb párosítsd a gateway-t.\n </p>\n <p class=\"text-neutral-500\">\n Kattints ide a beállításokhoz &rarr; <span class=\"text-emerald-400 font-medium\">Pair</span>\n </p>\n </a>\n } @else {\n <app-ccap-error-display\n [error]=\"ocSession_DS.sessionsLoadError_$()\"\n sourceLabelOverride=\"Gateway session lista\"\n class=\"block\" />\n }\n </div>\n }\n\n <!-- Session lista -->\n <div class=\"flex-1 overflow-y-auto\">\n @if (ocSession_DS.sessionsLoading_$()) {\n <div class=\"flex items-center justify-center py-8 text-xs text-neutral-500\">\n Loading…\n </div>\n } @else if (!filteredSessions_$().length && !ocSession_DS.sessionsLoadError_$()) {\n <div class=\"flex flex-col items-center justify-center py-8 gap-2\">\n <span class=\"text-xs text-neutral-500\">No sessions found</span>\n <button\n class=\"px-2 py-1 text-xs border border-neonDefault text-neutral-300 hover:bg-neutral-700 rounded transition-colors\"\n (click)=\"handleOpenCreateDialog()\">\n Create first session\n </button>\n </div>\n } @else {\n <!-- REQ-UI-SSEL-001 Slice 3: közös S_SessionSelect_Component. Az OC dashboard\n instance + status filter-t tart, szöveges kereső nincs — `hideSearch=true`. -->\n <app-s-session-select\n kind=\"oc\"\n [rows]=\"sessionRowViews_$()\"\n [activeId]=\"ocSession_DS.activeSessionId_$()\"\n [showWorkspacePath]=\"true\"\n [showPromptCount]=\"true\"\n [hideSearch]=\"true\"\n (selected)=\"handleSelectSession($event)\"\n (contextMenu)=\"handleRowContextMenu($event)\"\n (scheduleIndicatorClicked)=\"handleScheduleIndicatorClick($event)\"\n (coordinatorIndicatorClicked)=\"handleCoordinatorIndicatorClick($event)\" />\n }\n </div>\n} @else if (registryLoaded_$() && ocRegistry_$().length) {\n <!-- Instance nincs kiválasztva -->\n <div class=\"flex-1 flex items-center justify-center\">\n <span class=\"text-xs text-neutral-500\">Válassz OpenClaw instance-t a session-ök megtekintéséhez.</span>\n </div>\n}\n\n<!-- Create dialog -->\n@if (isCreateDialogOpen_$()) {\n <div class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4\"\n (click)=\"handleCloseCreateDialog()\">\n <div class=\"bg-neutral-900 border border-neutral-700 rounded-lg shadow-2xl w-full max-w-md p-4\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"text-sm font-semibold text-neutral-200 mb-1\">New OC Session</div>\n @if (selectedInstance) {\n <div class=\"text-[10px] text-neutral-500 mb-3\">\n Instance: <span class=\"text-neutral-300\">{{ selectedInstance.label || selectedInstance.gatewayUrl }}</span>\n </div>\n }\n\n <div class=\"space-y-2\">\n <div>\n <label class=\"text-[10px] text-neutral-500 block mb-0.5\">Workspace Path *</label>\n <input type=\"text\" placeholder=\"/path/to/workspace\"\n class=\"w-full px-2 py-1.5 text-xs bg-neutral-800 border border-neutral-700 text-neutral-200 rounded focus:outline-none focus:border-ccapAccent\"\n [value]=\"newSessionWorkspacePath_$()\"\n (input)=\"newSessionWorkspacePath_$.set($any($event.target).value)\" />\n </div>\n <div>\n <label class=\"text-[10px] text-neutral-500 block mb-0.5\">Label</label>\n <input type=\"text\" placeholder=\"Optional label\"\n class=\"w-full px-2 py-1.5 text-xs bg-neutral-800 border border-neutral-700 text-neutral-200 rounded focus:outline-none focus:border-ccapAccent\"\n [value]=\"newSessionLabel_$()\"\n (input)=\"newSessionLabel_$.set($any($event.target).value)\" />\n </div>\n <div>\n <label class=\"text-[10px] text-neutral-500 block mb-0.5\">Agent Name</label>\n <input type=\"text\" placeholder=\"default\"\n class=\"w-full px-2 py-1.5 text-xs bg-neutral-800 border border-neutral-700 text-neutral-200 rounded focus:outline-none focus:border-ccapAccent\"\n [value]=\"newSessionAgentName_$()\"\n (input)=\"newSessionAgentName_$.set($any($event.target).value)\" />\n </div>\n </div>\n\n <div class=\"flex gap-2 mt-4 justify-end\">\n <button\n class=\"px-3 py-1.5 text-xs border border-neutral-700 text-neutral-400 hover:bg-neutral-800 rounded transition-colors\"\n (click)=\"handleCloseCreateDialog()\">\n Cancel\n </button>\n <button\n class=\"px-3 py-1.5 text-xs bg-ccapAccent text-black font-medium rounded hover:bg-ccapAccent/80 transition-colors disabled:opacity-50\"\n [disabled]=\"!newSessionWorkspacePath_$().trim() || isCreating_$()\"\n (click)=\"handleCreateSession()\">\n {{ isCreating_$() ? 'Creating…' : 'Create' }}\n </button>\n </div>\n </div>\n </div>\n}\n\n<!-- REQ-SCH-IND-CLICK-001 (cycle 201): Schedule popup a row schedule-indicator gomb click-jén nyit. -->\n<app-sch-schedule-popup\n [sessionId]=\"schedulePopupSessionId_$()\"\n [isOpen]=\"schedulePopupSessionId_$() !== null\"\n (closed)=\"handleCloseSchedulePopup()\" />\n\n<!-- REQ-SES-CRD-IND-001 Slice 3 (cycle 202): Coordinator popup a row coordinator-indicator gomb click-jén nyit. -->\n<app-crd-info-popup\n [sessionId]=\"coordinatorPopupSessionId_$()\"\n [isOpen]=\"coordinatorPopupSessionId_$() !== null\"\n (closed)=\"handleCloseCoordinatorPopup()\" />\n\n<!-- Context menu overlay -->\n@if (ctxMenuSession_$(); as ctxSession) {\n <div class=\"fixed inset-0 z-40\" (click)=\"handleCloseCtxMenu()\"></div>\n <div class=\"fixed z-50 min-w-[140px] bg-neutral-900 border border-neutral-700 rounded-lg shadow-xl py-1 text-xs\"\n [style.left.px]=\"ctxMenuPos_$().x\"\n [style.top.px]=\"ctxMenuPos_$().y\">\n <button\n class=\"w-full text-left px-3 py-1.5 text-neutral-300 hover:bg-neutral-800 transition-colors\"\n (click)=\"handleCtxToggleArchive()\">\n {{ ctxSession.isArchived ? 'Unarchive' : 'Archive' }}\n </button>\n </div>\n}\n", "import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * OC Session status → Tailwind CSS badge szín osztály.\n */\n@Pipe({ name: 'ocSessionStatusColor' })\nexport class Oc_StatusColor_Pipe implements PipeTransform {\n\n /** Status string → CSS osztály. */\n transform(status: string): string {\n switch (status) {\n case 'running': return 'bg-yellow-500';\n case 'waiting-input': return 'bg-green-500';\n case 'connecting': return 'bg-yellow-500';\n case 'creating': return 'bg-yellow-400';\n case 'completed': return 'bg-blue-500';\n case 'errored': return 'bg-red-500';\n case 'terminated': return 'bg-red-700';\n case 'disconnected': return 'bg-amber-700';\n default: return 'bg-neutral-600';\n }\n }\n}\n", "import { Component, computed, inject, OnInit, signal, Signal } from '@angular/core';\n\nimport {\n Oc_Detail_Response,\n Oc_ListItem_Interface,\n} from '../../_models/interfaces/oc-list-item.interface';\nimport { Openclaw_DataService } from '../../_services/openclaw.data-service';\nimport { Oc_DetailUi_DataService } from '../../_services/oc-detail-ui.data-service';\nimport { Oc_InputStorage_Util } from '../../_collections/oc-input-storage.util';\nimport {\n SESSION_SHELL_MOBILE_BREAKPOINT_PX,\n SESSION_SHELL_SIDEBAR_DEFAULT_WIDTH_PX,\n SESSION_SHELL_SIDEBAR_MAX_WIDTH_PX,\n SESSION_SHELL_SIDEBAR_MIN_WIDTH_PX,\n} from '../../../../../shared/_collections/consts/session-detail-panel-layout.const';\nimport { SHR_DocumentPointerDrag_Util } from '../../../../../shared/_collections/utils/shr-document-pointer-drag.util';\n\n/**\n * OC Session shell top bar — aktív session név (lista/detail + activeSessionId), betöltés alatt is.\n */\ninterface CCAP_OcSessionShellTopBarContext_Interface {\n title: string;\n detail: Oc_Detail_Response | null;\n isLoading: boolean;\n showActions: boolean;\n}\n\n/**\n * OpenClaw Session shell layout.\n * Bal oldali session lista sidebar + jobb oldali detail area (router-outlet).\n * A top sorban az épp megnyitott session neve (a lista felett is látszik).\n */\n@Component({\n selector: 'app-ccap-oc-shell',\n templateUrl: './oc-shell.component.html',\n host: { class: 'flex min-h-0 w-full flex-1 flex-col overflow-hidden' },\n})\n/** Oc_Shell_Component class. */\nexport class Oc_Shell_Component implements OnInit {\n\n /** OC session state — top bar cím és badge-ek. */\n readonly ocSession_DS: Openclaw_DataService =\n inject(Openclaw_DataService);\n\n readonly detailUi_DS: Oc_DetailUi_DataService =\n inject(Oc_DetailUi_DataService);\n\n /**\n * Top bar: épp megnyitott session neve (activeSessionId + sessions lista / selected detail).\n */\n readonly ocTopBarContext_$: Signal<CCAP_OcSessionShellTopBarContext_Interface | null> = computed(\n (): CCAP_OcSessionShellTopBarContext_Interface | null => {\n const activeId: string = this.ocSession_DS.activeSessionId_$();\n if (!activeId) {\n return null;\n }\n const loading: boolean = this.ocSession_DS.selectedSessionLoading_$();\n const sel: Oc_Detail_Response | null = this.ocSession_DS.selectedSession_$();\n const list: Oc_ListItem_Interface[] = this.ocSession_DS.sessions_$();\n const fromList: Oc_ListItem_Interface | undefined = list.find(\n (s: Oc_ListItem_Interface): boolean => s.sessionId === activeId,\n );\n const detailMatches: boolean = sel?.session.sessionId === activeId;\n const titleFromSel: string | null = detailMatches\n ? (sel!.session.label || sel!.session.sessionId)\n : null;\n const title: string = titleFromSel ?? (fromList ? (fromList.label || fromList.sessionId) : activeId);\n const showActions: boolean = detailMatches && !loading;\n return {\n title: title,\n detail: detailMatches ? sel : null,\n isLoading: loading,\n showActions: showActions,\n };\n },\n );\n\n /** Sessions sidebar aktuális szélessége (px). */\n readonly sidebarWidth_$ = signal<number>(SESSION_SHELL_SIDEBAR_DEFAULT_WIDTH_PX);\n\n /** Sidebar nyitva/zárva. */\n readonly isSidebarOpen_$ = signal<boolean>(true);\n\n /** Resize aktív-e (drag közben a cursor override-hoz). */\n readonly isResizing_$ = signal<boolean>(false);\n\n ngOnInit(): void {\n const stored: number = Oc_InputStorage_Util.loadPanelWidth(\n 'sidebar',\n SESSION_SHELL_SIDEBAR_DEFAULT_WIDTH_PX,\n );\n this.sidebarWidth_$.set(\n Math.max(SESSION_SHELL_SIDEBAR_MIN_WIDTH_PX, Math.min(SESSION_SHELL_SIDEBAR_MAX_WIDTH_PX, stored)),\n );\n this.isSidebarOpen_$.set(Oc_InputStorage_Util.loadPanelOpen('sidebar', true));\n }\n\n /**\n * Sidebar resize drag indítása.\n */\n handleSidebarResizeStart(event: PointerEvent): void {\n const startX: number = event.clientX;\n const startWidth: number = this.sidebarWidth_$();\n this.isResizing_$.set(true);\n SHR_DocumentPointerDrag_Util.attachUntilPointerUp({\n startEvent: event,\n onMove: (e: PointerEvent): void => {\n const delta: number = e.clientX - startX;\n const newWidth: number = Math.max(\n SESSION_SHELL_SIDEBAR_MIN_WIDTH_PX,\n Math.min(SESSION_SHELL_SIDEBAR_MAX_WIDTH_PX, startWidth + delta),\n );\n this.sidebarWidth_$.set(newWidth);\n },\n onEnd: (): void => {\n this.isResizing_$.set(false);\n Oc_InputStorage_Util.savePanelWidth('sidebar', this.sidebarWidth_$());\n },\n });\n }\n\n /** Sidebar toggle, állapot mentése localStorage-ba. */\n handleToggleSidebar(): void {\n this.isSidebarOpen_$.update((v: boolean): boolean => !v);\n Oc_InputStorage_Util.savePanelOpen('sidebar', this.isSidebarOpen_$());\n }\n\n /**\n * Session kiválasztás a dashboard-ból — mobil nézeten auto-close sidebar.\n * Nem mentjük localStorage-ba: a felhasználó manuális preferenciáját nem írjuk felül.\n */\n handleSessionSelectedFromDashboard(): void {\n if (window.innerWidth < SESSION_SHELL_MOBILE_BREAKPOINT_PX) {\n this.isSidebarOpen_$.set(false);\n }\n }\n}\n", "<div class=\"flex min-h-0 w-full flex-1 flex-col overflow-hidden\" [class.select-none]=\"isResizing_$()\">\n @let ocCtx = ocTopBarContext_$();\n <app-s-session-shell-toolbar>\n <div sSessionToolbarLeft class=\"flex items-center gap-1 min-w-0\">\n <button\n type=\"button\"\n class=\"px-2 py-1 text-xs border border-neonDefault text-neutral-300 hover:bg-neutral-700 rounded transition-colors flex items-center gap-1 shrink-0\"\n (click)=\"handleToggleSidebar()\">\n <svg class=\"w-3 h-3 shrink-0 transition-transform duration-150\"\n [class.rotate-90]=\"isSidebarOpen_$()\"\n [class.-rotate-90]=\"!isSidebarOpen_$()\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n OC Sessions\n </button>\n @if (ocCtx) {\n <div class=\"w-px h-4 bg-neutral-700 shrink-0 self-center mx-0.5\"></div>\n }\n @if (ocCtx && ocCtx.showActions) {\n <button\n type=\"button\"\n class=\"px-2 py-1 text-xs border rounded transition-colors shrink-0\"\n [class]=\"detailUi_DS.isMetadataPanelOpen_$()\n ? 'border-neonCyan/50 text-neonCyan bg-neonCyan/10'\n : 'border-neutral-700 text-neutral-500 hover:text-neutral-300 hover:border-neutral-600'\"\n (click)=\"detailUi_DS.handleToggleMetadata()\">\n Info\n </button>\n }\n </div>\n\n <div sSessionToolbarCenter class=\"flex items-center justify-center gap-2 min-w-0 max-w-[min(100vw-12rem,42rem)]\">\n @if (ocCtx) {\n <span class=\"text-sm font-semibold text-neutral-200 truncate text-center min-w-0 max-w-[min(240px,35vw)]\"\n [title]=\"ocCtx.title\">\n {{ ocCtx.title }}\n </span>\n @if (ocCtx.detail) {\n <span\n class=\"w-2 h-2 rounded-full shrink-0\"\n [ngClass]=\"ocCtx.detail.session.status | ocSessionStatusColor\"\n [title]=\"ocCtx.detail.session.status\">\n </span>\n @if (ocCtx.detail.runtime.isLive) {\n <span class=\"w-2 h-2 rounded-full bg-green-500 animate-pulse shrink-0\" title=\"Live\"></span>\n }\n }\n @if (ocCtx.isLoading && !ocCtx.detail) {\n <span class=\"text-[10px] text-neutral-500 shrink-0\">Loading…</span>\n }\n }\n </div>\n\n <div sSessionToolbarRight class=\"flex items-center gap-1 min-w-0 flex-wrap justify-end\">\n @if (ocCtx && ocCtx.showActions) {\n <button\n type=\"button\"\n class=\"px-2 py-1 text-xs border rounded transition-colors\"\n [class]=\"detailUi_DS.isTimelinePanelOpen_$()\n ? 'border-neonCyan/50 text-neonCyan bg-neonCyan/10'\n : 'border-neutral-700 text-neutral-500 hover:text-neutral-300 hover:border-neutral-600'\"\n (click)=\"detailUi_DS.handleToggleTimeline()\">\n Timeline\n </button>\n @if (ocCtx.detail?.runtime?.isLive) {\n <div class=\"hidden sm:block w-px h-4 bg-neutral-700 shrink-0 self-center\"></div>\n <button\n type=\"button\"\n class=\"px-2 py-1 text-xs border border-neonRed/50 text-red-300 hover:bg-red-950/40 rounded transition-colors shrink-0 disabled:opacity-40\"\n [disabled]=\"detailUi_DS.isStopping_$()\"\n (click)=\"detailUi_DS.handleStopExecution()\">\n {{ detailUi_DS.isStopping_$() ? 'Stopping…' : 'Stop' }}\n </button>\n }\n }\n </div>\n </app-s-session-shell-toolbar>\n\n <app-s-resizable-session-shell-layout\n [isSidebarOpen]=\"isSidebarOpen_$()\"\n [sidebarWidthPx]=\"sidebarWidth_$()\"\n [isResizing]=\"isResizing_$()\"\n (sidebarResizeStart)=\"handleSidebarResizeStart($event)\">\n <div sSessionShellSidebar class=\"flex flex-col overflow-hidden h-full\">\n <app-ccap-oc-dashboard (sessionSelected)=\"handleSessionSelectedFromDashboard()\" />\n </div>\n <div\n sSessionShellMain\n class=\"flex min-h-0 flex-1 flex-col overflow-hidden [&>router-outlet]:contents\">\n <router-outlet />\n </div>\n </app-s-resizable-session-shell-layout>\n</div>\n", "import { CCAP_AgentConsoleBubbleKind_Type } from '../../../../../_enums/shared/ccap-agent-console-bubble-kind.enum';\nimport { CCAP_AgentConsoleBubbleView_Interface } from '../../../../../_models/interfaces/shared/ccap-agent-console-bubble-view.interface';\nimport { OcSessionConsoleMessage_Interface } from '../_services/oc.data-service.interface';\n\n/**\n * OC Session console üzenet → közös buborék view-model.\n */\nexport class Oc_ConsoleToBubbleView_Util {\n\n /**\n * Egy OC console message átalakítása megjelenítési view-ra.\n */\n static fromConsoleMessage(msg: OcSessionConsoleMessage_Interface): CCAP_AgentConsoleBubbleView_Interface {\n const kind: CCAP_AgentConsoleBubbleKind_Type = Oc_ConsoleToBubbleView_Util.mapTypeToKind(msg.type);\n const isUserAligned: boolean = msg.type === 'prompt';\n return {\n listKey: msg.listKey,\n kind: kind,\n bodyText: msg.text,\n timestampIso: msg.timestamp,\n expandableContent: msg.expandableContent,\n rawData: msg.rawData,\n isUserAligned: isUserAligned,\n flags: {\n showCopy: true,\n showRawInfo: true,\n useEditDiffForExpandable: false,\n },\n };\n }\n\n private static mapTypeToKind(\n type: OcSessionConsoleMessage_Interface['type'],\n ): CCAP_AgentConsoleBubbleKind_Type {\n switch (type) {\n case 'prompt':\n return CCAP_AgentConsoleBubbleKind_Type.userPrompt;\n case 'assistant':\n return CCAP_AgentConsoleBubbleKind_Type.assistant;\n case 'tool':\n return CCAP_AgentConsoleBubbleKind_Type.tool;\n case 'tool-result':\n return CCAP_AgentConsoleBubbleKind_Type.toolResult;\n case 'error':\n return CCAP_AgentConsoleBubbleKind_Type.error;\n case 'info':\n return CCAP_AgentConsoleBubbleKind_Type.info;\n case 'status':\n return CCAP_AgentConsoleBubbleKind_Type.status;\n default:\n return CCAP_AgentConsoleBubbleKind_Type.info;\n }\n }\n}\n", "import {\n AfterViewChecked,\n AfterViewInit,\n Component,\n computed,\n ElementRef,\n inject,\n OnInit,\n signal,\n Signal,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CCAP_AgentConsoleBubbleKind_Type } from '../../../../../../_enums/shared/ccap-agent-console-bubble-kind.enum';\nimport { CCAP_AgentConsoleBubbleView_Interface } from '../../../../../../_models/interfaces/shared/ccap-agent-console-bubble-view.interface';\nimport { CCAP_ExtSessionMessage_Response } from '../../../../../../_models/interfaces/shared/ccap-ext-message.interface';\nimport { Openclaw_DataService } from '../../_services/openclaw.data-service';\nimport { OcSessionConsoleMessage_Interface } from '../../_services/oc.data-service.interface';\nimport { Oc_DetailUi_DataService } from '../../_services/oc-detail-ui.data-service';\nimport { VNP_InputUi_DataService } from '../../../../../dev/_modules/poc/_modules/voice-notes-poc/_services/vnp-input-ui.data-service';\nimport { Oc_ConsoleToBubbleView_Util } from '../../_collections/oc-console-to-bubble-view.util';\nimport { SHR_BubbleViewGrouping_Util } from '../../../../../shared/_collections/utils/shr-bubble-view-grouping.util';\nimport { SHR_ExtSessionMsgToBubbleView_Util } from '../../../../../shared/_collections/utils/shr-ext-message-to-bubble-view.util';\nimport { Oc_InputStorage_Util } from '../../_collections/oc-input-storage.util';\nimport { ExS_Queue_DataService } from '../../../../_services/exs-queue.data-service';\n\n/**\n * OpenClaw Session console komponens.\n * Chat felület: közös buborék + prompt composer, token usage summary.\n * Auto-scroll: a s-session-chat-column-layout scroll ancestor-je — messagesEnd scrollIntoView.\n */\n@Component({\n selector: 'app-ccap-oc-console',\n templateUrl: './oc-console.component.html',\n host: { class: 'flex flex-col flex-1 min-h-0 overflow-hidden w-full min-w-0' },\n})\n/** Oc_Console_Component class. */\nexport class Oc_Console_Component\n implements OnInit, AfterViewInit, AfterViewChecked {\n\n @ViewChild('messagesEnd') private messagesEndRef?: ElementRef<HTMLElement>;\n\n readonly ocSession_DS: Openclaw_DataService =\n inject(Openclaw_DataService);\n\n readonly detailUi_DS: Oc_DetailUi_DataService =\n inject(Oc_DetailUi_DataService);\n\n private readonly route: ActivatedRoute = inject(ActivatedRoute);\n\n private readonly voiceInputUi_DS: VNP_InputUi_DataService =\n inject(VNP_InputUi_DataService);\n\n readonly sessionQueue_DS: ExS_Queue_DataService =\n inject(ExS_Queue_DataService);\n\n /** Prompt input értéke. */\n readonly promptInput_$ = signal<string>('');\n\n /** Prompt küldés folyamatban. */\n readonly isSending_$ = signal<boolean>(false);\n\n /** Agent fut-e (running státusz → stop gomb a shared input-ban). */\n readonly isExecuting_$: Signal<boolean> = computed(\n (): boolean => this.ocSession_DS.selectedSession_$()?.runtime?.isLive === true,\n );\n\n /** Console üzenetek (a data service-ből). */\n readonly messages_$: Signal<OcSessionConsoleMessage_Interface[]> = computed(\n (): OcSessionConsoleMessage_Interface[] => this.ocSession_DS.consoleMessages_$(),\n );\n\n /** TTS cache: lejátszott üzenetek messageKey-jei (audio player megjelenítéshez). */\n readonly ttsCachedKeys_$ = signal<Set<string>>(new Set());\n\n /**\n * TTS cache jelzés a shared bubble-ből.\n */\n handleTtsCached(messageKey: string): void {\n this.ttsCachedKeys_$.update(\n (s: Set<string>): Set<string> => new Set([...s, messageKey]),\n );\n }\n\n /**\n * Buborék nézet: assembled messages (SSOT) → bubble view.\n * Fallback: kliens-oldali event pipeline (régi session-ökhöz).\n */\n readonly bubbleViews_$ = computed((): CCAP_AgentConsoleBubbleView_Interface[] => {\n // Assembled messages SSOT path\n const assembled: CCAP_ExtSessionMessage_Response[] =\n this.ocSession_DS.assembledMessages_$();\n if (assembled.length > 0) {\n const sid: string = this.sessionId;\n const cached: Set<string> = this.ttsCachedKeys_$();\n let views: CCAP_AgentConsoleBubbleView_Interface[] = assembled.map(\n (msg: CCAP_ExtSessionMessage_Response): CCAP_AgentConsoleBubbleView_Interface =>\n SHR_ExtSessionMsgToBubbleView_Util.fromAssembledMessage(\n msg, { sessionId: sid, cachedKeys: cached },\n ),\n );\n // Sub-agent és consecutive tool csoportosítás (shared util)\n views = SHR_BubbleViewGrouping_Util.groupSubAgentItems(views);\n views = SHR_BubbleViewGrouping_Util.groupConsecutiveToolItems(views);\n return views;\n }\n\n // Fallback: kliens-oldali event pipeline\n return this.messages_$().map(\n (msg: OcSessionConsoleMessage_Interface): CCAP_AgentConsoleBubbleView_Interface =>\n Oc_ConsoleToBubbleView_Util.fromConsoleMessage(msg),\n );\n });\n\n /** Template-ben kind összehasonlítás (method hívás nélkül). */\n readonly bubbleKind = CCAP_AgentConsoleBubbleKind_Type;\n\n /** Küldés tiltva ha üres prompt. */\n readonly isComposerSendDisabled_$ = computed((): boolean => {\n return !this.promptInput_$().trim().length;\n });\n\n /** Aktuális session ID. */\n private get sessionId(): string {\n return this.ocSession_DS.activeSessionId_$();\n }\n\n /** Előző render console üzenetszáma — új elem érkezésekor görgetünk az aljára. */\n private previousConsoleMessageCount: number = 0;\n\n ngAfterViewInit(): void {\n // Első megjelenés: legfrissebb tartalom (alja) látszódjon\n this.scheduleScrollToBottom();\n }\n\n ngAfterViewChecked(): void {\n const currentCount: number = this.ocSession_DS.consoleMessages_$().length;\n // Új üzenet vagy history betöltés (0 → N): következő tick-ben scroll, hogy a DOM kész legyen\n if (currentCount > this.previousConsoleMessageCount) {\n this.scheduleScrollToBottom();\n }\n this.previousConsoleMessageCount = currentCount;\n }\n\n ngOnInit(): void {\n const sessionId: string = this.route.snapshot.paramMap.get('sessionId') ?? '';\n if (sessionId) {\n const draft: string = Oc_InputStorage_Util.loadPromptDraft(sessionId);\n this.promptInput_$.set(draft);\n this.sessionQueue_DS.subscribeToSession({\n sessionId: sessionId,\n baseRoute: 'oc-session',\n });\n }\n }\n\n /**\n * Prompt küldése.\n */\n async handleSendPrompt(): Promise<void> {\n const content: string = this.promptInput_$().trim();\n if (!content || !this.sessionId || this.isSending_$()) {\n return;\n }\n\n Oc_InputStorage_Util.clearPromptDraft(this.sessionId);\n this.promptInput_$.set('');\n this.isSending_$.set(true);\n\n try {\n await this.ocSession_DS.sendPrompt({\n sessionId: this.sessionId,\n content: content,\n });\n } catch {\n // Hiba: a data service console error message-t küld\n } finally {\n this.isSending_$.set(false);\n }\n }\n\n /**\n * Composer piszkozat változás + localStorage.\n */\n handleComposerDraftChange(value: string): void {\n this.promptInput_$.set(value);\n const sid: string = this.sessionId;\n if (sid) {\n Oc_InputStorage_Util.savePromptDraft(sid, value);\n }\n }\n\n /**\n * Voice szegmens transcribe: akkumuláció + auto-send csak isFinal=true esetén.\n */\n handleVoiceSegment(event: { text: string; isFinal: boolean }): void {\n const t: string = event.text.trim();\n if (!t.length) {\n return;\n }\n const current: string = this.promptInput_$().trim();\n const next: string = current.length > 0 ? `${current} ${t}` : t;\n this.handleComposerDraftChange(next);\n if (this.voiceInputUi_DS.autoSendAfterVoice_$() && event.isFinal) {\n void this.handleSendPrompt();\n }\n }\n\n /**\n * Scroll ütemezése: setTimeout(0) mint a fő chat — view update után fusson.\n */\n private scheduleScrollToBottom(): void {\n setTimeout((): void => {\n this.scrollToBottom();\n }, 0);\n }\n\n /**\n * Chat oszlop alja: anchor scrollIntoView a legközelebbi overflow-y-auto ancestor-hoz (layout slot).\n */\n private scrollToBottom(): void {\n const el: HTMLElement | undefined = this.messagesEndRef?.nativeElement;\n if (!el) {\n return;\n }\n el.scrollIntoView({ block: 'end', inline: 'nearest' });\n }\n}\n", "<app-s-session-chat-column-layout>\n <div sChatColumnHeader class=\"flex shrink-0 flex-col\">\n <!-- Console fejléc: session ID + status -->\n <div class=\"flex shrink-0 items-center gap-2 border-b border-neonDefault bg-ccapSurface px-3 py-1.5\">\n <span class=\"flex-1 truncate font-mono text-xs text-neutral-400\">\n {{ ocSession_DS.activeSessionId_$() || 'No session' }}\n </span>\n @if (ocSession_DS.selectedSession_$(); as detail) {\n <span\n class=\"rounded px-1.5 py-0.5 text-[10px] font-medium text-black\"\n [class]=\"detail.session.status | ocSessionStatusColor\">\n {{ detail.session.status }}\n </span>\n }\n </div>\n\n @if (ocSession_DS.sessionUsage_$().inputTokens > 0 || ocSession_DS.sessionUsage_$().outputTokens > 0) {\n <div class=\"flex shrink-0 items-center gap-3 border-b border-neutral-800 bg-neutral-900/50 px-3 py-1\">\n <span class=\"text-[10px] text-neutral-500\">\n Tokens: {{ ocSession_DS.sessionUsage_$().inputTokens.toLocaleString() }} in\n / {{ ocSession_DS.sessionUsage_$().outputTokens.toLocaleString() }} out\n </span>\n @if (ocSession_DS.sessionUsage_$().costUsd > 0) {\n <span class=\"text-[10px] text-neutral-500\">\n Cost: ${{ ocSession_DS.sessionUsage_$().costUsd.toFixed(4) }}\n </span>\n }\n </div>\n }\n </div>\n\n <div sChatColumnScroll class=\"space-y-3 px-3 py-3 text-xs\">\n @if (ocSession_DS.selectedSessionLoading_$()) {\n <div class=\"flex h-full items-center justify-center text-xs text-neutral-600\">\n Loading session history…\n </div>\n } @else if (!bubbleViews_$().length) {\n <div class=\"flex h-full items-center justify-center text-xs text-neutral-600\">\n No messages yet — send a prompt to start\n </div>\n }\n @for (row of bubbleViews_$(); track row.listKey) {\n <div [class]=\"row.isUserAligned ? 'flex justify-end' : 'flex justify-start'\">\n <div\n class=\"max-w-full\"\n [ngClass]=\"row.kind === bubbleKind.tool || row.kind === bubbleKind.toolResult\n ? { 'w-[90%]': true, 'ml-4': true }\n : { 'w-[85%]': true }\">\n <app-s-agent-console-message-bubble [view]=\"row\" (ttsCached)=\"handleTtsCached($event)\" />\n </div>\n </div>\n }\n <div #messagesEnd></div>\n </div>\n\n <div sChatColumnComposer>\n <app-s-session-input\n [draftText]=\"promptInput_$()\"\n (draftTextChange)=\"handleComposerDraftChange($event)\"\n [isExecuting]=\"isExecuting_$()\"\n [isSending]=\"isSending_$()\"\n [isStopping]=\"detailUi_DS.isStopping_$()\"\n [enableAttachments]=\"true\"\n placeholder=\"Send a prompt… (Enter to send, Shift+Enter for newline)\"\n [textareaRows]=\"3\"\n (sendRequested)=\"handleSendPrompt()\"\n (queueRequested)=\"handleSendPrompt()\"\n (stopRequested)=\"detailUi_DS.handleStopExecution()\"\n [queueItems]=\"sessionQueue_DS.items_$()\"\n [isQueueLocked]=\"sessionQueue_DS.isLocked_$()\"\n [editingQueueItemId]=\"sessionQueue_DS.editingItemId_$()\"\n [editingQueueText]=\"sessionQueue_DS.editingText_$()\"\n (queueEditStart)=\"sessionQueue_DS.startEditing($event)\"\n (queueEditTextChange)=\"sessionQueue_DS.editingText_$.set($event)\"\n (queueEditSave)=\"sessionQueue_DS.saveEdit()\"\n (queueEditCancel)=\"sessionQueue_DS.cancelEdit()\"\n (queueRemoveItem)=\"sessionQueue_DS.removeItem($event)\"\n (queueSendNow)=\"sessionQueue_DS.sendNow($event)\"\n (queueMoveUp)=\"sessionQueue_DS.reorderItem({ queueItemId: $event, direction: 'up' })\"\n (queueMoveDown)=\"sessionQueue_DS.reorderItem({ queueItemId: $event, direction: 'down' })\">\n <app-ccap-voice-record-button\n sInputTextareaAccessory\n [compactLayout]=\"true\"\n (transcriptSegmentReady)=\"handleVoiceSegment($event)\">\n </app-ccap-voice-record-button>\n </app-s-session-input>\n </div>\n</app-s-session-chat-column-layout>\n", "import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * OC Session event type → Tailwind CSS badge szín osztály.\n */\n@Pipe({ name: 'ocSessionEventTypeColor' })\nexport class Oc_EventTypeColor_Pipe implements PipeTransform {\n\n /** Event type string → CSS osztály. */\n transform(eventType: string): string {\n switch (eventType) {\n case 'status-change': return 'bg-purple-600';\n case 'config-change': return 'bg-purple-500';\n case 'prompt-sent': return 'bg-blue-600';\n case 'response-chunk': return 'bg-green-600';\n case 'response-complete': return 'bg-green-500';\n case 'tool-call-start': return 'bg-orange-500';\n case 'tool-call-end': return 'bg-orange-400';\n case 'error': return 'bg-red-600';\n case 'session-attached': return 'bg-cyan-600';\n case 'session-detached': return 'bg-cyan-700';\n case 'usage-update': return 'bg-neutral-500';\n case 'connection-change': return 'bg-blue-700';\n case 'gateway-message': return 'bg-neutral-600';\n default: return 'bg-neutral-600';\n }\n }\n}\n", "import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * Record/object → szintaxis-kiemelt formázott JSON HTML (2 space indent).\n */\n@Pipe({ name: 'ocSessionJsonFormat' })\nexport class Oc_JsonFormat_Pipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {}\n\n /** Object → syntax-highlighted JSON SafeHtml. */\n transform(data: Record<string, unknown> | null | undefined): SafeHtml {\n if (!data) {\n return this.sanitizer.bypassSecurityTrustHtml('<span class=\"text-neutral-500\">{}</span>');\n }\n\n try {\n const json: string = JSON.stringify(data, null, 2);\n const highlighted: string = this.highlightJson(json);\n return this.sanitizer.bypassSecurityTrustHtml(highlighted);\n } catch {\n return this.sanitizer.bypassSecurityTrustHtml('<span class=\"text-neutral-500\">{}</span>');\n }\n }\n\n /** Minimális string hossz, ami felett a többsoros kibontás aktiválódik. */\n private readonly MULTILINE_THRESHOLD: number = 150;\n\n /**\n * JSON string → HTML syntax highlight.\n */\n private highlightJson(json: string): string {\n const escaped: string = json\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n\n return escaped.replace(\n /(\"(\\\\u[\\da-fA-F]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/g,\n (match: string): string => {\n if (/^\"/.test(match)) {\n if (/:$/.test(match)) {\n return `<span style=\"color:#7dd3fc\">${match}</span>`;\n }\n if (match.length > this.MULTILINE_THRESHOLD && match.includes('\\\\n')) {\n return this.formatMultilineString(match);\n }\n return `<span style=\"color:#86efac\">${match}</span>`;\n }\n if (/true|false/.test(match)) {\n return `<span style=\"color:#fbbf24\">${match}</span>`;\n }\n if (/null/.test(match)) {\n return `<span style=\"color:#a78bfa\">${match}</span>`;\n }\n return `<span style=\"color:#fb923c\">${match}</span>`;\n },\n );\n }\n\n /**\n * Hosszú, escaped string token → kibontott többsoros blokk.\n */\n private formatMultilineString(match: string): string {\n const inner: string = match\n .slice(1, -1)\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\t/g, ' ')\n .replace(/\\\\r/g, '')\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\\\\\/g, '\\\\');\n\n return '<span style=\"color:#86efac\">\"</span>'\n + '<span style=\"display:block;margin:2px 0;padding:4px 8px;border-left:2px solid rgba(134,239,172,0.25);'\n + 'background:rgba(134,239,172,0.04);border-radius:0 4px 4px 0;color:#86efac;opacity:0.85;'\n + 'white-space:pre-wrap;word-break:break-word;font-size:0.9em;line-height:1.5\">'\n + inner\n + '</span>'\n + '<span style=\"color:#86efac\">\"</span>';\n }\n}\n", "import { Component, computed, inject, signal, Signal } from '@angular/core';\n\nimport {\n Openclaw_DataService,\n} from '../../_services/openclaw.data-service';\nimport { Oc_EventItem_Interface } from '../../_models/interfaces/oc-list-item.interface';\n\n/**\n * OpenClaw Session timeline komponens.\n * Session event log megjelenítése időrendben.\n */\n@Component({\n selector: 'app-ccap-oc-timeline',\n templateUrl: './oc-timeline.component.html',\n host: { class: 'flex flex-col h-full' },\n})\n/** Oc_Timeline_Component class. */\nexport class Oc_Timeline_Component {\n\n private readonly ocSession_DS: Openclaw_DataService =\n inject(Openclaw_DataService);\n\n /** Kiválasztott event (részletek megjelenítéséhez). */\n readonly selectedEvent_$ = signal<Oc_EventItem_Interface | null>(null);\n\n /** Event lista (fordított sorrendben: legfrissebb felül). */\n readonly events_$: Signal<Oc_EventItem_Interface[]> = computed(\n (): Oc_EventItem_Interface[] =>\n [...this.ocSession_DS.selectedSessionEvents_$()].reverse(),\n );\n\n /** Event kiválasztása (részletek megjelenítése). */\n handleSelectEvent(event: Oc_EventItem_Interface): void {\n const current: Oc_EventItem_Interface | null = this.selectedEvent_$();\n if (current?.sequence === event.sequence) {\n this.selectedEvent_$.set(null);\n } else {\n this.selectedEvent_$.set(event);\n }\n }\n\n /**\n * Event rövid összefoglaló kinyerése (egy soros megjelenítéshez).\n */\n getEventBrief(event: Oc_EventItem_Interface): string {\n const data: Record<string, unknown> = event.data;\n switch (event.eventType) {\n case 'status-change': {\n const from: string = typeof data.from === 'string' ? data.from : '';\n const to: string = typeof data.to === 'string' ? data.to : '';\n return `${from} → ${to}`;\n }\n case 'prompt-sent': {\n const content: string = typeof data.content === 'string' ? data.content : '';\n return content.length > 60 ? content.substring(0, 60) + '…' : content;\n }\n case 'response-complete': {\n const content: string = typeof data.content === 'string' ? data.content : '';\n return content.length > 60 ? content.substring(0, 60) + '…' : content;\n }\n case 'tool-call-start': {\n const name: string = typeof data.name === 'string' ? data.name : '';\n return name;\n }\n case 'error': {\n const msg: string = typeof data.message === 'string' ? data.message : '';\n return msg.length > 60 ? msg.substring(0, 60) + '…' : msg;\n }\n default: {\n const json: string = JSON.stringify(data);\n return json.length > 60 ? json.substring(0, 60) + '…' : json;\n }\n }\n }\n}\n", "@if (!events_$().length) {\n <div class=\"flex items-center justify-center py-6 text-[10px] text-neutral-600\">\n No events yet\n </div>\n} @else {\n @for (event of events_$(); track event.sequence) {\n <div\n class=\"border-b border-neutral-800/60 cursor-pointer hover:bg-neutral-800/40 transition-colors\"\n [ngClass]=\"{'bg-neutral-800/30': selectedEvent_$()?.sequence === event.sequence}\"\n (click)=\"handleSelectEvent(event)\">\n <!-- Event fejléc -->\n <div class=\"flex items-center gap-1 px-2 py-1\">\n <span\n class=\"text-[9px] px-1 py-0.5 rounded font-medium text-black shrink-0\"\n [class]=\"event.eventType | ocSessionEventTypeColor\">\n {{ event.eventType }}\n </span>\n <span class=\"text-[9px] text-neutral-600 shrink-0 ml-auto\">\n #{{ event.sequence }}\n </span>\n </div>\n <!-- Event brief -->\n <div class=\"px-2 pb-1 text-[10px] text-neutral-400 truncate font-mono\">\n {{ getEventBrief(event) }}\n </div>\n <!-- Timestamp — REQ-SES-EVT-TS-002 cycle 471: text-[10px] text-neutral-400 (consistency\n a többi timeline-nal) + [title] absolute ISO. -->\n <div class=\"px-2 pb-1 text-[10px] text-neutral-400\" [title]=\"event.timestamp | sAbsoluteTime\">\n {{ event.timestamp | sTimeAgo }}\n </div>\n\n <!-- Event detail (kattintásra kinyílik) -->\n @if (selectedEvent_$()?.sequence === event.sequence) {\n <div class=\"px-2 py-2 border-t border-neutral-800/80 bg-neutral-900/40\">\n <div class=\"text-[10px] text-neutral-500 mb-1\">Event data:</div>\n <div class=\"text-[10px] font-mono overflow-x-auto\"\n [innerHTML]=\"event.data | ocSessionJsonFormat\">\n </div>\n </div>\n }\n </div>\n }\n}\n", "import { Component, computed, inject, signal, Signal } from '@angular/core';\n\nimport { Openclaw_DataService } from '../../_services/openclaw.data-service';\nimport { Oc_Detail_Response } from '../../_models/interfaces/oc-list-item.interface';\n\n/**\n * OpenClaw Session metadata panel.\n * Session állapot, konfiguráció és statisztikák megjelenítése.\n */\n@Component({\n selector: 'app-ccap-oc-metadata',\n templateUrl: './oc-metadata.component.html',\n host: { class: 'flex flex-col' },\n})\n/** Oc_Metadata_Component class. */\nexport class Oc_Metadata_Component {\n\n private readonly ocSession_DS: Openclaw_DataService =\n inject(Openclaw_DataService);\n\n /** Session detail (a data service-ből). */\n readonly sessionDetail_$: Signal<Oc_Detail_Response | null> = computed(\n (): Oc_Detail_Response | null => this.ocSession_DS.selectedSession_$(),\n );\n\n /** Session detail loading. */\n readonly isLoading_$: Signal<boolean> = computed(\n (): boolean => this.ocSession_DS.selectedSessionLoading_$(),\n );\n\n /** Reconnect folyamatban. */\n readonly isReconnecting_$ = signal<boolean>(false);\n\n /** Terminate folyamatban. */\n readonly isTerminating_$ = signal<boolean>(false);\n\n /**\n * Session reconnect (gateway újracsatlakoztatás).\n */\n async handleReconnect(): Promise<void> {\n const detail: Oc_Detail_Response | null = this.sessionDetail_$();\n if (!detail) { return; }\n\n this.isReconnecting_$.set(true);\n try {\n await this.ocSession_DS.reconnectSession({ sessionId: detail.session.sessionId });\n await this.ocSession_DS.loadSessionDetail({ sessionId: detail.session.sessionId });\n } catch {\n // Hiba: a data service kezeli\n } finally {\n this.isReconnecting_$.set(false);\n }\n }\n\n /**\n * Session leállítása.\n */\n async handleTerminate(): Promise<void> {\n const detail: Oc_Detail_Response | null = this.sessionDetail_$();\n if (!detail) { return; }\n\n this.isTerminating_$.set(true);\n try {\n await this.ocSession_DS.terminateSession({ sessionId: detail.session.sessionId });\n } catch {\n // Hiba: a data service kezeli\n } finally {\n this.isTerminating_$.set(false);\n }\n }\n}\n", "@if (isLoading_$()) {\n <div class=\"flex items-center justify-center py-6 text-[10px] text-neutral-600\">\n Loading…\n </div>\n} @else if (!sessionDetail_$()) {\n <div class=\"flex items-center justify-center py-6 text-[10px] text-neutral-600\">\n No session selected\n </div>\n} @else {\n @let s = sessionDetail_$()!.session;\n @let r = sessionDetail_$()!.runtime;\n\n <div class=\"p-2 space-y-3 text-xs\">\n <!-- Status badge -->\n <div class=\"flex items-center gap-2\">\n <span\n class=\"px-2 py-0.5 rounded text-[10px] font-medium text-black\"\n [class]=\"s.status | ocSessionStatusColor\">\n {{ s.status }}\n </span>\n @if (r.isLive) {\n <span class=\"text-[10px] text-green-500 animate-pulse\">● Live</span>\n }\n </div>\n\n <!-- Session info -->\n <div class=\"space-y-1.5\">\n <div class=\"text-[10px] font-semibold text-neutral-500 uppercase tracking-wide\">Session</div>\n\n <div class=\"flex flex-col gap-0.5\">\n <span class=\"text-[10px] text-neutral-600\">ID</span>\n <span class=\"font-mono text-[10px] text-neutral-300 break-all\">{{ s.sessionId }}</span>\n </div>\n\n @if (s.label) {\n <div class=\"flex flex-col gap-0.5\">\n <span class=\"text-[10px] text-neutral-600\">Label</span>\n <span class=\"text-[10px] text-neutral-300\">{{ s.label }}</span>\n </div>\n }\n\n <div class=\"flex flex-col gap-0.5\">\n <span class=\"text-[10px] text-neutral-600\">Workspace</span>\n <span class=\"font-mono text-[10px] text-neutral-300 break-all\">{{ s.workspacePath }}</span>\n </div>\n </div>\n\n <!-- Gateway config -->\n <div class=\"space-y-1.5\">\n <div class=\"text-[10px] font-semibold text-neutral-500 uppercase tracking-wide\">Gateway</div>\n\n <div class=\"flex flex-col gap-0.5\">\n <span class=\"text-[10px] text-neutral-600\">URL</span>\n <span class=\"font-mono text-[10px] text-neutral-300 break-all\">{{ s.gatewayUrl || 'ws://127.0.0.1:18789' }}</span>\n </div>\n\n <div class=\"flex flex-col gap-0.5\">\n <span class=\"text-[10px] text-neutral-600\">Agent</span>\n <span class=\"text-[10px] text-neutral-300\">{{ s.openclawAgentName || 'default' }}</span>\n </div>\n\n @if (s.openclawSessionId) {\n <div class=\"flex flex-col gap-0.5\">\n <span class=\"text-[10px] text-neutral-600\">OC Session ID</span>\n <span class=\"font-mono text-[10px] text-neutral-400 break-all\">{{ s.openclawSessionId }}</span>\n </div>\n }\n </div>\n\n <!-- Stats -->\n <div class=\"space-y-1.5\">\n <div class=\"text-[10px] font-semibold text-neutral-500 uppercase tracking-wide\">Stats</div>\n <div class=\"grid grid-cols-2 gap-1\">\n <div class=\"flex flex-col\">\n <span class=\"text-[10px] text-neutral-600\">Prompts</span>\n <span class=\"text-[10px] text-neutral-300\">{{ s.promptCount }}</span>\n </div>\n <div class=\"flex flex-col\">\n <span class=\"text-[10px] text-neutral-600\">Tool calls</span>\n <span class=\"text-[10px] text-neutral-300\">{{ s.toolCallCount }}</span>\n </div>\n @if (s.costUsdTotal) {\n <div class=\"flex flex-col\">\n <span class=\"text-[10px] text-neutral-600\">Cost</span>\n <span class=\"text-[10px] text-neutral-300\">${{ s.costUsdTotal.toFixed(4) }}</span>\n </div>\n }\n @if (s.inputTokensTotal) {\n <div class=\"flex flex-col\">\n <span class=\"text-[10px] text-neutral-600\">Tokens in</span>\n <span class=\"text-[10px] text-neutral-300\">{{ s.inputTokensTotal.toLocaleString() }}</span>\n </div>\n }\n </div>\n </div>\n\n <!-- Timestamps -->\n @if (s.startedAt || s.lastActivityAt) {\n <div class=\"space-y-1\">\n <div class=\"text-[10px] font-semibold text-neutral-500 uppercase tracking-wide\">Activity</div>\n @if (s.startedAt) {\n <div class=\"flex items-center justify-between\">\n <span class=\"text-[10px] text-neutral-600\">Started</span>\n <span class=\"text-[10px] text-neutral-400\" [title]=\"s.startedAt | sAbsoluteTime\">{{ s.startedAt | sTimeAgo }}</span>\n </div>\n }\n @if (s.lastActivityAt) {\n <div class=\"flex items-center justify-between\">\n <span class=\"text-[10px] text-neutral-600\">Last activity</span>\n <span class=\"text-[10px] text-neutral-400\" [title]=\"s.lastActivityAt | sAbsoluteTime\">{{ s.lastActivityAt | sTimeAgo }}</span>\n </div>\n }\n </div>\n }\n\n <!-- Actions -->\n <div class=\"flex flex-col gap-1.5 pt-1 border-t border-neutral-800\">\n @if (s.status === 'disconnected' || s.status === 'errored') {\n <button\n class=\"w-full px-2 py-1.5 text-[10px] border border-blue-500/50 text-blue-400 hover:bg-blue-500/10 rounded transition-colors disabled:opacity-50\"\n [disabled]=\"isReconnecting_$()\"\n (click)=\"handleReconnect()\">\n {{ isReconnecting_$() ? 'Reconnecting…' : 'Reconnect' }}\n </button>\n }\n @if (s.status === 'running' || s.status === 'waiting-input') {\n <button\n class=\"w-full px-2 py-1.5 text-[10px] border border-red-500/50 text-red-400 hover:bg-red-500/10 rounded transition-colors disabled:opacity-50\"\n [disabled]=\"isTerminating_$()\"\n (click)=\"handleTerminate()\">\n {{ isTerminating_$() ? 'Terminating…' : 'Terminate' }}\n </button>\n }\n </div>\n </div>\n}\n", "import { Component, inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { DyNX_SubscriptionControl } from '@futdevpro/ngx-dynamo';\n\nimport { Openclaw_DataService } from '../../_services/openclaw.data-service';\nimport { Oc_DetailUi_DataService } from '../../_services/oc-detail-ui.data-service';\nimport { Oc_InputStorage_Util } from '../../_collections/oc-input-storage.util';\nimport {\n SESSION_DETAIL_METADATA_DEFAULT_WIDTH_PX,\n SESSION_DETAIL_METADATA_MAX_WIDTH_PX,\n SESSION_DETAIL_METADATA_MIN_WIDTH_PX,\n SESSION_DETAIL_TIMELINE_DEFAULT_WIDTH_PX,\n SESSION_DETAIL_TIMELINE_MAX_WIDTH_PX,\n SESSION_DETAIL_TIMELINE_MIN_WIDTH_PX,\n} from '../../../../../shared/_collections/consts/session-detail-panel-layout.const';\nimport { SHR_DocumentPointerDrag_Util } from '../../../../../shared/_collections/utils/shr-document-pointer-drag.util';\n\n/**\n * OpenClaw Session detail: három oszlop mint a CC Session — metadata bal, console, timeline jobb.\n * Panel toggle a shell toolbar-ból (Oc_DetailUi_DataService).\n */\n@Component({\n selector: 'app-ccap-oc-detail',\n templateUrl: './oc-detail.component.html',\n host: { class: 'flex flex-col flex-1 min-h-0 overflow-hidden' },\n})\n/** Oc_Detail_Component class. */\nexport class Oc_Detail_Component extends DyNX_SubscriptionControl implements OnInit, OnDestroy {\n\n readonly ocSession_DS: Openclaw_DataService =\n inject(Openclaw_DataService);\n\n readonly detailUi_DS: Oc_DetailUi_DataService =\n inject(Oc_DetailUi_DataService);\n\n private readonly route: ActivatedRoute = inject(ActivatedRoute);\n\n /** Aktuálisan betöltött session ID. */\n readonly sessionId_$ = signal<string>('');\n\n /** Metadata panel szélessége (px). */\n readonly metadataWidth_$ = signal<number>(SESSION_DETAIL_METADATA_DEFAULT_WIDTH_PX);\n\n /** Timeline panel szélessége (px). */\n readonly timelineWidth_$ = signal<number>(SESSION_DETAIL_TIMELINE_DEFAULT_WIDTH_PX);\n\n /** Resize aktív-e. */\n readonly isResizing_$ = signal<boolean>(false);\n\n\n ngOnInit(): void {\n this.metadataWidth_$.set(\n Math.max(\n SESSION_DETAIL_METADATA_MIN_WIDTH_PX,\n Math.min(\n SESSION_DETAIL_METADATA_MAX_WIDTH_PX,\n Oc_InputStorage_Util.loadPanelWidth('metadata', SESSION_DETAIL_METADATA_DEFAULT_WIDTH_PX),\n ),\n ),\n );\n this.timelineWidth_$.set(\n Math.max(\n SESSION_DETAIL_TIMELINE_MIN_WIDTH_PX,\n Math.min(\n SESSION_DETAIL_TIMELINE_MAX_WIDTH_PX,\n Oc_InputStorage_Util.loadPanelWidth('timeline', SESSION_DETAIL_TIMELINE_DEFAULT_WIDTH_PX),\n ),\n ),\n );\n\n this.addSubscription(this.route.paramMap.subscribe((params): void => {\n const sessionId: string = params.get('sessionId') ?? '';\n if (sessionId && sessionId !== this.sessionId_$()) {\n this.loadSession(sessionId);\n }\n }));\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.ocSession_DS.setActiveSessionId('');\n }\n\n /**\n * Metadata resize — jobbra húzás növeli a szélességet (CC minta).\n */\n handleMetadataResizeStart(event: PointerEvent): void {\n const startWidth: number = this.metadataWidth_$();\n const startX: number = event.clientX;\n this.isResizing_$.set(true);\n SHR_DocumentPointerDrag_Util.attachUntilPointerUp({\n startEvent: event,\n onMove: (e: PointerEvent): void => {\n const delta: number = e.clientX - startX;\n const newWidth: number = Math.max(\n SESSION_DETAIL_METADATA_MIN_WIDTH_PX,\n Math.min(SESSION_DETAIL_METADATA_MAX_WIDTH_PX, startWidth + delta),\n );\n this.metadataWidth_$.set(newWidth);\n },\n onEnd: (): void => {\n this.isResizing_$.set(false);\n Oc_InputStorage_Util.savePanelWidth('metadata', this.metadataWidth_$());\n },\n });\n }\n\n /**\n * Timeline resize — balra húzás növeli a szélességet (CC minta).\n */\n handleTimelineResizeStart(event: PointerEvent): void {\n const startWidth: number = this.timelineWidth_$();\n const startX: number = event.clientX;\n this.isResizing_$.set(true);\n SHR_DocumentPointerDrag_Util.attachUntilPointerUp({\n startEvent: event,\n onMove: (e: PointerEvent): void => {\n const delta: number = startX - e.clientX;\n const newWidth: number = Math.max(\n SESSION_DETAIL_TIMELINE_MIN_WIDTH_PX,\n Math.min(SESSION_DETAIL_TIMELINE_MAX_WIDTH_PX, startWidth + delta),\n );\n this.timelineWidth_$.set(newWidth);\n },\n onEnd: (): void => {\n this.isResizing_$.set(false);\n Oc_InputStorage_Util.savePanelWidth('timeline', this.timelineWidth_$());\n },\n });\n }\n\n /**\n * Session betöltés: gateway history + subscribe.\n */\n private loadSession(sessionId: string): void {\n this.sessionId_$.set(sessionId);\n this.ocSession_DS.clearLiveOutput();\n this.ocSession_DS.setActiveSessionId(sessionId);\n Oc_InputStorage_Util.saveLastSessionId(sessionId);\n\n this.resolveInstanceIdAndLoadHistory(sessionId, 0);\n }\n\n /** InstanceId feloldás + history (retry). */\n private resolveInstanceIdAndLoadHistory(sessionId: string, attempt: number): void {\n let instanceId: string = this.ocSession_DS.activeInstanceId_$();\n\n if (!instanceId) {\n instanceId = Oc_InputStorage_Util.loadSelectedInstanceId();\n if (instanceId) {\n this.ocSession_DS.activeInstanceId_$.set(instanceId);\n }\n }\n\n if (instanceId) {\n // Gateway history előbb (stub + chat); utána silent REST detail — különben a stub felülírja a DB-t.\n void this.ocSession_DS.loadGatewaySessionHistory({\n sessionId: sessionId,\n instanceId: instanceId,\n }).then((): void => {\n void this.ocSession_DS.loadSessionDetail({ sessionId: sessionId, isSilent: true });\n });\n return;\n }\n\n if (attempt < 10) {\n setTimeout((): void => {\n this.resolveInstanceIdAndLoadHistory(sessionId, attempt + 1);\n }, 300);\n return;\n }\n\n this.ocSession_DS.pushConsoleMessage({\n type: 'error',\n text: 'No OpenClaw instance selected — select an instance in the sidebar to load session history.',\n });\n }\n}\n", "@if (!sessionId_$()) {\n <div class=\"flex items-center justify-center h-full text-neutral-500 text-sm\">\n Select a session from the sidebar\n </div>\n} @else if (ocSession_DS.selectedSessionLoading_$()) {\n <div class=\"flex items-center justify-center h-full text-neutral-500 text-sm\">\n Loading session…\n </div>\n} @else {\n <app-s-session-detail-three-column-layout\n [isStartOpen]=\"detailUi_DS.isMetadataPanelOpen_$()\"\n [isEndOpen]=\"detailUi_DS.isTimelinePanelOpen_$()\"\n [startWidthPx]=\"metadataWidth_$()\"\n [endWidthPx]=\"timelineWidth_$()\"\n [isResizing]=\"isResizing_$()\"\n (startResizeStart)=\"handleMetadataResizeStart($event)\"\n (endResizeStart)=\"handleTimelineResizeStart($event)\">\n <div sDetailColumnStart>\n <app-ccap-oc-metadata />\n </div>\n <div sDetailColumnMain>\n <app-ccap-oc-console />\n </div>\n <div sDetailColumnEnd>\n <app-ccap-oc-timeline />\n </div>\n </app-s-session-detail-three-column-layout>\n}\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { Oc_Shell_Component } from './_components/ccap-oc-shell/oc-shell.component';\nimport { Oc_Dashboard_Component } from './_components/ccap-oc-dashboard/oc-dashboard.component';\nimport { Oc_Detail_Component } from './_components/ccap-oc-detail/oc-detail.component';\nimport { Oc_Console_Component } from './_components/ccap-oc-console/oc-console.component';\nimport { Oc_Timeline_Component } from './_components/ccap-oc-timeline/oc-timeline.component';\nimport { Oc_Metadata_Component } from './_components/ccap-oc-metadata/oc-metadata.component';\nimport { Oc_StatusColor_Pipe } from './_pipes/oc-status-color.pipe';\nimport { Oc_EventTypeColor_Pipe } from './_pipes/oc-event-type-color.pipe';\nimport { Oc_JsonFormat_Pipe } from './_pipes/oc-json-format.pipe';\nimport { CCAP_ErrorDisplay_Component } from '../../../../_components/ccap-error-display/ccap-error-display.component';\nimport { CCAP_VoiceRecordButton_Component } from '../../../../_components/ccap-voice-record-button/ccap-voice-record-button.component';\nimport { CRD_InfoPopup_Component } from '../../../coordinator/_components/crd-info-popup/crd-info-popup.component';\nimport { SCH_SchedulePopup_Component } from '../../../scheduler/_components/sch-schedule-popup/sch-schedule-popup.component';\nimport { Shared_Module } from '../../../shared/shared.module';\n\n/**\n * OpenClaw Session module route-ok.\n * Shell layout: sidebar (dashboard) + detail area.\n */\nconst ocSessionRoutes: Routes = [\n {\n path: '',\n component: Oc_Shell_Component,\n children: [\n {\n path: '',\n pathMatch: 'full',\n component: Oc_Detail_Component,\n },\n {\n path: ':sessionId',\n component: Oc_Detail_Component,\n },\n ],\n },\n];\n\n/**\n * OpenClaw Session Toolkit Angular module.\n * Session dashboard, detail, live console, event timeline, metadata panel.\n */\n@NgModule({\n declarations: [\n Oc_Shell_Component,\n Oc_Dashboard_Component,\n Oc_Detail_Component,\n Oc_Console_Component,\n Oc_Timeline_Component,\n Oc_Metadata_Component,\n Oc_StatusColor_Pipe,\n Oc_EventTypeColor_Pipe,\n Oc_JsonFormat_Pipe,\n ],\n imports: [\n CommonModule,\n FormsModule,\n RouterModule.forChild(ocSessionRoutes),\n CCAP_ErrorDisplay_Component,\n CCAP_VoiceRecordButton_Component,\n SCH_SchedulePopup_Component,\n CRD_InfoPopup_Component,\n Shared_Module,\n ],\n})\n/** OcSession_Module class. */\nexport class OcSession_Module {}\n"],
5
- "mappings": "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",
6
- "names": ["STORAGE_PREFIX", "Oc_InputStorage_Util", "saveStatusFilter", "value", "Shr_LocalStoragePersistence_Util", "writeString", "loadStatusFilter", "readString", "saveLastWorkspacePath", "loadLastWorkspacePath", "saveLastLabel", "loadLastLabel", "saveLastAgentName", "loadLastAgentName", "savePromptDraft", "sessionId", "content", "SHR_PromptDraftStorage_Util", "saveDraft", "loadPromptDraft", "loadDraft", "clearPromptDraft", "clearDraft", "savePanelOpen", "panelKey", "isOpen", "writeBoolean", "loadPanelOpen", "defaultOpen", "readBoolean", "savePanelWidth", "width", "writeNumber", "loadPanelWidth", "defaultWidth", "readNumber", "saveSessionMode", "loadSessionMode", "saveSessionEffort", "loadSessionEffort", "saveShowArchived", "loadShowArchived", "saveLastSessionId", "loadLastSessionId", "saveSelectedInstanceId", "instanceId", "loadSelectedInstanceId", "Oc_DetailUi_DataService", "oc_DS", "inject", "Openclaw_DataService", "isTimelinePanelOpen_$", "signal", "Oc_InputStorage_Util", "loadPanelOpen", "isMetadataPanelOpen_$", "isStopping_$", "handleToggleTimeline", "newValue", "set", "savePanelOpen", "handleToggleMetadata", "handleStopExecution", "__async", "selected", "selectedSession_$", "sessionId", "session", "stopExecution", "factory", "\u0275fac", "providedIn", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "inst_r3", "instanceId", "\u0275\u0275advance", "\u0275\u0275textInterpolate3", "label", "gatewayUrl", "pairingStatus", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r1", "ctx_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "handleInstanceChange", "target", "value", "\u0275\u0275repeaterCreate", "Oc_Dashboard_Component_Conditional_6_Conditional_0_For_2_Template", "_forTrack0", "selectedInstanceId_$", "\u0275\u0275repeater", "ocRegistry_$", "\u0275\u0275template", "Oc_Dashboard_Component_Conditional_6_Conditional_0_Template", "Oc_Dashboard_Component_Conditional_6_Conditional_1_Template", "\u0275\u0275conditional", "length", "\u0275\u0275element", "ocSession_DS", "sessionsLoadError_$", "Oc_Dashboard_Component_Conditional_8_Conditional_22_Conditional_1_Template", "Oc_Dashboard_Component_Conditional_8_Conditional_22_Conditional_2_Template", "isPairingRequiredError", "_r5", "handleOpenCreateDialog", "_r6", "handleSelectSession", "handleRowContextMenu", "handleScheduleIndicatorClick", "handleCoordinatorIndicatorClick", "sessionRowViews_$", "activeSessionId_$", "_r4", "searchQuery_$", "set", "handleStatusFilterChange", "handleToggleShowArchived", "Oc_Dashboard_Component_Conditional_8_Conditional_22_Template", "Oc_Dashboard_Component_Conditional_8_Conditional_24_Template", "Oc_Dashboard_Component_Conditional_8_Conditional_25_Template", "Oc_Dashboard_Component_Conditional_8_Conditional_26_Template", "statusFilter_$", "\u0275\u0275classMap", "showArchived_$", "sessionsLoading_$", "filteredSessions_$", "\u0275\u0275textInterpolate", "selectedInstance", "_r7", "handleCloseCreateDialog", "i0", "stopPropagation", "Oc_Dashboard_Component_Conditional_10_Conditional_4_Template", "newSessionWorkspacePath_$", "newSessionLabel_$", "newSessionAgentName_$", "handleCreateSession", "trim", "isCreating_$", "\u0275\u0275textInterpolate1", "_r8", "handleCloseCtxMenu", "handleCtxToggleArchive", "\u0275\u0275styleProp", "ctxMenuPos_$", "x", "y", "ctx", "isArchived", "Oc_Dashboard_Component", "inject", "Openclaw_DataService", "settingsGeneral_DS", "Set_General_DataService", "openclawRegistry_DS", "Set_OpenclawRegistry_DataService", "scheduledJobs_DS", "SCH_ScheduledJobs_DataService", "coordinator_DS", "Coordinator_DataService", "router", "Router", "signal", "isCreateDialogOpen_$", "schedulePopupSessionId_$", "coordinatorPopupSessionId_$", "registryLoaded_$", "sessionSelected", "output", "ngOnInit", "savedFilter", "Oc_InputStorage_Util", "loadStatusFilter", "savedShowArchived", "loadShowArchived", "loadDefaultWorkspacePath", "loadAll", "loadAllCoordinatorsForManagementPage", "load", "then", "instances", "section_$", "form", "savedInstanceId", "loadSelectedInstanceId", "some", "i", "selectInstance", "catch", "id", "find", "saveSelectedInstanceId", "instance", "activeInstanceId_$", "setGatewayFilterOnly", "loadSessionsForCurrentFilters", "sessionId", "navigate", "emit", "saveStatusFilter", "newValue", "saveShowArchived", "savedWorkspace", "loadLastWorkspacePath", "defaultWorkspacePath_$", "loadLastLabel", "loadLastAgentName", "__async", "workspacePath", "saveLastWorkspacePath", "saveLastLabel", "saveLastAgentName", "createSession", "undefined", "openclawAgentName", "computed", "query", "sessions_$", "filter", "s", "CCAP_TextSearch_Util", "includesText", "scheduledIds", "scheduledSessionIds_$", "coordinatedIds", "coordinatedSessionIds_$", "map", "status", "statusColorClass", "S_SessionStatusColor_Util", "resolve", "lastActivityAt", "promptCount", "isRunning", "hasSchedule", "has", "hasCoordinator", "err", "body", "error", "bodyObj", "errorCode", "_errorCode", "code", "message", "_message", "toLowerCase", "includes", "ctxMenuSession_$", "payload", "session", "event", "clientX", "clientY", "handleCloseSchedulePopup", "handleCloseCoordinatorPopup", "setSessionArchived", "loadGatewaySessions", "sessions", "selectors", "hostAttrs", "outputs", "decls", "vars", "consts", "template", "rf", "Oc_Dashboard_Component_Conditional_6_Template", "Oc_Dashboard_Component_Conditional_7_Template", "Oc_Dashboard_Component_Conditional_8_Template", "Oc_Dashboard_Component_Conditional_9_Template", "Oc_Dashboard_Component_Conditional_10_Template", "Oc_Dashboard_Component_Conditional_13_Template", "tmp_8_0", "Oc_StatusColor_Pipe", "transform", "status", "pure", "\u0275\u0275element", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r2", "ctx_r2", "\u0275\u0275nextContext", "\u0275\u0275resetView", "detailUi_DS", "handleToggleMetadata", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275classMap", "isMetadataPanelOpen_$", "\u0275\u0275template", "Oc_Shell_Component_Conditional_11_Conditional_2_Conditional_2_Template", "\u0275\u0275property", "\u0275\u0275pipeBind1", "ocCtx_r4", "detail", "session", "status", "\u0275\u0275advance", "\u0275\u0275conditional", "runtime", "isLive", "Oc_Shell_Component_Conditional_11_Conditional_2_Template", "Oc_Shell_Component_Conditional_11_Conditional_3_Template", "title", "\u0275\u0275textInterpolate1", "isLoading", "_r6", "handleStopExecution", "isStopping_$", "_r5", "handleToggleTimeline", "Oc_Shell_Component_Conditional_13_Conditional_2_Template", "isTimelinePanelOpen_$", "Oc_Shell_Component", "ocSession_DS", "inject", "Openclaw_DataService", "Oc_DetailUi_DataService", "ocTopBarContext_$", "computed", "activeId", "activeSessionId_$", "loading", "selectedSessionLoading_$", "sel", "selectedSession_$", "fromList", "sessions_$", "find", "s", "sessionId", "detailMatches", "label", "showActions", "sidebarWidth_$", "signal", "SESSION_SHELL_SIDEBAR_DEFAULT_WIDTH_PX", "isSidebarOpen_$", "isResizing_$", "ngOnInit", "stored", "Oc_InputStorage_Util", "loadPanelWidth", "set", "Math", "max", "SESSION_SHELL_SIDEBAR_MIN_WIDTH_PX", "min", "SESSION_SHELL_SIDEBAR_MAX_WIDTH_PX", "loadPanelOpen", "handleSidebarResizeStart", "event", "startX", "clientX", "startWidth", "SHR_DocumentPointerDrag_Util", "attachUntilPointerUp", "startEvent", "onMove", "e", "delta", "newWidth", "onEnd", "savePanelWidth", "handleToggleSidebar", "update", "v", "savePanelOpen", "handleSessionSelectedFromDashboard", "window", "innerWidth", "SESSION_SHELL_MOBILE_BREAKPOINT_PX", "selectors", "hostAttrs", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275declareLet", "i0", "_r1", "Oc_Shell_Component_Conditional_8_Template", "Oc_Shell_Component_Conditional_9_Template", "Oc_Shell_Component_Conditional_11_Template", "Oc_Shell_Component_Conditional_13_Template", "$event", "\u0275\u0275classProp", "\u0275\u0275storeLet", "ocCtx_r7", "Oc_ConsoleToBubbleView_Util", "fromConsoleMessage", "msg", "kind", "mapTypeToKind", "type", "isUserAligned", "listKey", "bodyText", "text", "timestampIso", "timestamp", "expandableContent", "rawData", "flags", "showCopy", "showRawInfo", "useEditDiffForExpandable", "CCAP_AgentConsoleBubbleKind_Type", "userPrompt", "assistant", "tool", "toolResult", "error", "info", "status", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275classMap", "\u0275\u0275pipeBind1", "detail_r2", "session", "status", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "ctx_r2", "ocSession_DS", "sessionUsage_$", "costUsd", "toFixed", "\u0275\u0275template", "Oc_Console_Component_Conditional_6_Conditional_3_Template", "\u0275\u0275textInterpolate2", "inputTokens", "toLocaleString", "outputTokens", "\u0275\u0275conditional", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r4", "\u0275\u0275nextContext", "\u0275\u0275resetView", "handleTtsCached", "row_r5", "isUserAligned", "\u0275\u0275property", "kind", "bubbleKind", "tool", "toolResult", "\u0275\u0275pureFunction0", "_c1", "_c2", "Oc_Console_Component", "messagesEndRef", "inject", "Openclaw_DataService", "detailUi_DS", "Oc_DetailUi_DataService", "route", "ActivatedRoute", "voiceInputUi_DS", "VNP_InputUi_DataService", "sessionQueue_DS", "ExS_Queue_DataService", "promptInput_$", "signal", "isSending_$", "isExecuting_$", "computed", "selectedSession_$", "runtime", "isLive", "messages_$", "consoleMessages_$", "ttsCachedKeys_$", "Set", "messageKey", "update", "s", "bubbleViews_$", "assembled", "assembledMessages_$", "length", "sid", "sessionId", "cached", "views", "map", "msg", "SHR_ExtSessionMsgToBubbleView_Util", "fromAssembledMessage", "cachedKeys", "SHR_BubbleViewGrouping_Util", "groupSubAgentItems", "groupConsecutiveToolItems", "Oc_ConsoleToBubbleView_Util", "fromConsoleMessage", "CCAP_AgentConsoleBubbleKind_Type", "isComposerSendDisabled_$", "trim", "activeSessionId_$", "previousConsoleMessageCount", "ngAfterViewInit", "scheduleScrollToBottom", "ngAfterViewChecked", "currentCount", "ngOnInit", "snapshot", "paramMap", "get", "draft", "Oc_InputStorage_Util", "loadPromptDraft", "set", "subscribeToSession", "baseRoute", "handleSendPrompt", "__async", "content", "clearPromptDraft", "sendPrompt", "handleComposerDraftChange", "value", "savePromptDraft", "handleVoiceSegment", "event", "t", "text", "current", "next", "autoSendAfterVoice_$", "isFinal", "setTimeout", "scrollToBottom", "el", "nativeElement", "scrollIntoView", "block", "inline", "selectors", "viewQuery", "rf", "ctx", "Oc_Console_Component_Conditional_5_Template", "Oc_Console_Component_Conditional_6_Template", "Oc_Console_Component_Conditional_8_Template", "Oc_Console_Component_Conditional_9_Template", "\u0275\u0275repeaterCreate", "Oc_Console_Component_For_11_Template", "_forTrack0", "\u0275\u0275element", "i0", "_r1", "handleStopExecution", "startEditing", "editingText_$", "saveEdit", "cancelEdit", "removeItem", "sendNow", "reorderItem", "queueItemId", "direction", "tmp_2_0", "selectedSessionLoading_$", "\u0275\u0275repeater", "isStopping_$", "items_$", "isLocked_$", "editingItemId_$", "Oc_EventTypeColor_Pipe", "transform", "eventType", "pure", "Oc_JsonFormat_Pipe", "sanitizer", "constructor", "transform", "data", "bypassSecurityTrustHtml", "json", "JSON", "stringify", "highlighted", "highlightJson", "MULTILINE_THRESHOLD", "replace", "match", "test", "length", "includes", "formatMultilineString", "slice", "\u0275\u0275directiveInject", "DomSanitizer", "pure", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275element", "\u0275\u0275advance", "\u0275\u0275property", "\u0275\u0275pipeBind1", "event_r2", "data", "\u0275\u0275sanitizeHtml", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r1", "$implicit", "ctx_r2", "\u0275\u0275nextContext", "\u0275\u0275resetView", "handleSelectEvent", "\u0275\u0275template", "Oc_Timeline_Component_Conditional_1_For_1_Conditional_13_Template", "\u0275\u0275pureFunction1", "_c0", "tmp_11_0", "selectedEvent_$", "sequence", "\u0275\u0275classMap", "eventType", "\u0275\u0275textInterpolate1", "getEventBrief", "timestamp", "\u0275\u0275conditional", "tmp_18_0", "\u0275\u0275repeaterCreate", "Oc_Timeline_Component_Conditional_1_For_1_Template", "_forTrack0", "\u0275\u0275repeater", "events_$", "Oc_Timeline_Component", "ocSession_DS", "inject", "Openclaw_DataService", "signal", "computed", "selectedSessionEvents_$", "reverse", "event", "set", "from", "to", "content", "length", "substring", "name", "msg", "message", "json", "JSON", "stringify", "selectors", "hostAttrs", "decls", "vars", "consts", "template", "rf", "ctx", "Oc_Timeline_Component_Conditional_0_Template", "Oc_Timeline_Component_Conditional_1_Template", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "s_r1", "label", "openclawSessionId", "\u0275\u0275textInterpolate1", "costUsdTotal", "toFixed", "inputTokensTotal", "toLocaleString", "\u0275\u0275property", "\u0275\u0275pipeBind1", "startedAt", "lastActivityAt", "\u0275\u0275template", "Oc_Metadata_Component_Conditional_2_Conditional_52_Conditional_3_Template", "Oc_Metadata_Component_Conditional_2_Conditional_52_Conditional_4_Template", "\u0275\u0275conditional", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r2", "ctx_r2", "\u0275\u0275nextContext", "\u0275\u0275resetView", "handleReconnect", "isReconnecting_$", "_r4", "handleTerminate", "isTerminating_$", "\u0275\u0275declareLet", "Oc_Metadata_Component_Conditional_2_Conditional_7_Template", "Oc_Metadata_Component_Conditional_2_Conditional_16_Template", "Oc_Metadata_Component_Conditional_2_Conditional_35_Template", "Oc_Metadata_Component_Conditional_2_Conditional_50_Template", "Oc_Metadata_Component_Conditional_2_Conditional_51_Template", "Oc_Metadata_Component_Conditional_2_Conditional_52_Template", "Oc_Metadata_Component_Conditional_2_Conditional_54_Template", "Oc_Metadata_Component_Conditional_2_Conditional_55_Template", "\u0275\u0275storeLet", "sessionDetail_$", "session", "runtime", "\u0275\u0275classMap", "s_r5", "status", "r_r6", "isLive", "sessionId", "workspacePath", "gatewayUrl", "openclawAgentName", "promptCount", "toolCallCount", "Oc_Metadata_Component", "ocSession_DS", "inject", "Openclaw_DataService", "computed", "selectedSession_$", "isLoading_$", "selectedSessionLoading_$", "signal", "__async", "detail", "set", "reconnectSession", "loadSessionDetail", "terminateSession", "selectors", "hostAttrs", "decls", "vars", "consts", "template", "rf", "ctx", "Oc_Metadata_Component_Conditional_0_Template", "Oc_Metadata_Component_Conditional_1_Template", "Oc_Metadata_Component_Conditional_2_Template", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r1", "ctx_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "handleMetadataResizeStart", "handleTimelineResizeStart", "\u0275\u0275element", "\u0275\u0275property", "detailUi_DS", "isMetadataPanelOpen_$", "isTimelinePanelOpen_$", "metadataWidth_$", "timelineWidth_$", "isResizing_$", "Oc_Detail_Component", "DyNX_SubscriptionControl", "ocSession_DS", "inject", "Openclaw_DataService", "Oc_DetailUi_DataService", "route", "ActivatedRoute", "sessionId_$", "signal", "SESSION_DETAIL_METADATA_DEFAULT_WIDTH_PX", "SESSION_DETAIL_TIMELINE_DEFAULT_WIDTH_PX", "ngOnInit", "set", "Math", "max", "SESSION_DETAIL_METADATA_MIN_WIDTH_PX", "min", "SESSION_DETAIL_METADATA_MAX_WIDTH_PX", "Oc_InputStorage_Util", "loadPanelWidth", "SESSION_DETAIL_TIMELINE_MIN_WIDTH_PX", "SESSION_DETAIL_TIMELINE_MAX_WIDTH_PX", "addSubscription", "paramMap", "subscribe", "params", "sessionId", "get", "loadSession", "ngOnDestroy", "setActiveSessionId", "event", "startWidth", "startX", "clientX", "SHR_DocumentPointerDrag_Util", "attachUntilPointerUp", "startEvent", "onMove", "e", "delta", "newWidth", "onEnd", "savePanelWidth", "clearLiveOutput", "saveLastSessionId", "resolveInstanceIdAndLoadHistory", "attempt", "instanceId", "activeInstanceId_$", "loadSelectedInstanceId", "loadGatewaySessionHistory", "then", "loadSessionDetail", "isSilent", "setTimeout", "pushConsoleMessage", "type", "text", "__ngFactoryType__", "selectors", "hostAttrs", "features", "\u0275\u0275InheritDefinitionFeature", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "Oc_Detail_Component_Conditional_0_Template", "Oc_Detail_Component_Conditional_1_Template", "Oc_Detail_Component_Conditional_2_Template", "\u0275\u0275conditional", "selectedSessionLoading_$", "ocSessionRoutes", "path", "component", "Oc_Shell_Component", "children", "pathMatch", "Oc_Detail_Component", "OcSession_Module", "CommonModule", "FormsModule", "RouterModule", "forChild", "CCAP_ErrorDisplay_Component", "CCAP_VoiceRecordButton_Component", "SCH_SchedulePopup_Component", "CRD_InfoPopup_Component", "Shared_Module"]
7
- }