@futdevpro/ccap 1.1.3107 → 1.1.3130
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/cli/build/_commands/update.spec.d.ts +17 -0
- package/cli/build/_commands/update.spec.d.ts.map +1 -0
- package/cli/build/_commands/update.spec.js +147 -0
- package/cli/build/_commands/update.spec.js.map +1 -0
- package/client-dist/{agent-instances.module-X7PTNXBZ.js → agent-instances.module-KE64PSK7.js} +2 -2
- package/client-dist/ca.module-JJZX5YKQ.js +5 -0
- package/client-dist/{ca.module-AHEFH36G.js.map → ca.module-JJZX5YKQ.js.map} +3 -3
- package/client-dist/{cc-usage-dashboard.component-SCGVU2CH.js → cc-usage-dashboard.component-ODAXHZHU.js} +2 -2
- package/client-dist/{cc.module-HRE2USKF.js → cc.module-4MS5M5XW.js} +2 -2
- package/client-dist/{chunk-EXMVCGPU.js → chunk-36BCBGXK.js} +2 -2
- package/client-dist/{chunk-F5YM4CH2.js → chunk-3HLEHUE4.js} +2 -2
- package/client-dist/{chunk-TAHRBJO4.js → chunk-4CLON3UX.js} +2 -2
- package/client-dist/{chunk-EDPWSLEJ.js → chunk-4O4UDIWG.js} +2 -2
- package/client-dist/{chunk-V2FE4UOS.js → chunk-5E5W3DFK.js} +2 -2
- package/client-dist/{chunk-5F7AZMBN.js → chunk-5KQZGU6O.js} +2 -2
- package/client-dist/{chunk-GNGMQVNJ.js → chunk-5XJR5EAR.js} +2 -2
- package/client-dist/chunk-7TYUDNTP.js +9 -0
- package/client-dist/chunk-7TYUDNTP.js.map +7 -0
- package/client-dist/{chunk-H4KPNX6Y.js → chunk-C2ZXKTHA.js} +2 -2
- package/client-dist/{chunk-44B4MFA2.js → chunk-CAUXU2ZC.js} +2 -2
- package/client-dist/{chunk-U5G7I3PM.js → chunk-CBMKN4SJ.js} +2 -2
- package/client-dist/{chunk-V3MC6IHV.js → chunk-CF3BLCVD.js} +2 -2
- package/client-dist/{chunk-BR2OEH55.js → chunk-CIO2T2KX.js} +2 -2
- package/client-dist/{chunk-VVP5QPE2.js → chunk-CUA2OS6E.js} +2 -2
- package/client-dist/{chunk-HVEG7TDX.js → chunk-DB33SOJ3.js} +2 -2
- package/client-dist/{chunk-3MGMSCZJ.js → chunk-EC4VBEIV.js} +2 -2
- package/client-dist/{chunk-VPICQREQ.js → chunk-EFH7L2PM.js} +2 -2
- package/client-dist/{chunk-M7XR4RHP.js → chunk-EG7MEKVY.js} +2 -2
- package/client-dist/{chunk-SNX7UMSC.js → chunk-EGWEYXZW.js} +2 -2
- package/client-dist/{chunk-TMZGSFBR.js → chunk-EVYE6YII.js} +2 -2
- package/client-dist/{chunk-M744VRDZ.js → chunk-FBF7RSNU.js} +2 -2
- package/client-dist/{chunk-I2YW2Q64.js → chunk-FBZDKQ4K.js} +2 -2
- package/client-dist/{chunk-LJ75BUDR.js → chunk-FQL5FQFW.js} +2 -2
- package/client-dist/{chunk-IJNLP24O.js → chunk-GOPRHQFC.js} +2 -2
- package/client-dist/{chunk-SNGOTGBU.js → chunk-HK2TYWE7.js} +2 -2
- package/client-dist/{chunk-6ZYILL36.js → chunk-HSO5WM67.js} +2 -2
- package/client-dist/{chunk-SIEB5UUT.js → chunk-ISPLVKBM.js} +2 -2
- package/client-dist/{chunk-GXH7TFVW.js → chunk-JWXM6QMF.js} +2 -2
- package/client-dist/{chunk-H4QUFYYO.js → chunk-KC7UN4VT.js} +2 -2
- package/client-dist/{chunk-ODUTF4DP.js → chunk-KNTOPF7C.js} +2 -2
- package/client-dist/{chunk-PCZCJ5US.js → chunk-L4CLV44N.js} +2 -2
- package/client-dist/{chunk-AIFKGWGZ.js → chunk-LBG3XMYU.js} +2 -2
- package/client-dist/{chunk-NV7A2WEG.js → chunk-NBH53JWT.js} +2 -2
- package/client-dist/{chunk-725PEGTE.js → chunk-NHKJYR4C.js} +2 -2
- package/client-dist/{chunk-IUYZZJPL.js → chunk-NIMLWXGM.js} +2 -2
- package/client-dist/{chunk-YKD7EBRH.js → chunk-O6KFG5LW.js} +2 -2
- package/client-dist/{chunk-7BGF556S.js → chunk-PR5VADUQ.js} +2 -2
- package/client-dist/{chunk-ADOCMVHI.js → chunk-QHZI4F2F.js} +2 -2
- package/client-dist/{chunk-HBLLM4VT.js → chunk-QNLMNKP4.js} +2 -2
- package/client-dist/{chunk-3VGB3L3K.js → chunk-R2C7U5TP.js} +2 -2
- package/client-dist/{chunk-QMSWKCFN.js → chunk-RLXJG6ZF.js} +2 -2
- package/client-dist/{chunk-276XBODW.js → chunk-RNXGBUU3.js} +7 -7
- package/client-dist/chunk-RNXGBUU3.js.map +7 -0
- package/client-dist/{chunk-SREAQBYG.js → chunk-S5PG5OUU.js} +2 -2
- package/client-dist/{chunk-772D5UCV.js → chunk-SWJLLCFC.js} +2 -2
- package/client-dist/{chunk-N5BAPGOD.js → chunk-TCDXJTTX.js} +2 -2
- package/client-dist/{chunk-HRRC3NLD.js → chunk-U6B7OBXY.js} +2 -2
- package/client-dist/{chunk-UT4EWNR6.js → chunk-URXIWUNP.js} +2 -2
- package/client-dist/{chunk-4Y3YU4VV.js → chunk-UTJQVE4E.js} +2 -2
- package/client-dist/{chunk-DBG24LL5.js → chunk-V6QEYU4X.js} +2 -2
- package/client-dist/{chunk-IJZYOGOA.js → chunk-VL2H6COO.js} +2 -2
- package/client-dist/{chunk-RQ6URMIS.js → chunk-VORYOEWH.js} +2 -2
- package/client-dist/{chunk-P5R6KXHA.js → chunk-VU76JPZM.js} +2 -2
- package/client-dist/{chunk-Q6LBW5ZA.js → chunk-X4IBG3WG.js} +2 -2
- package/client-dist/{chunk-ZWO7VQQ7.js → chunk-XZTQ4YC7.js} +2 -2
- package/client-dist/{chunk-QUNT2WPJ.js → chunk-Y3DARUXQ.js} +2 -2
- package/client-dist/{chunk-QUNT2WPJ.js.map → chunk-Y3DARUXQ.js.map} +1 -1
- package/client-dist/{chunk-2VC36Y3F.js → chunk-ZTB2RW6R.js} +2 -2
- package/client-dist/{consultant.module-VWZJPZLC.js → consultant.module-S4UQA3UJ.js} +2 -2
- package/client-dist/{crd.module-X4AZNBU3.js → crd.module-XHOTNUXY.js} +2 -2
- package/client-dist/{dashboard.module-D6GYQMRW.js → dashboard.module-YZMJUPDH.js} +2 -2
- package/client-dist/{do.module-NDH2JFRB.js → do.module-ESWOBSRO.js} +2 -2
- package/client-dist/{document-library.module-U4UF7O2G.js → document-library.module-S2IATB7C.js} +2 -2
- package/client-dist/{embedding-eval.module-WU52AOFQ.js → embedding-eval.module-OAUL3HRQ.js} +2 -2
- package/client-dist/{embedding-registry.module-HL4BYCBG.js → embedding-registry.module-T4Q57QWS.js} +2 -2
- package/client-dist/{err.module-MKHC7PNL.js → err.module-YM7F2DFM.js} +2 -2
- package/client-dist/{feedback.module-JVEP7FXN.js → feedback.module-4ZLA4O5I.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-TAQMHWZY.js → host-runtime-mcp.module-OIK42CRE.js} +2 -2
- package/client-dist/index.html +1 -1
- package/client-dist/{live-dev-pipeline.module-PA6JFTVM.js → live-dev-pipeline.module-AFWGOCMO.js} +2 -2
- package/client-dist/{logs.module-DDCOUURP.js → logs.module-OSZVMRRI.js} +2 -2
- package/client-dist/{main-F237R7CH.js → main-3KSHNVCW.js} +3 -3
- package/client-dist/{master-control-remote-poc.module-OHIGJKXS.js → master-control-remote-poc.module-T5NK5KD7.js} +2 -2
- package/client-dist/{mobile-app.module-USJXPWGU.js → mobile-app.module-GPFLEVWR.js} +2 -2
- package/client-dist/{model-registry.module-GN625AEU.js → model-registry.module-SKRFHTWQ.js} +2 -2
- package/client-dist/{oc.module-T4NESJ3J.js → oc.module-562ZP6BM.js} +3 -3
- package/client-dist/{oc.module-T4NESJ3J.js.map → oc.module-562ZP6BM.js.map} +3 -3
- package/client-dist/{orc.module-7OMMUAVJ.js → orc.module-SCMVZ535.js} +2 -2
- package/client-dist/{project-management.module-BUQ4WMDF.js → project-management.module-LA7M6MXA.js} +2 -2
- package/client-dist/project-source-routed.module-QQBPIDUK.js +2 -0
- package/client-dist/{scheduler.module-426MNXRU.js → scheduler.module-QNWITVDV.js} +2 -2
- package/client-dist/{session.module-AOUHRRCF.js → session.module-LJNWNXN7.js} +2 -2
- package/client-dist/{set.module-WTQQZANN.js → set.module-FINVUQYD.js} +2 -2
- package/client-dist/{setup.module-BYCCCF4Q.js → setup.module-5FOSEQWI.js} +2 -2
- package/client-dist/{terminals.module-7X5GXSDY.js → terminals.module-LMW6DR3T.js} +2 -2
- package/client-dist/{voice-notes-poc.module-ZZD3NWJE.js → voice-notes-poc.module-R3ECC3V3.js} +2 -2
- package/client-dist/{wfs.module-VFUPP5VV.js → wfs.module-TAZFZ2BH.js} +2 -2
- package/package.json +1 -1
- package/client-dist/ca.module-AHEFH36G.js +0 -5
- package/client-dist/chunk-276XBODW.js.map +0 -7
- package/client-dist/chunk-UEPFY6HU.js +0 -9
- package/client-dist/chunk-UEPFY6HU.js.map +0 -7
- package/client-dist/project-source-routed.module-HBMJJWHZ.js +0 -2
- /package/client-dist/{agent-instances.module-X7PTNXBZ.js.map → agent-instances.module-KE64PSK7.js.map} +0 -0
- /package/client-dist/{cc-usage-dashboard.component-SCGVU2CH.js.map → cc-usage-dashboard.component-ODAXHZHU.js.map} +0 -0
- /package/client-dist/{cc.module-HRE2USKF.js.map → cc.module-4MS5M5XW.js.map} +0 -0
- /package/client-dist/{chunk-EXMVCGPU.js.map → chunk-36BCBGXK.js.map} +0 -0
- /package/client-dist/{chunk-F5YM4CH2.js.map → chunk-3HLEHUE4.js.map} +0 -0
- /package/client-dist/{chunk-TAHRBJO4.js.map → chunk-4CLON3UX.js.map} +0 -0
- /package/client-dist/{chunk-EDPWSLEJ.js.map → chunk-4O4UDIWG.js.map} +0 -0
- /package/client-dist/{chunk-V2FE4UOS.js.map → chunk-5E5W3DFK.js.map} +0 -0
- /package/client-dist/{chunk-5F7AZMBN.js.map → chunk-5KQZGU6O.js.map} +0 -0
- /package/client-dist/{chunk-GNGMQVNJ.js.map → chunk-5XJR5EAR.js.map} +0 -0
- /package/client-dist/{chunk-H4KPNX6Y.js.map → chunk-C2ZXKTHA.js.map} +0 -0
- /package/client-dist/{chunk-44B4MFA2.js.map → chunk-CAUXU2ZC.js.map} +0 -0
- /package/client-dist/{chunk-U5G7I3PM.js.map → chunk-CBMKN4SJ.js.map} +0 -0
- /package/client-dist/{chunk-V3MC6IHV.js.map → chunk-CF3BLCVD.js.map} +0 -0
- /package/client-dist/{chunk-BR2OEH55.js.map → chunk-CIO2T2KX.js.map} +0 -0
- /package/client-dist/{chunk-VVP5QPE2.js.map → chunk-CUA2OS6E.js.map} +0 -0
- /package/client-dist/{chunk-HVEG7TDX.js.map → chunk-DB33SOJ3.js.map} +0 -0
- /package/client-dist/{chunk-3MGMSCZJ.js.map → chunk-EC4VBEIV.js.map} +0 -0
- /package/client-dist/{chunk-VPICQREQ.js.map → chunk-EFH7L2PM.js.map} +0 -0
- /package/client-dist/{chunk-M7XR4RHP.js.map → chunk-EG7MEKVY.js.map} +0 -0
- /package/client-dist/{chunk-SNX7UMSC.js.map → chunk-EGWEYXZW.js.map} +0 -0
- /package/client-dist/{chunk-TMZGSFBR.js.map → chunk-EVYE6YII.js.map} +0 -0
- /package/client-dist/{chunk-M744VRDZ.js.map → chunk-FBF7RSNU.js.map} +0 -0
- /package/client-dist/{chunk-I2YW2Q64.js.map → chunk-FBZDKQ4K.js.map} +0 -0
- /package/client-dist/{chunk-LJ75BUDR.js.map → chunk-FQL5FQFW.js.map} +0 -0
- /package/client-dist/{chunk-IJNLP24O.js.map → chunk-GOPRHQFC.js.map} +0 -0
- /package/client-dist/{chunk-SNGOTGBU.js.map → chunk-HK2TYWE7.js.map} +0 -0
- /package/client-dist/{chunk-6ZYILL36.js.map → chunk-HSO5WM67.js.map} +0 -0
- /package/client-dist/{chunk-SIEB5UUT.js.map → chunk-ISPLVKBM.js.map} +0 -0
- /package/client-dist/{chunk-GXH7TFVW.js.map → chunk-JWXM6QMF.js.map} +0 -0
- /package/client-dist/{chunk-H4QUFYYO.js.map → chunk-KC7UN4VT.js.map} +0 -0
- /package/client-dist/{chunk-ODUTF4DP.js.map → chunk-KNTOPF7C.js.map} +0 -0
- /package/client-dist/{chunk-PCZCJ5US.js.map → chunk-L4CLV44N.js.map} +0 -0
- /package/client-dist/{chunk-AIFKGWGZ.js.map → chunk-LBG3XMYU.js.map} +0 -0
- /package/client-dist/{chunk-NV7A2WEG.js.map → chunk-NBH53JWT.js.map} +0 -0
- /package/client-dist/{chunk-725PEGTE.js.map → chunk-NHKJYR4C.js.map} +0 -0
- /package/client-dist/{chunk-IUYZZJPL.js.map → chunk-NIMLWXGM.js.map} +0 -0
- /package/client-dist/{chunk-YKD7EBRH.js.map → chunk-O6KFG5LW.js.map} +0 -0
- /package/client-dist/{chunk-7BGF556S.js.map → chunk-PR5VADUQ.js.map} +0 -0
- /package/client-dist/{chunk-ADOCMVHI.js.map → chunk-QHZI4F2F.js.map} +0 -0
- /package/client-dist/{chunk-HBLLM4VT.js.map → chunk-QNLMNKP4.js.map} +0 -0
- /package/client-dist/{chunk-3VGB3L3K.js.map → chunk-R2C7U5TP.js.map} +0 -0
- /package/client-dist/{chunk-QMSWKCFN.js.map → chunk-RLXJG6ZF.js.map} +0 -0
- /package/client-dist/{chunk-SREAQBYG.js.map → chunk-S5PG5OUU.js.map} +0 -0
- /package/client-dist/{chunk-772D5UCV.js.map → chunk-SWJLLCFC.js.map} +0 -0
- /package/client-dist/{chunk-N5BAPGOD.js.map → chunk-TCDXJTTX.js.map} +0 -0
- /package/client-dist/{chunk-HRRC3NLD.js.map → chunk-U6B7OBXY.js.map} +0 -0
- /package/client-dist/{chunk-UT4EWNR6.js.map → chunk-URXIWUNP.js.map} +0 -0
- /package/client-dist/{chunk-4Y3YU4VV.js.map → chunk-UTJQVE4E.js.map} +0 -0
- /package/client-dist/{chunk-DBG24LL5.js.map → chunk-V6QEYU4X.js.map} +0 -0
- /package/client-dist/{chunk-IJZYOGOA.js.map → chunk-VL2H6COO.js.map} +0 -0
- /package/client-dist/{chunk-RQ6URMIS.js.map → chunk-VORYOEWH.js.map} +0 -0
- /package/client-dist/{chunk-P5R6KXHA.js.map → chunk-VU76JPZM.js.map} +0 -0
- /package/client-dist/{chunk-Q6LBW5ZA.js.map → chunk-X4IBG3WG.js.map} +0 -0
- /package/client-dist/{chunk-ZWO7VQQ7.js.map → chunk-XZTQ4YC7.js.map} +0 -0
- /package/client-dist/{chunk-2VC36Y3F.js.map → chunk-ZTB2RW6R.js.map} +0 -0
- /package/client-dist/{consultant.module-VWZJPZLC.js.map → consultant.module-S4UQA3UJ.js.map} +0 -0
- /package/client-dist/{crd.module-X4AZNBU3.js.map → crd.module-XHOTNUXY.js.map} +0 -0
- /package/client-dist/{dashboard.module-D6GYQMRW.js.map → dashboard.module-YZMJUPDH.js.map} +0 -0
- /package/client-dist/{do.module-NDH2JFRB.js.map → do.module-ESWOBSRO.js.map} +0 -0
- /package/client-dist/{document-library.module-U4UF7O2G.js.map → document-library.module-S2IATB7C.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-WU52AOFQ.js.map → embedding-eval.module-OAUL3HRQ.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-HL4BYCBG.js.map → embedding-registry.module-T4Q57QWS.js.map} +0 -0
- /package/client-dist/{err.module-MKHC7PNL.js.map → err.module-YM7F2DFM.js.map} +0 -0
- /package/client-dist/{feedback.module-JVEP7FXN.js.map → feedback.module-4ZLA4O5I.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-TAQMHWZY.js.map → host-runtime-mcp.module-OIK42CRE.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-PA6JFTVM.js.map → live-dev-pipeline.module-AFWGOCMO.js.map} +0 -0
- /package/client-dist/{logs.module-DDCOUURP.js.map → logs.module-OSZVMRRI.js.map} +0 -0
- /package/client-dist/{main-F237R7CH.js.map → main-3KSHNVCW.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-OHIGJKXS.js.map → master-control-remote-poc.module-T5NK5KD7.js.map} +0 -0
- /package/client-dist/{mobile-app.module-USJXPWGU.js.map → mobile-app.module-GPFLEVWR.js.map} +0 -0
- /package/client-dist/{model-registry.module-GN625AEU.js.map → model-registry.module-SKRFHTWQ.js.map} +0 -0
- /package/client-dist/{orc.module-7OMMUAVJ.js.map → orc.module-SCMVZ535.js.map} +0 -0
- /package/client-dist/{project-management.module-BUQ4WMDF.js.map → project-management.module-LA7M6MXA.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-HBMJJWHZ.js.map → project-source-routed.module-QQBPIDUK.js.map} +0 -0
- /package/client-dist/{scheduler.module-426MNXRU.js.map → scheduler.module-QNWITVDV.js.map} +0 -0
- /package/client-dist/{session.module-AOUHRRCF.js.map → session.module-LJNWNXN7.js.map} +0 -0
- /package/client-dist/{set.module-WTQQZANN.js.map → set.module-FINVUQYD.js.map} +0 -0
- /package/client-dist/{setup.module-BYCCCF4Q.js.map → setup.module-5FOSEQWI.js.map} +0 -0
- /package/client-dist/{terminals.module-7X5GXSDY.js.map → terminals.module-LMW6DR3T.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-ZZD3NWJE.js.map → voice-notes-poc.module-R3ECC3V3.js.map} +0 -0
- /package/client-dist/{wfs.module-VFUPP5VV.js.map → wfs.module-TAZFZ2BH.js.map} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{a as O}from"./chunk-
|
|
2
|
-
`)}static formatContent(
|
|
3
|
-
`))}else if(
|
|
1
|
+
import{a as O}from"./chunk-HSO5WM67.js";import{a as q}from"./chunk-CF3BLCVD.js";import{d as F}from"./chunk-NIMLWXGM.js";import{e as D}from"./chunk-QHZI4F2F.js";import{h as A,j as k}from"./chunk-KNTOPF7C.js";import{I as R,p as j}from"./chunk-Y3DARUXQ.js";import{C as I,R as P,a as S,aa as m,b,h as U,k as f,p as y,vb as g,xb as K,y as E}from"./chunk-TBMJSIBB.js";var M=class{static compareMirrorEventsAsc(i,e){let t=(i.sequence??0)-(e.sequence??0);if(t!==0)return t;let s=typeof i.timestamp=="string"?i.timestamp:"",n=typeof e.timestamp=="string"?e.timestamp:"",o=s.localeCompare(n);if(o!==0)return o;let r=typeof i.eventType=="string"?i.eventType:"",a=typeof e.eventType=="string"?e.eventType:"";return r.localeCompare(a)}};var C=class c{static messageIdsCompatibleForStreamMerge(i,e){let t=(i??"").trim(),s=(e??"").trim();return t.length>0&&s.length>0?t===s:!0}static parseStreamChunkFromMirrorData(i){let e=i.update;if(e===null||typeof e!="object"||Array.isArray(e))return null;let t=c.toPlainRecord(e),s=t.sessionUpdate,n=null;if(s==="agent_message_chunk"&&(n="agent"),s==="user_message_chunk"&&(n="user"),s==="agent_thought_chunk"&&(n="thought"),n===null)return null;let o=t.content;if(o===null||typeof o!="object"||Array.isArray(o))return null;let a=c.toPlainRecord(o).text;if(typeof a!="string"||!a.length)return null;let l=t.messageId,d=typeof l=="string"&&l.length>0?l:void 0;return{role:n,text:a,messageId:d}}static canMergeConsoleTailWithChunk(i){let e=i.prev;if(e.streamTextRole===void 0||e.streamTextRole!==i.parsed.role)return!1;let t=e.streamMessageId,s=i.parsed.messageId;if(!c.messageIdsCompatibleForStreamMerge(t,s))return!1;let n=i.ev.sequence??0,o=e.streamLastSequence??0;return!(n<=o)}static canMergeMirrorChunkEvents(i,e,t){let s=c.parseStreamChunkFromMirrorData(i.data??{});if(s===null||s.role!==t.role)return!1;let n=s.messageId,o=t.messageId;if(!c.messageIdsCompatibleForStreamMerge(n,o))return!1;let r=i.sequence??0;return!((e.sequence??0)<=r)}static foldEventsToTimelineRows(i){let e=[];for(let t of i){let s=c.parseStreamChunkFromMirrorData(t.data??{});if(s!==null){let n=e.length>0?e[e.length-1]:void 0,o=n!==void 0&&n.events.length>0?n.events[n.events.length-1]:void 0;if(n!==void 0&&o!==void 0&&c.canMergeMirrorChunkEvents(o,t,s)){let r=[...n.events,t];e[e.length-1]={rowKey:c.mergedTimelineRowKey(r),events:r}}else e.push({rowKey:`evt-${String(t.sequence??0)}`,events:[t]})}else e.push({rowKey:`evt-${String(t.sequence??0)}`,events:[t]})}return e}static mergedTimelineRowKey(i){if(!i.length)return"evt-empty";let e=i[0].sequence??0,t=i[i.length-1].sequence??0;return`merged-chunk-${String(e)}-${String(t)}`}static toPlainRecord(i){let e={};for(let t of Object.keys(i))e[t]=Reflect.get(i,t);return e}};var v=U(j());var x=class c{static prettyStringifyUnknown(i){try{let e=c.expandEmbeddedJsonStrings(i);return JSON.stringify(e,null,2)}catch{return i==null?String(i):typeof i=="object"?"[Object stringify failed]":String(i)}}static expandEmbeddedJsonStrings(i){if(i==null)return i;if(typeof i=="string"){let t=i;if(!F.looksLikeJson(t))return t;try{let s=JSON.parse(t.trim());return c.expandEmbeddedJsonStrings(s)}catch{return t}}if(typeof i!="object")return i;if(Array.isArray(i))return i.map(t=>c.expandEmbeddedJsonStrings(t));let e={};for(let t of Object.keys(i)){let s=Reflect.get(i,t);e[t]=c.expandEmbeddedJsonStrings(s)}return e}};var T=class c{static buildFromMirrorEvent(i){let e=i.sequence??0,t=i.data!==void 0?i.data:{},s=typeof i.eventType=="string"?i.eventType:"";return s==="prompt-sent"?c.buildPromptSentBrief(e,t):s==="ca-session-update"?c.buildCaSessionUpdateBrief(e,t):c.buildGenericBrief(s,e,t)}static extractSessionUpdateKind(i){let e=i.update;if(e===null||typeof e!="object"||Array.isArray(e))return;let s=c.toPlainRecord(e).sessionUpdate;return typeof s=="string"&&s.length?s:void 0}static buildPromptSentBrief(i,e){let t=e.content;return typeof t!="string"||!t.length?null:{listKey:`mirror-prompt-${String(i)}`,consoleType:"prompt",bodyText:t,mirrorEventType:"prompt-sent",useRawBubbleKind:!1,rawData:e}}static buildCaSessionUpdateBrief(i,e){let t=C.parseStreamChunkFromMirrorData(e);if(t!==null){let n=c.extractSessionUpdateKind(e),o=t.role==="thought";return{listKey:`mirror-chunk-${String(i)}`,consoleType:o?"thinking":"assistant",bodyText:t.text,mirrorEventType:"ca-session-update",briefSubtype:n,useRawBubbleKind:!1,rawData:e,isStreamingTextChunk:!0,streamTextRole:t.role,streamMessageId:t.messageId}}let s=x.prettyStringifyUnknown(e);return{listKey:`mirror-ca-session-update-${String(i)}`,consoleType:"info",bodyText:s,mirrorEventType:"ca-session-update",useRawBubbleKind:!0,rawData:e}}static buildGenericBrief(i,e,t){let s=c.safeListKeySegment(i),n={eventType:i.length?i:"unknown",sequence:e,data:t},o=x.prettyStringifyUnknown(n);return{listKey:`mirror-${s}-${String(e)}`,consoleType:"info",bodyText:o,mirrorEventType:i.length?i:"unknown",useRawBubbleKind:!0,rawData:t}}static safeListKeySegment(i){let e=i.replace(/[^a-zA-Z0-9_-]+/g,"_").replace(/^_+|_+$/g,"");return e.length?e:"event"}static toPlainRecord(i){let e={};for(let t of Object.keys(i))e[t]=Reflect.get(i,t);return e}};var u=class c{static listKeyStart(i){return`ca-tc-${i}-start`}static listKeyProgress(i){return`ca-tc-${i}-progress`}static listKeyResult(i){return`ca-tc-${i}-result`}static listKeyError(i){return`ca-tc-${i}-error`}static tryParseStableListKey(i){let e="ca-tc-";if(!i.startsWith(e))return null;let t=[{suffix:"-progress",role:"progress"},{suffix:"-start",role:"start"},{suffix:"-result",role:"result"},{suffix:"-error",role:"error"}];for(let s of t){if(!i.endsWith(s.suffix))continue;let n=i.slice(e.length,i.length-s.suffix.length);return n.length?{toolCallId:n,role:s.role}:null}return null}static tryParseMirrorData(i){let e=i.update;if(e===null||typeof e!="object"||Array.isArray(e))return null;let t=c.toPlainRecord(e),s=t.sessionUpdate;if(s!=="tool_call"&&s!=="tool_call_update")return null;let n=t.toolCallId;if(typeof n!="string"||!n.trim().length)return null;let o=t.status,r=typeof o=="string"?o:"",a=t.title,l=typeof a=="string"&&a.trim().length?a.trim():void 0,d=t.kind,h=typeof d=="string"&&d.trim().length?d.trim():void 0,p=t.rawOutput,_=t.rawInput,w=t.content,$=t.locations;return{sessionUpdate:s,toolCallId:n.trim(),status:r,title:l,toolKind:h,rawOutput:p!==void 0?p:void 0,rawInput:_!==void 0?_:void 0,content:Array.isArray(w)&&w.length?w:void 0,locations:Array.isArray($)&&$.length?$:void 0}}static hasRawOutputError(i){if(i===null||typeof i!="object"||Array.isArray(i))return!1;let e=c.toPlainRecord(i);return Object.prototype.hasOwnProperty.call(e,"error")}static summarizeRawOutputError(i){if(i===null||typeof i!="object"||Array.isArray(i))return"Tool call failed";let t=c.toPlainRecord(i).error;if(typeof t=="string"&&t.trim().length)return t.trim();try{return JSON.stringify(i)}catch{return"Tool call failed"}}static summarizeRawOutputSuccess(i){if(i===void 0)return"Completed";try{let e=JSON.stringify(i),t=400;return e.length>t?`${e.substring(0,t)}\u2026`:e}catch{return"Completed"}}static formatRawInput(i){if(i==null)return"";try{return JSON.stringify(i,null,2)}catch{return String(i)}}static formatLocations(i){if(!i?.length)return"";let e=[];for(let t of i){if(t===null||typeof t!="object"||Array.isArray(t))continue;let s=c.toPlainRecord(t),n=s.path;if(typeof n!="string"||!n.length)continue;let o=s.line,r=typeof o=="number"?`:${o}`:"";e.push(`${n}${r}`)}return e.join(`
|
|
2
|
+
`)}static formatContent(i){if(!i?.length)return"";let e=[];for(let t of i){if(t===null||typeof t!="object"||Array.isArray(t))continue;let s=c.toPlainRecord(t),n=s.type;if(n==="diff"){let o=s.path,r=s.oldText,a=s.newText,d=[`--- ${typeof o=="string"?o:"(unknown)"}`];typeof r=="string"&&r.length&&d.push(`- ${r.substring(0,500)}${r.length>500?"\u2026":""}`),typeof a=="string"&&a.length&&d.push(`+ ${a.substring(0,500)}${a.length>500?"\u2026":""}`),e.push(d.join(`
|
|
3
|
+
`))}else if(n==="terminal")try{e.push(`[terminal] ${JSON.stringify(s,null,2)}`)}catch{e.push("[terminal output]")}else if(n==="content"){let o=s.parts;if(Array.isArray(o)){for(let r of o)if(r!==null&&typeof r=="object"&&!Array.isArray(r)){let a=c.toPlainRecord(r);typeof a.text=="string"&&e.push(a.text)}}}}return e.join(`
|
|
4
4
|
|
|
5
|
-
`)}static toPlainRecord(n){let e={};for(let t of Object.keys(n))e[t]=Reflect.get(n,t);return e}};var L=(()=>{class c{baseUrl=`${R.api.baseUrl}/ca-session`;http=I(K);peiContext_DS=I(q);withCcapId(e){let t=this.peiContext_DS.activeCcapId_$();return t?e.set("ccapId",t):e}createSession(e){let t=this.withCcapId(new g);return y(this.http.post(this.baseUrl,e,{params:t}))}listSessions(e){let t=this.withCcapId(new g);return e?.status&&(t=t.set("status",e.status)),e?.workspacePath&&(t=t.set("workspacePath",e.workspacePath)),e?.includeArchived&&(t=t.set("includeArchived","1")),y(this.http.get(this.baseUrl,{params:t}))}syncFromAgent(e){let t=this.withCcapId(new g);return y(this.http.post(`${this.baseUrl}/sync`,{cwd:e?.cwd},{params:t}))}getSession(e){let t=this.withCcapId(new g);return y(this.http.get(`${this.baseUrl}/${e}`,{params:t}))}sendPrompt(e){let t=this.withCcapId(new g);return y(this.http.post(`${this.baseUrl}/${e.sessionId}/prompt`,{content:e.content},{params:t}))}stopExecution(e){let t=this.withCcapId(new g);return y(this.http.post(`${this.baseUrl}/${e}/stop-execution`,{},{params:t}))}terminateSession(e){let t=this.withCcapId(new g);return y(this.http.post(`${this.baseUrl}/${e}/terminate`,{},{params:t}))}setSessionArchived(e){let t=this.withCcapId(new g);return y(this.http.patch(`${this.baseUrl}/${e.sessionId}/archive`,{isArchived:e.isArchived},{params:t}))}getSessionEvents(e){let t=this.withCcapId(new g);return e.sinceSequence!=null&&(t=t.set("sinceSequence",String(e.sinceSequence))),e.limit!=null&&(t=t.set("limit",String(e.limit))),y(this.http.get(`${this.baseUrl}/${e.sessionId}/events`,{params:t}))}hydrateSession(e){return y(this.http.post(`${this.baseUrl}/${e.sessionId}/hydrate`,{force:e.force===!0},{params:this.withCcapId(new g)}))}static \u0275fac=function(t){return new(t||c)};static \u0275prov=w({token:c,factory:c.\u0275fac,providedIn:"root"})}return c})();var fe=(()=>{class c{sessions_$=m([]);sessionsLoading_$=m(!1);sessionsLoadError_$=m(null);selectedSession_$=m(null);selectedSessionLoading_$=m(!1);selectedSessionEvents_$=m([]);sessionEventsHasMore_$=m(!1);mirrorRuntime_$=m(null);consoleMessages_$=m([]);assembledMessages_$=m([]);lastStatusUpdate_$=m(null);activeSessionId_$=m("");sessionDetailError_$=m(null);caSession_AS=I(L);extSessionMsg_AS=I(O);globalError_CS=I(k);socket_CS=I(D);ngZone=I(P);eventSubscription=null;reconnectSubscription=null;lastKnownEventSequence=-1;openSessionPollTimer=null;openSessionPollTargetId="";pendingOptimisticPrompts=[];sessionEventsNextSince=null;constructor(){this.eventSubscription=this.socket_CS.event$.subscribe(e=>{this.handleSocketEvent(e)}),this.reconnectSubscription=this.socket_CS.connected$.subscribe(e=>{if(e){let t=this.activeSessionId_$();t&&(this.socket_CS.emit("ca-session:subscribe",{sessionId:t}),this.loadAssembledMessages({sessionId:t}).catch(()=>{}))}})}ngOnDestroy(){this.stopOpenSessionPolling(),this.eventSubscription?.unsubscribe(),this.reconnectSubscription?.unsubscribe()}loadSessions(e){return f(this,null,function*(){this.sessionsLoading_$.set(!0),this.sessionsLoadError_$.set(null);try{let t=yield this.caSession_AS.listSessions({includeArchived:e?.includeArchived}),s=t.sessions,i=(Array.isArray(s)?s:[]).map(E=>this.mapSessionRecord(this.toRecord(E)));this.sessions_$.set(i);let r=t.mirrorRuntime,a=this.toRecord(r),l=a.isAcpConnected,d=a.loadSessionSupported,h=a.isTerminalMode,p=a.isTerminalRunnerConnected;typeof l=="boolean"&&typeof d=="boolean"?this.mirrorRuntime_$.set({isAcpConnected:l,loadSessionSupported:d,isTerminalMode:h===!0,isTerminalRunnerConnected:p===!0}):this.mirrorRuntime_$.set(null)}catch(t){this.sessionsLoadError_$.set(t),this.globalError_CS.showError(t,"ca-session-list")}finally{this.sessionsLoading_$.set(!1)}})}syncFromAgent(e){return f(this,null,function*(){try{yield this.caSession_AS.syncFromAgent({cwd:e?.cwd}),yield this.loadSessions()}catch(t){throw this.globalError_CS.showError(t,"ca-session-sync"),t}})}loadSessionDetail(e){return f(this,null,function*(){this.sessionDetailError_$.set(null),this.selectedSessionLoading_$.set(!0);try{let s=(yield this.caSession_AS.getSession(e.sessionId)).session;this.selectedSession_$.set(this.mapSessionRecord(s)),this.sessionEventsNextSince=null,this.sessionEventsHasMore_$.set(!1);let o=yield this.caSession_AS.getSessionEvents({sessionId:e.sessionId,limit:200}),i=o.events.map(a=>({sessionId:typeof a.sessionId=="string"?a.sessionId:e.sessionId,eventType:typeof a.eventType=="string"?a.eventType:"",timestamp:typeof a.timestamp=="string"?a.timestamp:"",data:this.asRecord(a.data),sequence:typeof a.sequence=="number"?a.sequence:0}));this.selectedSessionEvents_$.set(i),this.sessionEventsHasMore_$.set(o.hasMore===!0);let r=o.nextSinceSequence;return this.sessionEventsNextSince=typeof r=="number"?r:null,this.lastKnownEventSequence=Math.max(-1,...this.selectedSessionEvents_$().map(a=>a.sequence??0)),this.seedConsoleFromMirrorEvents(i),this.loadAssembledMessages({sessionId:e.sessionId}).catch(()=>{}),!0}catch(t){return this.sessionDetailError_$.set(t),this.selectedSession_$.set(null),this.selectedSessionEvents_$.set([]),this.globalError_CS.showError(t,"ca-session-detail"),!1}finally{this.selectedSessionLoading_$.set(!1)}})}loadMoreSessionEvents(e){return f(this,null,function*(){let t=this.sessionEventsNextSince;if(t!=null)try{let s=yield this.caSession_AS.getSessionEvents({sessionId:e.sessionId,sinceSequence:t,limit:200}),o=s.events.map(a=>({sessionId:typeof a.sessionId=="string"?a.sessionId:e.sessionId,eventType:typeof a.eventType=="string"?a.eventType:"",timestamp:typeof a.timestamp=="string"?a.timestamp:"",data:this.asRecord(a.data),sequence:typeof a.sequence=="number"?a.sequence:0})),i=[...this.selectedSessionEvents_$(),...o];i.sort(C.compareMirrorEventsAsc),this.selectedSessionEvents_$.set(i),this.sessionEventsHasMore_$.set(s.hasMore===!0);let r=s.nextSinceSequence;this.sessionEventsNextSince=typeof r=="number"?r:null,this.lastKnownEventSequence=Math.max(this.lastKnownEventSequence,...o.map(a=>a.sequence??0))}catch(s){this.globalError_CS.showError(s,"ca-session-events-page")}})}hydrateFromAgent(e){return f(this,null,function*(){try{yield this.caSession_AS.hydrateSession({sessionId:e.sessionId,force:e.force})}catch(s){throw this.globalError_CS.showError(s,"ca-session-hydrate"),s}if(!(yield this.loadSessionDetail({sessionId:e.sessionId}))){let s=this.sessionDetailError_$();throw s instanceof Error?s:new Error("CA session detail reload after hydrate failed")}})}setActiveSessionId(e){let t=this.activeSessionId_$();t&&t!==e&&this.socket_CS.emit("ca-session:unsubscribe",{sessionId:t}),this.activeSessionId_$.set(e),e&&this.socket_CS.emit("ca-session:subscribe",{sessionId:e})}clearLiveOutput(){this.consoleMessages_$.set([]),this.lastKnownEventSequence=-1,this.pendingOptimisticPrompts.length=0}createSession(e){return f(this,null,function*(){try{let t=yield this.caSession_AS.createSession({workspacePath:e.workspacePath,label:e.label}),o=this.toRecord(t.session).sessionId,i=typeof o=="string"?o:"";return yield this.loadSessions(),i}catch(t){throw t}})}sendPrompt(e){return f(this,null,function*(){let t=`optimistic-prompt-${globalThis.crypto.randomUUID()}`;this.pendingOptimisticPrompts.push({listKey:t,text:e.content}),this.pushConsoleMessage({listKey:t,type:"prompt",text:e.content});try{yield this.caSession_AS.sendPrompt(e)}catch(s){let o=this.pendingOptimisticPrompts.findIndex(i=>i.listKey===t);throw o>=0&&this.pendingOptimisticPrompts.splice(o,1),this.pushConsoleMessage({type:"error",text:A.getErrorMessageForDisplay(s)}),this.globalError_CS.showError(s,"ca-session-prompt"),s}})}stopExecution(e){return f(this,null,function*(){try{yield this.caSession_AS.stopExecution(e)}catch(t){throw this.globalError_CS.showError(t,"ca-session-stop-execution"),t}})}terminateSession(e){return f(this,null,function*(){try{yield this.caSession_AS.terminateSession(e),yield this.loadSessions()}catch(t){throw this.globalError_CS.showError(t,"ca-session-terminate"),t}})}setSessionArchived(e){return f(this,null,function*(){try{let t=yield this.caSession_AS.setSessionArchived(e);yield this.loadSessions(),this.selectedSession_$()?.sessionId===e.sessionId&&t.session!==null&&typeof t.session=="object"&&this.selectedSession_$.set(this.mapSessionRecord(this.toRecord(t.session)))}catch(t){throw this.globalError_CS.showError(t,"ca-session-archive"),t}})}startOpenSessionPolling(e){if(this.stopOpenSessionPolling(),!e)return;this.openSessionPollTargetId=e;let t=10*M.second;this.openSessionPollTimer=globalThis.setInterval(()=>{this.runOpenSessionPollTick(e)},t)}stopOpenSessionPolling(){this.openSessionPollTimer!==null&&(globalThis.clearInterval(this.openSessionPollTimer),this.openSessionPollTimer=null),this.openSessionPollTargetId=""}pushConsoleMessage(e){let t=this.materializeConsoleLineFromPushParams({listKey:e.listKey,type:e.type,text:e.text,timestamp:e.timestamp??new Date().toISOString(),rawData:e.rawData,mirrorEventType:e.mirrorEventType,briefSubtype:e.briefSubtype,useRawBubbleKind:e.useRawBubbleKind,streamTextRole:e.streamTextRole,streamLastSequence:e.streamLastSequence,streamMessageId:e.streamMessageId,streamPartData:e.streamPartData,toolDisplayName:e.toolDisplayName,isToolCallFailedIndicator:e.isToolCallFailedIndicator}),s=this.consoleMessages_$();this.consoleMessages_$.set([...s,t])}appendConsoleMirrorEventOne(e){if(e.eventType==="ca-session-update"){let i=u.tryParseMirrorData(e.data??{});if(i!==null&&this.applyToolCallMirrorEventToLiveConsole({ev:e,parsed:i}))return}let t=T.buildFromMirrorEvent(e);if(t===null||(e.eventType==="prompt-sent"&&t.consoleType==="prompt"&&this.removePendingOptimisticPromptBubbleIfTextMatchesMirror(t.bodyText),this.consoleMessages_$().some(i=>i.listKey===t.listKey))||t.isStreamingTextChunk===!0&&this.tryMergeStreamingMirrorChunkIntoConsole({ev:e,brief:t}))return;let o=typeof e.timestamp=="string"&&e.timestamp.length?e.timestamp:new Date().toISOString();this.pushConsoleMessage(this.buildConsolePushParamsFromBrief({ev:e,brief:t,timestampIso:o}))}tryMergeStreamingMirrorChunkIntoConsole(e){let t=this.consoleMessages_$();if(t.length===0)return!1;let s=t[t.length-1],o=v.parseStreamChunkFromMirrorData(e.ev.data??{});if(o===null||!v.canMergeConsoleTailWithChunk({prev:s,ev:e.ev,parsed:o}))return!1;let i=s.streamPartData!==void 0?[...s.streamPartData]:[];i.push(e.ev.data??{});let r=e.brief.streamMessageId,a=r!==void 0&&r.trim().length>0?r.trim():s.streamMessageId,l=b(S({},s),{text:s.text+e.brief.bodyText,streamLastSequence:e.ev.sequence??s.streamLastSequence,streamMessageId:a,streamPartData:i,rawData:{streamMerged:!0,partCount:i.length,lastChunkSequence:e.ev.sequence,chunkSnapshots:i}}),d=[...t];return d[d.length-1]=l,this.consoleMessages_$.set(d),!0}buildConsolePushParamsFromBrief(e){let t=e.brief;return t.isStreamingTextChunk===!0?{listKey:t.listKey,type:t.consoleType,text:t.bodyText,timestamp:e.timestampIso,rawData:t.rawData,mirrorEventType:t.mirrorEventType,briefSubtype:t.briefSubtype,useRawBubbleKind:t.useRawBubbleKind,streamTextRole:t.streamTextRole,streamLastSequence:e.ev.sequence,streamMessageId:t.streamMessageId,streamPartData:[e.ev.data??{}]}:{listKey:t.listKey,type:t.consoleType,text:t.bodyText,timestamp:e.timestampIso,rawData:t.rawData,mirrorEventType:t.mirrorEventType,briefSubtype:t.briefSubtype,useRawBubbleKind:t.useRawBubbleKind}}buildFoldedConsoleMessagesFromMirrorEvents(e){let t=[];for(let s of e){if(this.tryFoldToolCallMirrorEventIntoOut(t,s))continue;let i=T.buildFromMirrorEvent(s);if(i===null)continue;let r=typeof s.timestamp=="string"&&s.timestamp.length?s.timestamp:new Date().toISOString();if(i.isStreamingTextChunk===!0){let a=v.parseStreamChunkFromMirrorData(s.data??{});if(a===null)continue;let l=t.length>0?t[t.length-1]:void 0;if(l!==void 0&&v.canMergeConsoleTailWithChunk({prev:l,ev:s,parsed:a})){let d=l.streamPartData!==void 0?[...l.streamPartData]:[];d.push(s.data??{});let h=i.streamMessageId,p=h!==void 0&&h.trim().length>0?h.trim():l.streamMessageId;t[t.length-1]=b(S({},l),{text:l.text+i.bodyText,streamLastSequence:s.sequence??l.streamLastSequence,streamMessageId:p,streamPartData:d,rawData:{streamMerged:!0,partCount:d.length,lastChunkSequence:s.sequence,chunkSnapshots:d}})}else t.push(this.materializeConsoleLineFromPushParams(this.buildConsolePushParamsFromBrief({ev:s,brief:i,timestampIso:r})))}else t.push(this.materializeConsoleLineFromPushParams(this.buildConsolePushParamsFromBrief({ev:s,brief:i,timestampIso:r})))}return t}materializeConsoleLineFromPushParams(e){return{listKey:e.listKey??globalThis.crypto.randomUUID(),type:e.type,text:e.text,timestamp:e.timestamp,rawData:e.rawData,mirrorEventType:e.mirrorEventType,briefSubtype:e.briefSubtype,useRawBubbleKind:e.useRawBubbleKind,streamTextRole:e.streamTextRole,streamLastSequence:e.streamLastSequence,streamMessageId:e.streamMessageId,streamPartData:e.streamPartData,toolDisplayName:e.toolDisplayName,isToolCallFailedIndicator:e.isToolCallFailedIndicator}}applyToolCallMirrorEventToLiveConsole(e){let t=e.parsed,s=t.toolCallId,o=typeof e.ev.timestamp=="string"&&e.ev.timestamp.length?e.ev.timestamp:new Date().toISOString(),i=e.ev.data??{};if(t.sessionUpdate==="tool_call"){let r=u.listKeyStart(s);if(this.consoleMessages_$().some(h=>h.listKey===r))return!0;let l=c.toolCallDisplayName(t),d=c.buildToolCallBodyText({displayName:l,parsed:t});return this.pushConsoleMessage({listKey:r,type:"tool",text:d,timestamp:o,rawData:i,mirrorEventType:"ca-session-update",briefSubtype:"tool_call",toolDisplayName:l}),!0}if(t.sessionUpdate==="tool_call_update"&&t.status==="in_progress"){t.rawInput!==void 0&&this.patchLiveToolCallStartInput({toolCallId:s,parsed:t});let r=u.listKeyProgress(s),a="in_progress",l=this.consoleMessages_$(),d=l.findIndex(p=>p.listKey===r),h=this.materializeConsoleLineFromPushParams({listKey:r,type:"status-update",text:a,timestamp:o,rawData:i,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"});if(d>=0){let p=[...l];p[d]=h,this.consoleMessages_$.set(p)}else this.consoleMessages_$.set([...l,h]);return!0}if(t.sessionUpdate==="tool_call_update"&&t.status==="completed"){if(u.hasRawOutputError(t.rawOutput)){let d=u.listKeyError(s);if(!this.consoleMessages_$().some(p=>p.listKey===d)){let p=u.summarizeRawOutputError(t.rawOutput);this.pushConsoleMessage({listKey:d,type:"error",text:p,timestamp:o,rawData:i,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"}),this.patchLiveConsoleToolCallStartFailed({toolCallId:s})}return!0}let a=u.listKeyResult(s);if(!this.consoleMessages_$().some(d=>d.listKey===a)){let d=u.summarizeRawOutputSuccess(t.rawOutput);this.pushConsoleMessage({listKey:a,type:"tool-result",text:d,timestamp:o,rawData:i,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"})}return!0}return!1}tryFoldToolCallMirrorEventIntoOut(e,t){if(t.eventType!=="ca-session-update")return!1;let s=u.tryParseMirrorData(t.data??{});if(s===null)return!1;let o=typeof t.timestamp=="string"&&t.timestamp.length?t.timestamp:new Date().toISOString(),i=t.data??{};if(s.sessionUpdate==="tool_call"){let r=u.listKeyStart(s.toolCallId);if(!e.some(l=>l.listKey===r)){let l=c.toolCallDisplayName(s),d=c.buildToolCallBodyText({displayName:l,parsed:s});e.push(this.materializeConsoleLineFromPushParams({listKey:r,type:"tool",text:d,timestamp:o,rawData:i,mirrorEventType:"ca-session-update",briefSubtype:"tool_call",toolDisplayName:l}))}return!0}if(s.sessionUpdate==="tool_call_update"&&s.status==="in_progress"){s.rawInput!==void 0&&c.patchOutArrayToolCallStartInput(e,s);let r=u.listKeyProgress(s.toolCallId),a=this.materializeConsoleLineFromPushParams({listKey:r,type:"status-update",text:"in_progress",timestamp:o,rawData:i,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"}),l=e.findIndex(d=>d.listKey===r);return l>=0?e[l]=a:e.push(a),!0}if(s.sessionUpdate==="tool_call_update"&&s.status==="completed"){if(u.hasRawOutputError(s.rawOutput)){let d=u.listKeyError(s.toolCallId);if(!e.some(p=>p.listKey===d)){let p=u.summarizeRawOutputError(s.rawOutput);e.push(this.materializeConsoleLineFromPushParams({listKey:d,type:"error",text:p,timestamp:o,rawData:i,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"})),c.patchOutArrayToolCallStartFailed(e,s.toolCallId)}return!0}let a=u.listKeyResult(s.toolCallId);if(!e.some(d=>d.listKey===a)){let d=u.summarizeRawOutputSuccess(s.rawOutput);e.push(this.materializeConsoleLineFromPushParams({listKey:a,type:"tool-result",text:d,timestamp:o,rawData:i,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"}))}return!0}return!1}patchLiveToolCallStartInput(e){let t=u.listKeyStart(e.toolCallId),s=this.consoleMessages_$(),o=s.findIndex(l=>l.listKey===t);if(o<0)return;let i=s[o].toolDisplayName??"Tool call",r=c.buildToolCallBodyText({displayName:i,parsed:e.parsed}),a=[...s];a[o]=b(S({},a[o]),{text:r}),this.consoleMessages_$.set(a)}patchLiveConsoleToolCallStartFailed(e){let t=u.listKeyStart(e.toolCallId),s=this.consoleMessages_$(),o=s.findIndex(r=>r.listKey===t);if(o<0)return;let i=[...s];i[o]=b(S({},i[o]),{isToolCallFailedIndicator:!0}),this.consoleMessages_$.set(i)}static patchOutArrayToolCallStartFailed(e,t){let s=u.listKeyStart(t),o=e.findIndex(i=>i.listKey===s);o<0||(e[o]=b(S({},e[o]),{isToolCallFailedIndicator:!0}))}static patchOutArrayToolCallStartInput(e,t){let s=u.listKeyStart(t.toolCallId),o=e.findIndex(a=>a.listKey===s);if(o<0)return;let i=e[o].toolDisplayName??"Tool call",r=c.buildToolCallBodyText({displayName:i,parsed:t});e[o]=b(S({},e[o]),{text:r})}static toolCallDisplayName(e){return e.title!==void 0&&e.title.length?e.title:e.toolKind!==void 0&&e.toolKind.length?e.toolKind:"Tool call"}static buildToolCallBodyText(e){let t=[e.displayName],s=u.formatRawInput(e.parsed.rawInput);s.length&&t.push(s);let o=u.formatLocations(e.parsed.locations);return o.length&&t.push(`[locations]
|
|
6
|
-
${
|
|
7
|
-
`)}runOpenSessionPollTick(e){return f(this,null,function*(){if(!(e!==this.activeSessionId_$()||e!==this.openSessionPollTargetId))try{let t=yield this.caSession_AS.getSession(e);this.ngZone.run(()=>{e===this.activeSessionId_$()&&this.selectedSession_$.set(this.mapSessionRecord(this.toRecord(t.session)))});let s=this.lastKnownEventSequence,
|
|
8
|
-
//# sourceMappingURL=chunk-
|
|
5
|
+
`)}static toPlainRecord(i){let e={};for(let t of Object.keys(i))e[t]=Reflect.get(i,t);return e}};var L=(()=>{class c{baseUrl=`${R.api.baseUrl}/ca-session`;http=I(K);peiContext_DS=I(q);withCcapId(e){let t=this.peiContext_DS.activeCcapId_$();return t?e.set("ccapId",t):e}createSession(e){let t=this.withCcapId(new g);return y(this.http.post(this.baseUrl,e,{params:t}))}listSessions(e){let t=this.withCcapId(new g);return e?.status&&(t=t.set("status",e.status)),e?.workspacePath&&(t=t.set("workspacePath",e.workspacePath)),e?.includeArchived&&(t=t.set("includeArchived","1")),y(this.http.get(this.baseUrl,{params:t}))}syncFromAgent(e){let t=this.withCcapId(new g);return y(this.http.post(`${this.baseUrl}/sync`,{cwd:e?.cwd},{params:t}))}getSession(e){let t=this.withCcapId(new g);return y(this.http.get(`${this.baseUrl}/${e}`,{params:t}))}sendPrompt(e){let t=this.withCcapId(new g);return y(this.http.post(`${this.baseUrl}/${e.sessionId}/prompt`,{content:e.content},{params:t}))}stopExecution(e){let t=this.withCcapId(new g);return y(this.http.post(`${this.baseUrl}/${e}/stop-execution`,{},{params:t}))}terminateSession(e){let t=this.withCcapId(new g);return y(this.http.post(`${this.baseUrl}/${e}/terminate`,{},{params:t}))}setSessionArchived(e){let t=this.withCcapId(new g);return y(this.http.patch(`${this.baseUrl}/${e.sessionId}/archive`,{isArchived:e.isArchived},{params:t}))}getSessionEvents(e){let t=this.withCcapId(new g);return e.sinceSequence!=null&&(t=t.set("sinceSequence",String(e.sinceSequence))),e.limit!=null&&(t=t.set("limit",String(e.limit))),y(this.http.get(`${this.baseUrl}/${e.sessionId}/events`,{params:t}))}hydrateSession(e){return y(this.http.post(`${this.baseUrl}/${e.sessionId}/hydrate`,{force:e.force===!0},{params:this.withCcapId(new g)}))}static \u0275fac=function(t){return new(t||c)};static \u0275prov=E({token:c,factory:c.\u0275fac,providedIn:"root"})}return c})();var fe=(()=>{class c{sessions_$=m([]);sessionsLoading_$=m(!1);sessionsLoadError_$=m(null);selectedSession_$=m(null);selectedSessionLoading_$=m(!1);selectedSessionEvents_$=m([]);sessionEventsHasMore_$=m(!1);mirrorRuntime_$=m(null);consoleMessages_$=m([]);assembledMessages_$=m([]);assembledMessagesHasMore_$=m(!1);isLoadingOlderMessages_$=m(!1);lastStatusUpdate_$=m(null);activeSessionId_$=m("");sessionDetailError_$=m(null);caSession_AS=I(L);extSessionMsg_AS=I(O);globalError_CS=I(k);socket_CS=I(D);ngZone=I(P);eventSubscription=null;reconnectSubscription=null;lastKnownEventSequence=-1;openSessionPollTimer=null;openSessionPollTargetId="";pendingOptimisticPrompts=[];sessionEventsNextSince=null;constructor(){this.eventSubscription=this.socket_CS.event$.subscribe(e=>{this.handleSocketEvent(e)}),this.reconnectSubscription=this.socket_CS.connected$.subscribe(e=>{if(e){let t=this.activeSessionId_$();t&&(this.socket_CS.emit("ca-session:subscribe",{sessionId:t}),this.loadAssembledMessages({sessionId:t}).catch(()=>{}))}})}ngOnDestroy(){this.stopOpenSessionPolling(),this.eventSubscription?.unsubscribe(),this.reconnectSubscription?.unsubscribe()}loadSessions(e){return f(this,null,function*(){this.sessionsLoading_$.set(!0),this.sessionsLoadError_$.set(null);try{let t=yield this.caSession_AS.listSessions({includeArchived:e?.includeArchived}),s=t.sessions,o=(Array.isArray(s)?s:[]).map(_=>this.mapSessionRecord(this.toRecord(_)));this.sessions_$.set(o);let r=t.mirrorRuntime,a=this.toRecord(r),l=a.isAcpConnected,d=a.loadSessionSupported,h=a.isTerminalMode,p=a.isTerminalRunnerConnected;typeof l=="boolean"&&typeof d=="boolean"?this.mirrorRuntime_$.set({isAcpConnected:l,loadSessionSupported:d,isTerminalMode:h===!0,isTerminalRunnerConnected:p===!0}):this.mirrorRuntime_$.set(null)}catch(t){this.sessionsLoadError_$.set(t),this.globalError_CS.showError(t,"ca-session-list")}finally{this.sessionsLoading_$.set(!1)}})}syncFromAgent(e){return f(this,null,function*(){try{yield this.caSession_AS.syncFromAgent({cwd:e?.cwd}),yield this.loadSessions()}catch(t){throw this.globalError_CS.showError(t,"ca-session-sync"),t}})}loadSessionDetail(e){return f(this,null,function*(){this.sessionDetailError_$.set(null),this.selectedSessionLoading_$.set(!0);try{let s=(yield this.caSession_AS.getSession(e.sessionId)).session;this.selectedSession_$.set(this.mapSessionRecord(s)),this.sessionEventsNextSince=null,this.sessionEventsHasMore_$.set(!1);let n=yield this.caSession_AS.getSessionEvents({sessionId:e.sessionId,limit:200}),o=n.events.map(a=>({sessionId:typeof a.sessionId=="string"?a.sessionId:e.sessionId,eventType:typeof a.eventType=="string"?a.eventType:"",timestamp:typeof a.timestamp=="string"?a.timestamp:"",data:this.asRecord(a.data),sequence:typeof a.sequence=="number"?a.sequence:0}));this.selectedSessionEvents_$.set(o),this.sessionEventsHasMore_$.set(n.hasMore===!0);let r=n.nextSinceSequence;return this.sessionEventsNextSince=typeof r=="number"?r:null,this.lastKnownEventSequence=Math.max(-1,...this.selectedSessionEvents_$().map(a=>a.sequence??0)),this.seedConsoleFromMirrorEvents(o),this.loadAssembledMessages({sessionId:e.sessionId}).catch(()=>{}),!0}catch(t){return this.sessionDetailError_$.set(t),this.selectedSession_$.set(null),this.selectedSessionEvents_$.set([]),this.globalError_CS.showError(t,"ca-session-detail"),!1}finally{this.selectedSessionLoading_$.set(!1)}})}loadMoreSessionEvents(e){return f(this,null,function*(){let t=this.sessionEventsNextSince;if(t!=null)try{let s=yield this.caSession_AS.getSessionEvents({sessionId:e.sessionId,sinceSequence:t,limit:200}),n=s.events.map(a=>({sessionId:typeof a.sessionId=="string"?a.sessionId:e.sessionId,eventType:typeof a.eventType=="string"?a.eventType:"",timestamp:typeof a.timestamp=="string"?a.timestamp:"",data:this.asRecord(a.data),sequence:typeof a.sequence=="number"?a.sequence:0})),o=[...this.selectedSessionEvents_$(),...n];o.sort(M.compareMirrorEventsAsc),this.selectedSessionEvents_$.set(o),this.sessionEventsHasMore_$.set(s.hasMore===!0);let r=s.nextSinceSequence;this.sessionEventsNextSince=typeof r=="number"?r:null,this.lastKnownEventSequence=Math.max(this.lastKnownEventSequence,...n.map(a=>a.sequence??0))}catch(s){this.globalError_CS.showError(s,"ca-session-events-page")}})}hydrateFromAgent(e){return f(this,null,function*(){try{yield this.caSession_AS.hydrateSession({sessionId:e.sessionId,force:e.force})}catch(s){throw this.globalError_CS.showError(s,"ca-session-hydrate"),s}if(!(yield this.loadSessionDetail({sessionId:e.sessionId}))){let s=this.sessionDetailError_$();throw s instanceof Error?s:new Error("CA session detail reload after hydrate failed")}})}setActiveSessionId(e){let t=this.activeSessionId_$();t&&t!==e&&this.socket_CS.emit("ca-session:unsubscribe",{sessionId:t}),this.activeSessionId_$.set(e),e&&this.socket_CS.emit("ca-session:subscribe",{sessionId:e})}clearLiveOutput(){this.consoleMessages_$.set([]),this.lastKnownEventSequence=-1,this.pendingOptimisticPrompts.length=0}createSession(e){return f(this,null,function*(){try{let t=yield this.caSession_AS.createSession({workspacePath:e.workspacePath,label:e.label}),n=this.toRecord(t.session).sessionId,o=typeof n=="string"?n:"";return yield this.loadSessions(),o}catch(t){throw t}})}sendPrompt(e){return f(this,null,function*(){let t=`optimistic-prompt-${globalThis.crypto.randomUUID()}`;this.pendingOptimisticPrompts.push({listKey:t,text:e.content}),this.pushConsoleMessage({listKey:t,type:"prompt",text:e.content});try{yield this.caSession_AS.sendPrompt(e)}catch(s){let n=this.pendingOptimisticPrompts.findIndex(o=>o.listKey===t);throw n>=0&&this.pendingOptimisticPrompts.splice(n,1),this.pushConsoleMessage({type:"error",text:A.getErrorMessageForDisplay(s)}),this.globalError_CS.showError(s,"ca-session-prompt"),s}})}stopExecution(e){return f(this,null,function*(){try{yield this.caSession_AS.stopExecution(e)}catch(t){throw this.globalError_CS.showError(t,"ca-session-stop-execution"),t}})}terminateSession(e){return f(this,null,function*(){try{yield this.caSession_AS.terminateSession(e),yield this.loadSessions()}catch(t){throw this.globalError_CS.showError(t,"ca-session-terminate"),t}})}setSessionArchived(e){return f(this,null,function*(){try{let t=yield this.caSession_AS.setSessionArchived(e);yield this.loadSessions(),this.selectedSession_$()?.sessionId===e.sessionId&&t.session!==null&&typeof t.session=="object"&&this.selectedSession_$.set(this.mapSessionRecord(this.toRecord(t.session)))}catch(t){throw this.globalError_CS.showError(t,"ca-session-archive"),t}})}startOpenSessionPolling(e){if(this.stopOpenSessionPolling(),!e)return;this.openSessionPollTargetId=e;let t=10*v.second;this.openSessionPollTimer=globalThis.setInterval(()=>{this.runOpenSessionPollTick(e)},t)}stopOpenSessionPolling(){this.openSessionPollTimer!==null&&(globalThis.clearInterval(this.openSessionPollTimer),this.openSessionPollTimer=null),this.openSessionPollTargetId=""}pushConsoleMessage(e){let t=this.materializeConsoleLineFromPushParams({listKey:e.listKey,type:e.type,text:e.text,timestamp:e.timestamp??new Date().toISOString(),rawData:e.rawData,mirrorEventType:e.mirrorEventType,briefSubtype:e.briefSubtype,useRawBubbleKind:e.useRawBubbleKind,streamTextRole:e.streamTextRole,streamLastSequence:e.streamLastSequence,streamMessageId:e.streamMessageId,streamPartData:e.streamPartData,toolDisplayName:e.toolDisplayName,isToolCallFailedIndicator:e.isToolCallFailedIndicator}),s=this.consoleMessages_$();this.consoleMessages_$.set([...s,t])}appendConsoleMirrorEventOne(e){if(e.eventType==="ca-session-update"){let o=u.tryParseMirrorData(e.data??{});if(o!==null&&this.applyToolCallMirrorEventToLiveConsole({ev:e,parsed:o}))return}let t=T.buildFromMirrorEvent(e);if(t===null||(e.eventType==="prompt-sent"&&t.consoleType==="prompt"&&this.removePendingOptimisticPromptBubbleIfTextMatchesMirror(t.bodyText),this.consoleMessages_$().some(o=>o.listKey===t.listKey))||t.isStreamingTextChunk===!0&&this.tryMergeStreamingMirrorChunkIntoConsole({ev:e,brief:t}))return;let n=typeof e.timestamp=="string"&&e.timestamp.length?e.timestamp:new Date().toISOString();this.pushConsoleMessage(this.buildConsolePushParamsFromBrief({ev:e,brief:t,timestampIso:n}))}tryMergeStreamingMirrorChunkIntoConsole(e){let t=this.consoleMessages_$();if(t.length===0)return!1;let s=t[t.length-1],n=C.parseStreamChunkFromMirrorData(e.ev.data??{});if(n===null||!C.canMergeConsoleTailWithChunk({prev:s,ev:e.ev,parsed:n}))return!1;let o=s.streamPartData!==void 0?[...s.streamPartData]:[];o.push(e.ev.data??{});let r=e.brief.streamMessageId,a=r!==void 0&&r.trim().length>0?r.trim():s.streamMessageId,l=b(S({},s),{text:s.text+e.brief.bodyText,streamLastSequence:e.ev.sequence??s.streamLastSequence,streamMessageId:a,streamPartData:o,rawData:{streamMerged:!0,partCount:o.length,lastChunkSequence:e.ev.sequence,chunkSnapshots:o}}),d=[...t];return d[d.length-1]=l,this.consoleMessages_$.set(d),!0}buildConsolePushParamsFromBrief(e){let t=e.brief;return t.isStreamingTextChunk===!0?{listKey:t.listKey,type:t.consoleType,text:t.bodyText,timestamp:e.timestampIso,rawData:t.rawData,mirrorEventType:t.mirrorEventType,briefSubtype:t.briefSubtype,useRawBubbleKind:t.useRawBubbleKind,streamTextRole:t.streamTextRole,streamLastSequence:e.ev.sequence,streamMessageId:t.streamMessageId,streamPartData:[e.ev.data??{}]}:{listKey:t.listKey,type:t.consoleType,text:t.bodyText,timestamp:e.timestampIso,rawData:t.rawData,mirrorEventType:t.mirrorEventType,briefSubtype:t.briefSubtype,useRawBubbleKind:t.useRawBubbleKind}}buildFoldedConsoleMessagesFromMirrorEvents(e){let t=[];for(let s of e){if(this.tryFoldToolCallMirrorEventIntoOut(t,s))continue;let o=T.buildFromMirrorEvent(s);if(o===null)continue;let r=typeof s.timestamp=="string"&&s.timestamp.length?s.timestamp:new Date().toISOString();if(o.isStreamingTextChunk===!0){let a=C.parseStreamChunkFromMirrorData(s.data??{});if(a===null)continue;let l=t.length>0?t[t.length-1]:void 0;if(l!==void 0&&C.canMergeConsoleTailWithChunk({prev:l,ev:s,parsed:a})){let d=l.streamPartData!==void 0?[...l.streamPartData]:[];d.push(s.data??{});let h=o.streamMessageId,p=h!==void 0&&h.trim().length>0?h.trim():l.streamMessageId;t[t.length-1]=b(S({},l),{text:l.text+o.bodyText,streamLastSequence:s.sequence??l.streamLastSequence,streamMessageId:p,streamPartData:d,rawData:{streamMerged:!0,partCount:d.length,lastChunkSequence:s.sequence,chunkSnapshots:d}})}else t.push(this.materializeConsoleLineFromPushParams(this.buildConsolePushParamsFromBrief({ev:s,brief:o,timestampIso:r})))}else t.push(this.materializeConsoleLineFromPushParams(this.buildConsolePushParamsFromBrief({ev:s,brief:o,timestampIso:r})))}return t}materializeConsoleLineFromPushParams(e){return{listKey:e.listKey??globalThis.crypto.randomUUID(),type:e.type,text:e.text,timestamp:e.timestamp,rawData:e.rawData,mirrorEventType:e.mirrorEventType,briefSubtype:e.briefSubtype,useRawBubbleKind:e.useRawBubbleKind,streamTextRole:e.streamTextRole,streamLastSequence:e.streamLastSequence,streamMessageId:e.streamMessageId,streamPartData:e.streamPartData,toolDisplayName:e.toolDisplayName,isToolCallFailedIndicator:e.isToolCallFailedIndicator}}applyToolCallMirrorEventToLiveConsole(e){let t=e.parsed,s=t.toolCallId,n=typeof e.ev.timestamp=="string"&&e.ev.timestamp.length?e.ev.timestamp:new Date().toISOString(),o=e.ev.data??{};if(t.sessionUpdate==="tool_call"){let r=u.listKeyStart(s);if(this.consoleMessages_$().some(h=>h.listKey===r))return!0;let l=c.toolCallDisplayName(t),d=c.buildToolCallBodyText({displayName:l,parsed:t});return this.pushConsoleMessage({listKey:r,type:"tool",text:d,timestamp:n,rawData:o,mirrorEventType:"ca-session-update",briefSubtype:"tool_call",toolDisplayName:l}),!0}if(t.sessionUpdate==="tool_call_update"&&t.status==="in_progress"){t.rawInput!==void 0&&this.patchLiveToolCallStartInput({toolCallId:s,parsed:t});let r=u.listKeyProgress(s),a="in_progress",l=this.consoleMessages_$(),d=l.findIndex(p=>p.listKey===r),h=this.materializeConsoleLineFromPushParams({listKey:r,type:"status-update",text:a,timestamp:n,rawData:o,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"});if(d>=0){let p=[...l];p[d]=h,this.consoleMessages_$.set(p)}else this.consoleMessages_$.set([...l,h]);return!0}if(t.sessionUpdate==="tool_call_update"&&t.status==="completed"){if(u.hasRawOutputError(t.rawOutput)){let d=u.listKeyError(s);if(!this.consoleMessages_$().some(p=>p.listKey===d)){let p=u.summarizeRawOutputError(t.rawOutput);this.pushConsoleMessage({listKey:d,type:"error",text:p,timestamp:n,rawData:o,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"}),this.patchLiveConsoleToolCallStartFailed({toolCallId:s})}return!0}let a=u.listKeyResult(s);if(!this.consoleMessages_$().some(d=>d.listKey===a)){let d=u.summarizeRawOutputSuccess(t.rawOutput);this.pushConsoleMessage({listKey:a,type:"tool-result",text:d,timestamp:n,rawData:o,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"})}return!0}return!1}tryFoldToolCallMirrorEventIntoOut(e,t){if(t.eventType!=="ca-session-update")return!1;let s=u.tryParseMirrorData(t.data??{});if(s===null)return!1;let n=typeof t.timestamp=="string"&&t.timestamp.length?t.timestamp:new Date().toISOString(),o=t.data??{};if(s.sessionUpdate==="tool_call"){let r=u.listKeyStart(s.toolCallId);if(!e.some(l=>l.listKey===r)){let l=c.toolCallDisplayName(s),d=c.buildToolCallBodyText({displayName:l,parsed:s});e.push(this.materializeConsoleLineFromPushParams({listKey:r,type:"tool",text:d,timestamp:n,rawData:o,mirrorEventType:"ca-session-update",briefSubtype:"tool_call",toolDisplayName:l}))}return!0}if(s.sessionUpdate==="tool_call_update"&&s.status==="in_progress"){s.rawInput!==void 0&&c.patchOutArrayToolCallStartInput(e,s);let r=u.listKeyProgress(s.toolCallId),a=this.materializeConsoleLineFromPushParams({listKey:r,type:"status-update",text:"in_progress",timestamp:n,rawData:o,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"}),l=e.findIndex(d=>d.listKey===r);return l>=0?e[l]=a:e.push(a),!0}if(s.sessionUpdate==="tool_call_update"&&s.status==="completed"){if(u.hasRawOutputError(s.rawOutput)){let d=u.listKeyError(s.toolCallId);if(!e.some(p=>p.listKey===d)){let p=u.summarizeRawOutputError(s.rawOutput);e.push(this.materializeConsoleLineFromPushParams({listKey:d,type:"error",text:p,timestamp:n,rawData:o,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"})),c.patchOutArrayToolCallStartFailed(e,s.toolCallId)}return!0}let a=u.listKeyResult(s.toolCallId);if(!e.some(d=>d.listKey===a)){let d=u.summarizeRawOutputSuccess(s.rawOutput);e.push(this.materializeConsoleLineFromPushParams({listKey:a,type:"tool-result",text:d,timestamp:n,rawData:o,mirrorEventType:"ca-session-update",briefSubtype:"tool_call_update"}))}return!0}return!1}patchLiveToolCallStartInput(e){let t=u.listKeyStart(e.toolCallId),s=this.consoleMessages_$(),n=s.findIndex(l=>l.listKey===t);if(n<0)return;let o=s[n].toolDisplayName??"Tool call",r=c.buildToolCallBodyText({displayName:o,parsed:e.parsed}),a=[...s];a[n]=b(S({},a[n]),{text:r}),this.consoleMessages_$.set(a)}patchLiveConsoleToolCallStartFailed(e){let t=u.listKeyStart(e.toolCallId),s=this.consoleMessages_$(),n=s.findIndex(r=>r.listKey===t);if(n<0)return;let o=[...s];o[n]=b(S({},o[n]),{isToolCallFailedIndicator:!0}),this.consoleMessages_$.set(o)}static patchOutArrayToolCallStartFailed(e,t){let s=u.listKeyStart(t),n=e.findIndex(o=>o.listKey===s);n<0||(e[n]=b(S({},e[n]),{isToolCallFailedIndicator:!0}))}static patchOutArrayToolCallStartInput(e,t){let s=u.listKeyStart(t.toolCallId),n=e.findIndex(a=>a.listKey===s);if(n<0)return;let o=e[n].toolDisplayName??"Tool call",r=c.buildToolCallBodyText({displayName:o,parsed:t});e[n]=b(S({},e[n]),{text:r})}static toolCallDisplayName(e){return e.title!==void 0&&e.title.length?e.title:e.toolKind!==void 0&&e.toolKind.length?e.toolKind:"Tool call"}static buildToolCallBodyText(e){let t=[e.displayName],s=u.formatRawInput(e.parsed.rawInput);s.length&&t.push(s);let n=u.formatLocations(e.parsed.locations);return n.length&&t.push(`[locations]
|
|
6
|
+
${n}`),t.join(`
|
|
7
|
+
`)}runOpenSessionPollTick(e){return f(this,null,function*(){if(!(e!==this.activeSessionId_$()||e!==this.openSessionPollTargetId))try{let t=yield this.caSession_AS.getSession(e);this.ngZone.run(()=>{e===this.activeSessionId_$()&&this.selectedSession_$.set(this.mapSessionRecord(this.toRecord(t.session)))});let s=this.lastKnownEventSequence,o=(yield this.caSession_AS.getSessionEvents({sessionId:e,sinceSequence:s>=0?s:void 0,limit:200})).events.map(r=>({sessionId:typeof r.sessionId=="string"?r.sessionId:e,eventType:typeof r.eventType=="string"?r.eventType:"",timestamp:typeof r.timestamp=="string"?r.timestamp:"",data:this.asRecord(r.data),sequence:typeof r.sequence=="number"?r.sequence:0}));if(!o.length)return;this.ngZone.run(()=>{if(e!==this.activeSessionId_$())return;let r=new Map;for(let l of this.selectedSessionEvents_$())r.set(l.sequence??0,l);for(let l of o)r.set(l.sequence??0,l);let a=[...r.values()].sort(M.compareMirrorEventsAsc);this.selectedSessionEvents_$.set(a);for(let l of o)(l.sequence??0)>s&&this.appendConsoleMirrorEventOne(l);this.lastKnownEventSequence=Math.max(s,...o.map(l=>l.sequence??0))})}catch{}})}handleSocketEvent(e){let t=e.event,s=e.payload;try{this.ngZone.run(()=>{switch(t){case"ca-session:status":this.handleStatusUpdate(s);break;case"ca-session:output":this.handleOutputChunk(s);break;case"ca-session:event":this.handleSessionEvent(s);break;case"ca-session:list-update":this.loadSessions().catch(()=>{});break;case"ext-session-msg:message":this.handleAssembledMessage(s);break;case"ext-session-msg:update":this.handleAssembledMessageUpdate(s);break;default:break}})}catch(n){v.DyFM_Log.error(`CCAP_CaSession_DS | socket error | ${t}`,n)}}handleStatusUpdate(e){let t=typeof e.sessionId=="string"?e.sessionId:"",s=typeof e.status=="string"?e.status:"",n=typeof e.statusMessage=="string"?e.statusMessage:void 0;this.lastStatusUpdate_$.set({sessionId:t,status:s,statusMessage:n});let o=this.sessions_$();this.sessions_$.set(o.map(a=>a.sessionId===t?b(S({},a),{status:s,statusMessage:n}):a));let r=this.selectedSession_$();r?.sessionId===t&&this.selectedSession_$.set(b(S({},r),{status:s,statusMessage:n})),s==="errored"&&this.globalError_CS.showError(new Error(n?`CA session error: ${n}`:"CA session errored"),"ca-session-status")}handleOutputChunk(e){let t=typeof e.sessionId=="string"?e.sessionId:"";if(t&&t!==this.activeSessionId_$())return;let s=typeof e.content=="string"?e.content:"",n=typeof e.type=="string"?e.type:"response";if(s){let o={};for(let r of Object.keys(e))o[r]=Reflect.get(e,r);this.pushConsoleMessage({type:n==="error"?"error":"assistant",text:s,rawData:o,mirrorEventType:"ca-session:output"})}}handleSessionEvent(e){let t=typeof e.sessionId=="string"?e.sessionId:"";if(t&&t!==this.activeSessionId_$())return;let s=this.asRecord(e.event),n=typeof s.sequence=="number"?s.sequence:0;if(n<=this.lastKnownEventSequence)return;this.lastKnownEventSequence=n;let o=s.timestamp,r={sessionId:t,eventType:typeof s.eventType=="string"?s.eventType:"",timestamp:typeof o=="string"&&o.length?o:new Date().toISOString(),data:this.asRecord(s.data),sequence:n},a=this.selectedSessionEvents_$();this.selectedSessionEvents_$.set([...a,r]),this.appendConsoleMirrorEventOne(r)}seedConsoleFromMirrorEvents(e){this.pendingOptimisticPrompts.length=0;let t=[...e].sort(M.compareMirrorEventsAsc);this.consoleMessages_$.set(this.buildFoldedConsoleMessagesFromMirrorEvents(t))}removePendingOptimisticPromptBubbleIfTextMatchesMirror(e){let t=this.pendingOptimisticPrompts.findIndex(o=>o.text===e||o.text.trim()===e.trim());if(t<0)return;let s=this.pendingOptimisticPrompts[t];this.pendingOptimisticPrompts.splice(t,1);let n=this.consoleMessages_$().filter(o=>o.listKey!==s.listKey);this.consoleMessages_$.set(n)}mapSessionRecord(e){return{sessionId:typeof e.sessionId=="string"?e.sessionId:void 0,acpSessionId:typeof e.acpSessionId=="string"?e.acpSessionId:void 0,label:typeof e.label=="string"?e.label:void 0,workspacePath:typeof e.workspacePath=="string"?e.workspacePath:void 0,status:typeof e.status=="string"?e.status:void 0,statusMessage:typeof e.statusMessage=="string"?e.statusMessage:void 0,promptCount:typeof e.promptCount=="number"?e.promptCount:void 0,lastPrompt:typeof e.lastPrompt=="string"?e.lastPrompt:void 0,lastActivityAt:typeof e.lastActivityAt=="string"?e.lastActivityAt:void 0,isArchived:e.isArchived===!0,parentSessionId:typeof e.parentSessionId=="string"?e.parentSessionId:void 0,lastSyncAt:typeof e.lastSyncAt=="string"?e.lastSyncAt:void 0,lastSyncError:typeof e.lastSyncError=="string"?e.lastSyncError:void 0,agentInfoName:typeof e.agentInfoName=="string"?e.agentInfoName:void 0,agentInfoVersion:typeof e.agentInfoVersion=="string"?e.agentInfoVersion:void 0,isAcpConnected:typeof e.isAcpConnected=="boolean"?e.isAcpConnected:void 0,loadSessionSupported:typeof e.loadSessionSupported=="boolean"?e.loadSessionSupported:void 0,isTerminalMode:typeof e.isTerminalMode=="boolean"?e.isTerminalMode:void 0,isTerminalRunnerConnected:typeof e.isTerminalRunnerConnected=="boolean"?e.isTerminalRunnerConnected:void 0}}asRecord(e){return this.toRecord(e)}toRecord(e){if(e!==null&&typeof e=="object"&&!Array.isArray(e)){let t={};for(let s of Object.keys(e))t[s]=Reflect.get(e,s);return t}return{}}loadAssembledMessages(e){return f(this,null,function*(){try{let t=yield this.extSessionMsg_AS.getMessages({sessionId:e.sessionId,latest:!0});this.assembledMessages_$.set(t.messages),this.assembledMessagesHasMore_$.set(t.hasMore===!0)}catch(t){v.DyFM_Log.error(`CCAP_CaSession_DS | loadAssembledMessages failed | sessionId: ${e.sessionId}`,t)}})}loadOlderAssembledMessages(e){return f(this,null,function*(){if(this.isLoadingOlderMessages_$()||!this.assembledMessagesHasMore_$())return;let t=this.assembledMessages_$();if(!t.length)return;let s=t.reduce((n,o)=>(o.sequence??0)<n?o.sequence??0:n,t[0].sequence??0);this.isLoadingOlderMessages_$.set(!0);try{let n=yield this.extSessionMsg_AS.getMessages({sessionId:e.sessionId,beforeSequence:s,limit:e.limit??50});n.messages.length&&this.assembledMessages_$.set([...n.messages,...t]),this.assembledMessagesHasMore_$.set(n.hasMore===!0)}catch(n){v.DyFM_Log.error(`CCAP_CaSession_DS | loadOlderAssembledMessages failed | sessionId: ${e.sessionId}`,n)}finally{this.isLoadingOlderMessages_$.set(!1)}})}handleAssembledMessage(e){let t=typeof e.sessionId=="string"?e.sessionId:"";if(!t||t!==this.activeSessionId_$())return;let s=e.message;if(!s||typeof s!="object")return;let n=s,o=this.assembledMessages_$();this.assembledMessages_$.set([...o,n])}handleAssembledMessageUpdate(e){let t=typeof e.sessionId=="string"?e.sessionId:"";if(!t||t!==this.activeSessionId_$())return;let s=typeof e.messageKey=="string"?e.messageKey:"";if(!s)return;let n=e.update;if(!n||typeof n!="object")return;let o=n,r=this.assembledMessages_$(),a=r.findIndex(h=>h.messageKey===s);if(a<0)return;let l=S({},r[a]);typeof o.bodyText=="string"&&(l.bodyText=o.bodyText),o.toolResult!==void 0&&(l.toolResult=o.toolResult),typeof o.toolStatus=="string"&&(l.toolStatus=o.toolStatus),o.headerStatusDot!==void 0&&(l.headerStatusDot=typeof o.headerStatusDot=="string"?o.headerStatusDot:void 0);let d=[...r];d[a]=l,this.assembledMessages_$.set(d)}static \u0275fac=function(t){return new(t||c)};static \u0275prov=E({token:c,factory:c.\u0275fac,providedIn:"root"})}return c})();export{M as a,C as b,x as c,u as d,fe as e};
|
|
8
|
+
//# sourceMappingURL=chunk-RNXGBUU3.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["src/app/_modules/external-sessions/_modules/cursor-acp/_collections/ca-event-chronological-sort.util.ts", "src/app/_modules/external-sessions/_modules/cursor-acp/_collections/utils/console-display/ca-mirror-stream-merge.util.ts", "src/app/_modules/external-sessions/_modules/cursor-acp/_services/cursor-acp.data-service.ts", "src/app/_modules/shared/_collections/utils/shr-unknown-value-pretty-json.util.ts", "src/app/_modules/external-sessions/_modules/cursor-acp/_collections/utils/console-display/ca-mirror-event-brief.util.ts", "src/app/_modules/external-sessions/_modules/cursor-acp/_collections/utils/console-display/ca-tool-call-mirror-parse.util.ts", "src/app/_modules/external-sessions/_modules/cursor-acp/_services/cursor-acp.api-service.ts"],
|
|
4
|
+
"sourcesContent": ["import { CA_EventItem_Interface } from '../_models/interfaces/ca-view.interface';\n\n/**\n * Mirror timeline / konzol — események sorrendje: `sequence` ASC, tie-break `timestamp` (azonos sequence DB hiba / régi adat).\n */\nexport class CA_EventChronologicalSort_Util {\n\n /**\n * Növekvő időrend — user prompt és assistant chunk helyes váltakozása duplikált sequence mellett is.\n */\n static compareMirrorEventsAsc(\n a: CA_EventItem_Interface,\n b: CA_EventItem_Interface,\n ): number {\n const dq: number = (a.sequence ?? 0) - (b.sequence ?? 0);\n if (dq !== 0) {\n return dq;\n }\n const ta: string = typeof a.timestamp === 'string' ? a.timestamp : '';\n const tb: string = typeof b.timestamp === 'string' ? b.timestamp : '';\n const tc: number = ta.localeCompare(tb);\n if (tc !== 0) {\n return tc;\n }\n const ea: string = typeof a.eventType === 'string' ? a.eventType : '';\n const eb: string = typeof b.eventType === 'string' ? b.eventType : '';\n return ea.localeCompare(eb);\n }\n}\n", "import {\n CA_ConsoleStreamTail_Interface,\n CA_EventItem_Interface,\n CA_MirrorStreamChunkParsed_Interface,\n CA_TimelineStreamRow_Interface,\n} from '../../../_models/interfaces/ca-view.interface';\n\n/**\n * ACP stream chunk-ok összefűzése — console buborék és timeline sor SSOT szabályok.\n */\nexport class CA_MirrorStreamMerge_Util {\n\n /**\n * Ugyanazon logikai üzenet chunk-jai: mindkét messageId kitöltve és különböző → külön stream.\n * Ha csak az egyik oldalon van id, az ACP gyakori mintája (későn érkező messageId) — még fűzünk.\n */\n private static messageIdsCompatibleForStreamMerge(\n prevMid: string | undefined,\n nextMid: string | undefined,\n ): boolean {\n const p: string = (prevMid ?? '').trim();\n const n: string = (nextMid ?? '').trim();\n if (p.length > 0 && n.length > 0) {\n return p === n;\n }\n return true;\n }\n\n /**\n * Mirror `data` (sessionId + update) → chunk parse vagy null.\n */\n static parseStreamChunkFromMirrorData(\n data: Record<string, unknown>,\n ): CA_MirrorStreamChunkParsed_Interface | null {\n const upd: unknown = data.update;\n if (upd === null || typeof upd !== 'object' || Array.isArray(upd)) {\n return null;\n }\n const rec: Record<string, unknown> = CA_MirrorStreamMerge_Util.toPlainRecord(upd);\n const kind: unknown = rec.sessionUpdate;\n let role: 'agent' | 'user' | 'thought' | null = null;\n if (kind === 'agent_message_chunk') {\n role = 'agent';\n }\n if (kind === 'user_message_chunk') {\n role = 'user';\n }\n if (kind === 'agent_thought_chunk') {\n role = 'thought';\n }\n if (role === null) {\n return null;\n }\n const content: unknown = rec.content;\n if (content === null || typeof content !== 'object' || Array.isArray(content)) {\n return null;\n }\n const crec: Record<string, unknown> = CA_MirrorStreamMerge_Util.toPlainRecord(content);\n const text: unknown = crec.text;\n if (typeof text !== 'string' || !text.length) {\n return null;\n }\n const midRaw: unknown = rec.messageId;\n const messageId: string | undefined =\n typeof midRaw === 'string' && midRaw.length > 0 ? midRaw : undefined;\n return { role: role, text: text, messageId: messageId };\n }\n\n /**\n * Console stream sor + új chunk — ugyanaz a stream: role egyezik, messageId kompatibilis,\n * sequence szigorúan növekvő (a szerver minden ACP notification-re léptet, közte lehet tool / info).\n */\n static canMergeConsoleTailWithChunk(params: {\n prev: CA_ConsoleStreamTail_Interface;\n ev: CA_EventItem_Interface;\n parsed: CA_MirrorStreamChunkParsed_Interface;\n }): boolean {\n const prev: CA_ConsoleStreamTail_Interface = params.prev;\n if (prev.streamTextRole === undefined || prev.streamTextRole !== params.parsed.role) {\n return false;\n }\n const prevMid: string | undefined = prev.streamMessageId;\n const nextMid: string | undefined = params.parsed.messageId;\n if (!CA_MirrorStreamMerge_Util.messageIdsCompatibleForStreamMerge(prevMid, nextMid)) {\n return false;\n }\n const nSeq: number = params.ev.sequence ?? 0;\n const pSeq: number = prev.streamLastSequence ?? 0;\n if (nSeq <= pSeq) {\n return false;\n }\n return true;\n }\n\n /**\n * Timeline: előző esemény + következő chunk ugyanabból a streamből.\n */\n static canMergeMirrorChunkEvents(\n prevEv: CA_EventItem_Interface,\n nextEv: CA_EventItem_Interface,\n nextParsed: CA_MirrorStreamChunkParsed_Interface,\n ): boolean {\n const prevParsed: CA_MirrorStreamChunkParsed_Interface | null =\n CA_MirrorStreamMerge_Util.parseStreamChunkFromMirrorData(prevEv.data ?? {});\n if (prevParsed === null) {\n return false;\n }\n if (prevParsed.role !== nextParsed.role) {\n return false;\n }\n const prevMid: string | undefined = prevParsed.messageId;\n const nextMid: string | undefined = nextParsed.messageId;\n if (!CA_MirrorStreamMerge_Util.messageIdsCompatibleForStreamMerge(prevMid, nextMid)) {\n return false;\n }\n const pSeq: number = prevEv.sequence ?? 0;\n const nSeq: number = nextEv.sequence ?? 0;\n if (nSeq <= pSeq) {\n return false;\n }\n return true;\n }\n\n /**\n * Növekvő sequence szerinti események → timeline sorok (chunk run összevonva).\n */\n static foldEventsToTimelineRows(\n sortedAsc: CA_EventItem_Interface[],\n ): CA_TimelineStreamRow_Interface[] {\n const rows: CA_TimelineStreamRow_Interface[] = [];\n for (const ev of sortedAsc) {\n const nextParsed: CA_MirrorStreamChunkParsed_Interface | null =\n CA_MirrorStreamMerge_Util.parseStreamChunkFromMirrorData(ev.data ?? {});\n if (nextParsed !== null) {\n const tail: CA_TimelineStreamRow_Interface | undefined =\n rows.length > 0 ? rows[rows.length - 1] : undefined;\n const tailLast: CA_EventItem_Interface | undefined =\n tail !== undefined && tail.events.length > 0 ? tail.events[tail.events.length - 1] : undefined;\n if (\n tail !== undefined\n && tailLast !== undefined\n && CA_MirrorStreamMerge_Util.canMergeMirrorChunkEvents(tailLast, ev, nextParsed)\n ) {\n const nextEvents: CA_EventItem_Interface[] = [...tail.events, ev];\n rows[rows.length - 1] = {\n rowKey: CA_MirrorStreamMerge_Util.mergedTimelineRowKey(nextEvents),\n events: nextEvents,\n };\n } else {\n rows.push({\n rowKey: `evt-${String(ev.sequence ?? 0)}`,\n events: [ev],\n });\n }\n } else {\n rows.push({\n rowKey: `evt-${String(ev.sequence ?? 0)}`,\n events: [ev],\n });\n }\n }\n return rows;\n }\n\n /**\n * Összevont chunk sor stabil track kulcsa.\n */\n static mergedTimelineRowKey(events: CA_EventItem_Interface[]): string {\n if (!events.length) {\n return 'evt-empty';\n }\n const first: number = events[0].sequence ?? 0;\n const last: number = events[events.length - 1].sequence ?? 0;\n return `merged-chunk-${String(first)}-${String(last)}`;\n }\n\n private static toPlainRecord(value: object): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(value)) {\n out[key] = Reflect.get(value, key);\n }\n return out;\n }\n}\n", "import { inject, Injectable, NgZone, OnDestroy, signal } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { DyFM_Log, second } from '@futdevpro/fsm-dynamo';\n\nimport {\n CA_EventItem_Interface,\n CA_ListItem_Interface,\n CA_MirrorRuntime_Interface,\n} from '../_models/interfaces/ca-view.interface';\nimport { CA_MirrorBrief_Result_Interface } from '../_models/interfaces/ca-mirror-brief-result.interface';\nimport { CCAP_ErrorDisplay_Util } from '../../../../../_collections/error/error-display.util';\nimport { CA_EventChronologicalSort_Util } from '../_collections/ca-event-chronological-sort.util';\nimport { CA_MirrorEventBrief_Util } from '../_collections/utils/console-display/ca-mirror-event-brief.util';\nimport { CA_MirrorStreamMerge_Util } from '../_collections/utils/console-display/ca-mirror-stream-merge.util';\nimport { CA_ToolCallMirrorParse_Util } from '../_collections/utils/console-display/ca-tool-call-mirror-parse.util';\nimport { CA_ToolCallMirrorParseResult_Interface } from '../_models/interfaces/ca-tool-call-mirror-parse-result.interface';\nimport { CursorAcp_ApiService } from './cursor-acp.api-service';\nimport { ExS_Message_ApiService } from '../../../_services/exs-message.api-service';\nimport { CCAP_GlobalError_ControlService } from '../../../../../_services/control-services/ccap-global-error.control-service';\nimport { CCAP_Socket_ControlService } from '../../../../../_services/control-services/ccap-socket.control-service';\nimport { CCAP_ExtSessionMessage_Response } from '../../../../../_models/interfaces/shared/ccap-ext-message.interface';\nimport { CaSessionConsoleMessage_Interface } from './ca.data-service.interface';\n\n/**\n * CA session kliens SSOT — mirror lista, részlet, események, socket push.\n */\n@Injectable({ providedIn: 'root' })\nexport class CursorAcp_DataService implements OnDestroy {\n\n readonly sessions_$ = signal<CA_ListItem_Interface[]>([]);\n readonly sessionsLoading_$ = signal<boolean>(false);\n readonly sessionsLoadError_$ = signal<unknown | null>(null);\n\n readonly selectedSession_$ = signal<CA_ListItem_Interface | null>(null);\n readonly selectedSessionLoading_$ = signal<boolean>(false);\n\n readonly selectedSessionEvents_$ = signal<CA_EventItem_Interface[]>([]);\n\n /** Timeline pagination — mirror GET /events `hasMore`. */\n readonly sessionEventsHasMore_$ = signal<boolean>(false);\n\n /** Lista API `mirrorRuntime` — dashboard ACP / loadSession badge. */\n readonly mirrorRuntime_$ = signal<CA_MirrorRuntime_Interface | null>(null);\n\n readonly consoleMessages_$ = signal<CaSessionConsoleMessage_Interface[]>([]);\n\n /** Szerver-oldali assembled messages (SSOT — tool pairing, stream merge szerveren). */\n readonly assembledMessages_$ = signal<CCAP_ExtSessionMessage_Response[]>([]);\n\n /**\n * REQ-SES-CONTENT-CHUNK-LOAD-AND-ARCHIVE-001 — backward-prepend pagináció state.\n * `assembledMessagesHasMore_$`: van-e még régebbi szakasz a head felé;\n * `isLoadingOlderMessages_$`: true a backward-fetch alatt (UI top-spinner +\n * race-guard, hogy duplikált fetch ne induljon).\n */\n readonly assembledMessagesHasMore_$ = signal<boolean>(false);\n readonly isLoadingOlderMessages_$ = signal<boolean>(false);\n\n readonly lastStatusUpdate_$ = signal<{\n sessionId: string;\n status: string;\n statusMessage?: string;\n } | null>(null);\n\n readonly activeSessionId_$ = signal<string>('');\n\n /** GET session / events hiba — detail panel inline + globális error mellett. */\n readonly sessionDetailError_$ = signal<unknown | null>(null);\n\n private readonly caSession_AS: CursorAcp_ApiService = inject(CursorAcp_ApiService);\n private readonly extSessionMsg_AS: ExS_Message_ApiService =\n inject(ExS_Message_ApiService);\n private readonly globalError_CS: CCAP_GlobalError_ControlService =\n inject(CCAP_GlobalError_ControlService);\n private readonly socket_CS: CCAP_Socket_ControlService = inject(CCAP_Socket_ControlService);\n private readonly ngZone: NgZone = inject(NgZone);\n\n private eventSubscription: Subscription | null = null;\n private reconnectSubscription: Subscription | null = null;\n private lastKnownEventSequence: number = -1;\n\n private openSessionPollTimer: ReturnType<typeof setInterval> | null = null;\n\n private openSessionPollTargetId: string = '';\n\n /**\n * Optimista prompt buborék `listKey` + nyers szöveg — mirror `prompt-sent` érkezésekor egy buborék marad.\n */\n private readonly pendingOptimisticPrompts: { listKey: string; text: string }[] = [];\n\n /** Következő GET /events `sinceSequence` (exclusive) — utolsó betöltött sor `sequence`. */\n private sessionEventsNextSince: number | null = null;\n\n constructor() {\n this.eventSubscription = this.socket_CS.event$.subscribe(\n (envelope: { event: string; payload: Record<string, unknown> }): void => {\n this.handleSocketEvent(envelope);\n },\n );\n this.reconnectSubscription = this.socket_CS.connected$.subscribe(\n (isConnected: boolean): void => {\n if (isConnected) {\n const activeId: string = this.activeSessionId_$();\n if (activeId) {\n this.socket_CS.emit('ca-session:subscribe', { sessionId: activeId });\n // Assembled messages újratöltése — a disconnect alatt érkezett socket push-ok\n // (ext-session-msg:message/update) elvesztek; a REST reload pótolja őket.\n this.loadAssembledMessages({ sessionId: activeId }).catch((): void => {});\n }\n }\n },\n );\n }\n\n ngOnDestroy(): void {\n this.stopOpenSessionPolling();\n this.eventSubscription?.unsubscribe();\n this.reconnectSubscription?.unsubscribe();\n }\n\n /**\n * Mirror lista betöltése.\n */\n async loadSessions(params?: { includeArchived?: boolean }): Promise<void> {\n this.sessionsLoading_$.set(true);\n this.sessionsLoadError_$.set(null);\n try {\n const res = await this.caSession_AS.listSessions({\n includeArchived: params?.includeArchived,\n });\n const rawUnknown: unknown = res.sessions;\n const rawList: unknown[] = Array.isArray(rawUnknown) ? rawUnknown : [];\n const mapped: CA_ListItem_Interface[] = rawList.map(\n (s: unknown): CA_ListItem_Interface =>\n this.mapSessionRecord(this.toRecord(s)),\n );\n this.sessions_$.set(mapped);\n const rtUnknown: unknown = res.mirrorRuntime;\n const rtRec: Record<string, unknown> = this.toRecord(rtUnknown);\n const ic: unknown = rtRec.isAcpConnected;\n const ls: unknown = rtRec.loadSessionSupported;\n const tm: unknown = rtRec.isTerminalMode;\n const trc: unknown = rtRec.isTerminalRunnerConnected;\n if (typeof ic === 'boolean' && typeof ls === 'boolean') {\n this.mirrorRuntime_$.set({\n isAcpConnected: ic,\n loadSessionSupported: ls,\n isTerminalMode: tm === true,\n isTerminalRunnerConnected: trc === true,\n });\n } else {\n this.mirrorRuntime_$.set(null);\n }\n } catch (err: unknown) {\n this.sessionsLoadError_$.set(err);\n this.globalError_CS.showError(err, 'ca-session-list');\n } finally {\n this.sessionsLoading_$.set(false);\n }\n }\n\n /**\n * Agent session/list → mirror.\n */\n async syncFromAgent(params?: { cwd?: string }): Promise<void> {\n try {\n await this.caSession_AS.syncFromAgent({ cwd: params?.cwd });\n await this.loadSessions();\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ca-session-sync');\n throw err;\n }\n }\n\n /**\n * Részlet + események. `false` = hiba (`sessionDetailError_$` + globális error); nem dob, hogy ne duplázzunk hydrate catch-ben.\n */\n async loadSessionDetail(params: { sessionId: string }): Promise<boolean> {\n this.sessionDetailError_$.set(null);\n this.selectedSessionLoading_$.set(true);\n try {\n const res = await this.caSession_AS.getSession(params.sessionId);\n const row: Record<string, unknown> = res.session;\n this.selectedSession_$.set(this.mapSessionRecord(row));\n this.sessionEventsNextSince = null;\n this.sessionEventsHasMore_$.set(false);\n const ev = await this.caSession_AS.getSessionEvents({\n sessionId: params.sessionId,\n limit: 200,\n });\n const mapped: CA_EventItem_Interface[] = ev.events.map(\n (e: Record<string, unknown>): CA_EventItem_Interface => ({\n sessionId: typeof e.sessionId === 'string' ? e.sessionId : params.sessionId,\n eventType: typeof e.eventType === 'string' ? e.eventType : '',\n timestamp: typeof e.timestamp === 'string' ? e.timestamp : '',\n data: this.asRecord(e.data),\n sequence: typeof e.sequence === 'number' ? e.sequence : 0,\n }),\n );\n this.selectedSessionEvents_$.set(mapped);\n this.sessionEventsHasMore_$.set(ev.hasMore === true);\n const ns: unknown = ev.nextSinceSequence;\n this.sessionEventsNextSince = typeof ns === 'number' ? ns : null;\n this.lastKnownEventSequence = Math.max(\n -1,\n ...this.selectedSessionEvents_$().map((x: CA_EventItem_Interface): number =>\n x.sequence ?? 0),\n );\n this.seedConsoleFromMirrorEvents(mapped);\n\n // Assembled messages betöltése (SSOT — fire-and-forget, nem blokkolja a detail load-ot)\n this.loadAssembledMessages({ sessionId: params.sessionId }).catch((): void => {});\n\n return true;\n } catch (err: unknown) {\n this.sessionDetailError_$.set(err);\n this.selectedSession_$.set(null);\n this.selectedSessionEvents_$.set([]);\n this.globalError_CS.showError(err, 'ca-session-detail');\n return false;\n } finally {\n this.selectedSessionLoading_$.set(false);\n }\n }\n\n /**\n * Mirror timeline következő oldal — `sinceSequence` lánc.\n */\n async loadMoreSessionEvents(params: { sessionId: string }): Promise<void> {\n const since: number | null = this.sessionEventsNextSince;\n if (since == null) {\n return;\n }\n try {\n const ev = await this.caSession_AS.getSessionEvents({\n sessionId: params.sessionId,\n sinceSequence: since,\n limit: 200,\n });\n const mapped: CA_EventItem_Interface[] = ev.events.map(\n (e: Record<string, unknown>): CA_EventItem_Interface => ({\n sessionId: typeof e.sessionId === 'string' ? e.sessionId : params.sessionId,\n eventType: typeof e.eventType === 'string' ? e.eventType : '',\n timestamp: typeof e.timestamp === 'string' ? e.timestamp : '',\n data: this.asRecord(e.data),\n sequence: typeof e.sequence === 'number' ? e.sequence : 0,\n }),\n );\n const merged: CA_EventItem_Interface[] = [\n ...this.selectedSessionEvents_$(),\n ...mapped,\n ];\n merged.sort(CA_EventChronologicalSort_Util.compareMirrorEventsAsc);\n this.selectedSessionEvents_$.set(merged);\n this.sessionEventsHasMore_$.set(ev.hasMore === true);\n const ns: unknown = ev.nextSinceSequence;\n this.sessionEventsNextSince = typeof ns === 'number' ? ns : null;\n this.lastKnownEventSequence = Math.max(\n this.lastKnownEventSequence,\n ...mapped.map((x: CA_EventItem_Interface): number => x.sequence ?? 0),\n );\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ca-session-events-page');\n }\n }\n\n /**\n * ACP session/load → mirror hydrate (explicit gomb / tool).\n */\n async hydrateFromAgent(params: { sessionId: string; force?: boolean }): Promise<void> {\n try {\n await this.caSession_AS.hydrateSession({\n sessionId: params.sessionId,\n force: params.force,\n });\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ca-session-hydrate');\n throw err;\n }\n const detailOk: boolean = await this.loadSessionDetail({ sessionId: params.sessionId });\n if (!detailOk) {\n const err: unknown = this.sessionDetailError_$();\n throw err instanceof Error ? err : new Error('CA session detail reload after hydrate failed');\n }\n }\n\n /**\n * Aktív session + socket subscribe.\n */\n setActiveSessionId(sessionId: string): void {\n const previousId: string = this.activeSessionId_$();\n if (previousId && previousId !== sessionId) {\n this.socket_CS.emit('ca-session:unsubscribe', { sessionId: previousId });\n }\n this.activeSessionId_$.set(sessionId);\n if (sessionId) {\n this.socket_CS.emit('ca-session:subscribe', { sessionId: sessionId });\n }\n }\n\n clearLiveOutput(): void {\n this.consoleMessages_$.set([]);\n this.lastKnownEventSequence = -1;\n this.pendingOptimisticPrompts.length = 0;\n }\n\n async createSession(params: {\n workspacePath: string;\n label?: string;\n }): Promise<string> {\n try {\n const res: { session: Record<string, unknown> } = await this.caSession_AS.createSession({\n workspacePath: params.workspacePath,\n label: params.label,\n });\n const row: Record<string, unknown> = this.toRecord(res.session);\n const newIdRaw: unknown = row.sessionId;\n const newId: string = typeof newIdRaw === 'string' ? newIdRaw : '';\n await this.loadSessions();\n return newId;\n } catch (err: unknown) {\n // HTTP hibát az error interceptor már showError + report; itt csak továbbdobjuk —\n // a CA dashboard modalban inline app-ccap-error-display (globális bubble a modal mögé kerülhet).\n throw err;\n }\n }\n\n async sendPrompt(params: { sessionId: string; content: string }): Promise<void> {\n const optimisticListKey: string = `optimistic-prompt-${globalThis.crypto.randomUUID()}`;\n this.pendingOptimisticPrompts.push({ listKey: optimisticListKey, text: params.content });\n this.pushConsoleMessage({\n listKey: optimisticListKey,\n type: 'prompt',\n text: params.content,\n });\n try {\n await this.caSession_AS.sendPrompt(params);\n } catch (err: unknown) {\n const pendingIdx: number = this.pendingOptimisticPrompts.findIndex(\n (p: { listKey: string; text: string }): boolean => p.listKey === optimisticListKey,\n );\n if (pendingIdx >= 0) {\n this.pendingOptimisticPrompts.splice(pendingIdx, 1);\n }\n this.pushConsoleMessage({\n type: 'error',\n text: CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err),\n });\n this.globalError_CS.showError(err, 'ca-session-prompt');\n throw err;\n }\n }\n\n /**\n * Futó execution leállítása (session megmarad, újra promptolható).\n */\n async stopExecution(sessionId: string): Promise<void> {\n try {\n await this.caSession_AS.stopExecution(sessionId);\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ca-session-stop-execution');\n throw err;\n }\n }\n\n async terminateSession(sessionId: string): Promise<void> {\n try {\n await this.caSession_AS.terminateSession(sessionId);\n await this.loadSessions();\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ca-session-terminate');\n throw err;\n }\n }\n\n async setSessionArchived(params: { sessionId: string; isArchived: boolean }): Promise<void> {\n try {\n const res: { success: boolean; session: Record<string, unknown> | null } =\n await this.caSession_AS.setSessionArchived(params);\n await this.loadSessions();\n const sel: CA_ListItem_Interface | null = this.selectedSession_$();\n if (\n sel?.sessionId === params.sessionId\n && res.session !== null\n && typeof res.session === 'object'\n ) {\n this.selectedSession_$.set(this.mapSessionRecord(this.toRecord(res.session)));\n }\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ca-session-archive');\n throw err;\n }\n }\n\n /**\n * Nyitott session REST poll — socket kiesés ellen; detail lifecycle indítja / állítja.\n */\n startOpenSessionPolling(sessionId: string): void {\n this.stopOpenSessionPolling();\n if (!sessionId) {\n return;\n }\n this.openSessionPollTargetId = sessionId;\n const intervalMs: number = 10 * second;\n this.openSessionPollTimer = globalThis.setInterval((): void => {\n void this.runOpenSessionPollTick(sessionId);\n }, intervalMs);\n }\n\n /**\n * Poll timer leállítása (navigáció / destroy).\n */\n stopOpenSessionPolling(): void {\n if (this.openSessionPollTimer !== null) {\n globalThis.clearInterval(this.openSessionPollTimer);\n this.openSessionPollTimer = null;\n }\n this.openSessionPollTargetId = '';\n }\n\n pushConsoleMessage(params: {\n listKey?: string;\n type: CaSessionConsoleMessage_Interface['type'];\n text: string;\n timestamp?: string;\n rawData?: Record<string, unknown>;\n mirrorEventType?: string;\n briefSubtype?: string;\n useRawBubbleKind?: boolean;\n streamTextRole?: 'agent' | 'user' | 'thought';\n streamLastSequence?: number;\n streamMessageId?: string;\n streamPartData?: Record<string, unknown>[];\n toolDisplayName?: string;\n isToolCallFailedIndicator?: boolean;\n }): void {\n const message: CaSessionConsoleMessage_Interface = this.materializeConsoleLineFromPushParams({\n listKey: params.listKey,\n type: params.type,\n text: params.text,\n timestamp: params.timestamp ?? new Date().toISOString(),\n rawData: params.rawData,\n mirrorEventType: params.mirrorEventType,\n briefSubtype: params.briefSubtype,\n useRawBubbleKind: params.useRawBubbleKind,\n streamTextRole: params.streamTextRole,\n streamLastSequence: params.streamLastSequence,\n streamMessageId: params.streamMessageId,\n streamPartData: params.streamPartData,\n toolDisplayName: params.toolDisplayName,\n isToolCallFailedIndicator: params.isToolCallFailedIndicator,\n });\n const current: CaSessionConsoleMessage_Interface[] = this.consoleMessages_$();\n this.consoleMessages_$.set([...current, message]);\n }\n\n /**\n * Egy mirror esemény → konzol append (poll / inkrementális sync).\n */\n private appendConsoleMirrorEventOne(ev: CA_EventItem_Interface): void {\n if (ev.eventType === 'ca-session-update') {\n const toolParsed: CA_ToolCallMirrorParseResult_Interface | null =\n CA_ToolCallMirrorParse_Util.tryParseMirrorData(ev.data ?? {});\n if (toolParsed !== null) {\n const consumed: boolean = this.applyToolCallMirrorEventToLiveConsole({\n ev: ev,\n parsed: toolParsed,\n });\n if (consumed) {\n return;\n }\n }\n }\n\n const brief = CA_MirrorEventBrief_Util.buildFromMirrorEvent(ev);\n if (brief === null) {\n return;\n }\n if (ev.eventType === 'prompt-sent' && brief.consoleType === 'prompt') {\n this.removePendingOptimisticPromptBubbleIfTextMatchesMirror(brief.bodyText);\n }\n const alreadyHasLine: boolean = this.consoleMessages_$().some(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === brief.listKey,\n );\n if (alreadyHasLine) {\n return;\n }\n if (brief.isStreamingTextChunk === true) {\n const merged: boolean = this.tryMergeStreamingMirrorChunkIntoConsole({ ev: ev, brief: brief });\n if (merged) {\n return;\n }\n }\n const ts: string =\n typeof ev.timestamp === 'string' && ev.timestamp.length ? ev.timestamp : new Date().toISOString();\n this.pushConsoleMessage(this.buildConsolePushParamsFromBrief({ ev: ev, brief: brief, timestampIso: ts }));\n }\n\n /**\n * Utolsó stream-buborék szövegének bővítése — poll / mirror append.\n */\n private tryMergeStreamingMirrorChunkIntoConsole(params: {\n ev: CA_EventItem_Interface;\n brief: CA_MirrorBrief_Result_Interface;\n }): boolean {\n const current: CaSessionConsoleMessage_Interface[] = this.consoleMessages_$();\n if (current.length === 0) {\n return false;\n }\n const prev: CaSessionConsoleMessage_Interface = current[current.length - 1];\n const parsed = CA_MirrorStreamMerge_Util.parseStreamChunkFromMirrorData(params.ev.data ?? {});\n if (parsed === null) {\n return false;\n }\n if (\n !CA_MirrorStreamMerge_Util.canMergeConsoleTailWithChunk({\n prev: prev,\n ev: params.ev,\n parsed: parsed,\n })\n ) {\n return false;\n }\n const parts: Record<string, unknown>[] =\n prev.streamPartData !== undefined ? [...prev.streamPartData] : [];\n parts.push(params.ev.data ?? {});\n const nextMsgId: string | undefined = params.brief.streamMessageId;\n const mergedMsgId: string | undefined =\n nextMsgId !== undefined && nextMsgId.trim().length > 0\n ? nextMsgId.trim()\n : prev.streamMessageId;\n const updated: CaSessionConsoleMessage_Interface = {\n ...prev,\n text: prev.text + params.brief.bodyText,\n streamLastSequence: params.ev.sequence ?? prev.streamLastSequence,\n streamMessageId: mergedMsgId,\n streamPartData: parts,\n rawData: {\n streamMerged: true,\n partCount: parts.length,\n lastChunkSequence: params.ev.sequence,\n chunkSnapshots: parts,\n },\n };\n const next: CaSessionConsoleMessage_Interface[] = [...current];\n next[next.length - 1] = updated;\n this.consoleMessages_$.set(next);\n return true;\n }\n\n /**\n * Mirror brief → `pushConsoleMessage` paraméterek + stream meta.\n */\n private buildConsolePushParamsFromBrief(params: {\n ev: CA_EventItem_Interface;\n brief: CA_MirrorBrief_Result_Interface;\n timestampIso: string;\n }): {\n listKey: string;\n type: CaSessionConsoleMessage_Interface['type'];\n text: string;\n timestamp: string;\n rawData?: Record<string, unknown>;\n mirrorEventType?: string;\n briefSubtype?: string;\n useRawBubbleKind?: boolean;\n streamTextRole?: 'agent' | 'user' | 'thought';\n streamLastSequence?: number;\n streamMessageId?: string;\n streamPartData?: Record<string, unknown>[];\n } {\n const b: CA_MirrorBrief_Result_Interface = params.brief;\n if (b.isStreamingTextChunk === true) {\n return {\n listKey: b.listKey,\n type: b.consoleType,\n text: b.bodyText,\n timestamp: params.timestampIso,\n rawData: b.rawData,\n mirrorEventType: b.mirrorEventType,\n briefSubtype: b.briefSubtype,\n useRawBubbleKind: b.useRawBubbleKind,\n streamTextRole: b.streamTextRole,\n streamLastSequence: params.ev.sequence,\n streamMessageId: b.streamMessageId,\n streamPartData: [params.ev.data ?? {}],\n };\n }\n return {\n listKey: b.listKey,\n type: b.consoleType,\n text: b.bodyText,\n timestamp: params.timestampIso,\n rawData: b.rawData,\n mirrorEventType: b.mirrorEventType,\n briefSubtype: b.briefSubtype,\n useRawBubbleKind: b.useRawBubbleKind,\n };\n }\n\n /**\n * Mirror eseménylista (növekvő sequence) → összehajtott console sorok (stream chunk merge).\n */\n private buildFoldedConsoleMessagesFromMirrorEvents(\n sortedAsc: CA_EventItem_Interface[],\n ): CaSessionConsoleMessage_Interface[] {\n const out: CaSessionConsoleMessage_Interface[] = [];\n for (const ev of sortedAsc) {\n const foldedTool: boolean = this.tryFoldToolCallMirrorEventIntoOut(out, ev);\n if (foldedTool) {\n continue;\n }\n const brief: CA_MirrorBrief_Result_Interface | null =\n CA_MirrorEventBrief_Util.buildFromMirrorEvent(ev);\n if (brief === null) {\n continue;\n }\n const ts: string =\n typeof ev.timestamp === 'string' && ev.timestamp.length ? ev.timestamp : new Date().toISOString();\n if (brief.isStreamingTextChunk === true) {\n const parsed = CA_MirrorStreamMerge_Util.parseStreamChunkFromMirrorData(ev.data ?? {});\n if (parsed === null) {\n continue;\n }\n const last: CaSessionConsoleMessage_Interface | undefined =\n out.length > 0 ? out[out.length - 1] : undefined;\n if (\n last !== undefined\n && CA_MirrorStreamMerge_Util.canMergeConsoleTailWithChunk({\n prev: last,\n ev: ev,\n parsed: parsed,\n })\n ) {\n const parts: Record<string, unknown>[] =\n last.streamPartData !== undefined ? [...last.streamPartData] : [];\n parts.push(ev.data ?? {});\n const nextMsgId: string | undefined = brief.streamMessageId;\n const mergedMsgId: string | undefined =\n nextMsgId !== undefined && nextMsgId.trim().length > 0\n ? nextMsgId.trim()\n : last.streamMessageId;\n out[out.length - 1] = {\n ...last,\n text: last.text + brief.bodyText,\n streamLastSequence: ev.sequence ?? last.streamLastSequence,\n streamMessageId: mergedMsgId,\n streamPartData: parts,\n rawData: {\n streamMerged: true,\n partCount: parts.length,\n lastChunkSequence: ev.sequence,\n chunkSnapshots: parts,\n },\n };\n } else {\n out.push(\n this.materializeConsoleLineFromPushParams(\n this.buildConsolePushParamsFromBrief({ ev: ev, brief: brief, timestampIso: ts }),\n ),\n );\n }\n } else {\n out.push(\n this.materializeConsoleLineFromPushParams(\n this.buildConsolePushParamsFromBrief({ ev: ev, brief: brief, timestampIso: ts }),\n ),\n );\n }\n }\n return out;\n }\n\n /**\n * `pushConsoleMessage` paraméterek → stabil `CaSessionConsoleMessage_Interface` (listKey fallback).\n */\n private materializeConsoleLineFromPushParams(params: {\n listKey?: string;\n type: CaSessionConsoleMessage_Interface['type'];\n text: string;\n timestamp: string;\n rawData?: Record<string, unknown>;\n mirrorEventType?: string;\n briefSubtype?: string;\n useRawBubbleKind?: boolean;\n streamTextRole?: 'agent' | 'user' | 'thought';\n streamLastSequence?: number;\n streamMessageId?: string;\n streamPartData?: Record<string, unknown>[];\n toolDisplayName?: string;\n isToolCallFailedIndicator?: boolean;\n }): CaSessionConsoleMessage_Interface {\n return {\n listKey: params.listKey ?? globalThis.crypto.randomUUID(),\n type: params.type,\n text: params.text,\n timestamp: params.timestamp,\n rawData: params.rawData,\n mirrorEventType: params.mirrorEventType,\n briefSubtype: params.briefSubtype,\n useRawBubbleKind: params.useRawBubbleKind,\n streamTextRole: params.streamTextRole,\n streamLastSequence: params.streamLastSequence,\n streamMessageId: params.streamMessageId,\n streamPartData: params.streamPartData,\n toolDisplayName: params.toolDisplayName,\n isToolCallFailedIndicator: params.isToolCallFailedIndicator,\n };\n }\n\n /**\n * ACP tool_call / tool_call_update → élő `consoleMessages_$` (dedup, progress sor replace, error patch).\n * @returns true ha nem fut le utána a generic mirror brief ugyanerre az eseményre.\n */\n private applyToolCallMirrorEventToLiveConsole(params: {\n ev: CA_EventItem_Interface;\n parsed: CA_ToolCallMirrorParseResult_Interface;\n }): boolean {\n const p: CA_ToolCallMirrorParseResult_Interface = params.parsed;\n const id: string = p.toolCallId;\n const ts: string =\n typeof params.ev.timestamp === 'string' && params.ev.timestamp.length\n ? params.ev.timestamp\n : new Date().toISOString();\n const dataPayload: Record<string, unknown> = params.ev.data ?? {};\n\n if (p.sessionUpdate === 'tool_call') {\n const startKey: string = CA_ToolCallMirrorParse_Util.listKeyStart(id);\n const exists: boolean = this.consoleMessages_$().some(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === startKey,\n );\n if (exists) {\n return true;\n }\n const display: string = CursorAcp_DataService.toolCallDisplayName(p);\n const bodyText: string = CursorAcp_DataService.buildToolCallBodyText({\n displayName: display,\n parsed: p,\n });\n this.pushConsoleMessage({\n listKey: startKey,\n type: 'tool',\n text: bodyText,\n timestamp: ts,\n rawData: dataPayload,\n mirrorEventType: 'ca-session-update',\n briefSubtype: 'tool_call',\n toolDisplayName: display,\n });\n return true;\n }\n\n if (p.sessionUpdate === 'tool_call_update' && p.status === 'in_progress') {\n // Ha az update rawInput-ot hoz, patch-eljük a start bubble bodyText-jét.\n if (p.rawInput !== undefined) {\n this.patchLiveToolCallStartInput({ toolCallId: id, parsed: p });\n }\n const progressKey: string = CA_ToolCallMirrorParse_Util.listKeyProgress(id);\n const line: string = 'in_progress';\n const current: CaSessionConsoleMessage_Interface[] = this.consoleMessages_$();\n const idx: number = current.findIndex(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === progressKey,\n );\n const nextLine: CaSessionConsoleMessage_Interface = this.materializeConsoleLineFromPushParams({\n listKey: progressKey,\n type: 'status-update',\n text: line,\n timestamp: ts,\n rawData: dataPayload,\n mirrorEventType: 'ca-session-update',\n briefSubtype: 'tool_call_update',\n });\n if (idx >= 0) {\n const next: CaSessionConsoleMessage_Interface[] = [...current];\n next[idx] = nextLine;\n this.consoleMessages_$.set(next);\n } else {\n this.consoleMessages_$.set([...current, nextLine]);\n }\n return true;\n }\n\n if (p.sessionUpdate === 'tool_call_update' && p.status === 'completed') {\n const hasErr: boolean = CA_ToolCallMirrorParse_Util.hasRawOutputError(p.rawOutput);\n if (hasErr) {\n const errKey: string = CA_ToolCallMirrorParse_Util.listKeyError(id);\n const dupErr: boolean = this.consoleMessages_$().some(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === errKey,\n );\n if (!dupErr) {\n const errText: string = CA_ToolCallMirrorParse_Util.summarizeRawOutputError(\n p.rawOutput,\n );\n this.pushConsoleMessage({\n listKey: errKey,\n type: 'error',\n text: errText,\n timestamp: ts,\n rawData: dataPayload,\n mirrorEventType: 'ca-session-update',\n briefSubtype: 'tool_call_update',\n });\n this.patchLiveConsoleToolCallStartFailed({ toolCallId: id });\n }\n return true;\n }\n const resKey: string = CA_ToolCallMirrorParse_Util.listKeyResult(id);\n const dupRes: boolean = this.consoleMessages_$().some(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === resKey,\n );\n if (!dupRes) {\n const summary: string = CA_ToolCallMirrorParse_Util.summarizeRawOutputSuccess(\n p.rawOutput,\n );\n this.pushConsoleMessage({\n listKey: resKey,\n type: 'tool-result',\n text: summary,\n timestamp: ts,\n rawData: dataPayload,\n mirrorEventType: 'ca-session-update',\n briefSubtype: 'tool_call_update',\n });\n }\n return true;\n }\n\n return false;\n }\n\n /**\n * Historikus mirror lista fold — tool lifecycle sorok beillesztése / frissítése az `out` tömbbe.\n */\n private tryFoldToolCallMirrorEventIntoOut(\n out: CaSessionConsoleMessage_Interface[],\n ev: CA_EventItem_Interface,\n ): boolean {\n if (ev.eventType !== 'ca-session-update') {\n return false;\n }\n const p: CA_ToolCallMirrorParseResult_Interface | null =\n CA_ToolCallMirrorParse_Util.tryParseMirrorData(ev.data ?? {});\n if (p === null) {\n return false;\n }\n const ts: string =\n typeof ev.timestamp === 'string' && ev.timestamp.length ? ev.timestamp : new Date().toISOString();\n const dataPayload: Record<string, unknown> = ev.data ?? {};\n\n if (p.sessionUpdate === 'tool_call') {\n const startKey: string = CA_ToolCallMirrorParse_Util.listKeyStart(p.toolCallId);\n const exists: boolean = out.some(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === startKey,\n );\n if (!exists) {\n const display: string = CursorAcp_DataService.toolCallDisplayName(p);\n const bodyText: string = CursorAcp_DataService.buildToolCallBodyText({\n displayName: display,\n parsed: p,\n });\n out.push(\n this.materializeConsoleLineFromPushParams({\n listKey: startKey,\n type: 'tool',\n text: bodyText,\n timestamp: ts,\n rawData: dataPayload,\n mirrorEventType: 'ca-session-update',\n briefSubtype: 'tool_call',\n toolDisplayName: display,\n }),\n );\n }\n return true;\n }\n\n if (p.sessionUpdate === 'tool_call_update' && p.status === 'in_progress') {\n // Ha rawInput jön az update-ben, patch-eljük a start buborék bodyText-jét.\n if (p.rawInput !== undefined) {\n CursorAcp_DataService.patchOutArrayToolCallStartInput(out, p);\n }\n const progressKey: string = CA_ToolCallMirrorParse_Util.listKeyProgress(p.toolCallId);\n const nextLine: CaSessionConsoleMessage_Interface = this.materializeConsoleLineFromPushParams({\n listKey: progressKey,\n type: 'status-update',\n text: 'in_progress',\n timestamp: ts,\n rawData: dataPayload,\n mirrorEventType: 'ca-session-update',\n briefSubtype: 'tool_call_update',\n });\n const idx: number = out.findIndex(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === progressKey,\n );\n if (idx >= 0) {\n out[idx] = nextLine;\n } else {\n out.push(nextLine);\n }\n return true;\n }\n\n if (p.sessionUpdate === 'tool_call_update' && p.status === 'completed') {\n const hasErr: boolean = CA_ToolCallMirrorParse_Util.hasRawOutputError(p.rawOutput);\n if (hasErr) {\n const errKey: string = CA_ToolCallMirrorParse_Util.listKeyError(p.toolCallId);\n const dupErr: boolean = out.some(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === errKey,\n );\n if (!dupErr) {\n const errText: string = CA_ToolCallMirrorParse_Util.summarizeRawOutputError(\n p.rawOutput,\n );\n out.push(\n this.materializeConsoleLineFromPushParams({\n listKey: errKey,\n type: 'error',\n text: errText,\n timestamp: ts,\n rawData: dataPayload,\n mirrorEventType: 'ca-session-update',\n briefSubtype: 'tool_call_update',\n }),\n );\n CursorAcp_DataService.patchOutArrayToolCallStartFailed(out, p.toolCallId);\n }\n return true;\n }\n const resKey: string = CA_ToolCallMirrorParse_Util.listKeyResult(p.toolCallId);\n const dupRes: boolean = out.some(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === resKey,\n );\n if (!dupRes) {\n const summary: string = CA_ToolCallMirrorParse_Util.summarizeRawOutputSuccess(\n p.rawOutput,\n );\n out.push(\n this.materializeConsoleLineFromPushParams({\n listKey: resKey,\n type: 'tool-result',\n text: summary,\n timestamp: ts,\n rawData: dataPayload,\n mirrorEventType: 'ca-session-update',\n briefSubtype: 'tool_call_update',\n }),\n );\n }\n return true;\n }\n\n return false;\n }\n\n /**\n * In_progress update rawInput-ot hozott — frissítjük a start buborék bodyText-jét.\n * Ha a start bubble-nek eddig nem volt input, most megkapja.\n */\n private patchLiveToolCallStartInput(params: {\n toolCallId: string;\n parsed: CA_ToolCallMirrorParseResult_Interface;\n }): void {\n const startKey: string = CA_ToolCallMirrorParse_Util.listKeyStart(params.toolCallId);\n const cur: CaSessionConsoleMessage_Interface[] = this.consoleMessages_$();\n const idx: number = cur.findIndex(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === startKey,\n );\n if (idx < 0) {\n return;\n }\n const display: string = cur[idx].toolDisplayName ?? 'Tool call';\n const bodyText: string = CursorAcp_DataService.buildToolCallBodyText({\n displayName: display,\n parsed: params.parsed,\n });\n const next: CaSessionConsoleMessage_Interface[] = [...cur];\n next[idx] = {\n ...next[idx],\n text: bodyText,\n };\n this.consoleMessages_$.set(next);\n }\n\n /** Completed error után a megfelelő start sor `isToolCallFailedIndicator` beállítása. */\n private patchLiveConsoleToolCallStartFailed(params: { toolCallId: string }): void {\n const startKey: string = CA_ToolCallMirrorParse_Util.listKeyStart(params.toolCallId);\n const cur: CaSessionConsoleMessage_Interface[] = this.consoleMessages_$();\n const idx: number = cur.findIndex(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === startKey,\n );\n if (idx < 0) {\n return;\n }\n const next: CaSessionConsoleMessage_Interface[] = [...cur];\n next[idx] = {\n ...next[idx],\n isToolCallFailedIndicator: true,\n };\n this.consoleMessages_$.set(next);\n }\n\n /** Fold tömbben start sor failed flag — replay error path. */\n private static patchOutArrayToolCallStartFailed(\n out: CaSessionConsoleMessage_Interface[],\n toolCallId: string,\n ): void {\n const startKey: string = CA_ToolCallMirrorParse_Util.listKeyStart(toolCallId);\n const idx: number = out.findIndex(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === startKey,\n );\n if (idx < 0) {\n return;\n }\n out[idx] = {\n ...out[idx],\n isToolCallFailedIndicator: true,\n };\n }\n\n /** Fold tömbben start sor bodyText frissítése — in_progress rawInput patch. */\n private static patchOutArrayToolCallStartInput(\n out: CaSessionConsoleMessage_Interface[],\n parsed: CA_ToolCallMirrorParseResult_Interface,\n ): void {\n const startKey: string = CA_ToolCallMirrorParse_Util.listKeyStart(parsed.toolCallId);\n const idx: number = out.findIndex(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey === startKey,\n );\n if (idx < 0) {\n return;\n }\n const display: string = out[idx].toolDisplayName ?? 'Tool call';\n const bodyText: string = CursorAcp_DataService.buildToolCallBodyText({\n displayName: display,\n parsed: parsed,\n });\n out[idx] = {\n ...out[idx],\n text: bodyText,\n };\n }\n\n /** Tool start buborék cím — `title`, majd `toolKind`, fallback. */\n private static toolCallDisplayName(p: CA_ToolCallMirrorParseResult_Interface): string {\n if (p.title !== undefined && p.title.length) {\n return p.title;\n }\n if (p.toolKind !== undefined && p.toolKind.length) {\n return p.toolKind;\n }\n return 'Tool call';\n }\n\n /**\n * Tool start buborék bodyText — display name első sor + rawInput + locations.\n * A bubble component `toolInputFormatted_$()` a 2+ sorból olvassa az inputot.\n */\n private static buildToolCallBodyText(params: {\n displayName: string;\n parsed: CA_ToolCallMirrorParseResult_Interface;\n }): string {\n const lines: string[] = [params.displayName];\n const inputStr: string = CA_ToolCallMirrorParse_Util.formatRawInput(params.parsed.rawInput);\n if (inputStr.length) {\n lines.push(inputStr);\n }\n const locStr: string = CA_ToolCallMirrorParse_Util.formatLocations(params.parsed.locations);\n if (locStr.length) {\n lines.push(`[locations]\\n${locStr}`);\n }\n return lines.join('\\n');\n }\n\n /**\n * REST poll tick — selected row + új események (sequence dedup).\n */\n private async runOpenSessionPollTick(sessionId: string): Promise<void> {\n if (\n sessionId !== this.activeSessionId_$()\n || sessionId !== this.openSessionPollTargetId\n ) {\n return;\n }\n try {\n const detail: { session: Record<string, unknown> } = await this.caSession_AS.getSession(sessionId);\n this.ngZone.run((): void => {\n if (sessionId !== this.activeSessionId_$()) {\n return;\n }\n this.selectedSession_$.set(this.mapSessionRecord(this.toRecord(detail.session)));\n });\n\n const prevMax: number = this.lastKnownEventSequence;\n const ev = await this.caSession_AS.getSessionEvents({\n sessionId: sessionId,\n sinceSequence: prevMax >= 0 ? prevMax : undefined,\n limit: 200,\n });\n const mapped: CA_EventItem_Interface[] = ev.events.map(\n (e: Record<string, unknown>): CA_EventItem_Interface => ({\n sessionId: typeof e.sessionId === 'string' ? e.sessionId : sessionId,\n eventType: typeof e.eventType === 'string' ? e.eventType : '',\n timestamp: typeof e.timestamp === 'string' ? e.timestamp : '',\n data: this.asRecord(e.data),\n sequence: typeof e.sequence === 'number' ? e.sequence : 0,\n }),\n );\n if (!mapped.length) {\n return;\n }\n this.ngZone.run((): void => {\n if (sessionId !== this.activeSessionId_$()) {\n return;\n }\n const bySeq: Map<number, CA_EventItem_Interface> = new Map();\n for (const item of this.selectedSessionEvents_$()) {\n bySeq.set(item.sequence ?? 0, item);\n }\n for (const item of mapped) {\n bySeq.set(item.sequence ?? 0, item);\n }\n const merged: CA_EventItem_Interface[] = [...bySeq.values()].sort(\n CA_EventChronologicalSort_Util.compareMirrorEventsAsc,\n );\n this.selectedSessionEvents_$.set(merged);\n for (const item of mapped) {\n if ((item.sequence ?? 0) > prevMax) {\n this.appendConsoleMirrorEventOne(item);\n }\n }\n this.lastKnownEventSequence = Math.max(\n prevMax,\n ...mapped.map((x: CA_EventItem_Interface): number => x.sequence ?? 0),\n );\n });\n } catch {\n // Poll hiba — nem spam-elünk globális errorral tick-enként.\n }\n }\n\n private handleSocketEvent(envelope: { event: string; payload: Record<string, unknown> }): void {\n const eventName: string = envelope.event;\n const payload: Record<string, unknown> = envelope.payload;\n try {\n this.ngZone.run((): void => {\n switch (eventName) {\n case 'ca-session:status':\n this.handleStatusUpdate(payload);\n break;\n case 'ca-session:output':\n this.handleOutputChunk(payload);\n break;\n case 'ca-session:event':\n this.handleSessionEvent(payload);\n break;\n case 'ca-session:list-update':\n this.loadSessions().catch((): void => {});\n break;\n case 'ext-session-msg:message':\n this.handleAssembledMessage(payload);\n break;\n case 'ext-session-msg:update':\n this.handleAssembledMessageUpdate(payload);\n break;\n default:\n break;\n }\n });\n } catch (err: unknown) {\n DyFM_Log.error(`CCAP_CaSession_DS | socket error | ${eventName}`, err);\n }\n }\n\n private handleStatusUpdate(payload: Record<string, unknown>): void {\n const sessionId: string = typeof payload.sessionId === 'string' ? payload.sessionId : '';\n const status: string = typeof payload.status === 'string' ? payload.status : '';\n const statusMessage: string | undefined =\n typeof payload.statusMessage === 'string' ? payload.statusMessage : undefined;\n this.lastStatusUpdate_$.set({ sessionId: sessionId, status: status, statusMessage: statusMessage });\n\n const currentSessions: CA_ListItem_Interface[] = this.sessions_$();\n this.sessions_$.set(\n currentSessions.map(\n (s: CA_ListItem_Interface): CA_ListItem_Interface => {\n if (s.sessionId === sessionId) {\n return { ...s, status: status, statusMessage: statusMessage };\n }\n return s;\n },\n ),\n );\n\n const sel: CA_ListItem_Interface | null = this.selectedSession_$();\n if (sel?.sessionId === sessionId) {\n this.selectedSession_$.set({ ...sel, status: status, statusMessage: statusMessage });\n }\n\n if (status === 'errored') {\n this.globalError_CS.showError(\n new Error(statusMessage ? `CA session error: ${statusMessage}` : 'CA session errored'),\n 'ca-session-status',\n );\n }\n }\n\n private handleOutputChunk(payload: Record<string, unknown>): void {\n const sessionId: string = typeof payload.sessionId === 'string' ? payload.sessionId : '';\n if (sessionId && sessionId !== this.activeSessionId_$()) {\n return;\n }\n const content: string = typeof payload.content === 'string' ? payload.content : '';\n const outputType: string = typeof payload.type === 'string' ? payload.type : 'response';\n if (content) {\n const rawPayload: Record<string, unknown> = {};\n for (const key of Object.keys(payload)) {\n rawPayload[key] = Reflect.get(payload, key);\n }\n this.pushConsoleMessage({\n type: outputType === 'error' ? 'error' : 'assistant',\n text: content,\n rawData: rawPayload,\n mirrorEventType: 'ca-session:output',\n });\n }\n }\n\n private handleSessionEvent(payload: Record<string, unknown>): void {\n const sessionId: string = typeof payload.sessionId === 'string' ? payload.sessionId : '';\n if (sessionId && sessionId !== this.activeSessionId_$()) {\n return;\n }\n const event: Record<string, unknown> = this.asRecord(payload.event);\n const seq: number = typeof event.sequence === 'number' ? event.sequence : 0;\n if (seq <= this.lastKnownEventSequence) {\n return;\n }\n this.lastKnownEventSequence = seq;\n const tsFromEvent: unknown = event.timestamp;\n const item: CA_EventItem_Interface = {\n sessionId: sessionId,\n eventType: typeof event.eventType === 'string' ? event.eventType : '',\n timestamp: typeof tsFromEvent === 'string' && tsFromEvent.length ? tsFromEvent : new Date().toISOString(),\n data: this.asRecord(event.data),\n sequence: seq,\n };\n const evs: CA_EventItem_Interface[] = this.selectedSessionEvents_$();\n this.selectedSessionEvents_$.set([...evs, item]);\n this.appendConsoleMirrorEventOne(item);\n }\n\n /**\n * Oldal frissítés / részlet betöltés — konzol buborékok a Mongo mirror eseményekből (live socket mellett).\n */\n private seedConsoleFromMirrorEvents(events: CA_EventItem_Interface[]): void {\n this.pendingOptimisticPrompts.length = 0;\n const sorted: CA_EventItem_Interface[] = [...events].sort(\n CA_EventChronologicalSort_Util.compareMirrorEventsAsc,\n );\n this.consoleMessages_$.set(this.buildFoldedConsoleMessagesFromMirrorEvents(sorted));\n }\n\n /**\n * Poll / socket mirror `prompt-sent` előtt: ugyanazzal a szöveggel lévő optimista buborék törlése (ne legyen dupla user sor).\n */\n private removePendingOptimisticPromptBubbleIfTextMatchesMirror(mirrorContent: string): void {\n const pendingIndex: number = this.pendingOptimisticPrompts.findIndex(\n (p: { listKey: string; text: string }): boolean =>\n p.text === mirrorContent || p.text.trim() === mirrorContent.trim(),\n );\n if (pendingIndex < 0) {\n return;\n }\n const removed: { listKey: string; text: string } = this.pendingOptimisticPrompts[pendingIndex];\n this.pendingOptimisticPrompts.splice(pendingIndex, 1);\n const next: CaSessionConsoleMessage_Interface[] = this.consoleMessages_$().filter(\n (m: CaSessionConsoleMessage_Interface): boolean => m.listKey !== removed.listKey,\n );\n this.consoleMessages_$.set(next);\n }\n\n private mapSessionRecord(raw: Record<string, unknown>): CA_ListItem_Interface {\n return {\n sessionId: typeof raw['sessionId'] === 'string' ? raw['sessionId'] : undefined,\n acpSessionId: typeof raw['acpSessionId'] === 'string' ? raw['acpSessionId'] : undefined,\n label: typeof raw['label'] === 'string' ? raw['label'] : undefined,\n workspacePath: typeof raw['workspacePath'] === 'string' ? raw['workspacePath'] : undefined,\n status: typeof raw['status'] === 'string' ? raw['status'] : undefined,\n statusMessage: typeof raw['statusMessage'] === 'string' ? raw['statusMessage'] : undefined,\n promptCount: typeof raw['promptCount'] === 'number' ? raw['promptCount'] : undefined,\n lastPrompt: typeof raw['lastPrompt'] === 'string' ? raw['lastPrompt'] : undefined,\n lastActivityAt: typeof raw['lastActivityAt'] === 'string' ? raw['lastActivityAt'] : undefined,\n isArchived: raw['isArchived'] === true,\n parentSessionId: typeof raw['parentSessionId'] === 'string' ? raw['parentSessionId'] : undefined,\n lastSyncAt: typeof raw['lastSyncAt'] === 'string' ? raw['lastSyncAt'] : undefined,\n lastSyncError: typeof raw['lastSyncError'] === 'string' ? raw['lastSyncError'] : undefined,\n agentInfoName: typeof raw['agentInfoName'] === 'string' ? raw['agentInfoName'] : undefined,\n agentInfoVersion: typeof raw['agentInfoVersion'] === 'string' ? raw['agentInfoVersion'] : undefined,\n isAcpConnected: typeof raw['isAcpConnected'] === 'boolean' ? raw['isAcpConnected'] : undefined,\n loadSessionSupported:\n typeof raw['loadSessionSupported'] === 'boolean' ? raw['loadSessionSupported'] : undefined,\n isTerminalMode: typeof raw['isTerminalMode'] === 'boolean' ? raw['isTerminalMode'] : undefined,\n isTerminalRunnerConnected:\n typeof raw['isTerminalRunnerConnected'] === 'boolean' ? raw['isTerminalRunnerConnected'] : undefined,\n };\n }\n\n private asRecord(value: unknown): Record<string, unknown> {\n return this.toRecord(value);\n }\n\n private toRecord(value: unknown): Record<string, unknown> {\n if (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(value)) {\n out[key] = Reflect.get(value, key);\n }\n return out;\n }\n return {};\n }\n\n // ── Assembled messages (SSOT) ──────────────────────────────\n\n /**\n * Assembled message-ek betöltése REST-en (latest tail).\n * REQ-SES-CONTENT-CHUNK-LOAD-AND-ARCHIVE-001: a `hasMore` válasz-mezőt a\n * `assembledMessagesHasMore_$` signal-ben tükrözzük, a backward-prepend\n * scroll-up trigger ezt használja.\n */\n async loadAssembledMessages(params: {\n sessionId: string;\n }): Promise<void> {\n try {\n const result = await this.extSessionMsg_AS.getMessages({\n sessionId: params.sessionId,\n latest: true,\n });\n this.assembledMessages_$.set(result.messages);\n this.assembledMessagesHasMore_$.set(result.hasMore === true);\n } catch (err: unknown) {\n DyFM_Log.error(\n `CCAP_CaSession_DS | loadAssembledMessages failed`\n + ` | sessionId: ${params.sessionId}`,\n err,\n );\n }\n }\n\n /**\n * REQ-SES-CONTENT-CHUNK-LOAD-AND-ARCHIVE-001 — régebbi assembled message-ek\n * betöltése (backward pagination). A jelenlegi messages tömb legkisebb\n * `sequence`-ét használja `beforeSequence` cursor-ként; a result a meglévő\n * lista ELÉ kerül (prepend). Race-guard: no-op ha `isLoadingOlderMessages_$`\n * vagy `!assembledMessagesHasMore_$`.\n */\n async loadOlderAssembledMessages(params: {\n sessionId: string;\n limit?: number;\n }): Promise<void> {\n if (this.isLoadingOlderMessages_$() || !this.assembledMessagesHasMore_$()) {\n return;\n }\n const current: CCAP_ExtSessionMessage_Response[] = this.assembledMessages_$();\n if (!current.length) {\n return;\n }\n const minSequence: number = current.reduce(\n (min: number, m: CCAP_ExtSessionMessage_Response): number =>\n (m.sequence ?? 0) < min ? (m.sequence ?? 0) : min,\n current[0].sequence ?? 0,\n );\n\n this.isLoadingOlderMessages_$.set(true);\n try {\n const result = await this.extSessionMsg_AS.getMessages({\n sessionId: params.sessionId,\n beforeSequence: minSequence,\n limit: params.limit ?? 50,\n });\n if (result.messages.length) {\n this.assembledMessages_$.set([...result.messages, ...current]);\n }\n this.assembledMessagesHasMore_$.set(result.hasMore === true);\n } catch (err: unknown) {\n DyFM_Log.error(\n `CCAP_CaSession_DS | loadOlderAssembledMessages failed`\n + ` | sessionId: ${params.sessionId}`,\n err,\n );\n } finally {\n this.isLoadingOlderMessages_$.set(false);\n }\n }\n\n /**\n * Új assembled message socket-en — aktív session szűréssel.\n */\n private handleAssembledMessage(\n payload: Record<string, unknown>,\n ): void {\n const sessionId: string =\n typeof payload.sessionId === 'string'\n ? payload.sessionId\n : '';\n if (!sessionId || sessionId !== this.activeSessionId_$()) {\n return;\n }\n const msgData: unknown = payload.message;\n if (!msgData || typeof msgData !== 'object') {\n return;\n }\n const msg: CCAP_ExtSessionMessage_Response =\n msgData as CCAP_ExtSessionMessage_Response;\n const current: CCAP_ExtSessionMessage_Response[] =\n this.assembledMessages_$();\n this.assembledMessages_$.set([...current, msg]);\n }\n\n /**\n * Assembled message frissítés socket-en (stream append, tool result).\n */\n private handleAssembledMessageUpdate(\n payload: Record<string, unknown>,\n ): void {\n const sessionId: string =\n typeof payload.sessionId === 'string'\n ? payload.sessionId\n : '';\n if (!sessionId || sessionId !== this.activeSessionId_$()) {\n return;\n }\n const messageKey: string =\n typeof payload.messageKey === 'string'\n ? payload.messageKey\n : '';\n if (!messageKey) {\n return;\n }\n const updateData: unknown = payload.update;\n if (!updateData || typeof updateData !== 'object') {\n return;\n }\n const updateRec: Record<string, unknown> =\n updateData as Record<string, unknown>;\n const current: CCAP_ExtSessionMessage_Response[] =\n this.assembledMessages_$();\n const idx: number = current.findIndex(\n (m: CCAP_ExtSessionMessage_Response): boolean =>\n m.messageKey === messageKey,\n );\n if (idx < 0) {\n return;\n }\n const updated: CCAP_ExtSessionMessage_Response = {\n ...current[idx],\n };\n if (typeof updateRec.bodyText === 'string') {\n updated.bodyText = updateRec.bodyText;\n }\n if (updateRec.toolResult !== undefined) {\n updated.toolResult =\n updateRec.toolResult as CCAP_ExtSessionMessage_Response['toolResult'];\n }\n if (typeof updateRec.toolStatus === 'string') {\n updated.toolStatus = updateRec.toolStatus;\n }\n if (updateRec.headerStatusDot !== undefined) {\n updated.headerStatusDot =\n typeof updateRec.headerStatusDot === 'string'\n ? updateRec.headerStatusDot\n : undefined;\n }\n const next: CCAP_ExtSessionMessage_Response[] = [...current];\n next[idx] = updated;\n this.assembledMessages_$.set(next);\n }\n}\n", "import { SHR_JsonSnippetFormat_Util } from './shr-json-snippet-format.util';\n\n/**\n * Ismeretlen / nested érték pretty-print — beágyazott JSON string mezők rekurzív kibontása, majd JSON.stringify indent.\n */\nexport class SHR_UnknownValuePrettyJson_Util {\n\n /**\n * `unknown` érték 2 space indent JSON szöveggé; beágyazott stringekben lévő JSON parse + beillesztés.\n */\n static prettyStringifyUnknown(value: unknown): string {\n try {\n const expanded: unknown = SHR_UnknownValuePrettyJson_Util.expandEmbeddedJsonStrings(value);\n return JSON.stringify(expanded, null, 2);\n } catch {\n if (value === null || value === undefined) {\n return String(value);\n }\n if (typeof value === 'object') {\n return '[Object stringify failed]';\n }\n return String(value);\n }\n }\n\n /**\n * String leaf-eknél: ha JSON-nak tűnik, parse és rekurzív expand; különben primitív / objektum / tömb rekurzió.\n */\n private static expandEmbeddedJsonStrings(value: unknown): unknown {\n if (value === null || value === undefined) {\n return value;\n }\n if (typeof value === 'string') {\n const s: string = value;\n if (!SHR_JsonSnippetFormat_Util.looksLikeJson(s)) {\n return s;\n }\n try {\n const parsed: unknown = JSON.parse(s.trim());\n return SHR_UnknownValuePrettyJson_Util.expandEmbeddedJsonStrings(parsed);\n } catch {\n return s;\n }\n }\n if (typeof value !== 'object') {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map((item: unknown): unknown =>\n SHR_UnknownValuePrettyJson_Util.expandEmbeddedJsonStrings(item),\n );\n }\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(value)) {\n const v: unknown = Reflect.get(value, key);\n out[key] = SHR_UnknownValuePrettyJson_Util.expandEmbeddedJsonStrings(v);\n }\n return out;\n }\n}\n", "import { CA_MirrorBrief_Result_Interface } from '../../../_models/interfaces/ca-mirror-brief-result.interface';\nimport { CA_EventItem_Interface } from '../../../_models/interfaces/ca-view.interface';\nimport { CA_MirrorStreamMerge_Util } from './ca-mirror-stream-merge.util';\nimport { SHR_UnknownValuePrettyJson_Util } from '../../../../../../shared/_collections/utils/shr-unknown-value-pretty-json.util';\n\n/**\n * CA mirror timeline esemény → console brief (known ágak + pretty JSON fallback).\n */\nexport class CA_MirrorEventBrief_Util {\n\n /**\n * Egy mirror sor → egy console buborék leírása; üres / érvénytelen prompt → null.\n */\n static buildFromMirrorEvent(item: CA_EventItem_Interface): CA_MirrorBrief_Result_Interface | null {\n const seq: number = item.sequence ?? 0;\n const data: Record<string, unknown> = item.data !== undefined ? item.data : {};\n const eventType: string = typeof item.eventType === 'string' ? item.eventType : '';\n\n if (eventType === 'prompt-sent') {\n return CA_MirrorEventBrief_Util.buildPromptSentBrief(seq, data);\n }\n if (eventType === 'ca-session-update') {\n return CA_MirrorEventBrief_Util.buildCaSessionUpdateBrief(seq, data);\n }\n return CA_MirrorEventBrief_Util.buildGenericBrief(eventType, seq, data);\n }\n\n /**\n * Belső `sessionUpdate` érték — opcionális subtype címkéhez.\n */\n static extractSessionUpdateKind(data: Record<string, unknown>): string | undefined {\n const upd: unknown = data.update;\n if (upd === null || typeof upd !== 'object' || Array.isArray(upd)) {\n return undefined;\n }\n const rec: Record<string, unknown> = CA_MirrorEventBrief_Util.toPlainRecord(upd);\n const kind: unknown = rec.sessionUpdate;\n return typeof kind === 'string' && kind.length ? kind : undefined;\n }\n\n private static buildPromptSentBrief(\n seq: number,\n data: Record<string, unknown>,\n ): CA_MirrorBrief_Result_Interface | null {\n const contentRaw: unknown = data.content;\n if (typeof contentRaw !== 'string' || !contentRaw.length) {\n return null;\n }\n return {\n listKey: `mirror-prompt-${String(seq)}`,\n consoleType: 'prompt',\n bodyText: contentRaw,\n mirrorEventType: 'prompt-sent',\n useRawBubbleKind: false,\n rawData: data,\n };\n }\n\n private static buildCaSessionUpdateBrief(\n seq: number,\n data: Record<string, unknown>,\n ): CA_MirrorBrief_Result_Interface | null {\n const parsed = CA_MirrorStreamMerge_Util.parseStreamChunkFromMirrorData(data);\n if (parsed !== null) {\n const sub: string | undefined = CA_MirrorEventBrief_Util.extractSessionUpdateKind(data);\n const isThoughtStream: boolean = parsed.role === 'thought';\n return {\n listKey: `mirror-chunk-${String(seq)}`,\n consoleType: isThoughtStream ? 'thinking' : 'assistant',\n bodyText: parsed.text,\n mirrorEventType: 'ca-session-update',\n briefSubtype: sub,\n useRawBubbleKind: false,\n rawData: data,\n isStreamingTextChunk: true,\n streamTextRole: parsed.role,\n streamMessageId: parsed.messageId,\n };\n }\n const pretty: string = SHR_UnknownValuePrettyJson_Util.prettyStringifyUnknown(data);\n return {\n listKey: `mirror-ca-session-update-${String(seq)}`,\n consoleType: 'info',\n bodyText: pretty,\n mirrorEventType: 'ca-session-update',\n useRawBubbleKind: true,\n rawData: data,\n };\n }\n\n private static buildGenericBrief(\n eventType: string,\n seq: number,\n data: Record<string, unknown>,\n ): CA_MirrorBrief_Result_Interface {\n const segment: string = CA_MirrorEventBrief_Util.safeListKeySegment(eventType);\n const payload: Record<string, unknown> = {\n eventType: eventType.length ? eventType : 'unknown',\n sequence: seq,\n data: data,\n };\n const pretty: string = SHR_UnknownValuePrettyJson_Util.prettyStringifyUnknown(payload);\n return {\n listKey: `mirror-${segment}-${String(seq)}`,\n consoleType: 'info',\n bodyText: pretty,\n mirrorEventType: eventType.length ? eventType : 'unknown',\n useRawBubbleKind: true,\n rawData: data,\n };\n }\n\n private static safeListKeySegment(eventType: string): string {\n const cleaned: string = eventType.replace(/[^a-zA-Z0-9_-]+/g, '_').replace(/^_+|_+$/g, '');\n return cleaned.length ? cleaned : 'event';\n }\n\n private static toPlainRecord(value: object): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(value)) {\n out[key] = Reflect.get(value, key);\n }\n return out;\n }\n}\n", "import { CA_ToolCallMirrorParseResult_Interface } from '../../../_models/interfaces/ca-tool-call-mirror-parse-result.interface';\n\n/**\n * CA mirror `ca-session-update` `data` objektumából tool_call / tool_call_update mezők kiolvasása (ACP).\n */\nexport class CA_ToolCallMirrorParse_Util {\n\n /**\n * Stabil listKey — tool indulás buborék + failed patch cél.\n */\n static listKeyStart(toolCallId: string): string {\n return `ca-tc-${toolCallId}-start`;\n }\n\n /**\n * Stabil listKey — in_progress agent update sor (replace).\n */\n static listKeyProgress(toolCallId: string): string {\n return `ca-tc-${toolCallId}-progress`;\n }\n\n /**\n * Stabil listKey — sikeres tool result.\n */\n static listKeyResult(toolCallId: string): string {\n return `ca-tc-${toolCallId}-result`;\n }\n\n /**\n * Stabil listKey — completed error buborék.\n */\n static listKeyError(toolCallId: string): string {\n return `ca-tc-${toolCallId}-error`;\n }\n\n /**\n * Stabil `listKey` → `toolCallId` + szerep (console pairing, dedup ellenőrzés).\n * `-progress` előbb, hogy ne legyen ütközés más suffix-szel.\n */\n static tryParseStableListKey(listKey: string): {\n toolCallId: string;\n role: 'start' | 'progress' | 'result' | 'error';\n } | null {\n const prefix: string = 'ca-tc-';\n if (!listKey.startsWith(prefix)) {\n return null;\n }\n const suffixSpecs: { suffix: string; role: 'start' | 'progress' | 'result' | 'error' }[] = [\n { suffix: '-progress', role: 'progress' },\n { suffix: '-start', role: 'start' },\n { suffix: '-result', role: 'result' },\n { suffix: '-error', role: 'error' },\n ];\n for (const spec of suffixSpecs) {\n if (!listKey.endsWith(spec.suffix)) {\n continue;\n }\n const id: string = listKey.slice(prefix.length, listKey.length - spec.suffix.length);\n if (!id.length) {\n return null;\n }\n return {\n toolCallId: id,\n role: spec.role,\n };\n }\n return null;\n }\n\n /**\n * Ha `data.update` tool_call vagy tool_call_update, visszaadja a mezőket; egyébként null.\n */\n static tryParseMirrorData(\n data: Record<string, unknown>,\n ): CA_ToolCallMirrorParseResult_Interface | null {\n const upd: unknown = data.update;\n if (upd === null || typeof upd !== 'object' || Array.isArray(upd)) {\n return null;\n }\n const rec: Record<string, unknown> = CA_ToolCallMirrorParse_Util.toPlainRecord(upd);\n const su: unknown = rec.sessionUpdate;\n if (su !== 'tool_call' && su !== 'tool_call_update') {\n return null;\n }\n const toolCallIdRaw: unknown = rec.toolCallId;\n if (typeof toolCallIdRaw !== 'string' || !toolCallIdRaw.trim().length) {\n return null;\n }\n const statusRaw: unknown = rec.status;\n const status: string = typeof statusRaw === 'string' ? statusRaw : '';\n const titleRaw: unknown = rec.title;\n const title: string | undefined =\n typeof titleRaw === 'string' && titleRaw.trim().length ? titleRaw.trim() : undefined;\n const kindRaw: unknown = rec.kind;\n const toolKind: string | undefined =\n typeof kindRaw === 'string' && kindRaw.trim().length ? kindRaw.trim() : undefined;\n const rawOut: unknown = rec.rawOutput;\n const rawIn: unknown = rec.rawInput;\n const contentRaw: unknown = rec.content;\n const locationsRaw: unknown = rec.locations;\n return {\n sessionUpdate: su,\n toolCallId: toolCallIdRaw.trim(),\n status: status,\n title: title,\n toolKind: toolKind,\n rawOutput: rawOut !== undefined ? rawOut : undefined,\n rawInput: rawIn !== undefined ? rawIn : undefined,\n content: Array.isArray(contentRaw) && contentRaw.length ? contentRaw : undefined,\n locations: Array.isArray(locationsRaw) && locationsRaw.length ? locationsRaw : undefined,\n };\n }\n\n /**\n * `rawOutput` tartalmaz-e értelmezhető error mezőt (completed error ág).\n */\n static hasRawOutputError(rawOutput: unknown): boolean {\n if (rawOutput === null || typeof rawOutput !== 'object' || Array.isArray(rawOutput)) {\n return false;\n }\n const rec: Record<string, unknown> = CA_ToolCallMirrorParse_Util.toPlainRecord(rawOutput);\n return Object.prototype.hasOwnProperty.call(rec, 'error');\n }\n\n /**\n * Error szöveg összefoglaló user buborékhoz.\n */\n static summarizeRawOutputError(rawOutput: unknown): string {\n if (rawOutput === null || typeof rawOutput !== 'object' || Array.isArray(rawOutput)) {\n return 'Tool call failed';\n }\n const rec: Record<string, unknown> = CA_ToolCallMirrorParse_Util.toPlainRecord(rawOutput);\n const err: unknown = rec.error;\n if (typeof err === 'string' && err.trim().length) {\n return err.trim();\n }\n try {\n return JSON.stringify(rawOutput);\n } catch {\n return 'Tool call failed';\n }\n }\n\n /**\n * Sikeres completed — rövid result szöveg (nem error ág).\n */\n static summarizeRawOutputSuccess(rawOutput: unknown): string {\n if (rawOutput === undefined) {\n return 'Completed';\n }\n try {\n const s: string = JSON.stringify(rawOutput);\n const max: number = 400;\n return s.length > max ? `${s.substring(0, max)}…` : s;\n } catch {\n return 'Completed';\n }\n }\n\n /**\n * `rawInput` → formázott body szöveg (tool name után).\n * Üres/undefined → üres string.\n */\n static formatRawInput(rawInput: unknown): string {\n if (rawInput === undefined || rawInput === null) {\n return '';\n }\n try {\n return JSON.stringify(rawInput, null, 2);\n } catch {\n return String(rawInput);\n }\n }\n\n /**\n * ACP `locations` → olvasható fájl-lokáció lista (pl. \"src/foo.ts:42\").\n */\n static formatLocations(locations: unknown[] | undefined): string {\n if (!locations?.length) {\n return '';\n }\n const lines: string[] = [];\n for (const loc of locations) {\n if (loc === null || typeof loc !== 'object' || Array.isArray(loc)) {\n continue;\n }\n const rec: Record<string, unknown> = CA_ToolCallMirrorParse_Util.toPlainRecord(loc);\n const path: unknown = rec.path;\n if (typeof path !== 'string' || !path.length) {\n continue;\n }\n const line: unknown = rec.line;\n const lineStr: string = typeof line === 'number' ? `:${line}` : '';\n lines.push(`${path}${lineStr}`);\n }\n return lines.join('\\n');\n }\n\n /**\n * ACP `content` (ToolCallContent[]) → szöveges összefoglaló (diffs, terminal, text).\n */\n static formatContent(content: unknown[] | undefined): string {\n if (!content?.length) {\n return '';\n }\n const parts: string[] = [];\n for (const item of content) {\n if (item === null || typeof item !== 'object' || Array.isArray(item)) {\n continue;\n }\n const rec: Record<string, unknown> = CA_ToolCallMirrorParse_Util.toPlainRecord(item);\n const type: unknown = rec.type;\n if (type === 'diff') {\n const path: unknown = rec.path;\n const oldText: unknown = rec.oldText;\n const newText: unknown = rec.newText;\n const pathStr: string = typeof path === 'string' ? path : '(unknown)';\n const parts2: string[] = [`--- ${pathStr}`];\n if (typeof oldText === 'string' && oldText.length) {\n parts2.push(`- ${oldText.substring(0, 500)}${oldText.length > 500 ? '…' : ''}`);\n }\n if (typeof newText === 'string' && newText.length) {\n parts2.push(`+ ${newText.substring(0, 500)}${newText.length > 500 ? '…' : ''}`);\n }\n parts.push(parts2.join('\\n'));\n } else if (type === 'terminal') {\n try {\n parts.push(`[terminal] ${JSON.stringify(rec, null, 2)}`);\n } catch {\n parts.push('[terminal output]');\n }\n } else if (type === 'content') {\n const innerParts: unknown = rec.parts;\n if (Array.isArray(innerParts)) {\n for (const part of innerParts) {\n if (part !== null && typeof part === 'object' && !Array.isArray(part)) {\n const pRec: Record<string, unknown> =\n CA_ToolCallMirrorParse_Util.toPlainRecord(part);\n if (typeof pRec.text === 'string') {\n parts.push(pRec.text as string);\n }\n }\n }\n }\n }\n }\n return parts.join('\\n\\n');\n }\n\n private static toPlainRecord(value: object): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(value)) {\n out[key] = Reflect.get(value, key);\n }\n return out;\n }\n}\n", "import { inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { firstValueFrom } from 'rxjs';\n\nimport { environment } from '../../../../../../environments/environment';\nimport {\n CA_List_Response,\n} from '../_models/interfaces/ca-view.interface';\nimport { ExS_InstanceContext_DataService } from '../../../_services/exs-instance-context.data-service';\n\n/**\n * CA session REST API.\n * Minden hívás `?ccapId=<current>` paramot küld — a ccapId forrása\n * az instance-szelektor (`ExS_InstanceContext_DataService.activeCcapId_$`).\n */\n@Injectable({ providedIn: 'root' })\nexport class CursorAcp_ApiService {\n\n private readonly baseUrl: string = `${environment.api.baseUrl}/ca-session`;\n\n private readonly http: HttpClient = inject(HttpClient);\n\n private readonly peiContext_DS: ExS_InstanceContext_DataService =\n inject(ExS_InstanceContext_DataService);\n\n /**\n * ccapId hozzáfűzése egy meglévő HttpParams-hoz.\n */\n private withCcapId(params: HttpParams): HttpParams {\n const ccapId: string = this.peiContext_DS.activeCcapId_$();\n if (!ccapId) {\n return params;\n }\n return params.set('ccapId', ccapId);\n }\n\n createSession(params: {\n workspacePath: string;\n label?: string;\n parentSessionId?: string;\n actorId?: string;\n actorLabel?: string;\n }): Promise<{ session: Record<string, unknown> }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ session: Record<string, unknown> }>(this.baseUrl, params, { params: httpParams }),\n );\n }\n\n listSessions(params?: {\n status?: string;\n workspacePath?: string;\n includeArchived?: boolean;\n }): Promise<CA_List_Response> {\n let httpParams: HttpParams = this.withCcapId(new HttpParams());\n if (params?.status) {\n httpParams = httpParams.set('status', params.status);\n }\n if (params?.workspacePath) {\n httpParams = httpParams.set('workspacePath', params.workspacePath);\n }\n if (params?.includeArchived) {\n httpParams = httpParams.set('includeArchived', '1');\n }\n return firstValueFrom(\n this.http.get<CA_List_Response>(this.baseUrl, { params: httpParams }),\n );\n }\n\n syncFromAgent(params?: { cwd?: string }): Promise<{ success: boolean; mergedCount: number }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ success: boolean; mergedCount: number }>(`${this.baseUrl}/sync`, {\n cwd: params?.cwd,\n }, { params: httpParams }),\n );\n }\n\n getSession(sessionId: string): Promise<{ session: Record<string, unknown> }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.get<{ session: Record<string, unknown> }>(`${this.baseUrl}/${sessionId}`, { params: httpParams }),\n );\n }\n\n sendPrompt(params: { sessionId: string; content: string }): Promise<{\n success: boolean;\n stopReason?: string;\n raw?: Record<string, unknown>;\n }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ success: boolean; stopReason?: string; raw?: Record<string, unknown> }>(\n `${this.baseUrl}/${params.sessionId}/prompt`,\n { content: params.content },\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Futó execution leállítása (stop gomb; session megmarad).\n */\n stopExecution(sessionId: string): Promise<{ success: boolean }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ success: boolean }>(`${this.baseUrl}/${sessionId}/stop-execution`, {}, { params: httpParams }),\n );\n }\n\n terminateSession(sessionId: string): Promise<{ success: boolean }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ success: boolean }>(`${this.baseUrl}/${sessionId}/terminate`, {}, { params: httpParams }),\n );\n }\n\n setSessionArchived(params: { sessionId: string; isArchived: boolean }): Promise<{\n success: boolean;\n session: Record<string, unknown> | null;\n }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.patch<{ success: boolean; session: Record<string, unknown> | null }>(\n `${this.baseUrl}/${params.sessionId}/archive`,\n { isArchived: params.isArchived },\n { params: httpParams },\n ),\n );\n }\n\n getSessionEvents(params: {\n sessionId: string;\n sinceSequence?: number;\n limit?: number;\n }): Promise<{\n events: Record<string, unknown>[];\n hasMore: boolean;\n nextSinceSequence: number | null;\n }> {\n let httpParams: HttpParams = this.withCcapId(new HttpParams());\n if (params.sinceSequence != null) {\n httpParams = httpParams.set('sinceSequence', String(params.sinceSequence));\n }\n if (params.limit != null) {\n httpParams = httpParams.set('limit', String(params.limit));\n }\n return firstValueFrom(\n this.http.get<{\n events: Record<string, unknown>[];\n hasMore: boolean;\n nextSinceSequence: number | null;\n }>(`${this.baseUrl}/${params.sessionId}/events`, { params: httpParams }),\n );\n }\n\n hydrateSession(params: { sessionId: string; force?: boolean }): Promise<{\n success: boolean;\n appended: boolean;\n skippedDuplicate: boolean;\n fingerprint: string;\n sequence: number;\n }> {\n return firstValueFrom(\n this.http.post<{\n success: boolean;\n appended: boolean;\n skippedDuplicate: boolean;\n fingerprint: string;\n sequence: number;\n }>(`${this.baseUrl}/${params.sessionId}/hydrate`, { force: params.force === true },\n { params: this.withCcapId(new HttpParams()) }),\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CA_EventChronologicalSort_Util", "compareMirrorEventsAsc", "a", "b", "dq", "sequence", "ta", "timestamp", "tb", "tc", "localeCompare", "ea", "eventType", "eb", "CA_MirrorStreamMerge_Util", "messageIdsCompatibleForStreamMerge", "prevMid", "nextMid", "p", "trim", "n", "length", "parseStreamChunkFromMirrorData", "data", "upd", "update", "Array", "isArray", "rec", "toPlainRecord", "kind", "sessionUpdate", "role", "content", "text", "midRaw", "messageId", "undefined", "canMergeConsoleTailWithChunk", "params", "prev", "streamTextRole", "parsed", "streamMessageId", "nSeq", "ev", "sequence", "pSeq", "streamLastSequence", "canMergeMirrorChunkEvents", "prevEv", "nextEv", "nextParsed", "prevParsed", "foldEventsToTimelineRows", "sortedAsc", "rows", "tail", "tailLast", "events", "nextEvents", "rowKey", "mergedTimelineRowKey", "push", "String", "first", "last", "value", "out", "key", "Object", "keys", "Reflect", "get", "import_fsm_dynamo", "SHR_UnknownValuePrettyJson_Util", "prettyStringifyUnknown", "value", "expanded", "expandEmbeddedJsonStrings", "JSON", "stringify", "String", "s", "SHR_JsonSnippetFormat_Util", "looksLikeJson", "parsed", "parse", "trim", "Array", "isArray", "map", "item", "out", "key", "Object", "keys", "v", "Reflect", "get", "CA_MirrorEventBrief_Util", "buildFromMirrorEvent", "item", "seq", "sequence", "data", "undefined", "eventType", "buildPromptSentBrief", "buildCaSessionUpdateBrief", "buildGenericBrief", "extractSessionUpdateKind", "upd", "update", "Array", "isArray", "kind", "toPlainRecord", "sessionUpdate", "length", "contentRaw", "content", "listKey", "String", "consoleType", "bodyText", "mirrorEventType", "useRawBubbleKind", "rawData", "parsed", "CA_MirrorStreamMerge_Util", "parseStreamChunkFromMirrorData", "sub", "isThoughtStream", "role", "text", "briefSubtype", "isStreamingTextChunk", "streamTextRole", "streamMessageId", "messageId", "pretty", "SHR_UnknownValuePrettyJson_Util", "prettyStringifyUnknown", "segment", "safeListKeySegment", "payload", "cleaned", "replace", "value", "out", "key", "Object", "keys", "Reflect", "get", "CA_ToolCallMirrorParse_Util", "listKeyStart", "toolCallId", "listKeyProgress", "listKeyResult", "listKeyError", "tryParseStableListKey", "listKey", "prefix", "startsWith", "suffixSpecs", "suffix", "role", "spec", "endsWith", "id", "slice", "length", "tryParseMirrorData", "data", "upd", "update", "Array", "isArray", "rec", "toPlainRecord", "su", "sessionUpdate", "toolCallIdRaw", "trim", "statusRaw", "status", "titleRaw", "title", "undefined", "kindRaw", "kind", "toolKind", "rawOut", "rawOutput", "rawIn", "rawInput", "contentRaw", "content", "locationsRaw", "locations", "hasRawOutputError", "Object", "prototype", "hasOwnProperty", "call", "summarizeRawOutputError", "err", "error", "JSON", "stringify", "summarizeRawOutputSuccess", "s", "max", "substring", "formatRawInput", "String", "formatLocations", "lines", "loc", "path", "line", "lineStr", "push", "join", "formatContent", "parts", "item", "type", "oldText", "newText", "parts2", "innerParts", "part", "pRec", "text", "value", "out", "key", "keys", "Reflect", "get", "CursorAcp_ApiService", "baseUrl", "environment", "api", "http", "inject", "HttpClient", "peiContext_DS", "ExS_InstanceContext_DataService", "withCcapId", "params", "ccapId", "activeCcapId_$", "set", "createSession", "httpParams", "HttpParams", "firstValueFrom", "post", "listSessions", "status", "workspacePath", "includeArchived", "get", "syncFromAgent", "cwd", "getSession", "sessionId", "sendPrompt", "content", "stopExecution", "terminateSession", "setSessionArchived", "patch", "isArchived", "getSessionEvents", "sinceSequence", "String", "limit", "hydrateSession", "force", "factory", "\u0275fac", "providedIn", "CursorAcp_DataService", "sessions_$", "signal", "sessionsLoading_$", "sessionsLoadError_$", "selectedSession_$", "selectedSessionLoading_$", "selectedSessionEvents_$", "sessionEventsHasMore_$", "mirrorRuntime_$", "consoleMessages_$", "assembledMessages_$", "assembledMessagesHasMore_$", "isLoadingOlderMessages_$", "lastStatusUpdate_$", "activeSessionId_$", "sessionDetailError_$", "caSession_AS", "inject", "CursorAcp_ApiService", "extSessionMsg_AS", "ExS_Message_ApiService", "globalError_CS", "CCAP_GlobalError_ControlService", "socket_CS", "CCAP_Socket_ControlService", "ngZone", "NgZone", "eventSubscription", "reconnectSubscription", "lastKnownEventSequence", "openSessionPollTimer", "openSessionPollTargetId", "pendingOptimisticPrompts", "sessionEventsNextSince", "constructor", "event$", "subscribe", "envelope", "handleSocketEvent", "connected$", "isConnected", "activeId", "emit", "sessionId", "loadAssembledMessages", "catch", "ngOnDestroy", "stopOpenSessionPolling", "unsubscribe", "loadSessions", "params", "__async", "set", "res", "listSessions", "includeArchived", "rawUnknown", "sessions", "mapped", "Array", "isArray", "map", "s", "mapSessionRecord", "toRecord", "rtUnknown", "mirrorRuntime", "rtRec", "ic", "isAcpConnected", "ls", "loadSessionSupported", "tm", "isTerminalMode", "trc", "isTerminalRunnerConnected", "err", "showError", "syncFromAgent", "cwd", "loadSessionDetail", "row", "getSession", "session", "ev", "getSessionEvents", "limit", "events", "e", "eventType", "timestamp", "data", "asRecord", "sequence", "hasMore", "ns", "nextSinceSequence", "Math", "max", "x", "seedConsoleFromMirrorEvents", "loadMoreSessionEvents", "since", "sinceSequence", "merged", "sort", "CA_EventChronologicalSort_Util", "compareMirrorEventsAsc", "hydrateFromAgent", "hydrateSession", "force", "Error", "setActiveSessionId", "previousId", "clearLiveOutput", "length", "createSession", "workspacePath", "label", "newIdRaw", "newId", "sendPrompt", "optimisticListKey", "globalThis", "crypto", "randomUUID", "push", "listKey", "text", "content", "pushConsoleMessage", "type", "pendingIdx", "findIndex", "p", "splice", "CCAP_ErrorDisplay_Util", "getErrorMessageForDisplay", "stopExecution", "terminateSession", "setSessionArchived", "startOpenSessionPolling", "intervalMs", "second", "setInterval", "runOpenSessionPollTick", "clearInterval", "message", "materializeConsoleLineFromPushParams", "Date", "toISOString", "rawData", "mirrorEventType", "briefSubtype", "useRawBubbleKind", "streamTextRole", "streamLastSequence", "streamMessageId", "streamPartData", "toolDisplayName", "isToolCallFailedIndicator", "current", "appendConsoleMirrorEventOne", "toolParsed", "CA_ToolCallMirrorParse_Util", "tryParseMirrorData", "applyToolCallMirrorEventToLiveConsole", "parsed", "brief", "CA_MirrorEventBrief_Util", "buildFromMirrorEvent", "consoleType", "removePendingOptimisticPromptBubbleIfTextMatchesMirror", "bodyText", "some", "m", "isStreamingTextChunk", "tryMergeStreamingMirrorChunkIntoConsole", "ts", "buildConsolePushParamsFromBrief", "timestampIso", "prev", "CA_MirrorStreamMerge_Util", "parseStreamChunkFromMirrorData", "canMergeConsoleTailWithChunk", "parts", "undefined", "nextMsgId", "mergedMsgId", "trim", "updated", "__spreadProps", "__spreadValues", "streamMerged", "partCount", "lastChunkSequence", "chunkSnapshots", "next", "b", "buildFoldedConsoleMessagesFromMirrorEvents", "sortedAsc", "out", "tryFoldToolCallMirrorEventIntoOut", "last", "id", "toolCallId", "dataPayload", "sessionUpdate", "startKey", "listKeyStart", "display", "toolCallDisplayName", "buildToolCallBodyText", "displayName", "status", "rawInput", "patchLiveToolCallStartInput", "progressKey", "listKeyProgress", "line", "idx", "nextLine", "hasRawOutputError", "rawOutput", "errKey", "listKeyError", "errText", "summarizeRawOutputError", "patchLiveConsoleToolCallStartFailed", "resKey", "listKeyResult", "summary", "summarizeRawOutputSuccess", "patchOutArrayToolCallStartInput", "patchOutArrayToolCallStartFailed", "cur", "title", "toolKind", "lines", "inputStr", "formatRawInput", "locStr", "formatLocations", "locations", "join", "detail", "run", "prevMax", "bySeq", "Map", "item", "values", "eventName", "event", "payload", "handleStatusUpdate", "handleOutputChunk", "handleSessionEvent", "handleAssembledMessage", "handleAssembledMessageUpdate", "DyFM_Log", "error", "statusMessage", "currentSessions", "sel", "outputType", "rawPayload", "key", "Object", "keys", "Reflect", "get", "seq", "tsFromEvent", "evs", "sorted", "mirrorContent", "pendingIndex", "removed", "filter", "raw", "acpSessionId", "promptCount", "lastPrompt", "lastActivityAt", "isArchived", "parentSessionId", "lastSyncAt", "lastSyncError", "agentInfoName", "agentInfoVersion", "value", "result", "getMessages", "latest", "messages", "loadOlderAssembledMessages", "minSequence", "reduce", "min", "beforeSequence", "msgData", "msg", "messageKey", "updateData", "update", "updateRec", "toolResult", "toolStatus", "headerStatusDot", "factory", "\u0275fac", "providedIn"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as h}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as h}from"./chunk-3HLEHUE4.js";import{I as l,p as $}from"./chunk-Y3DARUXQ.js";import{C as a,aa as e,h as L,k as r,p as n,xb as o,y as c}from"./chunk-TBMJSIBB.js";var f=L($());var d=(()=>{class s{baseUrl=`${l.api.baseUrl}/cai-instance-data`;http=a(o);listInstances(){return n(this.http.get(`${this.baseUrl}/list`))}getByCcapId(t){return n(this.http.get(`${this.baseUrl}/by-ccap/${t}`))}patchByCcapId(t){let i={};return t.name!==void 0&&(i.name=t.name),t.status!==void 0&&(i.status=t.status),t.darkOfficeVisuals!==void 0&&(i.darkOfficeVisuals=t.darkOfficeVisuals),n(this.http.patch(`${this.baseUrl}/by-ccap/${t.ccapId}`,i))}static \u0275fac=function(i){return new(i||s)};static \u0275prov=c({token:s,factory:s.\u0275fac,providedIn:"root"})}return s})();var p=(()=>{class s{baseUrl=`${l.api.baseUrl}/cci-instance-data`;http=a(o);listInstances(){return n(this.http.get(`${this.baseUrl}/list`))}getByCcapId(t){return n(this.http.get(`${this.baseUrl}/by-ccap/${t}`))}patchByCcapId(t){let i={};return t.name!==void 0&&(i.name=t.name),t.status!==void 0&&(i.status=t.status),t.darkOfficeVisuals!==void 0&&(i.darkOfficeVisuals=t.darkOfficeVisuals),n(this.http.patch(`${this.baseUrl}/by-ccap/${t.ccapId}`,i))}static \u0275fac=function(i){return new(i||s)};static \u0275prov=c({token:s,factory:s.\u0275fac,providedIn:"root"})}return s})();var u=(()=>{class s{baseUrl=`${l.api.baseUrl}/instance-data`;http=a(o);getList(){return n(this.http.get(`${this.baseUrl}/list`))}getCurrent(){return n(this.http.get(`${this.baseUrl}/current`))}getByCcapId(t){return n(this.http.get(`${this.baseUrl}/by-ccap/${t}`))}patchByCcapId(t){let i={};return t.name!==void 0&&(i.name=t.name),t.status!==void 0&&(i.status=t.status),t.darkOfficeVisuals!==void 0&&(i.darkOfficeVisuals=t.darkOfficeVisuals),n(this.http.patch(`${this.baseUrl}/by-ccap/${t.ccapId}`,i))}ensure(t){return n(this.http.post(`${this.baseUrl}/ensure`,t??{}))}static \u0275fac=function(i){return new(i||s)};static \u0275prov=c({token:s,factory:s.\u0275fac,providedIn:"root"})}return s})();var q=(()=>{class s{instanceData_AS=a(u);ociInstanceData_AS=a(h);cciInstanceData_AS=a(p);caiInstanceData_AS=a(d);ccapInstanceList_$=e([]);ccapInstanceListLoading_$=e(!1);ccapInstanceListError_$=e(null);ociInstanceList_$=e([]);ociInstanceListLoading_$=e(!1);ociInstanceListError_$=e(null);cciInstanceList_$=e([]);cciInstanceListLoading_$=e(!1);cciInstanceListError_$=e(null);caiInstanceList_$=e([]);caiInstanceListLoading_$=e(!1);caiInstanceListError_$=e(null);loadCcapInstanceList(){return r(this,null,function*(){this.ccapInstanceListLoading_$.set(!0),this.ccapInstanceListError_$.set(null);try{let t=yield this.instanceData_AS.getList();this.ccapInstanceList_$.set(Array.isArray(t?.list)?t.list:[])}catch(t){this.ccapInstanceList_$.set([]),this.ccapInstanceListError_$.set(t),f.DyFM_Error.logSimple("CCAP_RuntimeInstances_DS | loadCcapInstanceList failed",t)}finally{this.ccapInstanceListLoading_$.set(!1)}})}loadOciInstanceListAllowEmpty(){return r(this,null,function*(){this.ociInstanceListLoading_$.set(!0),this.ociInstanceListError_$.set(null);try{let t=yield this.ociInstanceData_AS.listInstances();this.ociInstanceList_$.set(Array.isArray(t?.list)?t.list:[])}catch(t){f.DyFM_Error.logSimple("CCAP_RuntimeInstances_DS | loadOciInstanceListAllowEmpty failed",t),this.ociInstanceList_$.set([])}finally{this.ociInstanceListLoading_$.set(!1)}})}loadOciInstanceListStrict(){return r(this,null,function*(){this.ociInstanceListLoading_$.set(!0),this.ociInstanceListError_$.set(null);try{let t=yield this.ociInstanceData_AS.listInstances();this.ociInstanceList_$.set(Array.isArray(t?.list)?t.list:[])}catch(t){this.ociInstanceListError_$.set(t)}finally{this.ociInstanceListLoading_$.set(!1)}})}loadCciInstanceListAllowEmpty(){return r(this,null,function*(){this.cciInstanceListLoading_$.set(!0),this.cciInstanceListError_$.set(null);try{let t=yield this.cciInstanceData_AS.listInstances();this.cciInstanceList_$.set(Array.isArray(t?.list)?t.list:[])}catch(t){f.DyFM_Error.logSimple("CCAP_RuntimeInstances_DS | loadCciInstanceListAllowEmpty failed",t),this.cciInstanceList_$.set([])}finally{this.cciInstanceListLoading_$.set(!1)}})}loadCciInstanceListStrict(){return r(this,null,function*(){this.cciInstanceListLoading_$.set(!0),this.cciInstanceListError_$.set(null);try{let t=yield this.cciInstanceData_AS.listInstances();this.cciInstanceList_$.set(Array.isArray(t?.list)?t.list:[])}catch(t){this.cciInstanceListError_$.set(t)}finally{this.cciInstanceListLoading_$.set(!1)}})}loadCaiInstanceListAllowEmpty(){return r(this,null,function*(){this.caiInstanceListLoading_$.set(!0),this.caiInstanceListError_$.set(null);try{let t=yield this.caiInstanceData_AS.listInstances();this.caiInstanceList_$.set(Array.isArray(t?.list)?t.list:[])}catch(t){f.DyFM_Error.logSimple("CCAP_RuntimeInstances_DS | loadCaiInstanceListAllowEmpty failed",t),this.caiInstanceList_$.set([])}finally{this.caiInstanceListLoading_$.set(!1)}})}static \u0275fac=function(i){return new(i||s)};static \u0275prov=c({token:s,factory:s.\u0275fac,providedIn:"root"})}return s})();export{d as a,p as b,u as c,q as d};
|
|
2
|
+
//# sourceMappingURL=chunk-S5PG5OUU.js.map
|