@futdevpro/ccap 1.1.3024 → 1.1.3034
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-3GNAYK6N.js → agent-instances.module-DNEQ4QES.js} +2 -2
- package/client-dist/{ca.module-4EHSW7NQ.js → ca.module-RGPRFFQR.js} +2 -2
- package/client-dist/{cc-usage-dashboard.component-I6ANLAOK.js → cc-usage-dashboard.component-PEZVSG7M.js} +2 -2
- package/client-dist/{cc.module-M6E4LRE7.js → cc.module-JUQY7GCV.js} +2 -2
- package/client-dist/{chunk-UQT5NYHO.js → chunk-343QTRWG.js} +2 -2
- package/client-dist/{chunk-UQT5NYHO.js.map → chunk-343QTRWG.js.map} +1 -1
- package/client-dist/{chunk-5J5EUCTS.js → chunk-3MSKVM2T.js} +2 -2
- package/client-dist/{chunk-MCXEYDWE.js → chunk-4F6OM6PQ.js} +2 -2
- package/client-dist/{chunk-B7M7TLSZ.js → chunk-5DVU3XRC.js} +2 -2
- package/client-dist/{chunk-B7M7TLSZ.js.map → chunk-5DVU3XRC.js.map} +1 -1
- package/client-dist/{chunk-N7JL73EU.js → chunk-6H3YM2KP.js} +2 -2
- package/client-dist/{chunk-N4SOQP3Z.js → chunk-6HT66YVK.js} +2 -2
- package/client-dist/{chunk-EX43A7OR.js → chunk-7R5IXHU5.js} +2 -2
- package/client-dist/{chunk-WLCOANAY.js → chunk-7SDU766A.js} +2 -2
- package/client-dist/{chunk-3PNNIXJZ.js → chunk-AC6VDECU.js} +2 -2
- package/client-dist/{chunk-D6BBEI2V.js → chunk-AHBMUOS3.js} +2 -2
- package/client-dist/{chunk-ES3VIR6H.js → chunk-AOKITOTZ.js} +2 -2
- package/client-dist/{chunk-SWVZPVHG.js → chunk-AZLDEUIZ.js} +2 -2
- package/client-dist/{chunk-TB2WYWGG.js → chunk-B22GYBFL.js} +2 -2
- package/client-dist/{chunk-KXSU5O3X.js → chunk-B5D2O575.js} +2 -2
- package/client-dist/{chunk-MEG3KULK.js → chunk-BY7QOLIO.js} +2 -2
- package/client-dist/{chunk-NNHS2LC7.js → chunk-C77QVQH5.js} +2 -2
- package/client-dist/{chunk-PEHIL5NC.js → chunk-CDFLZ523.js} +2 -2
- package/client-dist/{chunk-GEVDFAVQ.js → chunk-CF6YGIKE.js} +2 -2
- package/client-dist/{chunk-J6SEKNXA.js → chunk-CK5ZMGFL.js} +2 -2
- package/client-dist/{chunk-NL62EHGD.js → chunk-DOJVWJJ3.js} +2 -2
- package/client-dist/{chunk-IAZTBBUO.js → chunk-E4KDYJK2.js} +2 -2
- package/client-dist/{chunk-QGB3XE4G.js → chunk-E7UUENED.js} +2 -2
- package/client-dist/{chunk-5B5K66GH.js → chunk-ED2JP2SX.js} +2 -2
- package/client-dist/{chunk-FX5RYSJ3.js → chunk-F4HSG3GQ.js} +2 -2
- package/client-dist/{chunk-ELFPKZHT.js → chunk-FV6SC2QU.js} +2 -2
- package/client-dist/{chunk-EIQU24LO.js → chunk-H3UBW75V.js} +2 -2
- package/client-dist/{chunk-GKE2OGEJ.js → chunk-H62NDY3W.js} +2 -2
- package/client-dist/{chunk-6D4DORZA.js → chunk-HQMSP7F6.js} +2 -2
- package/client-dist/{chunk-OMVYH3WH.js → chunk-IEVAOKOF.js} +2 -2
- package/client-dist/{chunk-V4ZEYU7J.js → chunk-IIZH7NVD.js} +2 -2
- package/client-dist/{chunk-N6Z5RDSF.js → chunk-JIYKLYYE.js} +2 -2
- package/client-dist/{chunk-J4UUNBU7.js → chunk-JWZ24GIQ.js} +2 -2
- package/client-dist/{chunk-256CAMTK.js → chunk-KLIVF7NF.js} +2 -2
- package/client-dist/{chunk-MCVNPTDU.js → chunk-MVAZ7JR5.js} +2 -2
- package/client-dist/{chunk-KAO27U5G.js → chunk-OMXNVPGE.js} +2 -2
- package/client-dist/chunk-OXGMGAWK.js +4 -0
- package/client-dist/{chunk-KDJVXUJX.js.map → chunk-OXGMGAWK.js.map} +4 -4
- package/client-dist/{chunk-S36LZP2U.js → chunk-P6FPD5OQ.js} +2 -2
- package/client-dist/{chunk-QTUBTOPP.js → chunk-P7KPEPO7.js} +2 -2
- package/client-dist/{chunk-Q6IX2HOL.js → chunk-PS73GRXP.js} +2 -2
- package/client-dist/{chunk-DTGPEPIX.js → chunk-Q5DHVZ7D.js} +2 -2
- package/client-dist/{chunk-AON55T3K.js → chunk-QE7LJZUK.js} +2 -2
- package/client-dist/{chunk-H75MWCGK.js → chunk-RJGC4CE7.js} +2 -2
- package/client-dist/{chunk-NPMMO45Q.js → chunk-SY5M3A3Q.js} +2 -2
- package/client-dist/{chunk-EBIXSU3R.js → chunk-TBPY4N7X.js} +2 -2
- package/client-dist/{chunk-HRL2BQRU.js → chunk-TRPIAKRB.js} +2 -2
- package/client-dist/{chunk-ADJKILTC.js → chunk-TS2SSYDS.js} +2 -2
- package/client-dist/{chunk-QXN7MHY5.js → chunk-WKY6ZRDX.js} +2 -2
- package/client-dist/{chunk-GIF7BQY6.js → chunk-XMFYG4OB.js} +2 -2
- package/client-dist/{chunk-PAB6WIAE.js → chunk-Y2AUIGUM.js} +2 -2
- package/client-dist/{chunk-KEU5L2YW.js → chunk-YPZWNP5A.js} +2 -2
- package/client-dist/{chunk-3P6BWEEI.js → chunk-YS7A2NP6.js} +2 -2
- package/client-dist/{chunk-W4HO7JEY.js → chunk-Z2SVASLX.js} +2 -2
- package/client-dist/{chunk-M3UXCO27.js → chunk-ZGYR3BWU.js} +2 -2
- package/client-dist/{chunk-ATTCGT7V.js → chunk-ZLKNTGRH.js} +2 -2
- package/client-dist/{chunk-JZVJE4QB.js → chunk-ZTPYZH3Z.js} +2 -2
- package/client-dist/{chunk-5TBASVHM.js → chunk-ZVQUYA4H.js} +2 -2
- package/client-dist/{consultant.module-E2MMKKE4.js → consultant.module-VDHVKNXB.js} +2 -2
- package/client-dist/{consultant.module-E2MMKKE4.js.map → consultant.module-VDHVKNXB.js.map} +2 -2
- package/client-dist/{crd.module-5VSGXFAS.js → crd.module-746ZW6FL.js} +2 -2
- package/client-dist/{dashboard.module-DKFK4PHA.js → dashboard.module-U2NE6P3E.js} +2 -2
- package/client-dist/{do.module-G7XJYVFM.js → do.module-5V6Y3CDL.js} +2 -2
- package/client-dist/{document-library.module-3JBUWQDO.js → document-library.module-HXQGKT63.js} +2 -2
- package/client-dist/{embedding-eval.module-CNWDOHPD.js → embedding-eval.module-OENZYGQE.js} +2 -2
- package/client-dist/{embedding-registry.module-GUGALJKY.js → embedding-registry.module-RTS4TH4Q.js} +2 -2
- package/client-dist/{err.module-WV7HSVRL.js → err.module-E4JTGICP.js} +2 -2
- package/client-dist/{feedback.module-5XABAECB.js → feedback.module-YFIHVIAZ.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-2J64CTVX.js → host-runtime-mcp.module-N73MDNBO.js} +2 -2
- package/client-dist/index.html +2 -2
- package/client-dist/{live-dev-pipeline.module-ZL3SY2AZ.js → live-dev-pipeline.module-IA4J3U76.js} +2 -2
- package/client-dist/{logs.module-B4DGEVYN.js → logs.module-VRVZQ76G.js} +2 -2
- package/client-dist/{main-E3S2CTPE.js → main-AYZ66GKH.js} +3 -3
- package/client-dist/{master-control-remote-poc.module-4HT6QFVR.js → master-control-remote-poc.module-ENMKL3BL.js} +2 -2
- package/client-dist/{mobile-app.module-PGTV5D2L.js → mobile-app.module-25TPEFGS.js} +2 -2
- package/client-dist/{model-registry.module-52KWVWSZ.js → model-registry.module-DTJEN56N.js} +2 -2
- package/client-dist/{oc.module-MZSPWRLR.js → oc.module-2ZFRFAWW.js} +2 -2
- package/client-dist/{orc.module-2ZOGMUQL.js → orc.module-JLA5C7MW.js} +2 -2
- package/client-dist/{project-management.module-WPXRC55R.js → project-management.module-NBKCZQ6Y.js} +2 -2
- package/client-dist/project-source-routed.module-MDS232LH.js +2 -0
- package/client-dist/{scheduler.module-7SUXTPLE.js → scheduler.module-HFDAX5PZ.js} +2 -2
- package/client-dist/{session.module-WCCI3C3B.js → session.module-S5W7MI7Z.js} +2 -2
- package/client-dist/{set.module-APZ5VM65.js → set.module-5NOTNWQ3.js} +2 -2
- package/client-dist/{setup.module-H4KTFS2R.js → setup.module-NBPWQBBC.js} +2 -2
- package/client-dist/styles-VZB5EAUE.css +2 -0
- package/client-dist/styles-VZB5EAUE.css.map +7 -0
- package/client-dist/{terminals.module-V3AFBS5Z.js → terminals.module-2MRATCCN.js} +2 -2
- package/client-dist/{voice-notes-poc.module-VW6OR3QK.js → voice-notes-poc.module-QRB77K3S.js} +2 -2
- package/client-dist/{wfs.module-VLL5EG6X.js → wfs.module-ZWBQCUOA.js} +2 -2
- package/package.json +1 -1
- package/client-dist/chunk-KDJVXUJX.js +0 -4
- package/client-dist/project-source-routed.module-T5FHUVTX.js +0 -2
- package/client-dist/styles-ETK3TL2N.css +0 -2
- package/client-dist/styles-ETK3TL2N.css.map +0 -7
- /package/client-dist/{agent-instances.module-3GNAYK6N.js.map → agent-instances.module-DNEQ4QES.js.map} +0 -0
- /package/client-dist/{ca.module-4EHSW7NQ.js.map → ca.module-RGPRFFQR.js.map} +0 -0
- /package/client-dist/{cc-usage-dashboard.component-I6ANLAOK.js.map → cc-usage-dashboard.component-PEZVSG7M.js.map} +0 -0
- /package/client-dist/{cc.module-M6E4LRE7.js.map → cc.module-JUQY7GCV.js.map} +0 -0
- /package/client-dist/{chunk-5J5EUCTS.js.map → chunk-3MSKVM2T.js.map} +0 -0
- /package/client-dist/{chunk-MCXEYDWE.js.map → chunk-4F6OM6PQ.js.map} +0 -0
- /package/client-dist/{chunk-N7JL73EU.js.map → chunk-6H3YM2KP.js.map} +0 -0
- /package/client-dist/{chunk-N4SOQP3Z.js.map → chunk-6HT66YVK.js.map} +0 -0
- /package/client-dist/{chunk-EX43A7OR.js.map → chunk-7R5IXHU5.js.map} +0 -0
- /package/client-dist/{chunk-WLCOANAY.js.map → chunk-7SDU766A.js.map} +0 -0
- /package/client-dist/{chunk-3PNNIXJZ.js.map → chunk-AC6VDECU.js.map} +0 -0
- /package/client-dist/{chunk-D6BBEI2V.js.map → chunk-AHBMUOS3.js.map} +0 -0
- /package/client-dist/{chunk-ES3VIR6H.js.map → chunk-AOKITOTZ.js.map} +0 -0
- /package/client-dist/{chunk-SWVZPVHG.js.map → chunk-AZLDEUIZ.js.map} +0 -0
- /package/client-dist/{chunk-TB2WYWGG.js.map → chunk-B22GYBFL.js.map} +0 -0
- /package/client-dist/{chunk-KXSU5O3X.js.map → chunk-B5D2O575.js.map} +0 -0
- /package/client-dist/{chunk-MEG3KULK.js.map → chunk-BY7QOLIO.js.map} +0 -0
- /package/client-dist/{chunk-NNHS2LC7.js.map → chunk-C77QVQH5.js.map} +0 -0
- /package/client-dist/{chunk-PEHIL5NC.js.map → chunk-CDFLZ523.js.map} +0 -0
- /package/client-dist/{chunk-GEVDFAVQ.js.map → chunk-CF6YGIKE.js.map} +0 -0
- /package/client-dist/{chunk-J6SEKNXA.js.map → chunk-CK5ZMGFL.js.map} +0 -0
- /package/client-dist/{chunk-NL62EHGD.js.map → chunk-DOJVWJJ3.js.map} +0 -0
- /package/client-dist/{chunk-IAZTBBUO.js.map → chunk-E4KDYJK2.js.map} +0 -0
- /package/client-dist/{chunk-QGB3XE4G.js.map → chunk-E7UUENED.js.map} +0 -0
- /package/client-dist/{chunk-5B5K66GH.js.map → chunk-ED2JP2SX.js.map} +0 -0
- /package/client-dist/{chunk-FX5RYSJ3.js.map → chunk-F4HSG3GQ.js.map} +0 -0
- /package/client-dist/{chunk-ELFPKZHT.js.map → chunk-FV6SC2QU.js.map} +0 -0
- /package/client-dist/{chunk-EIQU24LO.js.map → chunk-H3UBW75V.js.map} +0 -0
- /package/client-dist/{chunk-GKE2OGEJ.js.map → chunk-H62NDY3W.js.map} +0 -0
- /package/client-dist/{chunk-6D4DORZA.js.map → chunk-HQMSP7F6.js.map} +0 -0
- /package/client-dist/{chunk-OMVYH3WH.js.map → chunk-IEVAOKOF.js.map} +0 -0
- /package/client-dist/{chunk-V4ZEYU7J.js.map → chunk-IIZH7NVD.js.map} +0 -0
- /package/client-dist/{chunk-N6Z5RDSF.js.map → chunk-JIYKLYYE.js.map} +0 -0
- /package/client-dist/{chunk-J4UUNBU7.js.map → chunk-JWZ24GIQ.js.map} +0 -0
- /package/client-dist/{chunk-256CAMTK.js.map → chunk-KLIVF7NF.js.map} +0 -0
- /package/client-dist/{chunk-MCVNPTDU.js.map → chunk-MVAZ7JR5.js.map} +0 -0
- /package/client-dist/{chunk-KAO27U5G.js.map → chunk-OMXNVPGE.js.map} +0 -0
- /package/client-dist/{chunk-S36LZP2U.js.map → chunk-P6FPD5OQ.js.map} +0 -0
- /package/client-dist/{chunk-QTUBTOPP.js.map → chunk-P7KPEPO7.js.map} +0 -0
- /package/client-dist/{chunk-Q6IX2HOL.js.map → chunk-PS73GRXP.js.map} +0 -0
- /package/client-dist/{chunk-DTGPEPIX.js.map → chunk-Q5DHVZ7D.js.map} +0 -0
- /package/client-dist/{chunk-AON55T3K.js.map → chunk-QE7LJZUK.js.map} +0 -0
- /package/client-dist/{chunk-H75MWCGK.js.map → chunk-RJGC4CE7.js.map} +0 -0
- /package/client-dist/{chunk-NPMMO45Q.js.map → chunk-SY5M3A3Q.js.map} +0 -0
- /package/client-dist/{chunk-EBIXSU3R.js.map → chunk-TBPY4N7X.js.map} +0 -0
- /package/client-dist/{chunk-HRL2BQRU.js.map → chunk-TRPIAKRB.js.map} +0 -0
- /package/client-dist/{chunk-ADJKILTC.js.map → chunk-TS2SSYDS.js.map} +0 -0
- /package/client-dist/{chunk-QXN7MHY5.js.map → chunk-WKY6ZRDX.js.map} +0 -0
- /package/client-dist/{chunk-GIF7BQY6.js.map → chunk-XMFYG4OB.js.map} +0 -0
- /package/client-dist/{chunk-PAB6WIAE.js.map → chunk-Y2AUIGUM.js.map} +0 -0
- /package/client-dist/{chunk-KEU5L2YW.js.map → chunk-YPZWNP5A.js.map} +0 -0
- /package/client-dist/{chunk-3P6BWEEI.js.map → chunk-YS7A2NP6.js.map} +0 -0
- /package/client-dist/{chunk-W4HO7JEY.js.map → chunk-Z2SVASLX.js.map} +0 -0
- /package/client-dist/{chunk-M3UXCO27.js.map → chunk-ZGYR3BWU.js.map} +0 -0
- /package/client-dist/{chunk-ATTCGT7V.js.map → chunk-ZLKNTGRH.js.map} +0 -0
- /package/client-dist/{chunk-JZVJE4QB.js.map → chunk-ZTPYZH3Z.js.map} +0 -0
- /package/client-dist/{chunk-5TBASVHM.js.map → chunk-ZVQUYA4H.js.map} +0 -0
- /package/client-dist/{crd.module-5VSGXFAS.js.map → crd.module-746ZW6FL.js.map} +0 -0
- /package/client-dist/{dashboard.module-DKFK4PHA.js.map → dashboard.module-U2NE6P3E.js.map} +0 -0
- /package/client-dist/{do.module-G7XJYVFM.js.map → do.module-5V6Y3CDL.js.map} +0 -0
- /package/client-dist/{document-library.module-3JBUWQDO.js.map → document-library.module-HXQGKT63.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-CNWDOHPD.js.map → embedding-eval.module-OENZYGQE.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-GUGALJKY.js.map → embedding-registry.module-RTS4TH4Q.js.map} +0 -0
- /package/client-dist/{err.module-WV7HSVRL.js.map → err.module-E4JTGICP.js.map} +0 -0
- /package/client-dist/{feedback.module-5XABAECB.js.map → feedback.module-YFIHVIAZ.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-2J64CTVX.js.map → host-runtime-mcp.module-N73MDNBO.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-ZL3SY2AZ.js.map → live-dev-pipeline.module-IA4J3U76.js.map} +0 -0
- /package/client-dist/{logs.module-B4DGEVYN.js.map → logs.module-VRVZQ76G.js.map} +0 -0
- /package/client-dist/{main-E3S2CTPE.js.map → main-AYZ66GKH.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-4HT6QFVR.js.map → master-control-remote-poc.module-ENMKL3BL.js.map} +0 -0
- /package/client-dist/{mobile-app.module-PGTV5D2L.js.map → mobile-app.module-25TPEFGS.js.map} +0 -0
- /package/client-dist/{model-registry.module-52KWVWSZ.js.map → model-registry.module-DTJEN56N.js.map} +0 -0
- /package/client-dist/{oc.module-MZSPWRLR.js.map → oc.module-2ZFRFAWW.js.map} +0 -0
- /package/client-dist/{orc.module-2ZOGMUQL.js.map → orc.module-JLA5C7MW.js.map} +0 -0
- /package/client-dist/{project-management.module-WPXRC55R.js.map → project-management.module-NBKCZQ6Y.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-T5FHUVTX.js.map → project-source-routed.module-MDS232LH.js.map} +0 -0
- /package/client-dist/{scheduler.module-7SUXTPLE.js.map → scheduler.module-HFDAX5PZ.js.map} +0 -0
- /package/client-dist/{session.module-WCCI3C3B.js.map → session.module-S5W7MI7Z.js.map} +0 -0
- /package/client-dist/{set.module-APZ5VM65.js.map → set.module-5NOTNWQ3.js.map} +0 -0
- /package/client-dist/{setup.module-H4KTFS2R.js.map → setup.module-NBPWQBBC.js.map} +0 -0
- /package/client-dist/{terminals.module-V3AFBS5Z.js.map → terminals.module-2MRATCCN.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-VW6OR3QK.js.map → voice-notes-poc.module-QRB77K3S.js.map} +0 -0
- /package/client-dist/{wfs.module-VLL5EG6X.js.map → wfs.module-ZWBQCUOA.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["src/app/_modules/shared/_components/s-settings-collapsible-panel/s-settings-collapsible-panel.component.ts", "src/app/_modules/shared/_components/s-settings-collapsible-panel/s-settings-collapsible-panel.component.html", "src/app/_modules/shared/_components/s-page-header/s-page-header.component.ts", "src/app/_modules/shared/_components/s-page-header/s-page-header.component.html", "src/app/_modules/shared/_components/s-password-input/s-password-input.component.ts", "src/app/_modules/shared/_components/s-password-input/s-password-input.component.html", "src/app/_modules/shared/_components/s-settings-secret-key-row/s-settings-secret-key-row.component.ts", "src/app/_modules/shared/_components/s-settings-secret-key-row/s-settings-secret-key-row.component.html", "src/app/_modules/shared/_components/session-ui/s-session-prompt-composer/s-session-prompt-composer.component.ts", "src/app/_modules/shared/_components/session-ui/s-session-prompt-composer/s-session-prompt-composer.component.html", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-collapsible-disclosure/s-collapsible-disclosure.component.ts", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-collapsible-disclosure/s-collapsible-disclosure.component.html", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-monospace-scroll-block/s-monospace-scroll-block.component.ts", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-monospace-scroll-block/s-monospace-scroll-block.component.html", "src/app/_modules/shared/_pipes/s-agent-tool-icon.pipe.ts", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-agent-tool-summary-row/s-agent-tool-summary-row.component.ts", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-agent-tool-summary-row/s-agent-tool-summary-row.component.html", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-agent-tool-call-card/s-agent-tool-call-card.component.ts", "src/app/_modules/shared/_components/session-ui/agent-tool-widgets/s-agent-tool-call-card/s-agent-tool-call-card.component.html", "src/app/_modules/shared/shared.module.ts"],
|
|
4
|
-
"sourcesContent": ["import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Beállítások provider oldal: összecsukható alszekció (kártya + chevron fejléc).\n * A tartalom csak kinyitott állapotban jelenik meg; üzleti logika a szülőben marad.\n */\n@Component({\n selector: 'app-s-settings-collapsible-panel',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-settings-collapsible-panel.component.html',\n host: { class: 'block' },\n})\n/** S_SettingsCollapsiblePanel_Component class. */\nexport class S_SettingsCollapsiblePanel_Component {\n /** Kinyitott állapot (szülő: pl. providerBlocksExpanded map). */\n readonly expanded = input.required<boolean>();\n\n /** Fejléc cím (pl. provider név). */\n readonly title = input.required<string>();\n\n /** Kinyitott tartalom vertikális spacing (pl. space-y-2 mock blokknál). */\n readonly contentSpacingClass = input<string>('space-y-3');\n\n /** Külső kártya Tailwind osztályok (mock blokk halványabb keretet használ). */\n readonly panelClass = input<string>('rounded-lg border border-neonDefault/60 bg-neutral-900/40');\n\n /** Fejléc cím (h3) Tailwind osztályok. */\n readonly titleClass = input<string>('text-base font-semibold text-neutral-200');\n\n /** `ngClass` map: dinamikus spacing class csak kinyitva (Tailwind purge-barát egy token). */\n readonly spacingClassMap_$ = computed((): Record<string, boolean> => {\n const key: string = this.contentSpacingClass().trim();\n return { [key]: true };\n });\n\n /** Fejléc kattintás / Enter: szülő toggleProviderBlock hívása. */\n readonly toggle = output<void>();\n\n /**\n * Fejléc kattintás → toggle emit.\n */\n handleHeaderClick(): void {\n this.toggle.emit();\n }\n\n /**\n * Billentyűzet: Enter a fejléc fókuszából.\n */\n handleHeaderKeydownEnter(): void {\n this.toggle.emit();\n }\n}\n", "<!--\n Egyetlen [ngClass] a külsőn: két [ngClass] ugyanazon az elemen felülírná egymást,\n és a panelClass (border / háttér) eltűnne kinyitott állapotban.\n-->\n<div\n [ngClass]=\"panelClass()\"\n [class.p-4]=\"expanded()\"\n [class.px-4]=\"!expanded()\"\n [class.py-2]=\"!expanded()\">\n <div\n class=\"flex items-center gap-2 cursor-pointer select-none\"\n role=\"button\"\n tabindex=\"0\"\n (click)=\"handleHeaderClick()\"\n (keydown.enter)=\"handleHeaderKeydownEnter()\">\n <span class=\"inline-flex shrink-0 text-neutral-400\" aria-hidden=\"true\">\n <svg\n class=\"w-3.5 h-3.5 transition-transform duration-150\"\n [class.-rotate-90]=\"!expanded()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </span>\n <h3 [ngClass]=\"titleClass()\">{{ title() }}</h3>\n </div>\n\n @if (expanded()) {\n <!-- Tartalom spacing külön wrapper-en: ne ütközzön a panelClass ngClass-jével. -->\n <div [ngClass]=\"spacingClassMap_$()\" class=\"mt-3\">\n <ng-content />\n </div>\n }\n</div>\n", "import { Component, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Közös oldal fejléc: cím + opcionális alcím + akciógombok slot.\n * Kiváltja az ismétlődő header flex patternt (projects-list, model-registry, embedding-model-registry, stb.).\n */\n@Component({\n selector: 'app-s-page-header',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-page-header.component.html',\n host: { class: 'block' },\n})\n/** S_PageHeader_Component class. */\nexport class S_PageHeader_Component {\n /** Főcím. */\n readonly title = input.required<string>();\n\n /** Opcionális alcím. */\n readonly subtitle = input<string>('');\n\n /** Alsó margó Tailwind osztály. */\n readonly marginBottom = input<string>('mb-6');\n\n /** Van-e alcím (computed). */\n readonly hasSubtitle_$ = computed((): boolean => this.subtitle().trim().length > 0);\n}\n", "<header [class]=\"'flex items-center justify-between gap-4 ' + marginBottom()\">\n <div>\n <h1 class=\"text-2xl gt-xs:text-3xl font-bold text-neutral-100\">{{ title() }}</h1>\n @if (hasSubtitle_$()) {\n <p class=\"text-neutral-400 text-sm gt-xs:text-base mt-1\">{{ subtitle() }}</p>\n }\n </div>\n <div class=\"flex items-center gap-2 shrink-0\">\n <ng-content />\n </div>\n</header>\n", "import {\n Component,\n inject,\n signal,\n computed,\n input,\n output,\n forwardRef,\n ChangeDetectorRef,\n Injector,\n OnInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NgControl, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\n/**\n * Közös jelszómező komponens hide/show toggle gombbal.\n * CVA-val [(ngModel)] és name támogatás; opcionális placeholder, disabled, autocomplete, inputClass.\n * `suppressPasswordManagerAutofill`: vault / nem bejelentkezési mező – erős autofill-ignore (Chrome + extension-ök).\n */\n@Component({\n selector: 'app-s-password-input',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-password-input.component.html',\n host: { class: 'block min-w-0 flex-1' },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof S_PasswordInput_Component => S_PasswordInput_Component),\n multi: true,\n },\n ],\n})\n/** S_PasswordInput_Component class. */\nexport class S_PasswordInput_Component implements ControlValueAccessor, OnInit {\n /** Placeholder szöveg. */\n readonly placeholder = input<string>('');\n\n /** Letiltott állapot (parent által). */\n readonly disabled = input<boolean>(false);\n\n /** CVA által beállított disabled (form control). */\n readonly disabledByControl_$ = signal<boolean>(false);\n\n /** Input name (formokhoz). */\n readonly name = input<string>('');\n\n /** Autocomplete érték (pl. 'off', 'current-password'). */\n readonly autocomplete = input<string>('off');\n\n /** Ha true, data-bwignore=\"1\" kerül az inputra (böngésző password-manager extension ignore). */\n readonly dataBwignore = input<boolean>(false);\n\n /**\n * Ha true: `autocomplete=\"new-password\"` + LastPass / 1Password / Bitwarden ignore flag-ek az inputon.\n * Nem bejelentkezési flow (pl. titoktár API key) – elkerüli a mentett site-password autofill-t.\n */\n readonly suppressPasswordManagerAutofill = input<boolean>(false);\n\n /** Extra Tailwind/osztályok az input elemre (pl. w-full max-w-md font-mono text-sm). */\n readonly inputClass = input<string>('');\n\n /** Blur esemény (parent figyelheti). */\n readonly blurEvent = output<void>();\n\n /** Belső: jelszó látható (true) vagy rejtett (false). */\n readonly visible_$ = signal<boolean>(false);\n\n /** Input type: látható esetén text, különben password (template). */\n readonly inputType_$ = computed((): 'text' | 'password' =>\n this.visible_$() ? 'text' : 'password');\n\n /** Toggle gomb aria-label (látható / rejtett) (template). */\n readonly toggleAriaLabel_$ = computed((): string =>\n this.visible_$() ? 'Jelszó elrejtése' : 'Jelszó megjelenítése');\n\n /** Toggle gomb title (tooltip) (template). */\n readonly toggleTitle_$ = computed((): string =>\n this.visible_$() ? 'Jelszó elrejtése' : 'Jelszó megjelenítése');\n\n /** Effektív disabled: parent vagy form control (template). */\n readonly isDisabled_$ = computed((): boolean =>\n this.disabled() || this.disabledByControl_$());\n\n /** Autofill suppress módban Chrome-nak `new-password`, különben a `autocomplete()` input. */\n readonly effectiveAutocomplete_$ = computed((): string =>\n this.suppressPasswordManagerAutofill() ? 'new-password' : this.autocomplete());\n\n /** Bitwarden ignore: explicit `dataBwignore` vagy suppress mód. */\n readonly effectiveDataBwignore_$ = computed((): boolean =>\n this.dataBwignore() || this.suppressPasswordManagerAutofill());\n\n /** CVA: külső érték. */\n private value: string = '';\n\n /** CVA: change callback. */\n private onChange: (value: string) => void = () => {};\n\n /** CVA: touched callback. */\n private onTouched: () => void = () => {};\n\n private readonly cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n /** Host-injector: NgControl feloldását ngOnInit-ben végezzük, hogy elkerüljük az NG0200 DI ciklust. */\n private readonly injector: Injector = inject(Injector);\n\n /**\n * NgModel / formControlName esetén a valueAccessor beállítása.\n * Nem field-inject, mert a konstruktor / field init alatt az NG_VALUE_ACCESSOR + useExisting körkörös DI-t okozhat.\n */\n private ngControl: NgControl | null = null;\n\n /**\n * NgControl csatolása a CVA-hoz: field-szintű inject(NgControl) helyett init után,\n * amikor a host directive-ek (NgModel) már felálltak.\n */\n ngOnInit(): void {\n this.ngControl = this.injector.get(NgControl, null, { optional: true, self: true });\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** Toggle: jelszó megjelenítés / elrejtés. */\n toggleVisible(): void {\n this.visible_$.update((v: boolean): boolean => !v);\n }\n\n /** Belső input értékének gettere (template). */\n get innerValue(): string {\n return this.value;\n }\n\n /** Belső input értékének settere (template, ngModel). */\n set innerValue(v: string) {\n if (this.value !== v) {\n this.value = v;\n this.onChange(v);\n }\n }\n\n /** CVA: külső érték beállítása. */\n writeValue(value: string | null): void {\n this.value = value ?? '';\n this.cdr.markForCheck();\n }\n\n /** CVA: change callback regisztrálása. */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** CVA: touched callback regisztrálása. */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** CVA: disabled állapot (form control). */\n setDisabledState(isDisabled: boolean): void {\n this.disabledByControl_$.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n /** Blur esemény: touched jelzés + emit parent felé. */\n onBlur(): void {\n this.onTouched();\n this.blurEvent.emit();\n }\n}\n", "<div class=\"flex flex-wrap gap-2 items-center min-w-0\">\n <input [type]=\"inputType_$()\"\n [(ngModel)]=\"innerValue\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled_$()\"\n [attr.autocomplete]=\"effectiveAutocomplete_$()\"\n [attr.data-bwignore]=\"effectiveDataBwignore_$() ? '1' : null\"\n [attr.data-lpignore]=\"suppressPasswordManagerAutofill() ? 'true' : null\"\n [attr.data-1p-ignore]=\"suppressPasswordManagerAutofill() ? 'true' : null\"\n [attr.data-form-type]=\"suppressPasswordManagerAutofill() ? 'other' : null\"\n [class]=\"'flex-1 min-w-0 px-3 py-2 bg-neutral-800 border border-neonDefault rounded text-neutral-100 focus:shadow-neon-glow-cyan disabled:opacity-70 ' + (inputClass())\"\n (blur)=\"onBlur()\" />\n <button type=\"button\"\n (click)=\"toggleVisible()\"\n [disabled]=\"isDisabled_$()\"\n [attr.aria-label]=\"toggleAriaLabel_$()\"\n [attr.title]=\"toggleTitle_$()\"\n class=\"shrink-0 w-9 h-9 flex items-center justify-center rounded border border-neonDefault text-neutral-400\n hover:text-neonCyan hover:shadow-neon-glow-cyan hover:border-neonCyan disabled:opacity-50 transition-colors\">\n @if (visible_$()) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21\" />\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\n </svg>\n }\n </button>\n</div>\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * Beállítások: maszkolt secret / token / API key egy sora (readonly megjelenítés, Szerkesztés, Mentés).\n * A form és edit-mode state a szülő data service-é; ez a komponens csak megjelenít és eseményt emitel.\n */\n@Component({\n selector: 'app-s-settings-secret-key-row',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-settings-secret-key-row.component.html',\n host: { class: 'block' },\n})\n/** S_SettingsSecretKeyRow_Component class. */\nexport class S_SettingsSecretKeyRow_Component {\n /** Form name attribútum. */\n readonly name = input<string>('');\n\n /** Inputban látható érték (szülő: edit módban draft, egyébként masked). */\n readonly displayValue = input.required<string>();\n\n /** Placeholder dinamikusan a szülőtől (üres / szerkesztés / nincs beállítva logika). */\n readonly placeholder = input<string>('');\n\n /** Ha true, a mező írható és a valueChange emitelhető. */\n readonly editMode = input<boolean>(false);\n\n /** Mentés gomb disabled (pl. mentés folyamatban vagy üres draft). */\n readonly saveDisabled = input<boolean>(false);\n\n /** Ha true, a mentés gomb felirata savePendingLabel. */\n readonly savePending = input<boolean>(false);\n\n /** Mentés gomb szövege, ha nincs függőben mentés. */\n readonly saveLabel = input<string>('Mentés');\n\n /** Mentés gomb szövege függőben lévő mentésnél. */\n readonly savePendingLabel = input<string>('Mentés…');\n\n /** Ha nem null és nem üres, ⚠️ jelenik meg a sorban title-rel. */\n readonly warningTooltip = input<string | null>(null);\n\n /** Extra osztályok az inputra (pl. max-w-md). */\n readonly inputClass = input<string>('');\n\n /** Password-manager ignore: true esetén data-bwignore az inputon. */\n readonly dataBwignore = input<boolean>(true);\n\n /** Csak editMode mellett emitelünk (draft frissítés). */\n readonly valueChange = output<string>();\n\n /** Szerkesztés gomb. */\n readonly startEdit = output<void>();\n\n /** Mentés gomb. */\n readonly save = output<void>();\n\n /** Readonly, ha nincs szerkesztés mód. */\n readonly inputReadonly_$ = computed((): boolean => !this.editMode());\n\n /** Inline figyelmeztetés megjelenítése. */\n readonly showWarning_$ = computed((): boolean => {\n const t: string | null = this.warningTooltip();\n return t != null && t.trim().length > 0;\n });\n\n /** Mentés gomb aktuális felirata. */\n readonly saveButtonLabel_$ = computed((): string =>\n this.savePending() ? this.savePendingLabel() : this.saveLabel(),\n );\n\n /** Input Tailwind osztályok: alap + opcionális readonly halványítás + szülő extra. */\n readonly inputClassCombined_$ = computed((): string => {\n const base: string =\n 'flex-1 min-w-0 px-3 py-2 font-mono text-sm bg-neutral-800 border border-neonDefault rounded ' +\n 'text-neutral-100 focus:shadow-neon-glow-cyan';\n const ro: string = this.inputReadonly_$() ? ' opacity-90' : '';\n const extra: string = this.inputClass().trim().length > 0 ? ' ' + this.inputClass() : '';\n return base + ro + extra;\n });\n\n /**\n * NgModel változás: csak szerkesztés módban propagate-elünk, hogy a maszkolt readonly állapotban ne írjunk\n * vissza tévesen.\n */\n onDisplayValueChange(value: string): void {\n if (!this.editMode()) {\n return;\n }\n this.valueChange.emit(value);\n }\n\n /** Szerkesztés indítása. */\n emitStartEdit(): void {\n this.startEdit.emit();\n }\n\n /** Inline mentés. */\n emitSave(): void {\n this.save.emit();\n }\n}\n", "<div class=\"flex flex-wrap gap-2 items-center\">\n <input type=\"text\"\n [name]=\"name()\"\n [ngModel]=\"displayValue()\"\n (ngModelChange)=\"onDisplayValueChange($event)\"\n [readonly]=\"inputReadonly_$()\"\n [attr.placeholder]=\"placeholder()\"\n [attr.data-bwignore]=\"dataBwignore() ? 'true' : null\"\n [class]=\"inputClassCombined_$()\" />\n @if (showWarning_$()) {\n <span class=\"text-amber-300 text-sm\" [attr.title]=\"warningTooltip() ?? ''\">\n ⚠️\n </span>\n }\n @if (!editMode()) {\n <button type=\"button\"\n (click)=\"emitStartEdit()\"\n class=\"px-4 py-2 border border-neonCyan rounded text-neutral-300 hover:shadow-neon-glow-cyan whitespace-nowrap\">\n Szerkesztés\n </button>\n } @else {\n <button type=\"button\"\n (click)=\"emitSave()\"\n [disabled]=\"saveDisabled()\"\n class=\"px-4 py-2 bg-ccapAccent text-white rounded whitespace-nowrap disabled:opacity-50\">\n {{ saveButtonLabel_$() }}\n </button>\n }\n</div>\n", "import { Component, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * Közös prompt composer: textarea + küldés; content projection slotok.\n * - sComposerPrefix: mód / melléklet sorok a textarea fölött\n * - sComposerTextareaAccessory: absolute overlay a textarea-hoz (pl. voice gomb) — a szülő `relative`\n * - sComposerBelowTextarea: textarea alatt, gombsor felett (pl. auto-send checkbox)\n * - sComposerBeforeSend: bal oldali akciók a küldés gomb mellett\n */\n@Component({\n selector: 'app-s-session-prompt-composer',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-session-prompt-composer.component.html',\n host: { class: 'block shrink-0 border-t border-neonDefault bg-ccapSurface' },\n})\n/** S_SessionPromptComposer_Component class. */\nexport class S_SessionPromptComposer_Component {\n\n /** Piszkozat szöveg. */\n readonly draftText = input<string>('');\n\n /** Piszkozat változás. */\n readonly draftTextChange = output<string>();\n\n /** Küldés folyamatban. */\n readonly isSending = input<boolean>(false);\n\n /** Küldés tiltása (üres szöveg stb.). */\n readonly isSendDisabled = input<boolean>(false);\n\n /** Placeholder. */\n readonly placeholder = input<string>('');\n\n /** Textarea sorok. */\n readonly textareaRows = input<number>(3);\n\n /** Küldés gomb felirat. */\n readonly sendButtonLabel = input<string>('Send');\n\n /** Küldés gomb felirat küldés közben. */\n readonly sendingButtonLabel = input<string>('…');\n\n /** Küldés kérése. */\n readonly sendRequested = output<void>();\n\n /**\n * Enter küldés, Shift+Enter új sor.\n */\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key !== 'Enter' || event.shiftKey) {\n return;\n }\n event.preventDefault();\n this.emitSendIfAllowed();\n }\n\n /**\n * Küldés gomb.\n */\n handleSendClick(): void {\n this.emitSendIfAllowed();\n }\n\n /**\n * Küldés csak ha engedélyezett.\n */\n private emitSendIfAllowed(): void {\n if (this.isSending() || this.isSendDisabled()) {\n return;\n }\n this.sendRequested.emit();\n }\n}\n", "<div class=\"flex flex-col gap-2 p-2\">\n <ng-content select=\"[sComposerPrefix]\"></ng-content>\n <div class=\"relative min-w-0 w-full\">\n <textarea\n class=\"min-h-[60px] max-h-[200px] w-full resize-none rounded border border-neutral-700 bg-neutral-800 px-2 py-1.5 font-mono text-xs text-neutral-200 placeholder-neutral-600 focus:border-ccapAccent focus:outline-none\"\n [attr.rows]=\"textareaRows()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"draftText()\"\n (ngModelChange)=\"draftTextChange.emit($event)\"\n (keydown)=\"handleKeyDown($event)\">\n </textarea>\n <ng-content select=\"[sComposerTextareaAccessory]\"></ng-content>\n </div>\n <ng-content select=\"[sComposerBelowTextarea]\"></ng-content>\n <div class=\"flex flex-wrap items-end justify-end gap-2\">\n <ng-content select=\"[sComposerBeforeSend]\"></ng-content>\n <button\n type=\"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 shrink-0\"\n [disabled]=\"isSendDisabled() || isSending()\"\n (click)=\"handleSendClick()\">\n {{ isSending() ? sendingButtonLabel() : sendButtonLabel() }}\n </button>\n </div>\n</div>\n", "import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Natív details/summary disclosure — egységes chevron + summary sor; body ng-content.\n * Tool “Changes” / “Result” blokkok közös mintája (CC console).\n */\n@Component({\n selector: 'app-s-collapsible-disclosure',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-collapsible-disclosure.component.html',\n host: { class: 'block border-t border-orange-500/20' },\n})\n/** S_CollapsibleDisclosure_Component class. */\nexport class S_CollapsibleDisclosure_Component {\n\n /** Summary szöveg (pl. „Changes” vagy rövid result preview). */\n readonly summaryLabel = input.required<string>();\n\n /** Kényelmes (fő tool kártya) vagy kompakt (tool-group belső). */\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * changes — narancs címke (Edit diff blokk);\n * result — semleges címke (paired result).\n */\n readonly tone = input<'changes' | 'result'>('changes');\n\n /** Summary sor Tailwind osztályok. */\n readonly summaryRowClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n const base: string =\n 'flex items-center gap-1 cursor-pointer select-none transition-colors list-none [&::-webkit-details-marker]:hidden';\n if (t === 'changes') {\n return d === 'comfortable'\n ? `${base} px-2.5 py-1 bg-neutral-800/20 hover:bg-neutral-800/40`\n : `${base} px-1.5 py-0.5 bg-neutral-800/15 hover:bg-neutral-800/30`;\n }\n return d === 'comfortable'\n ? `${base} px-2.5 py-1 bg-neutral-800/30 hover:bg-neutral-800/50`\n : `${base} px-1.5 py-0.5 bg-neutral-800/20 hover:bg-neutral-800/40`;\n });\n\n /** Summary címke szín / méret. */\n readonly summaryLabelClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n if (t === 'changes') {\n return d === 'comfortable' ? 'text-[10px] text-orange-300/50' : 'text-[9px] text-orange-300/40';\n }\n return d === 'comfortable'\n ? 'text-[10px] text-neutral-400 truncate leading-relaxed'\n : 'text-[9px] text-neutral-500 truncate';\n });\n\n /** Chevron méret osztály. */\n readonly chevronSizeClass_$ = computed((): string => {\n return this.density() === 'comfortable' ? 'w-3 h-3' : 'w-2.5 h-2.5';\n });\n\n /** Body wrapper (ng-content körül). */\n readonly bodyWrapperClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n if (t === 'changes') {\n return d === 'comfortable'\n ? 'px-2.5 py-1.5 bg-neutral-800/20 border-t border-neutral-700/15'\n : 'px-1.5 py-1 bg-neutral-800/15 border-t border-neutral-700/10';\n }\n return d === 'comfortable'\n ? 'px-2.5 py-1.5 bg-neutral-800/30 border-t border-neutral-700/20'\n : 'px-1.5 py-1 bg-neutral-800/20 border-t border-neutral-700/15';\n });\n}\n", "<details class=\"group/sdisclosure group/pr\">\n <summary [class]=\"summaryRowClass_$()\">\n <svg\n class=\"text-neutral-500 shrink-0 transition-transform [[open]>&]:rotate-90\"\n [ngClass]=\"chevronSizeClass_$()\"\n viewBox=\"0 0 12 12\"\n fill=\"none\">\n <path\n d=\"M4.5 2.5l4 3.5-4 3.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n </path>\n </svg>\n <span [class]=\"summaryLabelClass_$()\">{{ summaryLabel() }}</span>\n <ng-content select=\"[sDisclosureSummaryTrailing]\"></ng-content>\n </summary>\n <div [class]=\"bodyWrapperClass_$()\">\n <ng-content></ng-content>\n </div>\n</details>\n", "import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Max-height + scroll wrapper — a host ide projektálja a pre / innerHTML tartalmat.\n */\n@Component({\n selector: 'app-s-monospace-scroll-block',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-monospace-scroll-block.component.html',\n host: { class: 'block' },\n})\n/** S_MonospaceScrollBlock_Component class. */\nexport class S_MonospaceScrollBlock_Component {\n\n /** Max magasság pixelben. */\n readonly maxHeightPx = input<number>(250);\n\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /** Belső wrapper font / padding a CC console mintához. */\n readonly innerClass_$ = computed((): string => {\n return this.density() === 'comfortable'\n ? 'font-mono'\n : 'font-mono';\n });\n}\n", "<div\n [class]=\"innerClass_$()\"\n class=\"overflow-y-auto overflow-x-auto font-mono\"\n [style.max-height.px]=\"maxHeightPx()\">\n <ng-content></ng-content>\n</div>\n", "import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * Agent tool név → inline SVG ikon (14×14, currentColor) — CC / OC közös mapping.\n */\n@Pipe({\n name: 'sAgentToolIcon',\n standalone: true,\n})\n/** S_AgentToolIcon_Pipe class. */\nexport class S_AgentToolIcon_Pipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {}\n\n /** Tool név → SafeHtml SVG ikon. */\n transform(toolName: string | null | undefined): SafeHtml {\n const svg: string = this.getSvgForTool(toolName ?? '');\n return this.sanitizer.bypassSecurityTrustHtml(svg);\n }\n\n private getSvgForTool(name: string): string {\n switch (name) {\n case 'Read':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M4 2h6l4 4v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z\"/>\n <path d=\"M10 2v4h4\"/>\n <path d=\"M6 9h4\"/><path d=\"M6 12h2\"/>\n </svg>`;\n case 'Bash':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"1\" y=\"2\" width=\"14\" height=\"12\" rx=\"2\"/>\n <path d=\"M4 6l3 2.5L4 11\"/>\n <path d=\"M9 11h3\"/>\n </svg>`;\n case 'Edit':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M11.5 1.5l3 3L5 14H2v-3L11.5 1.5z\"/>\n </svg>`;\n case 'Write':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M4 2h6l4 4v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z\"/>\n <path d=\"M10 2v4h4\"/>\n <path d=\"M6 10l1.5-1.5 2 2L8 12H6v-2z\"/>\n </svg>`;\n case 'Grep':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"7\" cy=\"7\" r=\"4.5\"/>\n <path d=\"M10.5 10.5L14 14\"/>\n </svg>`;\n case 'Glob':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M2 4h4l2 2h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z\"/>\n <circle cx=\"9\" cy=\"10\" r=\"2\"/><path d=\"M10.5 11.5L12 13\"/>\n </svg>`;\n case 'Agent':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"5\" width=\"10\" height=\"8\" rx=\"2\"/>\n <circle cx=\"6\" cy=\"9\" r=\"1\"/><circle cx=\"10\" cy=\"9\" r=\"1\"/>\n <path d=\"M8 2v3\"/><path d=\"M6 2h4\"/>\n </svg>`;\n case 'WebSearch':\n case 'WebFetch':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"8\" cy=\"8\" r=\"6\"/>\n <path d=\"M2 8h12\"/><path d=\"M8 2a10 10 0 0 1 0 12\"/><path d=\"M8 2a10 10 0 0 0 0 12\"/>\n </svg>`;\n case 'TodoWrite':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M3 4l2 2 3-3\"/><path d=\"M10 5h4\"/>\n <path d=\"M3 9l2 2 3-3\"/><path d=\"M10 10h4\"/>\n </svg>`;\n case 'NotebookEdit':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"1\" width=\"10\" height=\"14\" rx=\"1\"/>\n <path d=\"M1 4h3\"/><path d=\"M1 8h3\"/><path d=\"M1 12h3\"/>\n <path d=\"M6 5h4\"/><path d=\"M6 8h3\"/>\n </svg>`;\n default:\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M10.5 1.5a4 4 0 0 0-5 5L2 10l-.5 4.5L6 14l3.5-3.5a4 4 0 0 0 5-5l-2.5 2.5-2-2L12.5 3.5z\"/>\n </svg>`;\n }\n }\n}\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { S_AgentToolIcon_Pipe } from '../../../../_pipes/s-agent-tool-icon.pipe';\n\n/**\n * Tool hívás egy soros összefoglalója: ikon + szöveg + opcionális raw ⓘ.\n */\n@Component({\n selector: 'app-s-agent-tool-summary-row',\n standalone: true,\n imports: [CommonModule, S_AgentToolIcon_Pipe],\n templateUrl: './s-agent-tool-summary-row.component.html',\n host: { class: 'block' },\n})\n/** S_AgentToolSummaryRow_Component class. */\nexport class S_AgentToolSummaryRow_Component {\n\n readonly toolName = input<string>('');\n\n readonly summaryText = input<string>('');\n\n /** Tool hívás leírása (rawData.input.description — emberi nyelven, mit csinál a tool). */\n readonly toolDescription = input<string>('');\n\n /** Read tool path jobbra igazítás (host állítja true-ra Read esetén). */\n readonly isPathRtl = input<boolean>(false);\n\n readonly showRawInfoButton = input<boolean>(false);\n\n /** Fő tool sor vagy tool-group kompakt belső sor. */\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * Path-szerű summary maximum hossza, amit változatlanul mutatunk.\n * Hosszabb path-okat (Read/Grab tool, isPathRtl=true) JS-szel trim-elünk a start-on,\n * `…` prefixszel, hogy a file név vége mindig látható legyen.\n *\n * REQ-CC-EVT-PATH-TRIM-001 (cycle 197): a `dir=\"rtl\" + text-overflow: ellipsis`\n * kombináció böngésző-specifikusan nem mindig a sor START-jára (a szóköz vagy\n * Latin LTR run elejére) teszi az ellipsist; néhány setupban az ellipsis\n * a JOBB szélen jelent meg, miközben a file név vége le lett vágva. JS-side\n * előfeldolgozás eliminálja a böngésző-bidi bizonytalanságot.\n */\n private static readonly PATH_DISPLAY_MAX_CHARS: number = 80;\n\n /**\n * Megjelenítendő summary szöveg: ha a summaryText a toolName-mel kezdődik,\n * levágja a \"ToolName: \" prefixet (a tool név már a label-ben látszik).\n * Ha a maradék üres, null-t ad (ne jelenítsük meg duplikáltan).\n *\n * REQ-CC-EVT-PATH-TRIM-001: ha `isPathRtl()` true (Read tool) és a stripped\n * hossz > PATH_DISPLAY_MAX_CHARS, a path elejét trim-eljük `…` prefixszel,\n * hogy a file név vége garantáltan látható legyen — független a böngésző\n * bidi-handling viselkedésétől.\n */\n readonly displaySummary_$ = computed((): string | null => {\n const raw: string = this.summaryText();\n const name: string = this.toolName();\n if (!raw || raw === name) {\n return null;\n }\n // \"ToolName: valami\" → \"valami\"\n const prefix: string = `${name}: `;\n const stripped: string = raw.startsWith(prefix)\n ? raw.substring(prefix.length)\n : raw;\n if (stripped.length === 0) {\n return null;\n }\n // REQ-CC-EVT-PATH-TRIM-001: hosszú path-ok JS-trim a START-on (ellipsis fix az elejére).\n if (\n this.isPathRtl()\n && stripped.length > S_AgentToolSummaryRow_Component.PATH_DISPLAY_MAX_CHARS\n ) {\n const tail: string = stripped.slice(\n -(S_AgentToolSummaryRow_Component.PATH_DISPLAY_MAX_CHARS - 1),\n );\n return `…${tail}`;\n }\n return stripped;\n });\n\n /** Raw részletek gomb — a host nyitja a popup-ot. */\n readonly rawInfoClick = output<void>();\n\n /**\n * ⓘ kattintás — stopPropagation, hogy ne toggolja a szülő details-t.\n */\n handleRawInfoClick(event: MouseEvent): void {\n event.stopPropagation();\n this.rawInfoClick.emit();\n }\n}\n", "<div\n class=\"flex items-center gap-1.5\"\n [class.px-2.5]=\"density() === 'comfortable'\"\n [class.py-1]=\"density() === 'comfortable'\"\n [class.px-1.5]=\"density() === 'compact'\"\n [class.py-0.5]=\"density() === 'compact'\">\n <span\n class=\"text-orange-400 shrink-0 flex items-center\"\n [ngClass]=\"{ '[&>svg]:w-3': density() === 'compact', '[&>svg]:h-3': density() === 'compact' }\"\n [innerHTML]=\"toolName() | sAgentToolIcon\">\n </span>\n @if (density() === 'comfortable') {\n <span class=\"text-[11px] text-orange-300/90 font-medium shrink-0\">{{ toolName() }}</span>\n }\n <!-- REQ-CC-EVT-PATH-TRIM-001 sub-part (a) (cycle 207): ha van description, az\n MINDIG látható a header-ben, és a CC tool-ikon-családhoz illő narancs színt\n használja (nem szürke). Ha nincs description, a summary (path / brief)\n jelenik meg a header-ben — eddigi viselkedés. A `—` szeparátor és a duplikált\n (description + summary) mező el lett távolítva: vagy description, vagy summary,\n attól függ van-e tartalmas leírás. -->\n @let summaryText = displaySummary_$();\n @if (toolDescription()) {\n <span\n class=\"truncate\"\n [ngClass]=\"{\n 'text-[11px] text-orange-300/90 max-w-[400px]': density() === 'comfortable',\n 'text-[10px] text-orange-300/70 max-w-[350px]': density() === 'compact'\n }\">{{ toolDescription() }}</span>\n } @else if (summaryText) {\n <span\n class=\"truncate\"\n [ngClass]=\"{\n 'text-[11px] text-orange-300/90 max-w-[400px]': density() === 'comfortable',\n 'text-[10px] text-orange-300/70 max-w-[350px]': density() === 'compact'\n }\"\n [attr.dir]=\"isPathRtl() ? 'rtl' : null\">\n {{ summaryText }}\n </span>\n }\n @if (showRawInfoButton()) {\n <button\n type=\"button\"\n class=\"ml-auto shrink-0 rounded-full border flex items-center justify-center cursor-pointer\"\n [ngClass]=\"{\n 'w-4 h-4 border-orange-500/30 bg-orange-500/20 hover:bg-orange-500/40': density() === 'comfortable',\n 'w-3.5 h-3.5 bg-orange-500/15 hover:bg-orange-500/30': density() === 'compact'\n }\"\n (click)=\"handleRawInfoClick($event)\">\n <span\n class=\"font-bold leading-none\"\n [ngClass]=\"{\n 'text-[8px] text-orange-300': density() === 'comfortable',\n 'text-[7px] text-orange-300/70': density() === 'compact'\n }\">i</span>\n </button>\n }\n</div>\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CCAP_AgentConsoleBubblePairedResult_Interface } from '../../../../../../_models/interfaces/shared/ccap-agent-console-bubble-view.interface';\nimport { S_EditDiff_Pipe } from '../../../../_pipes/s-edit-diff.pipe';\nimport { S_AgentToolSummaryRow_Component } from '../s-agent-tool-summary-row/s-agent-tool-summary-row.component';\nimport { S_CollapsibleDisclosure_Component } from '../s-collapsible-disclosure/s-collapsible-disclosure.component';\nimport { S_MonospaceScrollBlock_Component } from '../s-monospace-scroll-block/s-monospace-scroll-block.component';\n\n/**\n * Összetett tool kártya: summary sor + opcionális Changes (edit diff) + paired result disclosure.\n * CC console @case('tool') és tool-group belső tool sor közös megjelenítése.\n */\n@Component({\n selector: 'app-s-agent-tool-call-card',\n standalone: true,\n imports: [\n CommonModule,\n S_EditDiff_Pipe,\n S_AgentToolSummaryRow_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n ],\n templateUrl: './s-agent-tool-call-card.component.html',\n host: { class: 'block' },\n})\n/** S_AgentToolCallCard_Component class. */\nexport class S_AgentToolCallCard_Component {\n\n readonly toolName = input<string>('');\n\n readonly summaryText = input<string>('');\n\n /** Tool hívás leírása (rawData.input.description). */\n readonly toolDescription = input<string>('');\n\n readonly isPathRtl = input<boolean>(false);\n\n readonly showToolRawInfo = input<boolean>(false);\n\n /** Edit / Write JSON {old,new} expandable — üres ha nincs Changes blokk. */\n readonly expandableContent = input<string>('');\n\n readonly pairedResult = input<CCAP_AgentConsoleBubblePairedResult_Interface | null>(null);\n\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * full — fő tool sor (narancs háttér, max-w);\n * nested — tool-group belső sor (csak vékony border).\n */\n readonly layout = input<'full' | 'nested'>('full');\n\n /** Changes disclosure summary felirat. */\n readonly changesSummaryLabel = input<string>('Changes');\n\n readonly toolRawInfoClick = output<void>();\n\n readonly pairedRawInfoClick = output<void>();\n\n /** Konténer CSS class — layout szerint eltérő stílus. Full: háttér/border a szülő wrapper adja. */\n readonly containerClass_$ = computed((): string => {\n return this.layout() === 'full'\n ? 'overflow-hidden'\n : 'overflow-hidden border border-orange-500/10 rounded';\n });\n\n /** Changes / Result pre max magasság a density szerint (CC console minta). */\n readonly scrollMaxHeightPx_$ = computed((): number => {\n return this.density() === 'comfortable' ? 250 : 150;\n });\n\n /**\n * Paired ⓘ — stopPropagation a disclosure summary-n belül.\n */\n handlePairedRawClick(event: MouseEvent): void {\n event.stopPropagation();\n this.pairedRawInfoClick.emit();\n }\n}\n", "<div [class]=\"containerClass_$()\">\n <app-s-agent-tool-summary-row\n [toolName]=\"toolName()\"\n [summaryText]=\"summaryText()\"\n [toolDescription]=\"toolDescription()\"\n [isPathRtl]=\"isPathRtl()\"\n [showRawInfoButton]=\"showToolRawInfo()\"\n [density]=\"density()\"\n (rawInfoClick)=\"toolRawInfoClick.emit()\">\n </app-s-agent-tool-summary-row>\n @if (expandableContent()) {\n <app-s-collapsible-disclosure\n [summaryLabel]=\"changesSummaryLabel()\"\n [density]=\"density()\"\n tone=\"changes\">\n <app-s-monospace-scroll-block\n [maxHeightPx]=\"scrollMaxHeightPx_$()\"\n [density]=\"density()\">\n <pre\n class=\"text-neutral-400 whitespace-pre-wrap break-words leading-relaxed m-0 overflow-x-auto\"\n [ngClass]=\"{\n 'text-[10px]': density() === 'comfortable',\n 'text-[9px]': density() === 'compact'\n }\"\n [innerHTML]=\"expandableContent() | sEditDiff\">\n </pre>\n </app-s-monospace-scroll-block>\n </app-s-collapsible-disclosure>\n }\n @if (pairedResult(); as pr) {\n <app-s-collapsible-disclosure\n [summaryLabel]=\"pr.text\"\n [density]=\"density()\"\n tone=\"result\">\n @if (pr.rawData) {\n <button\n sDisclosureSummaryTrailing\n type=\"button\"\n class=\"ml-auto shrink-0 rounded-full border border-neutral-600/40 flex items-center justify-center cursor-pointer hover:bg-neutral-600\"\n [ngClass]=\"{\n 'w-3.5 h-3.5 bg-neutral-700/60': density() === 'comfortable',\n 'w-3 h-3 bg-neutral-700/60': density() === 'compact'\n }\"\n (click)=\"handlePairedRawClick($event)\">\n <span\n class=\"font-bold leading-none text-neutral-300\"\n [ngClass]=\"{\n 'text-[7px]': density() === 'comfortable',\n 'text-[6px]': density() === 'compact'\n }\">i</span>\n </button>\n }\n <app-s-monospace-scroll-block\n [maxHeightPx]=\"scrollMaxHeightPx_$()\"\n [density]=\"density()\">\n <pre\n class=\"text-neutral-400 whitespace-pre-wrap break-words leading-relaxed m-0 overflow-x-auto\"\n [ngClass]=\"{\n 'text-[10px]': density() === 'comfortable',\n 'text-[9px]': density() === 'compact'\n }\">{{ pr.expandableContent || pr.text }}</pre>\n </app-s-monospace-scroll-block>\n </app-s-collapsible-disclosure>\n }\n</div>\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { S_PasswordInput_Component } from './_components/s-password-input/s-password-input.component';\nimport { S_SettingsSecretKeyRow_Component } from './_components/s-settings-secret-key-row/s-settings-secret-key-row.component';\nimport { S_SettingsCollapsiblePanel_Component } from './_components/s-settings-collapsible-panel/s-settings-collapsible-panel.component';\nimport { S_ContentState_Component } from './_components/s-content-state/s-content-state.component';\nimport { S_Modal_Component } from './_components/s-modal/s-modal.component';\nimport { S_CopyButton_Component } from './_components/s-copy-button/s-copy-button.component';\nimport { S_StatusBadge_Component } from './_components/s-status-badge/s-status-badge.component';\nimport { S_ProjectBadge_Component } from './_components/s-project-badge/s-project-badge.component';\nimport { S_StatTile_Component } from './_components/s-stat-tile/s-stat-tile.component';\nimport { S_PageHeader_Component } from './_components/s-page-header/s-page-header.component';\nimport { S_FilterBar_Component } from './_components/s-filter-bar/s-filter-bar.component';\nimport { S_SessionShellToolbar_Component } from './_components/session-ui/s-session-shell-toolbar/s-session-shell-toolbar.component';\nimport { S_ResizableSessionShellLayout_Component } from './_components/session-ui/s-resizable-session-shell-layout/s-resizable-session-shell-layout.component';\nimport { S_SessionDetailThreeColumnLayout_Component } from './_components/session-ui/s-session-detail-three-column-layout/s-session-detail-three-column-layout.component';\nimport { S_SessionPromptComposer_Component } from './_components/session-ui/s-session-prompt-composer/s-session-prompt-composer.component';\nimport { S_SessionInput_Component } from './_components/session-ui/s-session-input/s-session-input.component';\nimport { S_AgentConsoleMessageBubble_Component } from './_components/session-ui/s-agent-console-message-bubble/s-agent-console-message-bubble.component';\nimport { S_CollapsibleDisclosure_Component } from './_components/session-ui/agent-tool-widgets/s-collapsible-disclosure/s-collapsible-disclosure.component';\nimport { S_MonospaceScrollBlock_Component } from './_components/session-ui/agent-tool-widgets/s-monospace-scroll-block/s-monospace-scroll-block.component';\nimport { S_AgentToolSummaryRow_Component } from './_components/session-ui/agent-tool-widgets/s-agent-tool-summary-row/s-agent-tool-summary-row.component';\nimport { S_AgentToolCallCard_Component } from './_components/session-ui/agent-tool-widgets/s-agent-tool-call-card/s-agent-tool-call-card.component';\nimport { S_SessionChatColumnLayout_Component } from './_components/session-ui/s-session-chat-column-layout/s-session-chat-column-layout.component';\nimport { S_AbsoluteTime_Pipe } from './_pipes/s-absolute-time.pipe';\nimport { S_IsoTimestampHms_Pipe } from './_pipes/s-iso-timestamp-hms.pipe';\nimport { S_TimeAgo_Pipe } from './_pipes/s-time-ago.pipe';\nimport { S_EditDiff_Pipe } from './_pipes/s-edit-diff.pipe';\nimport { S_AgentToolIcon_Pipe } from './_pipes/s-agent-tool-icon.pipe';\nimport { S_RegistryProviderModelSelect_Component } from './_components/s-registry-provider-model-select/s-registry-provider-model-select.component';\nimport { S_SessionListRow_Component } from './_components/session-ui/s-session-list-row/s-session-list-row.component';\nimport { S_SessionSelect_Component } from './_components/session-ui/s-session-select/s-session-select.component';\n\n/**\n * Shared modul: közös UI komponensek (s- prefix).\n * Exportálja az összes megosztott komponenst.\n */\n@NgModule({\n imports: [\n CommonModule,\n S_PasswordInput_Component,\n S_SettingsSecretKeyRow_Component,\n S_SettingsCollapsiblePanel_Component,\n S_ContentState_Component,\n S_Modal_Component,\n S_CopyButton_Component,\n S_StatusBadge_Component,\n S_ProjectBadge_Component,\n S_StatTile_Component,\n S_PageHeader_Component,\n S_FilterBar_Component,\n S_SessionShellToolbar_Component,\n S_ResizableSessionShellLayout_Component,\n S_SessionDetailThreeColumnLayout_Component,\n S_SessionPromptComposer_Component,\n S_SessionInput_Component,\n S_AgentConsoleMessageBubble_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n S_AgentToolSummaryRow_Component,\n S_AgentToolCallCard_Component,\n S_SessionChatColumnLayout_Component,\n S_AbsoluteTime_Pipe,\n S_IsoTimestampHms_Pipe,\n S_TimeAgo_Pipe,\n S_EditDiff_Pipe,\n S_AgentToolIcon_Pipe,\n S_RegistryProviderModelSelect_Component,\n S_SessionListRow_Component,\n S_SessionSelect_Component,\n ],\n exports: [\n S_PasswordInput_Component,\n S_SettingsSecretKeyRow_Component,\n S_SettingsCollapsiblePanel_Component,\n S_ContentState_Component,\n S_Modal_Component,\n S_CopyButton_Component,\n S_StatusBadge_Component,\n S_ProjectBadge_Component,\n S_StatTile_Component,\n S_PageHeader_Component,\n S_FilterBar_Component,\n S_SessionShellToolbar_Component,\n S_ResizableSessionShellLayout_Component,\n S_SessionDetailThreeColumnLayout_Component,\n S_SessionPromptComposer_Component,\n S_SessionInput_Component,\n S_AgentConsoleMessageBubble_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n S_AgentToolSummaryRow_Component,\n S_AgentToolCallCard_Component,\n S_SessionChatColumnLayout_Component,\n S_AbsoluteTime_Pipe,\n S_IsoTimestampHms_Pipe,\n S_TimeAgo_Pipe,\n S_EditDiff_Pipe,\n S_AgentToolIcon_Pipe,\n S_RegistryProviderModelSelect_Component,\n S_SessionListRow_Component,\n S_SessionSelect_Component,\n ],\n})\n/** Shared_Module class. */\nexport class Shared_Module {}\n"],
|
|
4
|
+
"sourcesContent": ["import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Beállítások provider oldal: összecsukható alszekció (kártya + chevron fejléc).\n * A tartalom csak kinyitott állapotban jelenik meg; üzleti logika a szülőben marad.\n */\n@Component({\n selector: 'app-s-settings-collapsible-panel',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-settings-collapsible-panel.component.html',\n host: { class: 'block' },\n})\n/** S_SettingsCollapsiblePanel_Component class. */\nexport class S_SettingsCollapsiblePanel_Component {\n /** Kinyitott állapot (szülő: pl. providerBlocksExpanded map). */\n readonly expanded = input.required<boolean>();\n\n /** Fejléc cím (pl. provider név). */\n readonly title = input.required<string>();\n\n /** Kinyitott tartalom vertikális spacing (pl. space-y-2 mock blokknál). */\n readonly contentSpacingClass = input<string>('space-y-3');\n\n /** Külső kártya Tailwind osztályok (mock blokk halványabb keretet használ). */\n readonly panelClass = input<string>('rounded-lg border border-neonDefault/60 bg-neutral-900/40');\n\n /** Fejléc cím (h3) Tailwind osztályok. */\n readonly titleClass = input<string>('text-base font-semibold text-neutral-200');\n\n /** `ngClass` map: dinamikus spacing class csak kinyitva (Tailwind purge-barát egy token). */\n readonly spacingClassMap_$ = computed((): Record<string, boolean> => {\n const key: string = this.contentSpacingClass().trim();\n return { [key]: true };\n });\n\n /** Fejléc kattintás / Enter: szülő toggleProviderBlock hívása. */\n readonly toggle = output<void>();\n\n /**\n * Fejléc kattintás → toggle emit.\n */\n handleHeaderClick(): void {\n this.toggle.emit();\n }\n\n /**\n * Billentyűzet: Enter a fejléc fókuszából.\n */\n handleHeaderKeydownEnter(): void {\n this.toggle.emit();\n }\n}\n", "<!--\n Egyetlen [ngClass] a külsőn: két [ngClass] ugyanazon az elemen felülírná egymást,\n és a panelClass (border / háttér) eltűnne kinyitott állapotban.\n-->\n<div\n [ngClass]=\"panelClass()\"\n [class.p-4]=\"expanded()\"\n [class.px-4]=\"!expanded()\"\n [class.py-2]=\"!expanded()\">\n <div\n class=\"flex items-center gap-2 cursor-pointer select-none\"\n role=\"button\"\n tabindex=\"0\"\n (click)=\"handleHeaderClick()\"\n (keydown.enter)=\"handleHeaderKeydownEnter()\">\n <span class=\"inline-flex shrink-0 text-neutral-400\" aria-hidden=\"true\">\n <svg\n class=\"w-3.5 h-3.5 transition-transform duration-150\"\n [class.-rotate-90]=\"!expanded()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </span>\n <h3 [ngClass]=\"titleClass()\">{{ title() }}</h3>\n </div>\n\n @if (expanded()) {\n <!-- Tartalom spacing külön wrapper-en: ne ütközzön a panelClass ngClass-jével. -->\n <div [ngClass]=\"spacingClassMap_$()\" class=\"mt-3\">\n <ng-content />\n </div>\n }\n</div>\n", "import { Component, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Közös oldal fejléc: cím + opcionális alcím + akciógombok slot.\n * Kiváltja az ismétlődő header flex patternt (projects-list, model-registry, embedding-model-registry, stb.).\n */\n@Component({\n selector: 'app-s-page-header',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-page-header.component.html',\n host: { class: 'block' },\n})\n/** S_PageHeader_Component class. */\nexport class S_PageHeader_Component {\n /** Főcím. */\n readonly title = input.required<string>();\n\n /** Opcionális alcím. */\n readonly subtitle = input<string>('');\n\n /** Alsó margó Tailwind osztály. */\n readonly marginBottom = input<string>('mb-6');\n\n /** Van-e alcím (computed). */\n readonly hasSubtitle_$ = computed((): boolean => this.subtitle().trim().length > 0);\n}\n", "<header [class]=\"'flex items-center justify-between gap-4 ' + marginBottom()\">\n <div>\n <h1 class=\"text-2xl gt-xs:text-3xl font-bold text-neutral-100\">{{ title() }}</h1>\n @if (hasSubtitle_$()) {\n <p class=\"text-neutral-400 text-sm gt-xs:text-base mt-1\">{{ subtitle() }}</p>\n }\n </div>\n <div class=\"flex items-center gap-2 shrink-0\">\n <ng-content />\n </div>\n</header>\n", "import {\n Component,\n inject,\n signal,\n computed,\n input,\n output,\n forwardRef,\n ChangeDetectorRef,\n Injector,\n OnInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NgControl, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\n/**\n * Közös jelszómező komponens hide/show toggle gombbal.\n * CVA-val [(ngModel)] és name támogatás; opcionális placeholder, disabled, autocomplete, inputClass.\n * `suppressPasswordManagerAutofill`: vault / nem bejelentkezési mező – erős autofill-ignore (Chrome + extension-ök).\n */\n@Component({\n selector: 'app-s-password-input',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-password-input.component.html',\n host: { class: 'block min-w-0 flex-1' },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof S_PasswordInput_Component => S_PasswordInput_Component),\n multi: true,\n },\n ],\n})\n/** S_PasswordInput_Component class. */\nexport class S_PasswordInput_Component implements ControlValueAccessor, OnInit {\n /** Placeholder szöveg. */\n readonly placeholder = input<string>('');\n\n /** Letiltott állapot (parent által). */\n readonly disabled = input<boolean>(false);\n\n /** CVA által beállított disabled (form control). */\n readonly disabledByControl_$ = signal<boolean>(false);\n\n /** Input name (formokhoz). */\n readonly name = input<string>('');\n\n /** Autocomplete érték (pl. 'off', 'current-password'). */\n readonly autocomplete = input<string>('off');\n\n /** Ha true, data-bwignore=\"1\" kerül az inputra (böngésző password-manager extension ignore). */\n readonly dataBwignore = input<boolean>(false);\n\n /**\n * Ha true: `autocomplete=\"new-password\"` + LastPass / 1Password / Bitwarden ignore flag-ek az inputon.\n * Nem bejelentkezési flow (pl. titoktár API key) – elkerüli a mentett site-password autofill-t.\n */\n readonly suppressPasswordManagerAutofill = input<boolean>(false);\n\n /** Extra Tailwind/osztályok az input elemre (pl. w-full max-w-md font-mono text-sm). */\n readonly inputClass = input<string>('');\n\n /** Blur esemény (parent figyelheti). */\n readonly blurEvent = output<void>();\n\n /** Belső: jelszó látható (true) vagy rejtett (false). */\n readonly visible_$ = signal<boolean>(false);\n\n /** Input type: látható esetén text, különben password (template). */\n readonly inputType_$ = computed((): 'text' | 'password' =>\n this.visible_$() ? 'text' : 'password');\n\n /** Toggle gomb aria-label (látható / rejtett) (template). */\n readonly toggleAriaLabel_$ = computed((): string =>\n this.visible_$() ? 'Jelszó elrejtése' : 'Jelszó megjelenítése');\n\n /** Toggle gomb title (tooltip) (template). */\n readonly toggleTitle_$ = computed((): string =>\n this.visible_$() ? 'Jelszó elrejtése' : 'Jelszó megjelenítése');\n\n /** Effektív disabled: parent vagy form control (template). */\n readonly isDisabled_$ = computed((): boolean =>\n this.disabled() || this.disabledByControl_$());\n\n /** Autofill suppress módban Chrome-nak `new-password`, különben a `autocomplete()` input. */\n readonly effectiveAutocomplete_$ = computed((): string =>\n this.suppressPasswordManagerAutofill() ? 'new-password' : this.autocomplete());\n\n /** Bitwarden ignore: explicit `dataBwignore` vagy suppress mód. */\n readonly effectiveDataBwignore_$ = computed((): boolean =>\n this.dataBwignore() || this.suppressPasswordManagerAutofill());\n\n /** CVA: külső érték. */\n private value: string = '';\n\n /** CVA: change callback. */\n private onChange: (value: string) => void = () => {};\n\n /** CVA: touched callback. */\n private onTouched: () => void = () => {};\n\n private readonly cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n /** Host-injector: NgControl feloldását ngOnInit-ben végezzük, hogy elkerüljük az NG0200 DI ciklust. */\n private readonly injector: Injector = inject(Injector);\n\n /**\n * NgModel / formControlName esetén a valueAccessor beállítása.\n * Nem field-inject, mert a konstruktor / field init alatt az NG_VALUE_ACCESSOR + useExisting körkörös DI-t okozhat.\n */\n private ngControl: NgControl | null = null;\n\n /**\n * NgControl csatolása a CVA-hoz: field-szintű inject(NgControl) helyett init után,\n * amikor a host directive-ek (NgModel) már felálltak.\n */\n ngOnInit(): void {\n this.ngControl = this.injector.get(NgControl, null, { optional: true, self: true });\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** Toggle: jelszó megjelenítés / elrejtés. */\n toggleVisible(): void {\n this.visible_$.update((v: boolean): boolean => !v);\n }\n\n /** Belső input értékének gettere (template). */\n get innerValue(): string {\n return this.value;\n }\n\n /** Belső input értékének settere (template, ngModel). */\n set innerValue(v: string) {\n if (this.value !== v) {\n this.value = v;\n this.onChange(v);\n }\n }\n\n /** CVA: külső érték beállítása. */\n writeValue(value: string | null): void {\n this.value = value ?? '';\n this.cdr.markForCheck();\n }\n\n /** CVA: change callback regisztrálása. */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** CVA: touched callback regisztrálása. */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** CVA: disabled állapot (form control). */\n setDisabledState(isDisabled: boolean): void {\n this.disabledByControl_$.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n /** Blur esemény: touched jelzés + emit parent felé. */\n onBlur(): void {\n this.onTouched();\n this.blurEvent.emit();\n }\n}\n", "<div class=\"flex flex-wrap gap-2 items-center min-w-0\">\n <input [type]=\"inputType_$()\"\n [(ngModel)]=\"innerValue\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled_$()\"\n [attr.autocomplete]=\"effectiveAutocomplete_$()\"\n [attr.data-bwignore]=\"effectiveDataBwignore_$() ? '1' : null\"\n [attr.data-lpignore]=\"suppressPasswordManagerAutofill() ? 'true' : null\"\n [attr.data-1p-ignore]=\"suppressPasswordManagerAutofill() ? 'true' : null\"\n [attr.data-form-type]=\"suppressPasswordManagerAutofill() ? 'other' : null\"\n [class]=\"'flex-1 min-w-0 px-3 py-2 bg-neutral-800 border border-neonDefault rounded text-neutral-100 focus:shadow-neon-glow-cyan disabled:opacity-70 ' + (inputClass())\"\n (blur)=\"onBlur()\" />\n <button type=\"button\"\n (click)=\"toggleVisible()\"\n [disabled]=\"isDisabled_$()\"\n [attr.aria-label]=\"toggleAriaLabel_$()\"\n [attr.title]=\"toggleTitle_$()\"\n class=\"shrink-0 w-9 h-9 flex items-center justify-center rounded border border-neonDefault text-neutral-400\n hover:text-neonCyan hover:shadow-neon-glow-cyan hover:border-neonCyan disabled:opacity-50 transition-colors\">\n @if (visible_$()) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21\" />\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\n </svg>\n }\n </button>\n</div>\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * Beállítások: maszkolt secret / token / API key egy sora (readonly megjelenítés, Szerkesztés, Mentés).\n * A form és edit-mode state a szülő data service-é; ez a komponens csak megjelenít és eseményt emitel.\n */\n@Component({\n selector: 'app-s-settings-secret-key-row',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-settings-secret-key-row.component.html',\n host: { class: 'block' },\n})\n/** S_SettingsSecretKeyRow_Component class. */\nexport class S_SettingsSecretKeyRow_Component {\n /** Form name attribútum. */\n readonly name = input<string>('');\n\n /** Inputban látható érték (szülő: edit módban draft, egyébként masked). */\n readonly displayValue = input.required<string>();\n\n /** Placeholder dinamikusan a szülőtől (üres / szerkesztés / nincs beállítva logika). */\n readonly placeholder = input<string>('');\n\n /** Ha true, a mező írható és a valueChange emitelhető. */\n readonly editMode = input<boolean>(false);\n\n /** Mentés gomb disabled (pl. mentés folyamatban vagy üres draft). */\n readonly saveDisabled = input<boolean>(false);\n\n /** Ha true, a mentés gomb felirata savePendingLabel. */\n readonly savePending = input<boolean>(false);\n\n /** Mentés gomb szövege, ha nincs függőben mentés. */\n readonly saveLabel = input<string>('Mentés');\n\n /** Mentés gomb szövege függőben lévő mentésnél. */\n readonly savePendingLabel = input<string>('Mentés…');\n\n /** Ha nem null és nem üres, ⚠️ jelenik meg a sorban title-rel. */\n readonly warningTooltip = input<string | null>(null);\n\n /** Extra osztályok az inputra (pl. max-w-md). */\n readonly inputClass = input<string>('');\n\n /** Password-manager ignore: true esetén data-bwignore az inputon. */\n readonly dataBwignore = input<boolean>(true);\n\n /** Csak editMode mellett emitelünk (draft frissítés). */\n readonly valueChange = output<string>();\n\n /** Szerkesztés gomb. */\n readonly startEdit = output<void>();\n\n /** Mentés gomb. */\n readonly save = output<void>();\n\n /** Readonly, ha nincs szerkesztés mód. */\n readonly inputReadonly_$ = computed((): boolean => !this.editMode());\n\n /** Inline figyelmeztetés megjelenítése. */\n readonly showWarning_$ = computed((): boolean => {\n const t: string | null = this.warningTooltip();\n return t != null && t.trim().length > 0;\n });\n\n /** Mentés gomb aktuális felirata. */\n readonly saveButtonLabel_$ = computed((): string =>\n this.savePending() ? this.savePendingLabel() : this.saveLabel(),\n );\n\n /** Input Tailwind osztályok: alap + opcionális readonly halványítás + szülő extra. */\n readonly inputClassCombined_$ = computed((): string => {\n const base: string =\n 'flex-1 min-w-0 px-3 py-2 font-mono text-sm bg-neutral-800 border border-neonDefault rounded ' +\n 'text-neutral-100 focus:shadow-neon-glow-cyan';\n const ro: string = this.inputReadonly_$() ? ' opacity-90' : '';\n const extra: string = this.inputClass().trim().length > 0 ? ' ' + this.inputClass() : '';\n return base + ro + extra;\n });\n\n /**\n * NgModel változás: csak szerkesztés módban propagate-elünk, hogy a maszkolt readonly állapotban ne írjunk\n * vissza tévesen.\n */\n onDisplayValueChange(value: string): void {\n if (!this.editMode()) {\n return;\n }\n this.valueChange.emit(value);\n }\n\n /** Szerkesztés indítása. */\n emitStartEdit(): void {\n this.startEdit.emit();\n }\n\n /** Inline mentés. */\n emitSave(): void {\n this.save.emit();\n }\n}\n", "<div class=\"flex flex-wrap gap-2 items-center\">\n <input type=\"text\"\n [name]=\"name()\"\n [ngModel]=\"displayValue()\"\n (ngModelChange)=\"onDisplayValueChange($event)\"\n [readonly]=\"inputReadonly_$()\"\n [attr.placeholder]=\"placeholder()\"\n [attr.data-bwignore]=\"dataBwignore() ? 'true' : null\"\n [class]=\"inputClassCombined_$()\" />\n @if (showWarning_$()) {\n <span class=\"text-amber-300 text-sm\" [attr.title]=\"warningTooltip() ?? ''\">\n ⚠️\n </span>\n }\n @if (!editMode()) {\n <button type=\"button\"\n (click)=\"emitStartEdit()\"\n class=\"px-4 py-2 border border-neonCyan rounded text-neutral-300 hover:shadow-neon-glow-cyan whitespace-nowrap\">\n Szerkesztés\n </button>\n } @else {\n <button type=\"button\"\n (click)=\"emitSave()\"\n [disabled]=\"saveDisabled()\"\n class=\"px-4 py-2 bg-ccapAccent text-white rounded whitespace-nowrap disabled:opacity-50\">\n {{ saveButtonLabel_$() }}\n </button>\n }\n</div>\n", "import { Component, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * Közös prompt composer: textarea + küldés; content projection slotok.\n * - sComposerPrefix: mód / melléklet sorok a textarea fölött\n * - sComposerTextareaAccessory: absolute overlay a textarea-hoz (pl. voice gomb) — a szülő `relative`\n * - sComposerBelowTextarea: textarea alatt, gombsor felett (pl. auto-send checkbox)\n * - sComposerBeforeSend: bal oldali akciók a küldés gomb mellett\n */\n@Component({\n selector: 'app-s-session-prompt-composer',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './s-session-prompt-composer.component.html',\n host: { class: 'block shrink-0 border-t border-neonDefault bg-ccapSurface' },\n})\n/** S_SessionPromptComposer_Component class. */\nexport class S_SessionPromptComposer_Component {\n\n /** Piszkozat szöveg. */\n readonly draftText = input<string>('');\n\n /** Piszkozat változás. */\n readonly draftTextChange = output<string>();\n\n /** Küldés folyamatban. */\n readonly isSending = input<boolean>(false);\n\n /** Küldés tiltása (üres szöveg stb.). */\n readonly isSendDisabled = input<boolean>(false);\n\n /** Placeholder. */\n readonly placeholder = input<string>('');\n\n /** Textarea sorok. */\n readonly textareaRows = input<number>(3);\n\n /** Küldés gomb felirat. */\n readonly sendButtonLabel = input<string>('Send');\n\n /** Küldés gomb felirat küldés közben. */\n readonly sendingButtonLabel = input<string>('…');\n\n /** Küldés kérése. */\n readonly sendRequested = output<void>();\n\n /**\n * Enter küldés, Shift+Enter új sor.\n */\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key !== 'Enter' || event.shiftKey) {\n return;\n }\n event.preventDefault();\n this.emitSendIfAllowed();\n }\n\n /**\n * Küldés gomb.\n */\n handleSendClick(): void {\n this.emitSendIfAllowed();\n }\n\n /**\n * Küldés csak ha engedélyezett.\n */\n private emitSendIfAllowed(): void {\n if (this.isSending() || this.isSendDisabled()) {\n return;\n }\n this.sendRequested.emit();\n }\n}\n", "<div class=\"flex flex-col gap-2 p-2\">\n <ng-content select=\"[sComposerPrefix]\"></ng-content>\n <div class=\"relative min-w-0 w-full\">\n <textarea\n class=\"min-h-[60px] max-h-[200px] w-full resize-none rounded border border-neutral-700 bg-neutral-800 px-2 py-1.5 font-mono text-xs text-neutral-200 placeholder-neutral-600 focus:border-ccapAccent focus:outline-none\"\n [attr.rows]=\"textareaRows()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"draftText()\"\n (ngModelChange)=\"draftTextChange.emit($event)\"\n (keydown)=\"handleKeyDown($event)\">\n </textarea>\n <ng-content select=\"[sComposerTextareaAccessory]\"></ng-content>\n </div>\n <ng-content select=\"[sComposerBelowTextarea]\"></ng-content>\n <div class=\"flex flex-wrap items-end justify-end gap-2\">\n <ng-content select=\"[sComposerBeforeSend]\"></ng-content>\n <button\n type=\"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 shrink-0\"\n [disabled]=\"isSendDisabled() || isSending()\"\n (click)=\"handleSendClick()\">\n {{ isSending() ? sendingButtonLabel() : sendButtonLabel() }}\n </button>\n </div>\n</div>\n", "import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Natív details/summary disclosure — egységes chevron + summary sor; body ng-content.\n * Tool “Changes” / “Result” blokkok közös mintája (CC console).\n */\n@Component({\n selector: 'app-s-collapsible-disclosure',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-collapsible-disclosure.component.html',\n host: { class: 'block border-t border-orange-500/20' },\n})\n/** S_CollapsibleDisclosure_Component class. */\nexport class S_CollapsibleDisclosure_Component {\n\n /** Summary szöveg (pl. „Changes” vagy rövid result preview). */\n readonly summaryLabel = input.required<string>();\n\n /** Kényelmes (fő tool kártya) vagy kompakt (tool-group belső). */\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * changes — narancs címke (Edit diff blokk);\n * result — semleges címke (paired result).\n */\n readonly tone = input<'changes' | 'result'>('changes');\n\n /** Summary sor Tailwind osztályok. */\n readonly summaryRowClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n const base: string =\n 'flex items-center gap-1 cursor-pointer select-none transition-colors list-none [&::-webkit-details-marker]:hidden';\n if (t === 'changes') {\n return d === 'comfortable'\n ? `${base} px-2.5 py-1 bg-neutral-800/20 hover:bg-neutral-800/40`\n : `${base} px-1.5 py-0.5 bg-neutral-800/15 hover:bg-neutral-800/30`;\n }\n return d === 'comfortable'\n ? `${base} px-2.5 py-1 bg-neutral-800/30 hover:bg-neutral-800/50`\n : `${base} px-1.5 py-0.5 bg-neutral-800/20 hover:bg-neutral-800/40`;\n });\n\n /** Summary címke szín / méret. */\n readonly summaryLabelClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n if (t === 'changes') {\n return d === 'comfortable' ? 'text-[10px] text-orange-300/50' : 'text-[9px] text-orange-300/40';\n }\n return d === 'comfortable'\n ? 'text-[10px] text-neutral-400 truncate leading-relaxed'\n : 'text-[9px] text-neutral-500 truncate';\n });\n\n /** Chevron méret osztály. */\n readonly chevronSizeClass_$ = computed((): string => {\n return this.density() === 'comfortable' ? 'w-3 h-3' : 'w-2.5 h-2.5';\n });\n\n /** Body wrapper (ng-content körül). */\n readonly bodyWrapperClass_$ = computed((): string => {\n const d: 'comfortable' | 'compact' = this.density();\n const t: 'changes' | 'result' = this.tone();\n if (t === 'changes') {\n return d === 'comfortable'\n ? 'px-2.5 py-1.5 bg-neutral-800/20 border-t border-neutral-700/15'\n : 'px-1.5 py-1 bg-neutral-800/15 border-t border-neutral-700/10';\n }\n return d === 'comfortable'\n ? 'px-2.5 py-1.5 bg-neutral-800/30 border-t border-neutral-700/20'\n : 'px-1.5 py-1 bg-neutral-800/20 border-t border-neutral-700/15';\n });\n}\n", "<details class=\"group/sdisclosure group/pr\">\n <summary [class]=\"summaryRowClass_$()\">\n <svg\n class=\"text-neutral-500 shrink-0 transition-transform [[open]>&]:rotate-90\"\n [ngClass]=\"chevronSizeClass_$()\"\n viewBox=\"0 0 12 12\"\n fill=\"none\">\n <path\n d=\"M4.5 2.5l4 3.5-4 3.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n </path>\n </svg>\n <span [class]=\"summaryLabelClass_$()\">{{ summaryLabel() }}</span>\n <ng-content select=\"[sDisclosureSummaryTrailing]\"></ng-content>\n </summary>\n <div [class]=\"bodyWrapperClass_$()\">\n <ng-content></ng-content>\n </div>\n</details>\n", "import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Max-height + scroll wrapper — a host ide projektálja a pre / innerHTML tartalmat.\n */\n@Component({\n selector: 'app-s-monospace-scroll-block',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './s-monospace-scroll-block.component.html',\n host: { class: 'block' },\n})\n/** S_MonospaceScrollBlock_Component class. */\nexport class S_MonospaceScrollBlock_Component {\n\n /** Max magasság pixelben. */\n readonly maxHeightPx = input<number>(250);\n\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /** Belső wrapper font / padding a CC console mintához. */\n readonly innerClass_$ = computed((): string => {\n return this.density() === 'comfortable'\n ? 'font-mono'\n : 'font-mono';\n });\n}\n", "<div\n [class]=\"innerClass_$()\"\n class=\"overflow-y-auto overflow-x-auto font-mono\"\n [style.max-height.px]=\"maxHeightPx()\">\n <ng-content></ng-content>\n</div>\n", "import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * Agent tool név → inline SVG ikon (14×14, currentColor) — CC / OC közös mapping.\n */\n@Pipe({\n name: 'sAgentToolIcon',\n standalone: true,\n})\n/** S_AgentToolIcon_Pipe class. */\nexport class S_AgentToolIcon_Pipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {}\n\n /** Tool név → SafeHtml SVG ikon. */\n transform(toolName: string | null | undefined): SafeHtml {\n const svg: string = this.getSvgForTool(toolName ?? '');\n return this.sanitizer.bypassSecurityTrustHtml(svg);\n }\n\n private getSvgForTool(name: string): string {\n switch (name) {\n case 'Read':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M4 2h6l4 4v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z\"/>\n <path d=\"M10 2v4h4\"/>\n <path d=\"M6 9h4\"/><path d=\"M6 12h2\"/>\n </svg>`;\n case 'Bash':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"1\" y=\"2\" width=\"14\" height=\"12\" rx=\"2\"/>\n <path d=\"M4 6l3 2.5L4 11\"/>\n <path d=\"M9 11h3\"/>\n </svg>`;\n case 'Edit':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M11.5 1.5l3 3L5 14H2v-3L11.5 1.5z\"/>\n </svg>`;\n case 'Write':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M4 2h6l4 4v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z\"/>\n <path d=\"M10 2v4h4\"/>\n <path d=\"M6 10l1.5-1.5 2 2L8 12H6v-2z\"/>\n </svg>`;\n case 'Grep':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"7\" cy=\"7\" r=\"4.5\"/>\n <path d=\"M10.5 10.5L14 14\"/>\n </svg>`;\n case 'Glob':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M2 4h4l2 2h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z\"/>\n <circle cx=\"9\" cy=\"10\" r=\"2\"/><path d=\"M10.5 11.5L12 13\"/>\n </svg>`;\n case 'Agent':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"5\" width=\"10\" height=\"8\" rx=\"2\"/>\n <circle cx=\"6\" cy=\"9\" r=\"1\"/><circle cx=\"10\" cy=\"9\" r=\"1\"/>\n <path d=\"M8 2v3\"/><path d=\"M6 2h4\"/>\n </svg>`;\n case 'WebSearch':\n case 'WebFetch':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"8\" cy=\"8\" r=\"6\"/>\n <path d=\"M2 8h12\"/><path d=\"M8 2a10 10 0 0 1 0 12\"/><path d=\"M8 2a10 10 0 0 0 0 12\"/>\n </svg>`;\n case 'TodoWrite':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M3 4l2 2 3-3\"/><path d=\"M10 5h4\"/>\n <path d=\"M3 9l2 2 3-3\"/><path d=\"M10 10h4\"/>\n </svg>`;\n case 'NotebookEdit':\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"1\" width=\"10\" height=\"14\" rx=\"1\"/>\n <path d=\"M1 4h3\"/><path d=\"M1 8h3\"/><path d=\"M1 12h3\"/>\n <path d=\"M6 5h4\"/><path d=\"M6 8h3\"/>\n </svg>`;\n default:\n return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M10.5 1.5a4 4 0 0 0-5 5L2 10l-.5 4.5L6 14l3.5-3.5a4 4 0 0 0 5-5l-2.5 2.5-2-2L12.5 3.5z\"/>\n </svg>`;\n }\n }\n}\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { S_AgentToolIcon_Pipe } from '../../../../_pipes/s-agent-tool-icon.pipe';\n\n/**\n * Tool hívás egy soros összefoglalója: ikon + szöveg + opcionális raw ⓘ.\n */\n@Component({\n selector: 'app-s-agent-tool-summary-row',\n standalone: true,\n imports: [CommonModule, S_AgentToolIcon_Pipe],\n templateUrl: './s-agent-tool-summary-row.component.html',\n host: { class: 'block' },\n})\n/** S_AgentToolSummaryRow_Component class. */\nexport class S_AgentToolSummaryRow_Component {\n\n readonly toolName = input<string>('');\n\n readonly summaryText = input<string>('');\n\n /** Tool hívás leírása (rawData.input.description — emberi nyelven, mit csinál a tool). */\n readonly toolDescription = input<string>('');\n\n /** Read tool path jobbra igazítás (host állítja true-ra Read esetén). */\n readonly isPathRtl = input<boolean>(false);\n\n readonly showRawInfoButton = input<boolean>(false);\n\n /** Fő tool sor vagy tool-group kompakt belső sor. */\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * Path-szerű summary maximum hossza, amit változatlanul mutatunk.\n * Hosszabb path-okat (Read/Grab tool, isPathRtl=true) JS-szel trim-elünk a start-on,\n * `…` prefixszel, hogy a file név vége mindig látható legyen.\n *\n * REQ-CC-EVT-PATH-TRIM-001 (cycle 197): a `dir=\"rtl\" + text-overflow: ellipsis`\n * kombináció böngésző-specifikusan nem mindig a sor START-jára (a szóköz vagy\n * Latin LTR run elejére) teszi az ellipsist; néhány setupban az ellipsis\n * a JOBB szélen jelent meg, miközben a file név vége le lett vágva. JS-side\n * előfeldolgozás eliminálja a böngésző-bidi bizonytalanságot.\n */\n private static readonly PATH_DISPLAY_MAX_CHARS: number = 80;\n\n /**\n * Megjelenítendő summary szöveg: ha a summaryText a toolName-mel kezdődik,\n * levágja a \"ToolName: \" prefixet (a tool név már a label-ben látszik).\n * Ha a maradék üres, null-t ad (ne jelenítsük meg duplikáltan).\n *\n * REQ-CC-EVT-PATH-TRIM-001: ha `isPathRtl()` true (Read tool) és a stripped\n * hossz > PATH_DISPLAY_MAX_CHARS, a path elejét trim-eljük `…` prefixszel,\n * hogy a file név vége garantáltan látható legyen — független a böngésző\n * bidi-handling viselkedésétől.\n */\n readonly displaySummary_$ = computed((): string | null => {\n const raw: string = this.summaryText();\n const name: string = this.toolName();\n if (!raw || raw === name) {\n return null;\n }\n // \"ToolName: valami\" → \"valami\"\n const prefix: string = `${name}: `;\n const stripped: string = raw.startsWith(prefix)\n ? raw.substring(prefix.length)\n : raw;\n if (stripped.length === 0) {\n return null;\n }\n // REQ-CC-EVT-PATH-TRIM-001: hosszú path-ok JS-trim a START-on (ellipsis fix az elejére).\n if (\n this.isPathRtl()\n && stripped.length > S_AgentToolSummaryRow_Component.PATH_DISPLAY_MAX_CHARS\n ) {\n const tail: string = stripped.slice(\n -(S_AgentToolSummaryRow_Component.PATH_DISPLAY_MAX_CHARS - 1),\n );\n return `…${tail}`;\n }\n return stripped;\n });\n\n /** Raw részletek gomb — a host nyitja a popup-ot. */\n readonly rawInfoClick = output<void>();\n\n /**\n * ⓘ kattintás — stopPropagation, hogy ne toggolja a szülő details-t.\n */\n handleRawInfoClick(event: MouseEvent): void {\n event.stopPropagation();\n this.rawInfoClick.emit();\n }\n}\n", "<div\n class=\"flex items-center gap-1.5\"\n [class.px-2.5]=\"density() === 'comfortable'\"\n [class.py-1]=\"density() === 'comfortable'\"\n [class.px-1.5]=\"density() === 'compact'\"\n [class.py-0.5]=\"density() === 'compact'\">\n <span\n class=\"text-orange-400 shrink-0 flex items-center\"\n [ngClass]=\"{ '[&>svg]:w-3': density() === 'compact', '[&>svg]:h-3': density() === 'compact' }\"\n [innerHTML]=\"toolName() | sAgentToolIcon\">\n </span>\n @if (density() === 'comfortable') {\n <span class=\"text-[11px] text-orange-300/90 font-medium shrink-0\">{{ toolName() }}</span>\n }\n <!-- REQ-CC-EVT-PATH-TRIM-001 sub-part (a) (cycle 207): ha van description, az\n MINDIG látható a header-ben, és a CC tool-ikon-családhoz illő narancs színt\n használja (nem szürke). Ha nincs description, a summary (path / brief)\n jelenik meg a header-ben — eddigi viselkedés. A `—` szeparátor és a duplikált\n (description + summary) mező el lett távolítva: vagy description, vagy summary,\n attól függ van-e tartalmas leírás. -->\n @let summaryText = displaySummary_$();\n @if (toolDescription()) {\n <span\n class=\"truncate\"\n [ngClass]=\"{\n 'text-[11px] text-orange-300/90 max-w-[400px]': density() === 'comfortable',\n 'text-[10px] text-orange-300/70 max-w-[350px]': density() === 'compact'\n }\">{{ toolDescription() }}</span>\n } @else if (summaryText) {\n <span\n class=\"truncate\"\n [ngClass]=\"{\n 'text-[11px] text-orange-300/90 max-w-[400px]': density() === 'comfortable',\n 'text-[10px] text-orange-300/70 max-w-[350px]': density() === 'compact'\n }\"\n [attr.dir]=\"isPathRtl() ? 'rtl' : null\">\n {{ summaryText }}\n </span>\n }\n @if (showRawInfoButton()) {\n <button\n type=\"button\"\n class=\"ml-auto shrink-0 rounded-full border flex items-center justify-center cursor-pointer\"\n [ngClass]=\"{\n 'w-4 h-4 border-orange-500/30 bg-orange-500/20 hover:bg-orange-500/40': density() === 'comfortable',\n 'w-3.5 h-3.5 bg-orange-500/15 hover:bg-orange-500/30': density() === 'compact'\n }\"\n (click)=\"handleRawInfoClick($event)\">\n <span\n class=\"font-bold leading-none\"\n [ngClass]=\"{\n 'text-[8px] text-orange-300': density() === 'comfortable',\n 'text-[7px] text-orange-300/70': density() === 'compact'\n }\">i</span>\n </button>\n }\n</div>\n", "import { Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CCAP_AgentConsoleBubblePairedResult_Interface } from '../../../../../../_models/interfaces/shared/ccap-agent-console-bubble-view.interface';\nimport { S_EditDiff_Pipe } from '../../../../_pipes/s-edit-diff.pipe';\nimport { S_AgentToolSummaryRow_Component } from '../s-agent-tool-summary-row/s-agent-tool-summary-row.component';\nimport { S_CollapsibleDisclosure_Component } from '../s-collapsible-disclosure/s-collapsible-disclosure.component';\nimport { S_MonospaceScrollBlock_Component } from '../s-monospace-scroll-block/s-monospace-scroll-block.component';\n\n/**\n * Összetett tool kártya: summary sor + opcionális Changes (edit diff) + paired result disclosure.\n * CC console @case('tool') és tool-group belső tool sor közös megjelenítése.\n */\n@Component({\n selector: 'app-s-agent-tool-call-card',\n standalone: true,\n imports: [\n CommonModule,\n S_EditDiff_Pipe,\n S_AgentToolSummaryRow_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n ],\n templateUrl: './s-agent-tool-call-card.component.html',\n host: { class: 'block' },\n})\n/** S_AgentToolCallCard_Component class. */\nexport class S_AgentToolCallCard_Component {\n\n readonly toolName = input<string>('');\n\n readonly summaryText = input<string>('');\n\n /** Tool hívás leírása (rawData.input.description). */\n readonly toolDescription = input<string>('');\n\n readonly isPathRtl = input<boolean>(false);\n\n readonly showToolRawInfo = input<boolean>(false);\n\n /** Edit / Write JSON {old,new} expandable — üres ha nincs Changes blokk. */\n readonly expandableContent = input<string>('');\n\n readonly pairedResult = input<CCAP_AgentConsoleBubblePairedResult_Interface | null>(null);\n\n readonly density = input<'comfortable' | 'compact'>('comfortable');\n\n /**\n * full — fő tool sor (narancs háttér, max-w);\n * nested — tool-group belső sor (csak vékony border).\n */\n readonly layout = input<'full' | 'nested'>('full');\n\n /** Changes disclosure summary felirat. */\n readonly changesSummaryLabel = input<string>('Changes');\n\n readonly toolRawInfoClick = output<void>();\n\n readonly pairedRawInfoClick = output<void>();\n\n /** Konténer CSS class — layout szerint eltérő stílus. Full: háttér/border a szülő wrapper adja. */\n readonly containerClass_$ = computed((): string => {\n return this.layout() === 'full'\n ? 'overflow-hidden'\n : 'overflow-hidden border border-orange-500/10 rounded';\n });\n\n /** Changes / Result pre max magasság a density szerint (CC console minta). */\n readonly scrollMaxHeightPx_$ = computed((): number => {\n return this.density() === 'comfortable' ? 250 : 150;\n });\n\n /**\n * Paired ⓘ — stopPropagation a disclosure summary-n belül.\n */\n handlePairedRawClick(event: MouseEvent): void {\n event.stopPropagation();\n this.pairedRawInfoClick.emit();\n }\n}\n", "<div [class]=\"containerClass_$()\">\n <app-s-agent-tool-summary-row\n [toolName]=\"toolName()\"\n [summaryText]=\"summaryText()\"\n [toolDescription]=\"toolDescription()\"\n [isPathRtl]=\"isPathRtl()\"\n [showRawInfoButton]=\"showToolRawInfo()\"\n [density]=\"density()\"\n (rawInfoClick)=\"toolRawInfoClick.emit()\">\n </app-s-agent-tool-summary-row>\n @if (expandableContent()) {\n <app-s-collapsible-disclosure\n [summaryLabel]=\"changesSummaryLabel()\"\n [density]=\"density()\"\n tone=\"changes\">\n <app-s-monospace-scroll-block\n [maxHeightPx]=\"scrollMaxHeightPx_$()\"\n [density]=\"density()\">\n <pre\n class=\"text-neutral-400 whitespace-pre-wrap break-words leading-relaxed m-0 overflow-x-auto\"\n [ngClass]=\"{\n 'text-[10px]': density() === 'comfortable',\n 'text-[9px]': density() === 'compact'\n }\"\n [innerHTML]=\"expandableContent() | sEditDiff\">\n </pre>\n </app-s-monospace-scroll-block>\n </app-s-collapsible-disclosure>\n }\n @if (pairedResult(); as pr) {\n <app-s-collapsible-disclosure\n [summaryLabel]=\"pr.text\"\n [density]=\"density()\"\n tone=\"result\">\n @if (pr.rawData) {\n <button\n sDisclosureSummaryTrailing\n type=\"button\"\n class=\"ml-auto shrink-0 rounded-full border border-neutral-600/40 flex items-center justify-center cursor-pointer hover:bg-neutral-600\"\n [ngClass]=\"{\n 'w-3.5 h-3.5 bg-neutral-700/60': density() === 'comfortable',\n 'w-3 h-3 bg-neutral-700/60': density() === 'compact'\n }\"\n (click)=\"handlePairedRawClick($event)\">\n <span\n class=\"font-bold leading-none text-neutral-300\"\n [ngClass]=\"{\n 'text-[7px]': density() === 'comfortable',\n 'text-[6px]': density() === 'compact'\n }\">i</span>\n </button>\n }\n <app-s-monospace-scroll-block\n [maxHeightPx]=\"scrollMaxHeightPx_$()\"\n [density]=\"density()\">\n <pre\n class=\"text-neutral-400 whitespace-pre-wrap break-words leading-relaxed m-0 overflow-x-auto\"\n [ngClass]=\"{\n 'text-[10px]': density() === 'comfortable',\n 'text-[9px]': density() === 'compact'\n }\">{{ pr.expandableContent || pr.text }}</pre>\n </app-s-monospace-scroll-block>\n </app-s-collapsible-disclosure>\n }\n</div>\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { S_PasswordInput_Component } from './_components/s-password-input/s-password-input.component';\nimport { S_SettingsSecretKeyRow_Component } from './_components/s-settings-secret-key-row/s-settings-secret-key-row.component';\nimport { S_SettingsCollapsiblePanel_Component } from './_components/s-settings-collapsible-panel/s-settings-collapsible-panel.component';\nimport { S_ContentState_Component } from './_components/s-content-state/s-content-state.component';\nimport { S_Modal_Component } from './_components/s-modal/s-modal.component';\nimport { S_CopyButton_Component } from './_components/s-copy-button/s-copy-button.component';\nimport { S_StatusBadge_Component } from './_components/s-status-badge/s-status-badge.component';\nimport { S_ProjectBadge_Component } from './_components/s-project-badge/s-project-badge.component';\nimport { S_StatTile_Component } from './_components/s-stat-tile/s-stat-tile.component';\nimport { S_PageHeader_Component } from './_components/s-page-header/s-page-header.component';\nimport { S_FilterBar_Component } from './_components/s-filter-bar/s-filter-bar.component';\nimport { S_SessionShellToolbar_Component } from './_components/session-ui/s-session-shell-toolbar/s-session-shell-toolbar.component';\nimport { S_ResizableSessionShellLayout_Component } from './_components/session-ui/s-resizable-session-shell-layout/s-resizable-session-shell-layout.component';\nimport { S_SessionDetailThreeColumnLayout_Component } from './_components/session-ui/s-session-detail-three-column-layout/s-session-detail-three-column-layout.component';\nimport { S_SessionPromptComposer_Component } from './_components/session-ui/s-session-prompt-composer/s-session-prompt-composer.component';\nimport { S_SessionInput_Component } from './_components/session-ui/s-session-input/s-session-input.component';\nimport { S_AgentConsoleMessageBubble_Component } from './_components/session-ui/s-agent-console-message-bubble/s-agent-console-message-bubble.component';\nimport { S_CollapsibleDisclosure_Component } from './_components/session-ui/agent-tool-widgets/s-collapsible-disclosure/s-collapsible-disclosure.component';\nimport { S_MonospaceScrollBlock_Component } from './_components/session-ui/agent-tool-widgets/s-monospace-scroll-block/s-monospace-scroll-block.component';\nimport { S_AgentToolSummaryRow_Component } from './_components/session-ui/agent-tool-widgets/s-agent-tool-summary-row/s-agent-tool-summary-row.component';\nimport { S_AgentToolCallCard_Component } from './_components/session-ui/agent-tool-widgets/s-agent-tool-call-card/s-agent-tool-call-card.component';\nimport { S_SessionChatColumnLayout_Component } from './_components/session-ui/s-session-chat-column-layout/s-session-chat-column-layout.component';\nimport { S_AbsoluteTime_Pipe } from './_pipes/s-absolute-time.pipe';\nimport { S_IsoTimestampHms_Pipe } from './_pipes/s-iso-timestamp-hms.pipe';\nimport { S_TimeAgo_Pipe } from './_pipes/s-time-ago.pipe';\nimport { S_EditDiff_Pipe } from './_pipes/s-edit-diff.pipe';\nimport { S_AgentToolIcon_Pipe } from './_pipes/s-agent-tool-icon.pipe';\nimport { S_RegistryProviderModelSelect_Component } from './_components/s-registry-provider-model-select/s-registry-provider-model-select.component';\nimport { S_SessionInfoCard_Component } from './_components/session-ui/s-session-info-card/s-session-info-card.component';\nimport { S_SessionSelect_Component } from './_components/session-ui/s-session-select/s-session-select.component';\n\n/**\n * Shared modul: közös UI komponensek (s- prefix).\n * Exportálja az összes megosztott komponenst.\n */\n@NgModule({\n imports: [\n CommonModule,\n S_PasswordInput_Component,\n S_SettingsSecretKeyRow_Component,\n S_SettingsCollapsiblePanel_Component,\n S_ContentState_Component,\n S_Modal_Component,\n S_CopyButton_Component,\n S_StatusBadge_Component,\n S_ProjectBadge_Component,\n S_StatTile_Component,\n S_PageHeader_Component,\n S_FilterBar_Component,\n S_SessionShellToolbar_Component,\n S_ResizableSessionShellLayout_Component,\n S_SessionDetailThreeColumnLayout_Component,\n S_SessionPromptComposer_Component,\n S_SessionInput_Component,\n S_AgentConsoleMessageBubble_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n S_AgentToolSummaryRow_Component,\n S_AgentToolCallCard_Component,\n S_SessionChatColumnLayout_Component,\n S_AbsoluteTime_Pipe,\n S_IsoTimestampHms_Pipe,\n S_TimeAgo_Pipe,\n S_EditDiff_Pipe,\n S_AgentToolIcon_Pipe,\n S_RegistryProviderModelSelect_Component,\n S_SessionInfoCard_Component,\n S_SessionSelect_Component,\n ],\n exports: [\n S_PasswordInput_Component,\n S_SettingsSecretKeyRow_Component,\n S_SettingsCollapsiblePanel_Component,\n S_ContentState_Component,\n S_Modal_Component,\n S_CopyButton_Component,\n S_StatusBadge_Component,\n S_ProjectBadge_Component,\n S_StatTile_Component,\n S_PageHeader_Component,\n S_FilterBar_Component,\n S_SessionShellToolbar_Component,\n S_ResizableSessionShellLayout_Component,\n S_SessionDetailThreeColumnLayout_Component,\n S_SessionPromptComposer_Component,\n S_SessionInput_Component,\n S_AgentConsoleMessageBubble_Component,\n S_CollapsibleDisclosure_Component,\n S_MonospaceScrollBlock_Component,\n S_AgentToolSummaryRow_Component,\n S_AgentToolCallCard_Component,\n S_SessionChatColumnLayout_Component,\n S_AbsoluteTime_Pipe,\n S_IsoTimestampHms_Pipe,\n S_TimeAgo_Pipe,\n S_EditDiff_Pipe,\n S_AgentToolIcon_Pipe,\n S_RegistryProviderModelSelect_Component,\n S_SessionInfoCard_Component,\n S_SessionSelect_Component,\n ],\n})\n/** Shared_Module class. */\nexport class Shared_Module {}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["\u0275\u0275elementStart", "\u0275\u0275projection", "\u0275\u0275elementEnd", "\u0275\u0275property", "ctx_r0", "spacingClassMap_$", "S_SettingsCollapsiblePanel_Component", "expanded", "input", "required", "title", "contentSpacingClass", "panelClass", "titleClass", "computed", "trim", "toggle", "output", "handleHeaderClick", "emit", "handleHeaderKeydownEnter", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c0", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275listener", "\u0275\u0275element", "\u0275\u0275text", "\u0275\u0275template", "S_SettingsCollapsiblePanel_Component_Conditional_7_Template", "\u0275\u0275classProp", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "\u0275\u0275conditional", "CommonModule", "NgClass", "encapsulation", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "ctx_r0", "subtitle", "S_PageHeader_Component", "title", "input", "required", "marginBottom", "hasSubtitle_$", "computed", "trim", "length", "selectors", "hostAttrs", "inputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c0", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "S_PageHeader_Component_Conditional_4_Template", "\u0275\u0275projection", "\u0275\u0275classMap", "\u0275\u0275conditional", "CommonModule", "encapsulation", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275elementEnd", "S_PasswordInput_Component", "placeholder", "input", "disabled", "disabledByControl_$", "signal", "name", "autocomplete", "dataBwignore", "suppressPasswordManagerAutofill", "inputClass", "blurEvent", "output", "visible_$", "inputType_$", "computed", "toggleAriaLabel_$", "toggleTitle_$", "isDisabled_$", "effectiveAutocomplete_$", "effectiveDataBwignore_$", "value", "onChange", "onTouched", "cdr", "inject", "ChangeDetectorRef", "injector", "Injector", "ngControl", "ngOnInit", "get", "NgControl", "optional", "self", "valueAccessor", "toggleVisible", "update", "v", "innerValue", "writeValue", "markForCheck", "registerOnChange", "fn", "registerOnTouched", "setDisabledState", "isDisabled", "set", "onBlur", "emit", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275ProvidersFeature", "provide", "NG_VALUE_ACCESSOR", "useExisting", "forwardRef", "multi", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275twoWayListener", "$event", "i0", "\u0275\u0275twoWayBindingSet", "\u0275\u0275listener", "\u0275\u0275template", "S_PasswordInput_Component_Conditional_3_Template", "S_PasswordInput_Component_Conditional_4_Template", "\u0275\u0275advance", "\u0275\u0275classMap", "\u0275\u0275property", "\u0275\u0275twoWayProperty", "\u0275\u0275conditional", "CommonModule", "FormsModule", "DefaultValueAccessor", "NgControlStatus", "NgModel", "encapsulation", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r2", "ctx_r0", "\u0275\u0275nextContext", "\u0275\u0275resetView", "emitStartEdit", "_r3", "emitSave", "\u0275\u0275property", "saveDisabled", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "saveButtonLabel_$", "S_SettingsSecretKeyRow_Component", "name", "input", "displayValue", "required", "placeholder", "editMode", "savePending", "saveLabel", "savePendingLabel", "warningTooltip", "inputClass", "dataBwignore", "valueChange", "output", "startEdit", "save", "inputReadonly_$", "computed", "showWarning_$", "t", "trim", "length", "inputClassCombined_$", "base", "ro", "extra", "onDisplayValueChange", "value", "emit", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "$event", "\u0275\u0275template", "S_SettingsSecretKeyRow_Component_Conditional_2_Template", "S_SettingsSecretKeyRow_Component_Conditional_3_Template", "S_SettingsSecretKeyRow_Component_Conditional_4_Template", "\u0275\u0275classMap", "\u0275\u0275conditional", "CommonModule", "FormsModule", "DefaultValueAccessor", "NgControlStatus", "NgModel", "encapsulation", "S_SessionPromptComposer_Component", "draftText", "input", "draftTextChange", "output", "isSending", "isSendDisabled", "placeholder", "textareaRows", "sendButtonLabel", "sendingButtonLabel", "sendRequested", "handleKeyDown", "event", "key", "shiftKey", "preventDefault", "emitSendIfAllowed", "handleSendClick", "emit", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c1", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275elementStart", "\u0275\u0275projection", "\u0275\u0275listener", "$event", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275property", "\u0275\u0275textInterpolate1", "CommonModule", "FormsModule", "DefaultValueAccessor", "NgControlStatus", "NgModel", "encapsulation", "S_CollapsibleDisclosure_Component", "summaryLabel", "input", "required", "density", "tone", "summaryRowClass_$", "computed", "d", "t", "base", "summaryLabelClass_$", "chevronSizeClass_$", "bodyWrapperClass_$", "selectors", "hostAttrs", "inputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c1", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275elementEnd", "\u0275\u0275text", "\u0275\u0275projection", "\u0275\u0275advance", "\u0275\u0275classMap", "\u0275\u0275property", "\u0275\u0275textInterpolate", "CommonModule", "NgClass", "encapsulation", "S_MonospaceScrollBlock_Component", "maxHeightPx", "input", "density", "innerClass_$", "computed", "selectors", "hostAttrs", "inputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c0", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275elementStart", "\u0275\u0275projection", "\u0275\u0275elementEnd", "\u0275\u0275classMap", "\u0275\u0275styleProp", "CommonModule", "encapsulation", "S_AgentToolIcon_Pipe", "sanitizer", "constructor", "transform", "toolName", "svg", "getSvgForTool", "bypassSecurityTrustHtml", "name", "\u0275\u0275directiveInject", "DomSanitizer", "pure", "standalone", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "ctx_r0", "toolName", "\u0275\u0275property", "\u0275\u0275pureFunction2", "_c1", "density", "toolDescription", "\u0275\u0275textInterpolate1", "summaryText_r2", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r3", "\u0275\u0275nextContext", "\u0275\u0275resetView", "handleRawInfoClick", "_c2", "_c3", "S_AgentToolSummaryRow_Component", "input", "summaryText", "isPathRtl", "showRawInfoButton", "PATH_DISPLAY_MAX_CHARS", "displaySummary_$", "computed", "raw", "name", "prefix", "stripped", "startsWith", "substring", "length", "slice", "rawInfoClick", "output", "event", "stopPropagation", "emit", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275element", "\u0275\u0275template", "S_AgentToolSummaryRow_Component_Conditional_3_Template", "\u0275\u0275declareLet", "S_AgentToolSummaryRow_Component_Conditional_5_Template", "S_AgentToolSummaryRow_Component_Conditional_6_Template", "S_AgentToolSummaryRow_Component_Conditional_7_Template", "\u0275\u0275classProp", "_c0", "\u0275\u0275pipeBind1", "\u0275\u0275sanitizeHtml", "\u0275\u0275conditional", "\u0275\u0275storeLet", "summaryText_r4", "CommonModule", "NgClass", "S_AgentToolIcon_Pipe", "encapsulation", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "ctx_r0", "changesSummaryLabel", "density", "\u0275\u0275advance", "scrollMaxHeightPx_$", "\u0275\u0275pureFunction2", "_c0", "\u0275\u0275pipeBind1", "expandableContent", "\u0275\u0275sanitizeHtml", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r2", "\u0275\u0275nextContext", "\u0275\u0275resetView", "handlePairedRawClick", "_c1", "_c2", "\u0275\u0275template", "S_AgentToolCallCard_Component_Conditional_3_Conditional_1_Template", "pr_r3", "text", "\u0275\u0275conditional", "rawData", "\u0275\u0275textInterpolate", "S_AgentToolCallCard_Component", "toolName", "input", "summaryText", "toolDescription", "isPathRtl", "showToolRawInfo", "pairedResult", "layout", "toolRawInfoClick", "output", "pairedRawInfoClick", "containerClass_$", "computed", "event", "stopPropagation", "emit", "selectors", "hostAttrs", "inputs", "outputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "S_AgentToolCallCard_Component_Conditional_2_Template", "S_AgentToolCallCard_Component_Conditional_3_Template", "\u0275\u0275classMap", "tmp_8_0", "CommonModule", "NgClass", "S_EditDiff_Pipe", "S_AgentToolSummaryRow_Component", "S_CollapsibleDisclosure_Component", "S_MonospaceScrollBlock_Component", "encapsulation", "Shared_Module", "CommonModule", "S_PasswordInput_Component", "S_SettingsSecretKeyRow_Component", "S_SettingsCollapsiblePanel_Component", "S_ContentState_Component", "S_Modal_Component", "S_CopyButton_Component", "S_StatusBadge_Component", "S_StatTile_Component", "S_PageHeader_Component", "S_FilterBar_Component", "S_SessionShellToolbar_Component", "S_ResizableSessionShellLayout_Component", "S_SessionDetailThreeColumnLayout_Component", "S_SessionPromptComposer_Component", "S_SessionInput_Component", "S_AgentConsoleMessageBubble_Component", "S_CollapsibleDisclosure_Component", "S_MonospaceScrollBlock_Component", "S_AgentToolSummaryRow_Component", "S_AgentToolCallCard_Component", "S_SessionChatColumnLayout_Component", "S_RegistryProviderModelSelect_Component", "S_SessionSelect_Component"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as a}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{b as a}from"./chunk-7R5IXHU5.js";var f=class{static extract(t){if(t.toolName)return t.toolName;if(t.rawData){let s=t.rawData.name??t.rawData.tool_name??t.rawData.last_tool_name;if(typeof s=="string")return s}let o=t.bodyText.indexOf(":");return o>0?t.bodyText.substring(0,o).trim():t.bodyText.trim()}};var b=class e{static DEFAULT_GROUPABLE_TOOLS=new Set(["Read","Bash","Grep","Glob"]);static DEFAULT_MIN_GROUP_SIZE=2;static groupSubAgentItems(t,o){let s=new Map;for(let r=0;r<t.length;r++){let n=t[r];if(n.kind===a.tool&&n.toolName==="Agent"){let i=e.resolveAgentId(n);i&&s.set(i,{item:n,index:r})}}if(!s.size)return t;let c=new Map,d=new Set;for(let r=0;r<t.length;r++){let n=t[r];if(n.parentAgentId&&s.has(n.parentAgentId)){let i=c.get(n.parentAgentId)??[];i.push(n),c.set(n.parentAgentId,i),d.add(r)}}let l=[];for(let r=0;r<t.length;r++){if(d.has(r))continue;let n=t[r];if(n.kind===a.tool&&n.toolName==="Agent"){let i=e.resolveAgentId(n),p=c.get(i)??[],g=[n,...p],I=e.buildSubAgentLabel(n),A=e.extractSubagentType(n),y=e.groupConsecutiveToolItems(g,o);l.push({listKey:e.newListKey(),kind:a.subAgentGroup,bodyText:I,groupItems:y,groupToolName:A||"Agent",rawData:n.rawData})}else l.push(n)}return l}static groupConsecutiveToolItems(t,o){let s=o?.groupableTools??e.DEFAULT_GROUPABLE_TOOLS,c=o?.minGroupSize??e.DEFAULT_MIN_GROUP_SIZE,d=[],l=[],r="",n=()=>{if(!l.length)return;let i=l.filter(p=>p.kind===a.tool).length;i>=c?d.push({listKey:e.newListKey(),kind:a.toolGroup,bodyText:`${r} \xD7 ${i}`,groupItems:l,groupToolName:r}):d.push(...l),l=[],r=""};for(let i of t){if(i.kind===a.tool){let p=f.extract(i);if(s.has(p)){r&&r!==p&&n(),r=p,l.push(i);continue}}if(i.kind===a.toolResult&&l.length){l.push(i);continue}n(),d.push(i)}return n(),d}static resolveAgentId(t){return t.toolCallId?t.toolCallId:t.rawData&&typeof t.rawData.id=="string"?t.rawData.id:""}static extractSubagentType(t){let o=t.rawData?.input;if(!o||typeof o!="object")return"";let s=o.subagent_type;return typeof s=="string"?s:""}static extractDescription(t){let o=t.rawData?.input;if(!o||typeof o!="object")return"";let s=o.description;return typeof s=="string"?s:""}static buildSubAgentLabel(t){let o=e.extractSubagentType(t),s=e.extractDescription(t);return o?`${o}: ${s||"..."}`:s||"Sub-agent"}static newListKey(){return globalThis.crypto.randomUUID()}};var u=function(e){return e.user="user",e.assistant="assistant",e.tool="tool",e.toolResult="tool-result",e.status="status",e.error="error",e.info="info",e.result="result",e.thinking="thinking",e.statusUpdate="status-update",e}(u||{});var h=class e{static fromAssembledMessage(t,o){let s=e.mapRoleToKind(t.messageRole),c=t.toolResult?{text:t.toolResult.text,expandableContent:t.toolResult.expandableContent,rawData:t.toolResult.rawData,isError:t.toolResult.isError}:void 0,d=t.messageRole===u.tool&&t.toolName==="Edit"&&!!t.expandableContent;return{listKey:t.messageKey,kind:s,bodyText:t.bodyText,timestampIso:t.timestamp,toolName:t.toolName,expandableContent:t.expandableContent,pairedResult:c,rawData:t.rawData,subtype:t.subtype,isUserAligned:t.isUserAligned,headerStatusDot:t.headerStatusDot==="error"?"error":void 0,flags:{showCopy:!0,showRawInfo:!0,useEditDiffForExpandable:d},tts:e.buildTts(t,o),toolCallId:t.toolCallId,parentAgentId:t.parentAgentId}}static buildTts(t,o){if(!(!o||!(t.messageRole===u.user||t.messageRole===u.assistant)||!t.bodyText.trim().length))return{messageKey:t.messageKey,sessionId:o.sessionId,role:t.messageRole,content:t.bodyText,timestampIso:t.timestamp,hasTtsAudio:o.cachedKeys.has(t.messageKey)}}static mapRoleToKind(t){switch(t){case u.user:return a.userPrompt;case u.assistant:return a.assistant;case u.tool:return a.tool;case u.toolResult:return a.toolResult;case u.status:return a.status;case u.error:return a.error;case u.info:return a.info;case u.result:return a.result;case u.thinking:return a.thinking;case u.statusUpdate:return a.statusUpdate;default:return a.info}}};export{b as a,h as b};
|
|
2
|
+
//# sourceMappingURL=chunk-3MSKVM2T.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{I as _,K as T,N as D,p as U}from"./chunk-
|
|
1
|
+
import{I as _,K as T,N as D,p as U}from"./chunk-5DVU3XRC.js";import{C,Gb as H,a as b,aa as I,b as j,h as w,k as L,p as g,q as h,wb as d,xb as M,y as F}from"./chunk-TBMJSIBB.js";var y=[{prefix:"/setup",hint:"Setup \u2014 client/src/app/_modules/config/_modules/setup/"},{prefix:"/settings",hint:"Settings \u2014 client/src/app/_modules/config/_modules/settings/"},{prefix:"/model-registry",hint:"Model registry \u2014 client/src/app/_modules/model-registry/"},{prefix:"/embedding-registry",hint:"Embedding registry \u2014 client/src/app/_modules/ai-systems/_modules/embedding-registry/"},{prefix:"/embedding-eval",hint:"Embedding eval \u2014 client/src/app/_modules/embedding-eval/"},{prefix:"/session",hint:"CCAP Session UI \u2014 client/src/app/_modules/session/"},{prefix:"/errors",hint:"Errors list \u2014 client/src/app/_modules/system/_modules/errors/"},{prefix:"/feedback",hint:"Feedback \u2014 client/src/app/_modules/feedback/"},{prefix:"/logs",hint:"Logs \u2014 client/src/app/_modules/dev/_modules/devtools/_modules/logs/"},{prefix:"/host-runtime-mcp",hint:"Host runtime MCP \u2014 client/src/app/_modules/dev/_modules/host-runtime-mcp/"},{prefix:"/voice-notes-poc",hint:"Voice notes POC \u2014 client/src/app/_modules/dev/_modules/poc/voice-notes-poc/"},{prefix:"/master-control-remote-poc",hint:"Master control remote POC \u2014 client/src/app/_modules/dev/_modules/poc/master-control-remote-poc/"},{prefix:"/workflow-settings",hint:"Workflow settings \u2014 client/src/app/_modules/config/_modules/workflow-settings/"},{prefix:"/coordinator",hint:"Coordinator \u2014 client/src/app/_modules/coordinator/"},{prefix:"/dark-office",hint:"Dark Office \u2014 client/src/app/_modules/dark-office/"},{prefix:"/project-management",hint:"Project management \u2014 client/src/app/_modules/project-management/"},{prefix:"/cc-session",hint:"CC Session UI \u2014 client/src/app/_modules/cc-session/"},{prefix:"/mobile-app",hint:"Mobile app \u2014 client/src/app/_modules/dev/_modules/poc/mobile-app/"},{prefix:"/oc-session",hint:"OC Session \u2014 client/src/app/_modules/oc/"},{prefix:"/ca-session",hint:"CA Session \u2014 client/src/app/_modules/ca-session/"},{prefix:"/consultant",hint:"Consultant \u2014 client/src/app/_modules/consultant/"},{prefix:"/agent-instances",hint:"Agent instances \u2014 client/src/app/_modules/agent-instances/"},{prefix:"/terminals",hint:"Terminals \u2014 client/src/app/_modules/dev/_modules/devtools/_modules/terminals/"},{prefix:"/live-development-pipeline",hint:"Live Development Pipeline \u2014 client/src/app/_modules/dev/_modules/devtools/_modules/live-dev-pipeline/"},{prefix:"/system-status",hint:"Legacy route \u2192 redirects to /live-development-pipeline \u2014 client/src/app/_modules/dev/_modules/devtools/_modules/live-dev-pipeline/"},{prefix:"/",hint:"Dashboard (root) \u2014 client/src/app/_modules/dashboard/"}];var q="NG0203",S=class r{static isNg0203Message(n){return n.trim()===q}static buildDiagnostics(n){let t={route:n.context.route,url:n.context.url,userAgent:n.context.userAgent,timestamp:n.context.timestamp},e=r.parseStackFrames(n.stack),i=typeof n.context.route=="string"?n.context.route:"",o=r.resolveRouteFeatureHints(i),s=r.buildStaticGuidance(),l=r.buildToolSteps({clientSnapshot:t,clientSource:n.clientSource,stackFrames:e,routeFeatureHints:o});return{summary:"Angular NG0203: inject() was called outside an injection context (constructor, field initializer, factory, or runInInjectionContext).",clientSource:n.clientSource,clientSnapshot:t,stackFrames:e,routeFeatureHints:o,staticGuidance:s,toolSteps:l}}static formatDiagnosticsAppendix(n){let t;try{t=JSON.stringify(n,null,2)}catch{t='{"ng0203Diagnostics":"JSON stringify failed"}'}return`
|
|
2
2
|
|
|
3
3
|
[NG0203 diagnostics]
|
|
4
4
|
${t}`}static parseStackFrames(n){if(n==null||!n.trim())return[];let t=n.split(`
|
|
@@ -24,4 +24,4 @@ ${String(n)}`}function nt(r){if(r instanceof Error&&typeof r.stack=="string"&&r.
|
|
|
24
24
|
`),s=t!=null&&t.trim().length>0?t.trim():"(no stack)";return`${o}
|
|
25
25
|
|
|
26
26
|
${s}`}buildReportPayloadFromError(t,e){let i=this.getCurrentContext(),o=f.getErrorMessageForDisplay(t),s=r.enrichMessageForReport(t,o),l=f.getStackForReport(t),m=this.buildStackWithContext(l,i),R=r.extractErrorCode(t),E=r.extractAdditionalContent(t);return{message:s,stack:m,source:e??"client-app",errorCode:R,errorAdditionalContent:E,clientContext:i}}static enrichMessageForReport(t,e){if(!(t instanceof d))return e;let i=t.url?`URL: ${t.url}`:"URL: (?)",o=`status: ${t.status}`;return`${e} | ${i} | ${o}`}static extractErrorCode(t){if(t==null||typeof t!="object")return;let e=t;if(typeof e.errorCode=="string"&&e.errorCode.length>0)return e.errorCode;if(typeof e._errorCode=="string"&&e._errorCode.length>0)return e._errorCode}static extractAdditionalContent(t){if(t==null||typeof t!="object")return;let e=t;if(e.additionalContent!=null&&typeof e.additionalContent=="object")return e.additionalContent}buildReportPayloadFromParams(t){let e=this.getCurrentContext(),i=this.buildStackWithContext(t.stack,e);return{message:t.message,stack:i,source:t.source,clientContext:e}}showError(t,e){setTimeout(()=>{try{let i=f.getErrorMessageForDisplay(t),o=N.tryGetShortNotificationAffix({error:t});if(o.length>0&&(i=i+o),!(t instanceof d)&&!(this.settingsGeneral_DS.section_$().form.reportSocketConnectionErrorsToErrorList===!0)&&x.matchesDisplayMessage(i)){t instanceof Error&&p.DyFM_Log.error("[CCAP]",e??"client-app",t);return}let s=this.getCurrentContext(),l;if(k.isNg0600Message(i))try{l=k.buildDiagnostics({stack:f.getStackForReport(t),context:{route:s.route,url:s.url,userAgent:s.userAgent,timestamp:s.timestamp},clientSource:e})}catch(a){p.DyFM_Log.error("CCAP NG0600 diagnostics failed",a)}let m;if(S.isNg0203Message(i))try{m=S.buildDiagnostics({stack:f.getStackForReport(t),context:{route:s.route,url:s.url,userAgent:s.userAgent,timestamp:s.timestamp},clientSource:e})}catch(a){p.DyFM_Log.error("CCAP NG0203 diagnostics failed",a)}let R=e!=null&&e.trim().length>0?e.trim():void 0,E={id:this.nextNotificationId++,error:t,displayMessage:i,timestamp:Date.now(),isDismissing:!1,clientSource:R,ng0600Diagnostics:l,ng0203Diagnostics:m};if(this.errors_$.update(a=>{let u=[...a,E];return u.length>r.maxNotifications?u.slice(u.length-r.maxNotifications):u}),setTimeout(()=>{this.dismissNotification(E.id)},r.autoDismissMs),t instanceof Error&&p.DyFM_Log.error("[CCAP]",e??"client-app",t),!(t instanceof d)){let a=this.buildReportPayloadFromError(t,e??"client-app"),u="";l!=null?u=k.formatDiagnosticsAppendix(l):m!=null&&(u=S.formatDiagnosticsAppendix(m));let X=u.length>0?`${a.stack??""}${u}`:a.stack??"",Y={message:a.message,stack:X,source:a.source,sessionId:a.sessionId,runId:a.runId,errorCode:a.errorCode,errorAdditionalContent:a.errorAdditionalContent,clientContext:a.clientContext};this.errors_AS.reportError(Y).catch(()=>{})}}catch(i){p.DyFM_Log.error("CCAP showError set failed",i)}},0)}selectError(t){let e=this.errors_$().find(i=>i.id===t);e!=null&&this.selectedNotificationForModal_$.set(e)}dismissNotification(t){let i=this.errors_$().find(o=>o.id===t);i==null||i.isDismissing||(this.errors_$.update(o=>o.map(s=>s.id===t?j(b({},s),{isDismissing:!0}):s)),setTimeout(()=>{this.errors_$.update(o=>o.filter(s=>s.id!==t))},r.exitAnimationMs))}dismissSelected(){this.selectedNotificationForModal_$.set(null)}dismissAll(){this.errors_$.set([]),this.selectedNotificationForModal_$.set(null)}copyToClipboard(t){return L(this,null,function*(){return(yield this.tryWriteTextWithNavigatorClipboard(t))?{ok:!0}:this.copyTextWithExecCommand(t)?{ok:!0}:{ok:!1,error:new Error("Clipboard copy failed (secure Clipboard API unavailable or denied, and legacy execCommand copy failed)")}})}tryWriteTextWithNavigatorClipboard(t){return L(this,null,function*(){let e=typeof navigator<"u"?navigator.clipboard:void 0;if(e==null||typeof e.writeText!="function")return!1;try{return yield e.writeText(t),!0}catch{return!1}})}copyTextWithExecCommand(t){if(typeof document>"u"||typeof document.execCommand!="function")return!1;let e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.setAttribute("aria-hidden","true"),e.style.position="fixed",e.style.top="0",e.style.left="0",e.style.width="1px",e.style.height="1px",e.style.padding="0",e.style.margin="0",e.style.border="none",e.style.outline="none",e.style.opacity="0",e.style.pointerEvents="none",document.body.appendChild(e),e.focus(),e.select();let i=t.length;e.setSelectionRange(0,i);let o=!1;try{o=document.execCommand("copy")}catch{o=!1}return e.remove(),o}reportErrorOnly(t){if(!(this.settingsGeneral_DS.section_$().form.reportSocketConnectionErrorsToErrorList===!0)&&(t.source==="client-socket"||x.matchesDisplayMessage(t.message)))return;let i=this.buildReportPayloadFromParams(t);this.errors_AS.reportError(i).catch(()=>{})}static \u0275fac=function(e){return new(e||r)};static \u0275prov=F({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();export{S as a,k as b,c,$ as d,v as e,z as f,N as g,f as h,V as i,Ot as j};
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-4F6OM6PQ.js.map
|
|
@@ -208,5 +208,5 @@ stackLocation: ${this.stackLocation}
|
|
|
208
208
|
DynamoPoll: "${this.name}" pollDo was UNSUCCESSFUL`,error:r})})})),this.running=!0}catch(r){throw new ru.DyFM_Error({message:`DYNAMO ERROR:
|
|
209
209
|
DynamoPoll: startPoll was UNSUCCESSFUL`,error:r})}})}restartPoll(e){try{e?this.startPoll(e):this.startPoll(this.args)}catch(r){throw new ru.DyFM_Error({message:`DYNAMO ERROR:
|
|
210
210
|
DynamoPoll: restartPoll was UNSUCCESSFUL`,error:r})}}stop(){this.poll.unsubscribe(),this.running=!1}end(e){this.poll.unsubscribe(),this.pollEnd?.(e),this.running=!1}};tu.DyFM_Poll=Jc});var ly=f(nu=>{"use strict";Object.defineProperty(nu,"__esModule",{value:!0});nu.DyFM_RangeValue=void 0;var Gc=class t{isRange=!0;from;to;constructor(e,r){if(e?.isRange){this.from=e.from,this.to=e.to;return}else this.from=e,this.to=r??e}constructed(){return!0}newValues(e){this.from=e.from,this.to=e.to}addRange(e){this.from+=e.from,this.to+=e.to}subtractRange(e){this.from-=e.from,this.to-=e.to}multiplyRange(e){this.from*=e.from,this.to*=e.to}divideRange(e){this.from/=e.from,this.to/=e.to}add(e){this.from+=e,this.to+=e}subtract(e){this.from-=e,this.to-=e}multiply(e){this.from*=e,this.to*=e}divide(e){this.from/=e,this.to/=e}clone(){return new t(this.from,this.to)}applyTransform(e){return new t(e(this.from),e(this.to))}toString=this.stringify;stringify(e=!0,r=!0){return r&&this.from===this.to?`${this.from}`:e?`${this.from} - ${this.to}`:`${this.from}-${this.to}`}static reType(e){return new t(e.from,e.to)}static addRange(e,r){return new t(e.from+r.from,e.to+r.to)}static subtractRange(e,r){return new t(e.from-r.from,e.to-r.to)}static multiplyRange(e,r){return new t(e.from*r.from,e.to*r.to)}static divideRange(e,r){return new t(e.from/r.from,e.to/r.to)}static add(e,r){return new t(e.from+r,e.to+r)}static subtract(e,r){return new t(e.from-r,e.to-r)}static multiply(e,r){return new t(e.from*r,e.to*r)}static divide(e,r){return new t(e.from/r,e.to/r)}static isInRange(e,r){return r.from<=e&&e<=r.to}};nu.DyFM_RangeValue=Gc});var fy=f(Ot=>{"use strict";Object.defineProperty(Ot,"__esModule",{value:!0});Ot.DyFM_serverStatus_dataParams=Ot.DyFM_ServerStatus=void 0;var Uk=iu(),Tk=kr(),Hc=class extends Tk.DyFM_Metadata{status;systemName;systemShortCode;clientVersionOk;latestClientVersion;latestClientVersionNumeric;serverVersion;serverNumericVersion;uptime;serverMessage;memoryUsage;cpuUsage;serverConnections;constructor(e){super(e),e&&Object.assign(this,e)}};Ot.DyFM_ServerStatus=Hc;Ot.DyFM_serverStatus_dataParams=new Uk.DyFM_DataModel_Params({dataName:"server_status",properties:{status:{type:"string"},systemName:{type:"string"},systemShortCode:{type:"string"},clientVersionOk:{type:"boolean"},latestClientVersion:{type:"string"},latestClientVersionNumeric:{type:"number"},serverVersion:{type:"string"},serverNumericVersion:{type:"number"},uptime:{type:"number"},serverMessage:{type:"string"},memoryUsage:{type:"object"},cpuUsage:{type:"object"},serverConnections:{type:"object"}}})});var vy=f(ur=>{"use strict";Object.defineProperty(ur,"__esModule",{value:!0});ur.DyFM_API_Input_Type=ur.DyFM_ServerRoute_SettingsBase=ur.DyFM_Endpoint_SettingsBase=void 0;var Wk=Fr(),ou=class{name;type;endpoint;pathParamKeys=[];constructor(e){if(!e.endpoint)throw new Error(`endpoint not setted up for this endpoint (${e.name??(0,Wk.DyFM_getConstructionStackLocation)()})`);e.endpoint.includes("{")&&(console.warn(`using {param} brackets in endpoint definitions will be deprecated...
|
|
211
|
-
use :param instead ({pathParam} --> :pathParam) (${e.name})`),e.endpoint=e.endpoint.replace(/{/g,":").replace(/}/g,"")),Object.assign(this,e),this.pathParamKeys=this.endpoint.split("/").filter(r=>r.startsWith(":")).map(r=>r.replace(":",""))}};ur.DyFM_Endpoint_SettingsBase=ou;var Zc=class extends ou{preProcesses;tasks;simpleTask;constructor(e){super(e),Object.assign(this,e)}};ur.DyFM_ServerRoute_SettingsBase=Zc;var dy=function(t){return t.body="body",t.queryParams="queryParams",t}(dy||(ur.DyFM_API_Input_Type=dy={}))});var hy=f(xe=>{"use strict";Object.defineProperty(xe,"__esModule",{value:!0});xe.DyFM_errors_dataParams=xe.DyFM_Errors=xe.DyFM_errorsFlag=void 0;var Bk=Ds(),Vk=kr();xe.DyFM_errorsFlag="DyFM-ERRORS-OBJECT";var Kc=class extends Vk.DyFM_Metadata{flag=xe.DyFM_errorsFlag;source;issuer;username;versions=[];localTime;region;message;exception;exceptionObj;stackTrace=[];error;count=1;d_error;additionalContent;level;priority;duplications=[];constructor(e){super(e),e&&Object.assign(this,e)}};xe.DyFM_Errors=Kc;xe.DyFM_errors_dataParams=new Bk.DyFM_DataModel_Params({dataName:"errors",properties:{flag:{type:"string"},issuer:{type:"string"},username:{type:"string"},versions:{type:"string[]"},localTime:{type:"string"},region:{type:"string"},message:{type:"string"},exception:{type:"string"},exceptionObj:{type:"any"},stackTrace:{type:"string[]"},error:{type:"any"},count:{type:"number"},d_error:{type:"DyFM_Error"},additionalContent:{type:"any"},level:{type:"DyFM_ErrorLevel"},priority:{type:"number"},duplications:{type:"DyNTS_Error[]"}}})});var yy=f(py=>{"use strict";Object.defineProperty(py,"__esModule",{value:!0})});var my=f(_y=>{"use strict";Object.defineProperty(_y,"__esModule",{value:!0})});var gy=f(by=>{"use strict";Object.defineProperty(by,"__esModule",{value:!0})});var Sy=f(Oy=>{"use strict";Object.defineProperty(Oy,"__esModule",{value:!0})});var qy=f(wy=>{"use strict";Object.defineProperty(wy,"__esModule",{value:!0})});var jy=f(My=>{"use strict";Object.defineProperty(My,"__esModule",{value:!0})});var Ay=f(Py=>{"use strict";Object.defineProperty(Py,"__esModule",{value:!0})});var Ey=f(Fy=>{"use strict";Object.defineProperty(Fy,"__esModule",{value:!0})});var Dy=f(xy=>{"use strict";Object.defineProperty(xy,"__esModule",{value:!0})});var Iy=f(ky=>{"use strict";Object.defineProperty(ky,"__esModule",{value:!0})});var Cy=f(Ly=>{"use strict";Object.defineProperty(Ly,"__esModule",{value:!0})});var Ny=f(Ry=>{"use strict";Object.defineProperty(Ry,"__esModule",{value:!0})});var Uy=f($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0})});var Wy=f(au=>{"use strict";Object.defineProperty(au,"__esModule",{value:!0});au.DyFM_SpecialSearch_Type=void 0;var Ty=function(t){return t.stringListSearchAny="stringListSearchAny",t.stringListSearch="stringListSearch",t.stringListSearchOrdered="stringListSearchOrdered",t}(Ty||(au.DyFM_SpecialSearch_Type=Ty={}))});var Vy=f(By=>{"use strict";Object.defineProperty(By,"__esModule",{value:!0})});var iu=f(O=>{"use strict";Object.defineProperty(O,"__esModule",{value:!0});var S=(hu(),tl(vu));S.__exportStar(pu(),O);S.__exportStar(yu(),O);S.__exportStar(Al(),O);S.__exportStar(Fl(),O);S.__exportStar(wt(),O);S.__exportStar(El(),O);S.__exportStar(Fu(),O);S.__exportStar(Il(),O);S.__exportStar(Du(),O);S.__exportStar(he(),O);S.__exportStar(Ll(),O);S.__exportStar(bn(),O);S.__exportStar(Fr(),O);S.__exportStar(Ru(),O);S.__exportStar(Lu(),O);S.__exportStar(ju(),O);S.__exportStar(Cl(),O);S.__exportStar(Uu(),O);S.__exportStar(vf(),O);S.__exportStar(pf(),O);S.__exportStar(Mt(),O);S.__exportStar(yf(),O);S.__exportStar(ds(),O);S.__exportStar(hs(),O);S.__exportStar(_f(),O);S.__exportStar(mf(),O);S.__exportStar(bf(),O);S.__exportStar(jt(),O);S.__exportStar(ms(),O);S.__exportStar(gf(),O);S.__exportStar(gs(),O);S.__exportStar(qt(),O);S.__exportStar(wf(),O);S.__exportStar(jf(),O);S.__exportStar(Af(),O);S.__exportStar(Ef(),O);S.__exportStar(Ou(),O);S.__exportStar(gu(),O);S.__exportStar(Su(),O);S.__exportStar(Ds(),O);S.__exportStar(ws(),O);S.__exportStar(Bn(),O);S.__exportStar(cy(),O);S.__exportStar(ly(),O);S.__exportStar(fy(),O);S.__exportStar(vy(),O);S.__exportStar(Fs(),O);S.__exportStar(Ms(),O);S.__exportStar(Ps(),O);S.__exportStar(hy(),O);S.__exportStar(kr(),O);S.__exportStar(yy(),O);S.__exportStar(my(),O);S.__exportStar(gy(),O);S.__exportStar(Sy(),O);S.__exportStar(qy(),O);S.__exportStar(jy(),O);S.__exportStar(Ay(),O);S.__exportStar(Ey(),O);S.__exportStar(Dy(),O);S.__exportStar(Iy(),O);S.__exportStar(Cy(),O);S.__exportStar(Ny(),O);S.__exportStar(Uy(),O);S.__exportStar(Wy(),O);S.__exportStar(Vy(),O)});var zy="1.1.3024";var Yy={baseUrl:"MISSING",api:{baseUrl:"MISSING"},production:!1,version:zy};var zk=function(t){return t.openAi="open-ai",t.anthropic="anthropic",t.google="google",t.deepseek="deepseek",t.fdpAi="fdp-ai",t.customLocalAi="custom-local-ai",t}(zk||{});var Yk=function(t){return t.openAi="open-ai",t.localAi="local-ai",t.routing="routing",t}(Yk||{});var Jk=function(t){return t.discord="discord",t.signal="signal",t.teams="teams",t.routing="routing",t}(Jk||{});var uu=function(t){return t.vaultKey="vault-key",t.instanceRegistry="instance-registry",t.general="general",t.llmProviders="llm-providers",t.messageProviders="message-providers",t.modelTesting="model-testing",t.discordAccess="discord-access",t.voice="voice",t.visuals="visuals",t.soul="soul",t.mcp="mcp",t.cliTools="cli-tools",t.secretVault="secret-vault",t.agentEmail="agent-email",t.embedding="embedding",t.rag="rag",t.developer="developer",t.agentRuntime="agent-runtime",t.agentCronJobs="agent-cron-jobs",t.scheduler="scheduler",t.github="github",t.openclawRegistry="openclaw-registry",t.deviceIdentity="device-identity",t.consultant="consultant",t.caAgent="ca-agent",t.darkOfficeLayout="dark-office-layout",t.cluster="cluster",t}(uu||{});var Gk=function(t){return t.openAi="open-ai",t.leonardo="leonardo",t.fdpai="fdpai",t.routing="routing",t}(Gk||{});var Hk=function(t){return t.elevenLabs="elevenlabs",t.fdpai="fdpai",t.routing="routing",t}(Hk||{});var Zk=function(t){return t.pending="pending",t.running="running",t.completed="completed",t.failed="failed",t}(Zk||{});var Kk=function(t){return t.apiKey="api-key",t.credentials="credentials",t}(Kk||{});var Qk=function(t){return t.req="req",t.bug="bug",t.feature="feature",t.improvement="improvement",t.task="task",t.question="question",t.research="research",t}(Qk||{});var Xk=function(t){return t.low="low",t.medium="medium",t.high="high",t.urgent="urgent",t}(Xk||{});var eI=function(t){return t.todo="todo",t.backlog="backlog",t.bugs="bugs",t.changelog="changelog",t.userInput="user-input",t.status="status",t.testErrorReports="test-error-reports",t}(eI||{});var rI=function(t){return t.update="update",t.remove="remove",t}(rI||{});var tI=function(t){return t.e2e="e2e",t.serverUnit="server-unit",t.clientUnit="client-unit",t.cli="cli",t}(tI||{});var nI=function(t){return t.instant="instant",t.agenticAny="agentic-any",t.ask="ask",t.plan="plan",t}(nI||{});var iI=function(t){return t.full="full",t.askOnly="ask-only",t.planOnly="plan-only",t}(iI||{});var oI=function(t){return t.draft="draft",t.promotedUserInput="promoted-user-input",t.promotedBug="promoted-bug",t.discarded="discarded",t}(oI||{});var aI=function(t){return t.userInput="user-input",t.bugReport="bug-report",t.unspecified="unspecified",t}(aI||{});var uI=function(t){return t.easy="easy",t.medium="medium",t.hard="hard",t.komplex="komplex",t}(uI||{});var Qc="mongodb://200.33.0.101:29017";var sI="A k\xE9r\xE9s nem jutott el a szerverig, vagy nem \xE9rkezett v\xE1lasz. Lehets\xE9ges okok: a szerver nem fut vagy m\xE1s porton hallgat, h\xE1l\xF3zati hiba, a kliens megszak\xEDtotta a k\xE9r\xE9st, vagy m\xE1s origin eset\xE9n CORS blokkolja. Ellen\u0151rizd, hogy a szerver fut-e \xE9s a megadott c\xEDm/port helyes.",cI="Szerver 500-as hiba. A v\xE1lasz body \xFCres vagy nem el\xE9rhet\u0151.",su=class t{static isLikelyHtmlErrorPage(e){let r=e.trim();if(!r.startsWith("<"))return!1;let n=r.toLowerCase();return n.includes("<!doctype")||n.includes("<html")||n.includes("<title>")||n.includes("cannot get")||n.includes("cannot post")||n.includes("cannot put")||n.includes("cannot delete")}static getMessageForHtmlHttpErrorBody(e){let r="R\xE9szletek: szerver log vagy DevTools Network tab.";return e===404?`Az endpoint nem tal\xE1lhat\xF3 (HTTP ${e}). Ellen\u0151rizd az API base URL-t \xE9s a szerver route-okat. `+r:`A szerver HTML error oldalt adott vissza (nem JSON API v\xE1lasz), HTTP ${e}. ${r}`}static getHttpErrorMessage(e,r){if(e.status===0)return sI;let n=r!=null&&typeof r=="string"&&r.trim().length>0?r:null;return n==null&&typeof e.error=="string"&&e.error.trim().length>0&&(n=e.error),n!=null&&t.isLikelyHtmlErrorPage(n)?t.getMessageForHtmlHttpErrorBody(e.status):e.status===500&&!(n!=null&&typeof n=="string"&&n.trim().length>0)?cI:n??e.message??e.statusText??`HTTP ${e.status}`}};var Jy=(()=>{class t{settingsBaseUrl=`${Yy.api.baseUrl}/settings`;http=en(ol);getDefaultWorkspace(){return R(this.http.get(`${this.settingsBaseUrl}/default-workspace`))}getSection(r){return R(this.http.get(`${this.settingsBaseUrl}/get-section/${r}`))}getRequiredWarningsSummary(){return R(this.http.get(`${this.settingsBaseUrl}/required-warnings-summary`))}saveSection(r,n){return R(this.http.patch(`${this.settingsBaseUrl}/save-section/${r}`,n))}postProviderAccessAllow(r){return R(this.http.post(`${this.settingsBaseUrl}/provider-access/allow`,r))}getSoulStatus(){return R(this.http.get(`${this.settingsBaseUrl}/soul-status`))}getSoulContent(){return R(this.http.get(`${this.settingsBaseUrl}/soul-content`))}postGenerateSoul(r){return R(this.http.post(`${this.settingsBaseUrl}/generate-soul`,r))}postTestLlmProvider(r){return R(this.http.post(`${this.settingsBaseUrl}/test-llm-provider`,r))}postListLlmModels(r){return R(this.http.post(`${this.settingsBaseUrl}/list-llm-models`,r))}postListEmbeddingModels(r){return R(this.http.post(`${this.settingsBaseUrl}/list-embedding-models`,r))}postTestMessagingProvider(r){return R(this.http.post(`${this.settingsBaseUrl}/test-messaging-provider`,r))}postMcpSync(r){return R(this.http.post(`${this.settingsBaseUrl}/mcp-sync`,r))}postCliHelpProbe(r){return R(this.http.post(`${this.settingsBaseUrl}/cli-help-probe`,r))}postCliHelpSuggest(r){return R(this.http.post(`${this.settingsBaseUrl}/cli-help-suggest`,r))}postTestAgentEmail(){return R(this.http.post(`${this.settingsBaseUrl}/test-agent-email`,{}))}testOpenclawConnection(r){return R(this.http.post(`${this.settingsBaseUrl}/test-openclaw-connection`,r))}pairOpenclawInstance(r){return R(this.http.post(`${this.settingsBaseUrl}/openclaw-registry/${r.instanceId}/pair`,{}))}getClusterDiagnostics(){return R(this.http.get(`${this.settingsBaseUrl}/cluster/diagnostics`))}postClusterReBootstrap(){return R(this.http.post(`${this.settingsBaseUrl}/cluster/re-bootstrap`,{}))}postClusterReconnectWs(){return R(this.http.post(`${this.settingsBaseUrl}/cluster/reconnect-ws`,{}))}postClusterReconnectPeer(r){let n=encodeURIComponent(r);return R(this.http.post(`${this.settingsBaseUrl}/cluster/reconnect-ws/${n}`,{}))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Xt({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Gy=rl(iu());var Xc=rl(iu());var cu=class{_master;get master(){return this._master}setupMaster(e){this._master=e}};var lu=class t extends cu{settings_AS=en(Jy);loading_$=ke(!1);loadError_$=ke(null);saving_$=ke(!1);saveError_$=ke(null);load(){return U(this,null,function*(){this.loading_$.set(!0),this.loadError_$.set(null);try{yield this.doLoad()}catch(e){Xc.DyFM_Error.logSimple(`${this.constructor.name} | Failed to load section`,e);let r=t.getErrorMessage(e);this.loadError_$.set(r)}finally{this.loading_$.set(!1)}})}save(){return U(this,null,function*(){this.saving_$.set(!0),this.saveError_$.set(null);try{let e=this.buildSaveBody(),r=yield this.doSave(e);return r.success?yield this.load():this.saveError_$.set(r.error??"Ment\xE9s sikertelen."),r}catch(e){Xc.DyFM_Error.logSimple(`${this.constructor.name} | Failed to save section`,e);let r=t.getErrorMessage(e);return this.saveError_$.set(r),{success:!1,error:r}}finally{this.saving_$.set(!1)}})}doSave(e){return U(this,null,function*(){return this.settings_AS.saveSection(this.getSectionId(),e)})}static getErrorMessage(e){if(e instanceof il){let r=e.error,n=null;if(r!==null&&typeof r=="object"){let i=r;typeof i.error=="string"?n=i.error:i.error!=null?n=String(i.error):typeof i.message=="string"&&(n=i.message);let o=i.errorCode,a=typeof o=="string"&&o.trim().length>0?o.trim():void 0;a!==void 0&&(n!=null&&n.trim().length>0?n=`${a}: ${n}`:n=a)}else typeof r=="string"&&(n=r);return su.getHttpErrorMessage(e,n)}return e instanceof Error?e.message||"M\u0171velet sikertelen.":String(e)||"M\u0171velet sikertelen."}};var X4=(()=>{class t extends lu{defaultWorkspacePath_$=ke("");section_$=ke({form:{mongodbUri:Qc,useOpenClawPath:!1,defaultPathOverride:"",autoStartWithSystem:!1,useLiveContext:!0,reportSocketConnectionErrorsToErrorList:!1,agenticLoopDebriefEnabled:!1,mobileAutoUpdateEnabled:!1,serverAutoUpdateEnabled:!1,serverAutoUpdateCheckInterval:"daily",ccSessionRunnerGracePeriodSec:null,ccSessionRunnerIdleTimeoutSec:null,ccSessionAutoArchiveScanIntervalSec:null,ccSessionAutoArchiveAgeDays:null,ccSessionAutoArchiveCountThreshold:null},runtime:{}});updateForm(r){this.section_$.update(n=>Sr(oe({},n),{form:oe(oe({},n.form),r)}))}setSection(r){this.section_$.set(r)}updateGeneralForm(r){this.updateForm(r),this.master?.bumpDigest()}getSectionId(){return uu.general}getSection_$(){return this.section_$}loadDefaultWorkspacePath(){return U(this,null,function*(){try{let r=yield this.settings_AS.getDefaultWorkspace();this.defaultWorkspacePath_$.set(r.workspacePath?.trim()??"")}catch(r){Gy.DyFM_Error.logSimple("CCAP_SettingsGeneral_DS | loadDefaultWorkspacePath failed",r),this.defaultWorkspacePath_$.set("")}})}doLoad(){return U(this,null,function*(){let r=yield this.settings_AS.getSection(uu.general);this.setSection({form:{mongodbUri:typeof r.mongodbUri=="string"?r.mongodbUri:Qc,useOpenClawPath:typeof r.useOpenClawPath=="boolean"?r.useOpenClawPath:!1,defaultPathOverride:typeof r.defaultPathOverride=="string"?r.defaultPathOverride:"",autoStartWithSystem:typeof r.autoStartWithSystem=="boolean"?r.autoStartWithSystem:!1,useLiveContext:typeof r.useLiveContext=="boolean"?r.useLiveContext:!0,reportSocketConnectionErrorsToErrorList:typeof r.reportSocketConnectionErrorsToErrorList=="boolean"?r.reportSocketConnectionErrorsToErrorList:!1,agenticLoopDebriefEnabled:typeof r.agenticLoopDebriefEnabled=="boolean"?r.agenticLoopDebriefEnabled:!1,mobileAutoUpdateEnabled:typeof r.mobileAutoUpdateEnabled=="boolean"?r.mobileAutoUpdateEnabled:!1,serverAutoUpdateEnabled:typeof r.serverAutoUpdateEnabled=="boolean"?r.serverAutoUpdateEnabled:!1,serverAutoUpdateCheckInterval:r.serverAutoUpdateCheckInterval==="daily"?"daily":r.serverAutoUpdateCheckInterval==="weekly"?"weekly":"daily",ccSessionRunnerGracePeriodSec:typeof r.ccSessionRunnerGracePeriodSec=="number"&&r.ccSessionRunnerGracePeriodSec>0?r.ccSessionRunnerGracePeriodSec:null,ccSessionRunnerIdleTimeoutSec:typeof r.ccSessionRunnerIdleTimeoutSec=="number"&&r.ccSessionRunnerIdleTimeoutSec>0?r.ccSessionRunnerIdleTimeoutSec:null,ccSessionAutoArchiveScanIntervalSec:typeof r.ccSessionAutoArchiveScanIntervalSec=="number"&&r.ccSessionAutoArchiveScanIntervalSec>0?r.ccSessionAutoArchiveScanIntervalSec:null,ccSessionAutoArchiveAgeDays:typeof r.ccSessionAutoArchiveAgeDays=="number"&&r.ccSessionAutoArchiveAgeDays>0?r.ccSessionAutoArchiveAgeDays:null,ccSessionAutoArchiveCountThreshold:typeof r.ccSessionAutoArchiveCountThreshold=="number"&&r.ccSessionAutoArchiveCountThreshold>0?r.ccSessionAutoArchiveCountThreshold:null},runtime:{}})})}buildSaveBody(){let r=this.section_$().form;return{mongodbUri:r.mongodbUri,useOpenClawPath:r.useOpenClawPath,defaultPathOverride:r.defaultPathOverride,autoStartWithSystem:r.autoStartWithSystem,useLiveContext:r.useLiveContext,reportSocketConnectionErrorsToErrorList:r.reportSocketConnectionErrorsToErrorList,agenticLoopDebriefEnabled:r.agenticLoopDebriefEnabled,mobileAutoUpdateEnabled:r.mobileAutoUpdateEnabled,serverAutoUpdateEnabled:r.serverAutoUpdateEnabled,serverAutoUpdateCheckInterval:r.serverAutoUpdateCheckInterval,ccSessionRunnerGracePeriodSec:r.ccSessionRunnerGracePeriodSec??void 0,ccSessionRunnerIdleTimeoutSec:r.ccSessionRunnerIdleTimeoutSec??void 0,ccSessionAutoArchiveScanIntervalSec:r.ccSessionAutoArchiveScanIntervalSec??void 0,ccSessionAutoArchiveAgeDays:r.ccSessionAutoArchiveAgeDays??void 0,ccSessionAutoArchiveCountThreshold:r.ccSessionAutoArchiveCountThreshold??void 0}}static \u0275fac=(()=>{let r;return function(i){return(r||(r=nl(t)))(i||t)}})();static \u0275prov=Xt({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();export{vu as a,hu as b,Al as c,wt as d,he as e,El as f,Fu as g,bn as h,Fr as i,ds as j,kr as k,Bn as l,Ds as m,uy as n,ly as o,iu as p,zk as q,Yk as r,Jk as s,uu as t,Gk as u,Hk as v,Zk as w,Kk as x,Qk as y,oI as z,aI as A,uI as B,Xk as C,eI as D,rI as E,tI as F,nI as G,iI as H,Yy as I,Qc as J,su as K,Jy as L,lu as M,X4 as N};
|
|
212
|
-
//# sourceMappingURL=chunk-
|
|
211
|
+
use :param instead ({pathParam} --> :pathParam) (${e.name})`),e.endpoint=e.endpoint.replace(/{/g,":").replace(/}/g,"")),Object.assign(this,e),this.pathParamKeys=this.endpoint.split("/").filter(r=>r.startsWith(":")).map(r=>r.replace(":",""))}};ur.DyFM_Endpoint_SettingsBase=ou;var Zc=class extends ou{preProcesses;tasks;simpleTask;constructor(e){super(e),Object.assign(this,e)}};ur.DyFM_ServerRoute_SettingsBase=Zc;var dy=function(t){return t.body="body",t.queryParams="queryParams",t}(dy||(ur.DyFM_API_Input_Type=dy={}))});var hy=f(xe=>{"use strict";Object.defineProperty(xe,"__esModule",{value:!0});xe.DyFM_errors_dataParams=xe.DyFM_Errors=xe.DyFM_errorsFlag=void 0;var Bk=Ds(),Vk=kr();xe.DyFM_errorsFlag="DyFM-ERRORS-OBJECT";var Kc=class extends Vk.DyFM_Metadata{flag=xe.DyFM_errorsFlag;source;issuer;username;versions=[];localTime;region;message;exception;exceptionObj;stackTrace=[];error;count=1;d_error;additionalContent;level;priority;duplications=[];constructor(e){super(e),e&&Object.assign(this,e)}};xe.DyFM_Errors=Kc;xe.DyFM_errors_dataParams=new Bk.DyFM_DataModel_Params({dataName:"errors",properties:{flag:{type:"string"},issuer:{type:"string"},username:{type:"string"},versions:{type:"string[]"},localTime:{type:"string"},region:{type:"string"},message:{type:"string"},exception:{type:"string"},exceptionObj:{type:"any"},stackTrace:{type:"string[]"},error:{type:"any"},count:{type:"number"},d_error:{type:"DyFM_Error"},additionalContent:{type:"any"},level:{type:"DyFM_ErrorLevel"},priority:{type:"number"},duplications:{type:"DyNTS_Error[]"}}})});var yy=f(py=>{"use strict";Object.defineProperty(py,"__esModule",{value:!0})});var my=f(_y=>{"use strict";Object.defineProperty(_y,"__esModule",{value:!0})});var gy=f(by=>{"use strict";Object.defineProperty(by,"__esModule",{value:!0})});var Sy=f(Oy=>{"use strict";Object.defineProperty(Oy,"__esModule",{value:!0})});var qy=f(wy=>{"use strict";Object.defineProperty(wy,"__esModule",{value:!0})});var jy=f(My=>{"use strict";Object.defineProperty(My,"__esModule",{value:!0})});var Ay=f(Py=>{"use strict";Object.defineProperty(Py,"__esModule",{value:!0})});var Ey=f(Fy=>{"use strict";Object.defineProperty(Fy,"__esModule",{value:!0})});var Dy=f(xy=>{"use strict";Object.defineProperty(xy,"__esModule",{value:!0})});var Iy=f(ky=>{"use strict";Object.defineProperty(ky,"__esModule",{value:!0})});var Cy=f(Ly=>{"use strict";Object.defineProperty(Ly,"__esModule",{value:!0})});var Ny=f(Ry=>{"use strict";Object.defineProperty(Ry,"__esModule",{value:!0})});var Uy=f($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0})});var Wy=f(au=>{"use strict";Object.defineProperty(au,"__esModule",{value:!0});au.DyFM_SpecialSearch_Type=void 0;var Ty=function(t){return t.stringListSearchAny="stringListSearchAny",t.stringListSearch="stringListSearch",t.stringListSearchOrdered="stringListSearchOrdered",t}(Ty||(au.DyFM_SpecialSearch_Type=Ty={}))});var Vy=f(By=>{"use strict";Object.defineProperty(By,"__esModule",{value:!0})});var iu=f(O=>{"use strict";Object.defineProperty(O,"__esModule",{value:!0});var S=(hu(),tl(vu));S.__exportStar(pu(),O);S.__exportStar(yu(),O);S.__exportStar(Al(),O);S.__exportStar(Fl(),O);S.__exportStar(wt(),O);S.__exportStar(El(),O);S.__exportStar(Fu(),O);S.__exportStar(Il(),O);S.__exportStar(Du(),O);S.__exportStar(he(),O);S.__exportStar(Ll(),O);S.__exportStar(bn(),O);S.__exportStar(Fr(),O);S.__exportStar(Ru(),O);S.__exportStar(Lu(),O);S.__exportStar(ju(),O);S.__exportStar(Cl(),O);S.__exportStar(Uu(),O);S.__exportStar(vf(),O);S.__exportStar(pf(),O);S.__exportStar(Mt(),O);S.__exportStar(yf(),O);S.__exportStar(ds(),O);S.__exportStar(hs(),O);S.__exportStar(_f(),O);S.__exportStar(mf(),O);S.__exportStar(bf(),O);S.__exportStar(jt(),O);S.__exportStar(ms(),O);S.__exportStar(gf(),O);S.__exportStar(gs(),O);S.__exportStar(qt(),O);S.__exportStar(wf(),O);S.__exportStar(jf(),O);S.__exportStar(Af(),O);S.__exportStar(Ef(),O);S.__exportStar(Ou(),O);S.__exportStar(gu(),O);S.__exportStar(Su(),O);S.__exportStar(Ds(),O);S.__exportStar(ws(),O);S.__exportStar(Bn(),O);S.__exportStar(cy(),O);S.__exportStar(ly(),O);S.__exportStar(fy(),O);S.__exportStar(vy(),O);S.__exportStar(Fs(),O);S.__exportStar(Ms(),O);S.__exportStar(Ps(),O);S.__exportStar(hy(),O);S.__exportStar(kr(),O);S.__exportStar(yy(),O);S.__exportStar(my(),O);S.__exportStar(gy(),O);S.__exportStar(Sy(),O);S.__exportStar(qy(),O);S.__exportStar(jy(),O);S.__exportStar(Ay(),O);S.__exportStar(Ey(),O);S.__exportStar(Dy(),O);S.__exportStar(Iy(),O);S.__exportStar(Cy(),O);S.__exportStar(Ny(),O);S.__exportStar(Uy(),O);S.__exportStar(Wy(),O);S.__exportStar(Vy(),O)});var zy="1.1.3034";var Yy={baseUrl:"MISSING",api:{baseUrl:"MISSING"},production:!1,version:zy};var zk=function(t){return t.openAi="open-ai",t.anthropic="anthropic",t.google="google",t.deepseek="deepseek",t.fdpAi="fdp-ai",t.customLocalAi="custom-local-ai",t}(zk||{});var Yk=function(t){return t.openAi="open-ai",t.localAi="local-ai",t.routing="routing",t}(Yk||{});var Jk=function(t){return t.discord="discord",t.signal="signal",t.teams="teams",t.routing="routing",t}(Jk||{});var uu=function(t){return t.vaultKey="vault-key",t.instanceRegistry="instance-registry",t.general="general",t.llmProviders="llm-providers",t.messageProviders="message-providers",t.modelTesting="model-testing",t.discordAccess="discord-access",t.voice="voice",t.visuals="visuals",t.soul="soul",t.mcp="mcp",t.cliTools="cli-tools",t.secretVault="secret-vault",t.agentEmail="agent-email",t.embedding="embedding",t.rag="rag",t.developer="developer",t.agentRuntime="agent-runtime",t.agentCronJobs="agent-cron-jobs",t.scheduler="scheduler",t.github="github",t.openclawRegistry="openclaw-registry",t.deviceIdentity="device-identity",t.consultant="consultant",t.caAgent="ca-agent",t.darkOfficeLayout="dark-office-layout",t.cluster="cluster",t}(uu||{});var Gk=function(t){return t.openAi="open-ai",t.leonardo="leonardo",t.fdpai="fdpai",t.routing="routing",t}(Gk||{});var Hk=function(t){return t.elevenLabs="elevenlabs",t.fdpai="fdpai",t.routing="routing",t}(Hk||{});var Zk=function(t){return t.pending="pending",t.running="running",t.completed="completed",t.failed="failed",t}(Zk||{});var Kk=function(t){return t.apiKey="api-key",t.credentials="credentials",t}(Kk||{});var Qk=function(t){return t.req="req",t.bug="bug",t.feature="feature",t.improvement="improvement",t.task="task",t.question="question",t.research="research",t}(Qk||{});var Xk=function(t){return t.low="low",t.medium="medium",t.high="high",t.urgent="urgent",t}(Xk||{});var eI=function(t){return t.todo="todo",t.backlog="backlog",t.bugs="bugs",t.changelog="changelog",t.userInput="user-input",t.status="status",t.testErrorReports="test-error-reports",t}(eI||{});var rI=function(t){return t.update="update",t.remove="remove",t}(rI||{});var tI=function(t){return t.e2e="e2e",t.serverUnit="server-unit",t.clientUnit="client-unit",t.cli="cli",t}(tI||{});var nI=function(t){return t.instant="instant",t.agenticAny="agentic-any",t.ask="ask",t.plan="plan",t}(nI||{});var iI=function(t){return t.full="full",t.askOnly="ask-only",t.planOnly="plan-only",t}(iI||{});var oI=function(t){return t.draft="draft",t.promotedUserInput="promoted-user-input",t.promotedBug="promoted-bug",t.discarded="discarded",t}(oI||{});var aI=function(t){return t.userInput="user-input",t.bugReport="bug-report",t.unspecified="unspecified",t}(aI||{});var uI=function(t){return t.easy="easy",t.medium="medium",t.hard="hard",t.komplex="komplex",t}(uI||{});var Qc="mongodb://200.33.0.101:29017";var sI="A k\xE9r\xE9s nem jutott el a szerverig, vagy nem \xE9rkezett v\xE1lasz. Lehets\xE9ges okok: a szerver nem fut vagy m\xE1s porton hallgat, h\xE1l\xF3zati hiba, a kliens megszak\xEDtotta a k\xE9r\xE9st, vagy m\xE1s origin eset\xE9n CORS blokkolja. Ellen\u0151rizd, hogy a szerver fut-e \xE9s a megadott c\xEDm/port helyes.",cI="Szerver 500-as hiba. A v\xE1lasz body \xFCres vagy nem el\xE9rhet\u0151.",su=class t{static isLikelyHtmlErrorPage(e){let r=e.trim();if(!r.startsWith("<"))return!1;let n=r.toLowerCase();return n.includes("<!doctype")||n.includes("<html")||n.includes("<title>")||n.includes("cannot get")||n.includes("cannot post")||n.includes("cannot put")||n.includes("cannot delete")}static getMessageForHtmlHttpErrorBody(e){let r="R\xE9szletek: szerver log vagy DevTools Network tab.";return e===404?`Az endpoint nem tal\xE1lhat\xF3 (HTTP ${e}). Ellen\u0151rizd az API base URL-t \xE9s a szerver route-okat. `+r:`A szerver HTML error oldalt adott vissza (nem JSON API v\xE1lasz), HTTP ${e}. ${r}`}static getHttpErrorMessage(e,r){if(e.status===0)return sI;let n=r!=null&&typeof r=="string"&&r.trim().length>0?r:null;return n==null&&typeof e.error=="string"&&e.error.trim().length>0&&(n=e.error),n!=null&&t.isLikelyHtmlErrorPage(n)?t.getMessageForHtmlHttpErrorBody(e.status):e.status===500&&!(n!=null&&typeof n=="string"&&n.trim().length>0)?cI:n??e.message??e.statusText??`HTTP ${e.status}`}};var Jy=(()=>{class t{settingsBaseUrl=`${Yy.api.baseUrl}/settings`;http=en(ol);getDefaultWorkspace(){return R(this.http.get(`${this.settingsBaseUrl}/default-workspace`))}getSection(r){return R(this.http.get(`${this.settingsBaseUrl}/get-section/${r}`))}getRequiredWarningsSummary(){return R(this.http.get(`${this.settingsBaseUrl}/required-warnings-summary`))}saveSection(r,n){return R(this.http.patch(`${this.settingsBaseUrl}/save-section/${r}`,n))}postProviderAccessAllow(r){return R(this.http.post(`${this.settingsBaseUrl}/provider-access/allow`,r))}getSoulStatus(){return R(this.http.get(`${this.settingsBaseUrl}/soul-status`))}getSoulContent(){return R(this.http.get(`${this.settingsBaseUrl}/soul-content`))}postGenerateSoul(r){return R(this.http.post(`${this.settingsBaseUrl}/generate-soul`,r))}postTestLlmProvider(r){return R(this.http.post(`${this.settingsBaseUrl}/test-llm-provider`,r))}postListLlmModels(r){return R(this.http.post(`${this.settingsBaseUrl}/list-llm-models`,r))}postListEmbeddingModels(r){return R(this.http.post(`${this.settingsBaseUrl}/list-embedding-models`,r))}postTestMessagingProvider(r){return R(this.http.post(`${this.settingsBaseUrl}/test-messaging-provider`,r))}postMcpSync(r){return R(this.http.post(`${this.settingsBaseUrl}/mcp-sync`,r))}postCliHelpProbe(r){return R(this.http.post(`${this.settingsBaseUrl}/cli-help-probe`,r))}postCliHelpSuggest(r){return R(this.http.post(`${this.settingsBaseUrl}/cli-help-suggest`,r))}postTestAgentEmail(){return R(this.http.post(`${this.settingsBaseUrl}/test-agent-email`,{}))}testOpenclawConnection(r){return R(this.http.post(`${this.settingsBaseUrl}/test-openclaw-connection`,r))}pairOpenclawInstance(r){return R(this.http.post(`${this.settingsBaseUrl}/openclaw-registry/${r.instanceId}/pair`,{}))}getClusterDiagnostics(){return R(this.http.get(`${this.settingsBaseUrl}/cluster/diagnostics`))}postClusterReBootstrap(){return R(this.http.post(`${this.settingsBaseUrl}/cluster/re-bootstrap`,{}))}postClusterReconnectWs(){return R(this.http.post(`${this.settingsBaseUrl}/cluster/reconnect-ws`,{}))}postClusterReconnectPeer(r){let n=encodeURIComponent(r);return R(this.http.post(`${this.settingsBaseUrl}/cluster/reconnect-ws/${n}`,{}))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Xt({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Gy=rl(iu());var Xc=rl(iu());var cu=class{_master;get master(){return this._master}setupMaster(e){this._master=e}};var lu=class t extends cu{settings_AS=en(Jy);loading_$=ke(!1);loadError_$=ke(null);saving_$=ke(!1);saveError_$=ke(null);load(){return U(this,null,function*(){this.loading_$.set(!0),this.loadError_$.set(null);try{yield this.doLoad()}catch(e){Xc.DyFM_Error.logSimple(`${this.constructor.name} | Failed to load section`,e);let r=t.getErrorMessage(e);this.loadError_$.set(r)}finally{this.loading_$.set(!1)}})}save(){return U(this,null,function*(){this.saving_$.set(!0),this.saveError_$.set(null);try{let e=this.buildSaveBody(),r=yield this.doSave(e);return r.success?yield this.load():this.saveError_$.set(r.error??"Ment\xE9s sikertelen."),r}catch(e){Xc.DyFM_Error.logSimple(`${this.constructor.name} | Failed to save section`,e);let r=t.getErrorMessage(e);return this.saveError_$.set(r),{success:!1,error:r}}finally{this.saving_$.set(!1)}})}doSave(e){return U(this,null,function*(){return this.settings_AS.saveSection(this.getSectionId(),e)})}static getErrorMessage(e){if(e instanceof il){let r=e.error,n=null;if(r!==null&&typeof r=="object"){let i=r;typeof i.error=="string"?n=i.error:i.error!=null?n=String(i.error):typeof i.message=="string"&&(n=i.message);let o=i.errorCode,a=typeof o=="string"&&o.trim().length>0?o.trim():void 0;a!==void 0&&(n!=null&&n.trim().length>0?n=`${a}: ${n}`:n=a)}else typeof r=="string"&&(n=r);return su.getHttpErrorMessage(e,n)}return e instanceof Error?e.message||"M\u0171velet sikertelen.":String(e)||"M\u0171velet sikertelen."}};var X4=(()=>{class t extends lu{defaultWorkspacePath_$=ke("");section_$=ke({form:{mongodbUri:Qc,useOpenClawPath:!1,defaultPathOverride:"",autoStartWithSystem:!1,useLiveContext:!0,reportSocketConnectionErrorsToErrorList:!1,agenticLoopDebriefEnabled:!1,mobileAutoUpdateEnabled:!1,serverAutoUpdateEnabled:!1,serverAutoUpdateCheckInterval:"daily",ccSessionRunnerGracePeriodSec:null,ccSessionRunnerIdleTimeoutSec:null,ccSessionAutoArchiveScanIntervalSec:null,ccSessionAutoArchiveAgeDays:null,ccSessionAutoArchiveCountThreshold:null},runtime:{}});updateForm(r){this.section_$.update(n=>Sr(oe({},n),{form:oe(oe({},n.form),r)}))}setSection(r){this.section_$.set(r)}updateGeneralForm(r){this.updateForm(r),this.master?.bumpDigest()}getSectionId(){return uu.general}getSection_$(){return this.section_$}loadDefaultWorkspacePath(){return U(this,null,function*(){try{let r=yield this.settings_AS.getDefaultWorkspace();this.defaultWorkspacePath_$.set(r.workspacePath?.trim()??"")}catch(r){Gy.DyFM_Error.logSimple("CCAP_SettingsGeneral_DS | loadDefaultWorkspacePath failed",r),this.defaultWorkspacePath_$.set("")}})}doLoad(){return U(this,null,function*(){let r=yield this.settings_AS.getSection(uu.general);this.setSection({form:{mongodbUri:typeof r.mongodbUri=="string"?r.mongodbUri:Qc,useOpenClawPath:typeof r.useOpenClawPath=="boolean"?r.useOpenClawPath:!1,defaultPathOverride:typeof r.defaultPathOverride=="string"?r.defaultPathOverride:"",autoStartWithSystem:typeof r.autoStartWithSystem=="boolean"?r.autoStartWithSystem:!1,useLiveContext:typeof r.useLiveContext=="boolean"?r.useLiveContext:!0,reportSocketConnectionErrorsToErrorList:typeof r.reportSocketConnectionErrorsToErrorList=="boolean"?r.reportSocketConnectionErrorsToErrorList:!1,agenticLoopDebriefEnabled:typeof r.agenticLoopDebriefEnabled=="boolean"?r.agenticLoopDebriefEnabled:!1,mobileAutoUpdateEnabled:typeof r.mobileAutoUpdateEnabled=="boolean"?r.mobileAutoUpdateEnabled:!1,serverAutoUpdateEnabled:typeof r.serverAutoUpdateEnabled=="boolean"?r.serverAutoUpdateEnabled:!1,serverAutoUpdateCheckInterval:r.serverAutoUpdateCheckInterval==="daily"?"daily":r.serverAutoUpdateCheckInterval==="weekly"?"weekly":"daily",ccSessionRunnerGracePeriodSec:typeof r.ccSessionRunnerGracePeriodSec=="number"&&r.ccSessionRunnerGracePeriodSec>0?r.ccSessionRunnerGracePeriodSec:null,ccSessionRunnerIdleTimeoutSec:typeof r.ccSessionRunnerIdleTimeoutSec=="number"&&r.ccSessionRunnerIdleTimeoutSec>0?r.ccSessionRunnerIdleTimeoutSec:null,ccSessionAutoArchiveScanIntervalSec:typeof r.ccSessionAutoArchiveScanIntervalSec=="number"&&r.ccSessionAutoArchiveScanIntervalSec>0?r.ccSessionAutoArchiveScanIntervalSec:null,ccSessionAutoArchiveAgeDays:typeof r.ccSessionAutoArchiveAgeDays=="number"&&r.ccSessionAutoArchiveAgeDays>0?r.ccSessionAutoArchiveAgeDays:null,ccSessionAutoArchiveCountThreshold:typeof r.ccSessionAutoArchiveCountThreshold=="number"&&r.ccSessionAutoArchiveCountThreshold>0?r.ccSessionAutoArchiveCountThreshold:null},runtime:{}})})}buildSaveBody(){let r=this.section_$().form;return{mongodbUri:r.mongodbUri,useOpenClawPath:r.useOpenClawPath,defaultPathOverride:r.defaultPathOverride,autoStartWithSystem:r.autoStartWithSystem,useLiveContext:r.useLiveContext,reportSocketConnectionErrorsToErrorList:r.reportSocketConnectionErrorsToErrorList,agenticLoopDebriefEnabled:r.agenticLoopDebriefEnabled,mobileAutoUpdateEnabled:r.mobileAutoUpdateEnabled,serverAutoUpdateEnabled:r.serverAutoUpdateEnabled,serverAutoUpdateCheckInterval:r.serverAutoUpdateCheckInterval,ccSessionRunnerGracePeriodSec:r.ccSessionRunnerGracePeriodSec??void 0,ccSessionRunnerIdleTimeoutSec:r.ccSessionRunnerIdleTimeoutSec??void 0,ccSessionAutoArchiveScanIntervalSec:r.ccSessionAutoArchiveScanIntervalSec??void 0,ccSessionAutoArchiveAgeDays:r.ccSessionAutoArchiveAgeDays??void 0,ccSessionAutoArchiveCountThreshold:r.ccSessionAutoArchiveCountThreshold??void 0}}static \u0275fac=(()=>{let r;return function(i){return(r||(r=nl(t)))(i||t)}})();static \u0275prov=Xt({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();export{vu as a,hu as b,Al as c,wt as d,he as e,El as f,Fu as g,bn as h,Fr as i,ds as j,kr as k,Bn as l,Ds as m,uy as n,ly as o,iu as p,zk as q,Yk as r,Jk as s,uu as t,Gk as u,Hk as v,Zk as w,Kk as x,Qk as y,oI as z,aI as A,uI as B,Xk as C,eI as D,rI as E,tI as F,nI as G,iI as H,Yy as I,Qc as J,su as K,Jy as L,lu as M,X4 as N};
|
|
212
|
+
//# sourceMappingURL=chunk-5DVU3XRC.js.map
|