@futdevpro/ccap 1.1.2964 → 1.1.2968
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.
- package/client-dist/{agent-instances.module-HY2VHBIJ.js → agent-instances.module-LFM3J2LA.js} +2 -2
- package/client-dist/ca.module-6IKKBFCV.js +5 -0
- package/client-dist/ca.module-6IKKBFCV.js.map +7 -0
- package/client-dist/{cc-usage-dashboard.component-LKFNBYVL.js → cc-usage-dashboard.component-MAJTREX5.js} +2 -2
- package/client-dist/{cc.module-DIE6ZYLY.js → cc.module-WIBOFFFC.js} +4 -4
- package/client-dist/cc.module-WIBOFFFC.js.map +7 -0
- package/client-dist/{chunk-VPBJ7EDQ.js → chunk-2XU2LIK5.js} +2 -2
- package/client-dist/{chunk-LACKIWSR.js → chunk-334PU4V5.js} +2 -2
- package/client-dist/{chunk-TDNEXMNL.js → chunk-375SGREC.js} +2 -2
- package/client-dist/{chunk-R52CDVAS.js → chunk-3XP3ALCH.js} +2 -2
- package/client-dist/{chunk-LCOGH5NG.js → chunk-4O5PJT2Q.js} +2 -2
- package/client-dist/{chunk-IQB44YSD.js → chunk-536ONGRA.js} +2 -2
- package/client-dist/{chunk-HQUS6ZSW.js → chunk-5JBJMD26.js} +2 -2
- package/client-dist/{chunk-M2MQ43YC.js → chunk-5L255H5C.js} +2 -2
- package/client-dist/{chunk-M2MQ43YC.js.map → chunk-5L255H5C.js.map} +1 -1
- package/client-dist/{chunk-GTH4FT5Y.js → chunk-5SYCIFC7.js} +2 -2
- package/client-dist/{chunk-MICI24HP.js → chunk-62O4YXH2.js} +2 -2
- package/client-dist/{chunk-53UP5J5U.js → chunk-7DXWR6DX.js} +2 -2
- package/client-dist/{chunk-L3ECIYSX.js → chunk-7QXWTKTQ.js} +2 -2
- package/client-dist/{chunk-HD5BCFN3.js → chunk-AFNG5IFQ.js} +2 -2
- package/client-dist/{chunk-DQAJ7SNH.js → chunk-AOZH5KZ5.js} +2 -2
- package/client-dist/{chunk-4564GYJ5.js → chunk-B5C3VRNW.js} +2 -2
- package/client-dist/{chunk-5NGKACCT.js → chunk-BBQR7THP.js} +2 -2
- package/client-dist/{chunk-SUFGVRIV.js → chunk-BNZAUTHL.js} +2 -2
- package/client-dist/{chunk-ZDJUICKL.js → chunk-BP6PERGA.js} +2 -2
- package/client-dist/{chunk-OTVNMXWD.js → chunk-C6BPLTAT.js} +2 -2
- package/client-dist/{chunk-GMB2E5VV.js → chunk-CSJOCUB5.js} +2 -2
- package/client-dist/{chunk-PWPSHQ6T.js → chunk-DZ4365RI.js} +2 -2
- package/client-dist/{chunk-3DOLRVWQ.js → chunk-EIJM7YZZ.js} +2 -2
- package/client-dist/{chunk-P5IIY6MO.js → chunk-F5OKFSMW.js} +2 -2
- package/client-dist/{chunk-TTWKTVB4.js → chunk-GLISSBW6.js} +2 -2
- package/client-dist/{chunk-UVQOIRMW.js → chunk-GOHAZ3UP.js} +2 -2
- package/client-dist/{chunk-APF4FF3U.js → chunk-GXVFIYGG.js} +2 -2
- package/client-dist/{chunk-QTBI3NZR.js → chunk-GZJSMF4W.js} +2 -2
- package/client-dist/{chunk-HUDNX2TQ.js → chunk-GZNAXQSR.js} +2 -2
- package/client-dist/{chunk-DIZTKV2A.js → chunk-HIUVSLF2.js} +2 -2
- package/client-dist/{chunk-VJHWXKNO.js → chunk-K2BXFMAZ.js} +2 -2
- package/client-dist/{chunk-55MKVFNX.js → chunk-KS3E56FC.js} +2 -2
- package/client-dist/{chunk-ISQFVLSF.js → chunk-KYXVXZA4.js} +2 -2
- package/client-dist/{chunk-HWBJNTEA.js → chunk-M6XVA3F3.js} +2 -2
- package/client-dist/{chunk-6TP5DJKE.js → chunk-MDOELCBX.js} +2 -2
- package/client-dist/{chunk-UBTKADWP.js → chunk-OAYVBZZD.js} +2 -2
- package/client-dist/{chunk-OZE63YYG.js → chunk-OAZA6CLB.js} +2 -2
- package/client-dist/{chunk-5XCRRBNZ.js → chunk-OHXBMPQN.js} +2 -2
- package/client-dist/{chunk-BW5WKQNI.js → chunk-OUBAPK5Q.js} +2 -2
- package/client-dist/{chunk-22IFFOSI.js → chunk-P4E77IA5.js} +2 -2
- package/client-dist/{chunk-7HGLOQXB.js → chunk-PIN4VFXO.js} +2 -2
- package/client-dist/{chunk-IJLGLMJO.js → chunk-PZ3A7XIC.js} +2 -2
- package/client-dist/{chunk-WHYZNKV4.js → chunk-SBTVSUCF.js} +2 -2
- package/client-dist/{chunk-IBQTN5YN.js → chunk-SLYF4BZT.js} +2 -2
- package/client-dist/{chunk-SXMXRHRS.js → chunk-SOA6UZHW.js} +2 -2
- package/client-dist/{chunk-CCUYQVNE.js → chunk-TKJC6WIX.js} +2 -2
- package/client-dist/{chunk-2SMC7E3W.js → chunk-UZWYHQU5.js} +2 -2
- package/client-dist/{chunk-66HYCHT3.js → chunk-VER7DLPS.js} +2 -2
- package/client-dist/{chunk-DOEEKXYU.js → chunk-WSRT2AXO.js} +2 -2
- package/client-dist/{chunk-ZJBX4PWF.js → chunk-XC6OGCBT.js} +2 -2
- package/client-dist/{chunk-F6LSYMQS.js → chunk-XS5NRBFX.js} +2 -2
- package/client-dist/{chunk-FF6BH35R.js → chunk-Y4WOX5ZT.js} +2 -2
- package/client-dist/{chunk-W7PSBH2X.js → chunk-YFGRQVYN.js} +2 -2
- package/client-dist/{chunk-IKEQV7TO.js → chunk-YV7GEWMV.js} +2 -2
- package/client-dist/{chunk-VLW4WKLV.js → chunk-ZO42CPIZ.js} +2 -2
- package/client-dist/{chunk-BTJGFYMU.js → chunk-ZRLRJNW4.js} +2 -2
- package/client-dist/{chunk-4DO6YKND.js → chunk-ZTO2WC4L.js} +2 -2
- package/client-dist/{consultant.module-D3LT6Q7Q.js → consultant.module-XYGMFIBX.js} +2 -2
- package/client-dist/{crd.module-6H4ARFJI.js → crd.module-2TUYARHJ.js} +2 -2
- package/client-dist/{dashboard.module-3SOB7UIK.js → dashboard.module-G47SY7RR.js} +2 -2
- package/client-dist/{do.module-JEKCVDN7.js → do.module-WWLJVEM2.js} +2 -2
- package/client-dist/{document-library.module-QJRCHNHP.js → document-library.module-EKVYKBGO.js} +2 -2
- package/client-dist/{embedding-eval.module-MMR2X56Q.js → embedding-eval.module-ZXMLZHML.js} +2 -2
- package/client-dist/{embedding-registry.module-OF7URRJG.js → embedding-registry.module-EE5OFQVA.js} +2 -2
- package/client-dist/{err.module-BSNE44J4.js → err.module-AQ7S3MIX.js} +2 -2
- package/client-dist/{feedback.module-N42SJQAD.js → feedback.module-PS2TJILH.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-UVYBS76M.js → host-runtime-mcp.module-XHWB3K2U.js} +2 -2
- package/client-dist/index.html +1 -1
- package/client-dist/{live-dev-pipeline.module-R33WI6YN.js → live-dev-pipeline.module-HVIUS654.js} +2 -2
- package/client-dist/{logs.module-CLZDKCFB.js → logs.module-RZOFXUFO.js} +2 -2
- package/client-dist/{main-Q7457G6W.js → main-N4T3LPFJ.js} +3 -3
- package/client-dist/{master-control-remote-poc.module-IXQRMTZO.js → master-control-remote-poc.module-Z44FHFP3.js} +2 -2
- package/client-dist/{mobile-app.module-6VL6WSNJ.js → mobile-app.module-7EN7TBHL.js} +2 -2
- package/client-dist/{model-registry.module-E63WDS2Y.js → model-registry.module-3GLXXUHT.js} +2 -2
- package/client-dist/oc.module-XJXWDHRE.js +3 -0
- package/client-dist/oc.module-XJXWDHRE.js.map +7 -0
- package/client-dist/{orc.module-NO2J4BGL.js → orc.module-TGXVMQLI.js} +2 -2
- package/client-dist/{project-management.module-RLNO5UZC.js → project-management.module-24CUEUF5.js} +2 -2
- package/client-dist/project-source-routed.module-DNGOB2JX.js +2 -0
- package/client-dist/{scheduler.module-WUBZXO5V.js → scheduler.module-I4VI7QU7.js} +2 -2
- package/client-dist/{session.module-5R43V7F5.js → session.module-MQKLXSPJ.js} +9 -9
- package/client-dist/session.module-MQKLXSPJ.js.map +7 -0
- package/client-dist/{set.module-36ZSGLGF.js → set.module-EBOPU2SQ.js} +2 -2
- package/client-dist/{setup.module-7MFIOZVY.js → setup.module-LOYXPT7O.js} +2 -2
- package/client-dist/{terminals.module-ZFFIL6DY.js → terminals.module-45PXK7MW.js} +2 -2
- package/client-dist/{voice-notes-poc.module-FXL6WNEJ.js → voice-notes-poc.module-UIV4RQN3.js} +2 -2
- package/client-dist/{wfs.module-KNRW6VWW.js → wfs.module-BNMGWII3.js} +2 -2
- package/package.json +1 -1
- package/client-dist/ca.module-ET22WIEL.js +0 -5
- package/client-dist/ca.module-ET22WIEL.js.map +0 -7
- package/client-dist/cc.module-DIE6ZYLY.js.map +0 -7
- package/client-dist/oc.module-TARPDB47.js +0 -3
- package/client-dist/oc.module-TARPDB47.js.map +0 -7
- package/client-dist/project-source-routed.module-NTVZXKR2.js +0 -2
- package/client-dist/session.module-5R43V7F5.js.map +0 -7
- /package/client-dist/{agent-instances.module-HY2VHBIJ.js.map → agent-instances.module-LFM3J2LA.js.map} +0 -0
- /package/client-dist/{cc-usage-dashboard.component-LKFNBYVL.js.map → cc-usage-dashboard.component-MAJTREX5.js.map} +0 -0
- /package/client-dist/{chunk-VPBJ7EDQ.js.map → chunk-2XU2LIK5.js.map} +0 -0
- /package/client-dist/{chunk-LACKIWSR.js.map → chunk-334PU4V5.js.map} +0 -0
- /package/client-dist/{chunk-TDNEXMNL.js.map → chunk-375SGREC.js.map} +0 -0
- /package/client-dist/{chunk-R52CDVAS.js.map → chunk-3XP3ALCH.js.map} +0 -0
- /package/client-dist/{chunk-LCOGH5NG.js.map → chunk-4O5PJT2Q.js.map} +0 -0
- /package/client-dist/{chunk-IQB44YSD.js.map → chunk-536ONGRA.js.map} +0 -0
- /package/client-dist/{chunk-HQUS6ZSW.js.map → chunk-5JBJMD26.js.map} +0 -0
- /package/client-dist/{chunk-GTH4FT5Y.js.map → chunk-5SYCIFC7.js.map} +0 -0
- /package/client-dist/{chunk-MICI24HP.js.map → chunk-62O4YXH2.js.map} +0 -0
- /package/client-dist/{chunk-53UP5J5U.js.map → chunk-7DXWR6DX.js.map} +0 -0
- /package/client-dist/{chunk-L3ECIYSX.js.map → chunk-7QXWTKTQ.js.map} +0 -0
- /package/client-dist/{chunk-HD5BCFN3.js.map → chunk-AFNG5IFQ.js.map} +0 -0
- /package/client-dist/{chunk-DQAJ7SNH.js.map → chunk-AOZH5KZ5.js.map} +0 -0
- /package/client-dist/{chunk-4564GYJ5.js.map → chunk-B5C3VRNW.js.map} +0 -0
- /package/client-dist/{chunk-5NGKACCT.js.map → chunk-BBQR7THP.js.map} +0 -0
- /package/client-dist/{chunk-SUFGVRIV.js.map → chunk-BNZAUTHL.js.map} +0 -0
- /package/client-dist/{chunk-ZDJUICKL.js.map → chunk-BP6PERGA.js.map} +0 -0
- /package/client-dist/{chunk-OTVNMXWD.js.map → chunk-C6BPLTAT.js.map} +0 -0
- /package/client-dist/{chunk-GMB2E5VV.js.map → chunk-CSJOCUB5.js.map} +0 -0
- /package/client-dist/{chunk-PWPSHQ6T.js.map → chunk-DZ4365RI.js.map} +0 -0
- /package/client-dist/{chunk-3DOLRVWQ.js.map → chunk-EIJM7YZZ.js.map} +0 -0
- /package/client-dist/{chunk-P5IIY6MO.js.map → chunk-F5OKFSMW.js.map} +0 -0
- /package/client-dist/{chunk-TTWKTVB4.js.map → chunk-GLISSBW6.js.map} +0 -0
- /package/client-dist/{chunk-UVQOIRMW.js.map → chunk-GOHAZ3UP.js.map} +0 -0
- /package/client-dist/{chunk-APF4FF3U.js.map → chunk-GXVFIYGG.js.map} +0 -0
- /package/client-dist/{chunk-QTBI3NZR.js.map → chunk-GZJSMF4W.js.map} +0 -0
- /package/client-dist/{chunk-HUDNX2TQ.js.map → chunk-GZNAXQSR.js.map} +0 -0
- /package/client-dist/{chunk-DIZTKV2A.js.map → chunk-HIUVSLF2.js.map} +0 -0
- /package/client-dist/{chunk-VJHWXKNO.js.map → chunk-K2BXFMAZ.js.map} +0 -0
- /package/client-dist/{chunk-55MKVFNX.js.map → chunk-KS3E56FC.js.map} +0 -0
- /package/client-dist/{chunk-ISQFVLSF.js.map → chunk-KYXVXZA4.js.map} +0 -0
- /package/client-dist/{chunk-HWBJNTEA.js.map → chunk-M6XVA3F3.js.map} +0 -0
- /package/client-dist/{chunk-6TP5DJKE.js.map → chunk-MDOELCBX.js.map} +0 -0
- /package/client-dist/{chunk-UBTKADWP.js.map → chunk-OAYVBZZD.js.map} +0 -0
- /package/client-dist/{chunk-OZE63YYG.js.map → chunk-OAZA6CLB.js.map} +0 -0
- /package/client-dist/{chunk-5XCRRBNZ.js.map → chunk-OHXBMPQN.js.map} +0 -0
- /package/client-dist/{chunk-BW5WKQNI.js.map → chunk-OUBAPK5Q.js.map} +0 -0
- /package/client-dist/{chunk-22IFFOSI.js.map → chunk-P4E77IA5.js.map} +0 -0
- /package/client-dist/{chunk-7HGLOQXB.js.map → chunk-PIN4VFXO.js.map} +0 -0
- /package/client-dist/{chunk-IJLGLMJO.js.map → chunk-PZ3A7XIC.js.map} +0 -0
- /package/client-dist/{chunk-WHYZNKV4.js.map → chunk-SBTVSUCF.js.map} +0 -0
- /package/client-dist/{chunk-IBQTN5YN.js.map → chunk-SLYF4BZT.js.map} +0 -0
- /package/client-dist/{chunk-SXMXRHRS.js.map → chunk-SOA6UZHW.js.map} +0 -0
- /package/client-dist/{chunk-CCUYQVNE.js.map → chunk-TKJC6WIX.js.map} +0 -0
- /package/client-dist/{chunk-2SMC7E3W.js.map → chunk-UZWYHQU5.js.map} +0 -0
- /package/client-dist/{chunk-66HYCHT3.js.map → chunk-VER7DLPS.js.map} +0 -0
- /package/client-dist/{chunk-DOEEKXYU.js.map → chunk-WSRT2AXO.js.map} +0 -0
- /package/client-dist/{chunk-ZJBX4PWF.js.map → chunk-XC6OGCBT.js.map} +0 -0
- /package/client-dist/{chunk-F6LSYMQS.js.map → chunk-XS5NRBFX.js.map} +0 -0
- /package/client-dist/{chunk-FF6BH35R.js.map → chunk-Y4WOX5ZT.js.map} +0 -0
- /package/client-dist/{chunk-W7PSBH2X.js.map → chunk-YFGRQVYN.js.map} +0 -0
- /package/client-dist/{chunk-IKEQV7TO.js.map → chunk-YV7GEWMV.js.map} +0 -0
- /package/client-dist/{chunk-VLW4WKLV.js.map → chunk-ZO42CPIZ.js.map} +0 -0
- /package/client-dist/{chunk-BTJGFYMU.js.map → chunk-ZRLRJNW4.js.map} +0 -0
- /package/client-dist/{chunk-4DO6YKND.js.map → chunk-ZTO2WC4L.js.map} +0 -0
- /package/client-dist/{consultant.module-D3LT6Q7Q.js.map → consultant.module-XYGMFIBX.js.map} +0 -0
- /package/client-dist/{crd.module-6H4ARFJI.js.map → crd.module-2TUYARHJ.js.map} +0 -0
- /package/client-dist/{dashboard.module-3SOB7UIK.js.map → dashboard.module-G47SY7RR.js.map} +0 -0
- /package/client-dist/{do.module-JEKCVDN7.js.map → do.module-WWLJVEM2.js.map} +0 -0
- /package/client-dist/{document-library.module-QJRCHNHP.js.map → document-library.module-EKVYKBGO.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-MMR2X56Q.js.map → embedding-eval.module-ZXMLZHML.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-OF7URRJG.js.map → embedding-registry.module-EE5OFQVA.js.map} +0 -0
- /package/client-dist/{err.module-BSNE44J4.js.map → err.module-AQ7S3MIX.js.map} +0 -0
- /package/client-dist/{feedback.module-N42SJQAD.js.map → feedback.module-PS2TJILH.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-UVYBS76M.js.map → host-runtime-mcp.module-XHWB3K2U.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-R33WI6YN.js.map → live-dev-pipeline.module-HVIUS654.js.map} +0 -0
- /package/client-dist/{logs.module-CLZDKCFB.js.map → logs.module-RZOFXUFO.js.map} +0 -0
- /package/client-dist/{main-Q7457G6W.js.map → main-N4T3LPFJ.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-IXQRMTZO.js.map → master-control-remote-poc.module-Z44FHFP3.js.map} +0 -0
- /package/client-dist/{mobile-app.module-6VL6WSNJ.js.map → mobile-app.module-7EN7TBHL.js.map} +0 -0
- /package/client-dist/{model-registry.module-E63WDS2Y.js.map → model-registry.module-3GLXXUHT.js.map} +0 -0
- /package/client-dist/{orc.module-NO2J4BGL.js.map → orc.module-TGXVMQLI.js.map} +0 -0
- /package/client-dist/{project-management.module-RLNO5UZC.js.map → project-management.module-24CUEUF5.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-NTVZXKR2.js.map → project-source-routed.module-DNGOB2JX.js.map} +0 -0
- /package/client-dist/{scheduler.module-WUBZXO5V.js.map → scheduler.module-I4VI7QU7.js.map} +0 -0
- /package/client-dist/{set.module-36ZSGLGF.js.map → set.module-EBOPU2SQ.js.map} +0 -0
- /package/client-dist/{setup.module-7MFIOZVY.js.map → setup.module-LOYXPT7O.js.map} +0 -0
- /package/client-dist/{terminals.module-ZFFIL6DY.js.map → terminals.module-45PXK7MW.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-FXL6WNEJ.js.map → voice-notes-poc.module-UIV4RQN3.js.map} +0 -0
- /package/client-dist/{wfs.module-KNRW6VWW.js.map → wfs.module-BNMGWII3.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
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 { CCAP_GlobalError_ControlService } from '../../../../../../_services/control-services/ccap-global-error.control-service';\nimport { ExS_InstanceContext_DataService } from '../../../../_services/exs-instance-context.data-service';\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 /** Cycle 785c (REQ-INST-SES-URL-001 Slice C): instance kontextus a navigation-höz. */\n private readonly peiContext_DS: ExS_InstanceContext_DataService =\n inject(ExS_InstanceContext_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 /** REQ-SES-CTX-COPY-LINK-001: Copy link feedback (clipboard write a globalError-CS-en keresztül). */\n private readonly globalError_CS: CCAP_GlobalError_ControlService = inject(CCAP_GlobalError_ControlService);\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 // Cycle 785c: instance kontextus a route-ban.\n const ccapId: string = this.peiContext_DS.activeCcapId_$();\n const target: string[] = ccapId\n ? ['/oc-session', ccapId, sessionId]\n : ['/oc-session', sessionId];\n this.router.navigate(target);\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 // Cycle 785c: instance kontextus a route-ban.\n const ccapId: string = this.peiContext_DS.activeCcapId_$();\n const target: string[] = ccapId\n ? ['/oc-session', ccapId, sessionId]\n : ['/oc-session', sessionId];\n this.router.navigate(target);\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 /** REQ-SES-CTX-COPY-LINK-001: Copy link gomb feedback állapot. */\n readonly linkCopyState_$ = signal<'idle' | 'copied' | 'failed'>('idle');\n\n /** Kontextmenü bezárása (copy-link feedback állapot is törlődik). */\n handleCloseCtxMenu(): void {\n this.ctxMenuSession_$.set(null);\n this.linkCopyState_$.set('idle');\n }\n\n /**\n * REQ-SES-CTX-COPY-LINK-001: Copy link az OC Session-höz —\n * `${origin}/oc-session[/<ccapId>]/<sessionId>`.\n */\n async handleCtxCopyLink(): Promise<void> {\n const session: Oc_ListItem_Interface | null = this.ctxMenuSession_$();\n if (!session?.sessionId) {\n return;\n }\n const ccapId: string = this.peiContext_DS.activeCcapId_$();\n const path: string = ccapId\n ? `/oc-session/${ccapId}/${session.sessionId}`\n : `/oc-session/${session.sessionId}`;\n const url: string = `${window.location.origin}${path}`;\n const result: { ok: boolean } = await this.globalError_CS.copyToClipboard(url);\n this.linkCopyState_$.set(result.ok ? 'copied' : 'failed');\n setTimeout((): void => {\n this.handleCloseCtxMenu();\n }, 700);\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 // Cycle 785c: instance kontextus a route-ban.\n const ccapId: string = this.peiContext_DS.activeCcapId_$();\n const target: string[] = ccapId\n ? ['/oc-session', ccapId, sessions[0].sessionId]\n : ['/oc-session', sessions[0].sessionId];\n this.router.navigate(target);\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 → <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 <!-- REQ-SES-CTX-COPY-LINK-001: Copy link — session deep-link a clipboard-ra\n (`${origin}/oc-session[/<ccapId>]/<sessionId>`); másik gépen / chat-ben is megnyitható. -->\n <button\n class=\"w-full text-left px-3 py-1.5 text-neutral-300 hover:bg-neutral-800 transition-colors\"\n [disabled]=\"linkCopyState_$() !== 'idle'\"\n (click)=\"handleCtxCopyLink()\">\n @switch (linkCopyState_$()) {\n @case ('copied') { ✓ Link copied }\n @case ('failed') { Copy failed }\n @default { Copy link }\n }\n </button>\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, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\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 { ExS_InstanceContext_DataService } from '../../../../_services/exs-instance-context.data-service';\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 /** Cycle 785c (REQ-INST-SES-URL-001 Slice C): instance kontextus URL paramból. */\n private readonly peiContext_DS: ExS_InstanceContext_DataService =\n inject(ExS_InstanceContext_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 // Cycle 785c (REQ-INST-SES-URL-001): URL ccapId → selectInstance MIELŐTT a load.\n const ccapIdFromUrl: string = params.get('ccapId') ?? '';\n if (ccapIdFromUrl && this.peiContext_DS.activeCcapId_$() !== ccapIdFromUrl) {\n this.peiContext_DS.selectInstance(ccapIdFromUrl);\n }\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 // Cycle 785c (REQ-INST-SES-URL-001 Slice C): új `:ccapId/:sessionId` route a\n // legacy `:sessionId` ELŐTT — more-specific-first match.\n {\n path: ':ccapId/:sessionId',\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", "handleCtxCopyLink", "Oc_Dashboard_Component_Conditional_13_Case_3_Template", "Oc_Dashboard_Component_Conditional_13_Case_4_Template", "Oc_Dashboard_Component_Conditional_13_Case_5_Template", "handleCtxToggleArchive", "\u0275\u0275styleProp", "ctxMenuPos_$", "x", "y", "linkCopyState_$", "tmp_5_0", "ctx", "isArchived", "Oc_Dashboard_Component", "inject", "Openclaw_DataService", "peiContext_DS", "ExS_InstanceContext_DataService", "settingsGeneral_DS", "Set_General_DataService", "openclawRegistry_DS", "Set_OpenclawRegistry_DataService", "scheduledJobs_DS", "SCH_ScheduledJobs_DataService", "coordinator_DS", "Coordinator_DataService", "router", "Router", "globalError_CS", "CCAP_GlobalError_ControlService", "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", "ccapId", "activeCcapId_$", "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", "path", "url", "window", "location", "origin", "result", "copyToClipboard", "ok", "setTimeout", "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", "peiContext_DS", "ExS_InstanceContext_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", "ccapIdFromUrl", "activeCcapId_$", "selectInstance", "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
|
+
}
|