@futdevpro/ccap 1.1.3223 → 1.1.3441
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/_collections/update/update-verify-install.interface.d.ts +23 -0
- package/cli/build/_collections/update/update-verify-install.interface.d.ts.map +1 -0
- package/cli/build/_collections/update/update-verify-install.interface.js +3 -0
- package/cli/build/_collections/update/update-verify-install.interface.js.map +1 -0
- package/cli/build/_collections/update/update-verify-install.util.d.ts +50 -0
- package/cli/build/_collections/update/update-verify-install.util.d.ts.map +1 -0
- package/cli/build/_collections/update/update-verify-install.util.js +179 -0
- package/cli/build/_collections/update/update-verify-install.util.js.map +1 -0
- package/cli/build/_collections/update/update-verify-install.util.spec.d.ts +6 -0
- package/cli/build/_collections/update/update-verify-install.util.spec.d.ts.map +1 -0
- package/cli/build/_collections/update/update-verify-install.util.spec.js +117 -0
- package/cli/build/_collections/update/update-verify-install.util.spec.js.map +1 -0
- package/cli/build/_commands/cc-inspect-options.interface.d.ts +11 -0
- package/cli/build/_commands/cc-inspect-options.interface.d.ts.map +1 -0
- package/cli/build/_commands/cc-inspect-options.interface.js +3 -0
- package/cli/build/_commands/cc-inspect-options.interface.js.map +1 -0
- package/cli/build/_commands/cc-inspect.d.ts +33 -0
- package/cli/build/_commands/cc-inspect.d.ts.map +1 -0
- package/cli/build/_commands/cc-inspect.js +228 -0
- package/cli/build/_commands/cc-inspect.js.map +1 -0
- package/cli/build/_commands/input.d.ts +55 -0
- package/cli/build/_commands/input.d.ts.map +1 -0
- package/cli/build/_commands/input.interface.d.ts +21 -0
- package/cli/build/_commands/input.interface.d.ts.map +1 -0
- package/cli/build/_commands/input.interface.js +3 -0
- package/cli/build/_commands/input.interface.js.map +1 -0
- package/cli/build/_commands/input.js +183 -0
- package/cli/build/_commands/input.js.map +1 -0
- package/cli/build/_commands/input.spec.d.ts +8 -0
- package/cli/build/_commands/input.spec.d.ts.map +1 -0
- package/cli/build/_commands/input.spec.js +63 -0
- package/cli/build/_commands/input.spec.js.map +1 -0
- package/cli/build/_commands/skill-doc.d.ts +63 -0
- package/cli/build/_commands/skill-doc.d.ts.map +1 -0
- package/cli/build/_commands/skill-doc.interface.d.ts +19 -0
- package/cli/build/_commands/skill-doc.interface.d.ts.map +1 -0
- package/cli/build/_commands/skill-doc.interface.js +3 -0
- package/cli/build/_commands/skill-doc.interface.js.map +1 -0
- package/cli/build/_commands/skill-doc.js +421 -0
- package/cli/build/_commands/skill-doc.js.map +1 -0
- package/cli/build/_commands/skill-doc.spec.d.ts +10 -0
- package/cli/build/_commands/skill-doc.spec.d.ts.map +1 -0
- package/cli/build/_commands/skill-doc.spec.js +112 -0
- package/cli/build/_commands/skill-doc.spec.js.map +1 -0
- package/cli/build/_commands/update.d.ts.map +1 -1
- package/cli/build/_commands/update.js +59 -0
- package/cli/build/_commands/update.js.map +1 -1
- package/cli/build/_commands/update.spec.js +12 -0
- package/cli/build/_commands/update.spec.js.map +1 -1
- package/cli/build/program.js +51 -0
- package/cli/build/program.js.map +1 -1
- package/client-dist/{agent-instances.module-V7DKSWVC.js → agent-instances.module-4ADMPXCV.js} +2 -2
- package/client-dist/ca.module-RVGC3WQC.js +5 -0
- package/client-dist/{ca.module-MVE3OLDD.js.map → ca.module-RVGC3WQC.js.map} +3 -3
- package/client-dist/cc-usage-dashboard.component-OQS2BC4L.js +2 -0
- package/client-dist/cc-usage-dashboard.component-OQS2BC4L.js.map +7 -0
- package/client-dist/cc.module-SPB35JNX.js +4 -0
- package/client-dist/cc.module-SPB35JNX.js.map +7 -0
- package/client-dist/{chunk-7HSUCNW5.js → chunk-2ATSF4KC.js} +7 -3
- package/client-dist/{chunk-7HSUCNW5.js.map → chunk-2ATSF4KC.js.map} +2 -2
- package/client-dist/{chunk-CRYF37M7.js → chunk-3HJWN4W6.js} +2 -2
- package/client-dist/{chunk-D2UUXA6L.js → chunk-4EV32FFZ.js} +2 -2
- package/client-dist/{chunk-AX7QIINI.js → chunk-4H3E32UH.js} +2 -2
- package/client-dist/{chunk-KYVIZZWW.js → chunk-4LCJ4GNK.js} +19 -19
- package/client-dist/chunk-4LCJ4GNK.js.map +7 -0
- package/client-dist/{chunk-OUBNMT7L.js → chunk-5NW5UGVZ.js} +2 -2
- package/client-dist/{chunk-HLNT234H.js → chunk-AM5URSKV.js} +2 -2
- package/client-dist/{chunk-SYCUR4MY.js → chunk-AMROWQBM.js} +2 -2
- package/client-dist/{chunk-PTCJL62W.js → chunk-AR6EOT63.js} +2 -2
- package/client-dist/{chunk-OLK5MJ4J.js → chunk-B25EGDHU.js} +2 -2
- package/client-dist/{chunk-4SFV57IQ.js → chunk-BQTJHETS.js} +2 -2
- package/client-dist/{chunk-XTUQJ3W6.js → chunk-COOWEMEW.js} +2 -2
- package/client-dist/{chunk-TOFOK5W7.js → chunk-E3JXFFHE.js} +2 -2
- package/client-dist/{chunk-OQW6FXRJ.js → chunk-ESIGVRCK.js} +2 -2
- package/client-dist/{chunk-JMZKJLUE.js → chunk-EVMDNGBK.js} +2 -2
- package/client-dist/{chunk-6GSTJE3R.js → chunk-F6VMAVI5.js} +2 -2
- package/client-dist/chunk-FRVRMJQF.js +2 -0
- package/client-dist/chunk-FRVRMJQF.js.map +7 -0
- package/client-dist/chunk-G5SK3OBM.js +2 -0
- package/client-dist/chunk-G5SK3OBM.js.map +7 -0
- package/client-dist/{chunk-VO5ZLOZM.js → chunk-GBOES7QW.js} +2 -2
- package/client-dist/{chunk-2OAF6FCL.js → chunk-GTERKRTR.js} +2 -2
- package/client-dist/{chunk-7X22BWF7.js → chunk-HD4CODAD.js} +2 -2
- package/client-dist/{chunk-2EMFCVYO.js → chunk-I3FSMGMK.js} +2 -2
- package/client-dist/{chunk-VGTXKD6D.js → chunk-IFYHOOVA.js} +2 -2
- package/client-dist/{chunk-IINV7GMO.js → chunk-IUAZJ3PT.js} +2 -2
- package/client-dist/chunk-IUAZJ3PT.js.map +7 -0
- package/client-dist/{chunk-PFBJ7ZHP.js → chunk-IVLMVAVJ.js} +2 -2
- package/client-dist/chunk-KBMXCICX.js +2 -0
- package/client-dist/chunk-KBMXCICX.js.map +7 -0
- package/client-dist/{chunk-3D32XY5M.js → chunk-KIKSSJKL.js} +2 -2
- package/client-dist/{chunk-U2EBQMSE.js → chunk-LPNQ5PRN.js} +2 -2
- package/client-dist/{chunk-4JKJRGJX.js → chunk-MO37SUK2.js} +2 -2
- package/client-dist/{chunk-BC7H7K5F.js → chunk-MYVEHPA7.js} +2 -2
- package/client-dist/{chunk-JEHOIN7Y.js → chunk-N55GOFVU.js} +2 -2
- package/client-dist/{chunk-R5WCLLO5.js → chunk-NNUHTCXG.js} +2 -2
- package/client-dist/{chunk-TP2634XD.js → chunk-OKTAADTQ.js} +2 -2
- package/client-dist/{chunk-DURLBTAJ.js → chunk-ONS7XQYD.js} +2 -2
- package/client-dist/chunk-OYB7GU43.js +2 -0
- package/client-dist/chunk-OYB7GU43.js.map +7 -0
- package/client-dist/{chunk-7SAFEFWU.js → chunk-PVSQ5ZEZ.js} +14 -14
- package/client-dist/{chunk-7SAFEFWU.js.map → chunk-PVSQ5ZEZ.js.map} +3 -3
- package/client-dist/{chunk-PG7CJVEP.js → chunk-PZN2OI7U.js} +2 -2
- package/client-dist/{chunk-C4JDDOQR.js → chunk-QUD3BEHN.js} +2 -2
- package/client-dist/{chunk-DJVWZQNB.js → chunk-QUEYZI42.js} +2 -2
- package/client-dist/chunk-R2IBKJ4K.js +2 -0
- package/client-dist/chunk-R2IBKJ4K.js.map +7 -0
- package/client-dist/{chunk-3TMVRWAB.js → chunk-RAHCHCWR.js} +2 -2
- package/client-dist/{chunk-SQWHJTFE.js → chunk-RCCUSGIN.js} +2 -2
- package/client-dist/{chunk-GADEZIXI.js → chunk-RL5LPTPO.js} +2 -2
- package/client-dist/{chunk-5C3KCWYF.js → chunk-SDVXPGB7.js} +2 -2
- package/client-dist/{chunk-CLQC45GB.js → chunk-TNLHQRL7.js} +2 -2
- package/client-dist/{chunk-JZHYGU3K.js → chunk-TWK7BOB7.js} +2 -2
- package/client-dist/{chunk-ILG5WENK.js → chunk-U62YECNK.js} +2 -2
- package/client-dist/{chunk-RSPVPEQ4.js → chunk-UOC6UYZT.js} +2 -2
- package/client-dist/{chunk-AI7WKHRQ.js → chunk-VDQROW6J.js} +2 -2
- package/client-dist/{chunk-3PA6BJES.js → chunk-VMXIXZV2.js} +2 -2
- package/client-dist/chunk-VQ4GBHH7.js +2 -0
- package/client-dist/chunk-VQ4GBHH7.js.map +7 -0
- package/client-dist/{chunk-CFHQS3UB.js → chunk-WRI37SX4.js} +2 -2
- package/client-dist/{chunk-MS5OG7JD.js → chunk-XLSL262Q.js} +2 -2
- package/client-dist/{chunk-SLSTIBOT.js → chunk-Y6V4NGLU.js} +2 -2
- package/client-dist/{chunk-SLSTIBOT.js.map → chunk-Y6V4NGLU.js.map} +1 -1
- package/client-dist/{chunk-3PLWSRB4.js → chunk-YN4H6MW2.js} +2 -2
- package/client-dist/{chunk-OEEQNIJG.js → chunk-Z5FUR5ZW.js} +2 -2
- package/client-dist/{chunk-MY75XBDH.js → chunk-ZCHMBEHT.js} +2 -2
- package/client-dist/{chunk-LIQPVSH3.js → chunk-ZPJ6KYMA.js} +2 -2
- package/client-dist/consultant.module-UWXLFLDS.js +3 -0
- package/client-dist/{consultant.module-WUUVSVHL.js.map → consultant.module-UWXLFLDS.js.map} +3 -3
- package/client-dist/{crd.module-IRGVOYD5.js → crd.module-2I2BDC3A.js} +2 -2
- package/client-dist/{dashboard.module-NPPSZHO6.js → dashboard.module-X2A6LOTA.js} +2 -2
- package/client-dist/{do.module-GKQTJOXR.js → do.module-CJWEKZ4L.js} +2 -2
- package/client-dist/{document-library.module-JK3K7QNJ.js → document-library.module-WJSFZPA7.js} +2 -2
- package/client-dist/{embedding-eval.module-LVESAMPN.js → embedding-eval.module-FOALIAQW.js} +2 -2
- package/client-dist/{embedding-registry.module-3ECACZZ3.js → embedding-registry.module-SS646R4H.js} +2 -2
- package/client-dist/err.module-SR4ZAOQH.js +6 -0
- package/client-dist/err.module-SR4ZAOQH.js.map +7 -0
- package/client-dist/{feedback.module-AHG7462C.js → feedback.module-T3MZQKXV.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-XFUI7B65.js → host-runtime-mcp.module-FBZZGQGD.js} +2 -2
- package/client-dist/index.html +2 -2
- package/client-dist/{live-dev-pipeline.module-OMK67DGM.js → live-dev-pipeline.module-OKQYFSJL.js} +2 -2
- package/client-dist/{logs.module-FWACECVV.js → logs.module-SHHOD5XW.js} +2 -2
- package/client-dist/{main-H4AYPQ2E.js → main-L3WW2VTB.js} +4 -4
- package/client-dist/{main-H4AYPQ2E.js.map → main-L3WW2VTB.js.map} +3 -3
- package/client-dist/{master-control-remote-poc.module-GQ6RMPRB.js → master-control-remote-poc.module-ITXHYU5K.js} +2 -2
- package/client-dist/{mobile-app.module-YSARX6QC.js → mobile-app.module-Q3W3PU4O.js} +2 -2
- package/client-dist/{model-registry.module-SJOUSDXZ.js → model-registry.module-DGN55LTQ.js} +2 -2
- package/client-dist/oc.module-DYSATWML.js +3 -0
- package/client-dist/{oc.module-CDGBJ6I4.js.map → oc.module-DYSATWML.js.map} +3 -3
- package/client-dist/orc.module-NQO6OLPK.js +2 -0
- package/client-dist/orc.module-NQO6OLPK.js.map +7 -0
- package/client-dist/{project-management.module-LWZLB6VU.js → project-management.module-T7NBKKSR.js} +2 -2
- package/client-dist/project-source-routed.module-YO54LEGN.js +2 -0
- package/client-dist/{scheduler.module-VH647PWD.js → scheduler.module-4CMBOTGZ.js} +2 -2
- package/client-dist/session.module-V4SRPQRZ.js +12 -0
- package/client-dist/session.module-V4SRPQRZ.js.map +7 -0
- package/client-dist/{set.module-XHJR4XUD.js → set.module-32SVEWTG.js} +5 -5
- package/client-dist/{set.module-XHJR4XUD.js.map → set.module-32SVEWTG.js.map} +3 -3
- package/client-dist/{setup.module-RRQZ62B2.js → setup.module-5T6MCMR4.js} +2 -2
- package/client-dist/styles-CTUT42AQ.css +2 -0
- package/client-dist/styles-CTUT42AQ.css.map +7 -0
- package/client-dist/{terminals.module-QKIQS6FH.js → terminals.module-AQO2TVO2.js} +2 -2
- package/client-dist/{voice-notes-poc.module-K3FB6OIB.js → voice-notes-poc.module-EI2HY7YJ.js} +2 -2
- package/client-dist/{wfs.module-JVR53PGJ.js → wfs.module-AHRZE5WB.js} +2 -2
- package/package.json +1 -1
- package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.d.ts.map +1 -1
- package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.js +5 -0
- package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/agent-core/_modules/run/_services/control-services/run-flow.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/agent-core/_modules/run/_services/control-services/run-flow.control-service.js +8 -1
- package/server/build/src/_modules/ccap-agent/_modules/agent-core/_modules/run/_services/control-services/run-flow.control-service.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.d.ts +11 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.js +20 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.d.ts +65 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.js +222 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.d.ts +7 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.js +213 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.d.ts +58 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.js +3 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_routes/error-handling.controller.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_routes/error-handling.controller.js +14 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_routes/error-handling.controller.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.d.ts +35 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.js +80 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.d.ts +47 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.js +100 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.d.ts +2 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.js +162 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.d.ts +2 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.js +16 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.js +22 -4
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.d.ts +58 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.js +64 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-list-item-serialize.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-list-item-serialize.util.js +3 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-list-item-serialize.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.d.ts +17 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.js +65 -5
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.d.ts +9 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.js +213 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.d.ts +47 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.js +71 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.d.ts +36 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.js +93 -6
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.spec.js +85 -21
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-recovery.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-recovery.util.js +81 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-recovery.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.js +14 -2
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.js +19 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.d.ts +4 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.js +6 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.d.ts +13 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.js +21 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.interface.d.ts +33 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.interface.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-event.data-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-event.data-service.js +10 -3
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-event.data-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.d.ts +54 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js +163 -75
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.d.ts +6 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.js +32 -9
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.spec.js +20 -2
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.d.ts +25 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.js +301 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.d.ts +20 -3
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.js +62 -7
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.spec.js +10 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts +11 -18
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js +40 -48
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.d.ts +8 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.js +13 -2
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/openclaw/_services/core/oc-event.data-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/openclaw/_services/core/oc-event.data-service.js +8 -3
- package/server/build/src/_modules/external-sessions/_modules/openclaw/_services/core/oc-event.data-service.js.map +1 -1
- package/server/build/src/_modules/messaging/_services/control-services/providers/msg-client-socket-server.service.d.ts.map +1 -1
- package/server/build/src/_modules/messaging/_services/control-services/providers/msg-client-socket-server.service.js +12 -0
- package/server/build/src/_modules/messaging/_services/control-services/providers/msg-client-socket-server.service.js.map +1 -1
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.d.ts +10 -0
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.d.ts.map +1 -1
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.js +18 -0
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.js.map +1 -1
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.spec.js +32 -3
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.spec.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.d.ts +42 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.js +73 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.js.map +1 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.d.ts +10 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.js +89 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.js.map +1 -0
- package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.d.ts +8 -1
- package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.d.ts +10 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.js +74 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.js.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.d.ts +37 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.js +117 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.d.ts +11 -0
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.js +11 -1
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.spec.js +65 -0
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.spec.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.d.ts +15 -0
- package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.js +122 -0
- package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.js.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js +24 -0
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts +30 -0
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js +91 -2
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-ws-server.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-ws-server.control-service.js +10 -0
- package/server/build/src/_modules/peer-instance/_services/pei-ws-server.control-service.js.map +1 -1
- package/server/build/src/_modules/scheduler/_collections/utils/sch-jitter.util.spec.js +4 -2
- package/server/build/src/_modules/scheduler/_collections/utils/sch-jitter.util.spec.js.map +1 -1
- package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts +9 -0
- package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts.map +1 -1
- package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js +1 -0
- package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js.map +1 -1
- package/client-dist/ca.module-MVE3OLDD.js +0 -5
- package/client-dist/cc-usage-dashboard.component-F7S4MG67.js +0 -2
- package/client-dist/cc-usage-dashboard.component-F7S4MG67.js.map +0 -7
- package/client-dist/cc.module-GOXYWYW2.js +0 -4
- package/client-dist/cc.module-GOXYWYW2.js.map +0 -7
- package/client-dist/chunk-4GPIIB3D.js +0 -2
- package/client-dist/chunk-4GPIIB3D.js.map +0 -7
- package/client-dist/chunk-EGRHWZRV.js +0 -1
- package/client-dist/chunk-EGRHWZRV.js.map +0 -7
- package/client-dist/chunk-GZDOO5NB.js +0 -2
- package/client-dist/chunk-GZDOO5NB.js.map +0 -7
- package/client-dist/chunk-IINV7GMO.js.map +0 -7
- package/client-dist/chunk-KYVIZZWW.js.map +0 -7
- package/client-dist/chunk-MZLFEWAN.js +0 -2
- package/client-dist/chunk-MZLFEWAN.js.map +0 -7
- package/client-dist/chunk-QPEW5PI4.js +0 -2
- package/client-dist/chunk-QPEW5PI4.js.map +0 -7
- package/client-dist/consultant.module-WUUVSVHL.js +0 -3
- package/client-dist/err.module-B666YXQT.js +0 -6
- package/client-dist/err.module-B666YXQT.js.map +0 -7
- package/client-dist/oc.module-CDGBJ6I4.js +0 -3
- package/client-dist/orc.module-5S7GBE4E.js +0 -2
- package/client-dist/orc.module-5S7GBE4E.js.map +0 -7
- package/client-dist/project-source-routed.module-FDCQCUUB.js +0 -2
- package/client-dist/session.module-AKETH5O2.js +0 -12
- package/client-dist/session.module-AKETH5O2.js.map +0 -7
- package/client-dist/styles-KHQAHCL5.css +0 -2
- package/client-dist/styles-KHQAHCL5.css.map +0 -7
- /package/client-dist/{agent-instances.module-V7DKSWVC.js.map → agent-instances.module-4ADMPXCV.js.map} +0 -0
- /package/client-dist/{chunk-CRYF37M7.js.map → chunk-3HJWN4W6.js.map} +0 -0
- /package/client-dist/{chunk-D2UUXA6L.js.map → chunk-4EV32FFZ.js.map} +0 -0
- /package/client-dist/{chunk-AX7QIINI.js.map → chunk-4H3E32UH.js.map} +0 -0
- /package/client-dist/{chunk-OUBNMT7L.js.map → chunk-5NW5UGVZ.js.map} +0 -0
- /package/client-dist/{chunk-HLNT234H.js.map → chunk-AM5URSKV.js.map} +0 -0
- /package/client-dist/{chunk-SYCUR4MY.js.map → chunk-AMROWQBM.js.map} +0 -0
- /package/client-dist/{chunk-PTCJL62W.js.map → chunk-AR6EOT63.js.map} +0 -0
- /package/client-dist/{chunk-OLK5MJ4J.js.map → chunk-B25EGDHU.js.map} +0 -0
- /package/client-dist/{chunk-4SFV57IQ.js.map → chunk-BQTJHETS.js.map} +0 -0
- /package/client-dist/{chunk-XTUQJ3W6.js.map → chunk-COOWEMEW.js.map} +0 -0
- /package/client-dist/{chunk-TOFOK5W7.js.map → chunk-E3JXFFHE.js.map} +0 -0
- /package/client-dist/{chunk-OQW6FXRJ.js.map → chunk-ESIGVRCK.js.map} +0 -0
- /package/client-dist/{chunk-JMZKJLUE.js.map → chunk-EVMDNGBK.js.map} +0 -0
- /package/client-dist/{chunk-6GSTJE3R.js.map → chunk-F6VMAVI5.js.map} +0 -0
- /package/client-dist/{chunk-VO5ZLOZM.js.map → chunk-GBOES7QW.js.map} +0 -0
- /package/client-dist/{chunk-2OAF6FCL.js.map → chunk-GTERKRTR.js.map} +0 -0
- /package/client-dist/{chunk-7X22BWF7.js.map → chunk-HD4CODAD.js.map} +0 -0
- /package/client-dist/{chunk-2EMFCVYO.js.map → chunk-I3FSMGMK.js.map} +0 -0
- /package/client-dist/{chunk-VGTXKD6D.js.map → chunk-IFYHOOVA.js.map} +0 -0
- /package/client-dist/{chunk-PFBJ7ZHP.js.map → chunk-IVLMVAVJ.js.map} +0 -0
- /package/client-dist/{chunk-3D32XY5M.js.map → chunk-KIKSSJKL.js.map} +0 -0
- /package/client-dist/{chunk-U2EBQMSE.js.map → chunk-LPNQ5PRN.js.map} +0 -0
- /package/client-dist/{chunk-4JKJRGJX.js.map → chunk-MO37SUK2.js.map} +0 -0
- /package/client-dist/{chunk-BC7H7K5F.js.map → chunk-MYVEHPA7.js.map} +0 -0
- /package/client-dist/{chunk-JEHOIN7Y.js.map → chunk-N55GOFVU.js.map} +0 -0
- /package/client-dist/{chunk-R5WCLLO5.js.map → chunk-NNUHTCXG.js.map} +0 -0
- /package/client-dist/{chunk-TP2634XD.js.map → chunk-OKTAADTQ.js.map} +0 -0
- /package/client-dist/{chunk-DURLBTAJ.js.map → chunk-ONS7XQYD.js.map} +0 -0
- /package/client-dist/{chunk-PG7CJVEP.js.map → chunk-PZN2OI7U.js.map} +0 -0
- /package/client-dist/{chunk-C4JDDOQR.js.map → chunk-QUD3BEHN.js.map} +0 -0
- /package/client-dist/{chunk-DJVWZQNB.js.map → chunk-QUEYZI42.js.map} +0 -0
- /package/client-dist/{chunk-3TMVRWAB.js.map → chunk-RAHCHCWR.js.map} +0 -0
- /package/client-dist/{chunk-SQWHJTFE.js.map → chunk-RCCUSGIN.js.map} +0 -0
- /package/client-dist/{chunk-GADEZIXI.js.map → chunk-RL5LPTPO.js.map} +0 -0
- /package/client-dist/{chunk-5C3KCWYF.js.map → chunk-SDVXPGB7.js.map} +0 -0
- /package/client-dist/{chunk-CLQC45GB.js.map → chunk-TNLHQRL7.js.map} +0 -0
- /package/client-dist/{chunk-JZHYGU3K.js.map → chunk-TWK7BOB7.js.map} +0 -0
- /package/client-dist/{chunk-ILG5WENK.js.map → chunk-U62YECNK.js.map} +0 -0
- /package/client-dist/{chunk-RSPVPEQ4.js.map → chunk-UOC6UYZT.js.map} +0 -0
- /package/client-dist/{chunk-AI7WKHRQ.js.map → chunk-VDQROW6J.js.map} +0 -0
- /package/client-dist/{chunk-3PA6BJES.js.map → chunk-VMXIXZV2.js.map} +0 -0
- /package/client-dist/{chunk-CFHQS3UB.js.map → chunk-WRI37SX4.js.map} +0 -0
- /package/client-dist/{chunk-MS5OG7JD.js.map → chunk-XLSL262Q.js.map} +0 -0
- /package/client-dist/{chunk-3PLWSRB4.js.map → chunk-YN4H6MW2.js.map} +0 -0
- /package/client-dist/{chunk-OEEQNIJG.js.map → chunk-Z5FUR5ZW.js.map} +0 -0
- /package/client-dist/{chunk-MY75XBDH.js.map → chunk-ZCHMBEHT.js.map} +0 -0
- /package/client-dist/{chunk-LIQPVSH3.js.map → chunk-ZPJ6KYMA.js.map} +0 -0
- /package/client-dist/{crd.module-IRGVOYD5.js.map → crd.module-2I2BDC3A.js.map} +0 -0
- /package/client-dist/{dashboard.module-NPPSZHO6.js.map → dashboard.module-X2A6LOTA.js.map} +0 -0
- /package/client-dist/{do.module-GKQTJOXR.js.map → do.module-CJWEKZ4L.js.map} +0 -0
- /package/client-dist/{document-library.module-JK3K7QNJ.js.map → document-library.module-WJSFZPA7.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-LVESAMPN.js.map → embedding-eval.module-FOALIAQW.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-3ECACZZ3.js.map → embedding-registry.module-SS646R4H.js.map} +0 -0
- /package/client-dist/{feedback.module-AHG7462C.js.map → feedback.module-T3MZQKXV.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-XFUI7B65.js.map → host-runtime-mcp.module-FBZZGQGD.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-OMK67DGM.js.map → live-dev-pipeline.module-OKQYFSJL.js.map} +0 -0
- /package/client-dist/{logs.module-FWACECVV.js.map → logs.module-SHHOD5XW.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-GQ6RMPRB.js.map → master-control-remote-poc.module-ITXHYU5K.js.map} +0 -0
- /package/client-dist/{mobile-app.module-YSARX6QC.js.map → mobile-app.module-Q3W3PU4O.js.map} +0 -0
- /package/client-dist/{model-registry.module-SJOUSDXZ.js.map → model-registry.module-DGN55LTQ.js.map} +0 -0
- /package/client-dist/{project-management.module-LWZLB6VU.js.map → project-management.module-T7NBKKSR.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-FDCQCUUB.js.map → project-source-routed.module-YO54LEGN.js.map} +0 -0
- /package/client-dist/{scheduler.module-VH647PWD.js.map → scheduler.module-4CMBOTGZ.js.map} +0 -0
- /package/client-dist/{setup.module-RRQZ62B2.js.map → setup.module-5T6MCMR4.js.map} +0 -0
- /package/client-dist/{terminals.module-QKIQS6FH.js.map → terminals.module-AQO2TVO2.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-K3FB6OIB.js.map → voice-notes-poc.module-EI2HY7YJ.js.map} +0 -0
- /package/client-dist/{wfs.module-JVR53PGJ.js.map → wfs.module-AHRZE5WB.js.map} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as W,b as G}from"./chunk-KBMXCICX.js";import"./chunk-TWK7BOB7.js";import{a as j}from"./chunk-FLAJXIYW.js";import{c as L,f as P,i as z,v as N}from"./chunk-EO4DNTT4.js";import"./chunk-PVSQ5ZEZ.js";import"./chunk-Y6V4NGLU.js";import{C as A,D as T,Fa as r,Ga as M,Ha as c,J as E,K as w,L as g,M as b,Ta as I,Ua as R,Z as o,aa as y,da as v,fa as F,ga as p,hb as V,ia as S,ja as $,k as C,la as _,ma as K,oa as k,pa as D,qa as i,ra as a,sa as x,ua as H,ub as B,va as f,wa as m}from"./chunk-TBMJSIBB.js";var U=(()=>{class l{static WINDOW_SEC_BY_TYPE={five_hour:18e3,seven_day:604800,seven_day_opus:604800,seven_day_sonnet:604800};static computePacingFraction(e){let t=l.WINDOW_SEC_BY_TYPE[e.windowType];if(t===void 0||!e.resetsAtMs||e.resetsAtMs<=0)return null;let n=t*1e3,s=e.resetsAtMs-n,h=Math.max(0,e.nowMs-s)/n;return h<0?0:h>1?1:h}static classifyPacing(e){if(e.utilization==null||e.pacingFraction===null)return null;let t=e.tolerance??.1,n=e.utilization-e.pacingFraction;return n>t?"above":n<-t?"below":"on-pace"}static colorClassForPacing(e){return e==="below"?"text-green-400":e==="on-pace"?"text-yellow-300":e==="above"?"text-red-400":"text-neutral-500"}}return l})();var J=(l,u)=>u.accountKey,Q=(l,u)=>u.ccapId,X=()=>[];function Z(l,u){l&1&&(i(0,"div",13),r(1," Loading dashboard\u2026 "),a())}function ee(l,u){l&1&&(i(0,"div",14)(1,"strong"),r(2,"Load error:"),a(),r(3),a()),l&2&&(o(3),c(" ",u," "))}function te(l,u){l&1&&(i(0,"div",19),g(),i(1,"svg",32),x(2,"path",33),a(),b(),i(3,"p",34),r(4,"No CC accounts discovered yet"),a(),i(5,"p",35),r(6," Run "),i(7,"code",36),r(8,"claude /login"),a(),r(9," on this machine, then click "),i(10,"strong",37),r(11,"Refresh accounts"),a(),r(12,". "),a()())}function ne(l,u){if(l&1&&(i(0,"span",60),r(1),a()),l&2){let e=m().$implicit,t=m();$("text-[9px] px-1.5 py-0.5 rounded-full border font-medium shrink-0 "+t.tokenStatusBadgeClassOf(e.tokenStatus)),p("title","Token status: "+e.tokenStatus),o(),c(" ",e.tokenStatus," ")}}function ie(l,u){if(l&1&&(i(0,"span",44),r(1),a()),l&2){let e=m().$implicit;o(),c(" ",e.planTier," ")}}function ae(l,u){if(l&1&&(i(0,"span",46),r(1),a()),l&2){let e=m().$implicit;o(),M(e.email)}}function re(l,u){l&1&&(i(0,"span",58),r(1,"loading\u2026"),a())}function oe(l,u){l&1&&(i(0,"div",65),r(1," No history events recorded yet. Stream-driven events come from CC sessions when "),i(2,"code",67),r(3,"rate_limit_event"),a(),r(4," fires; pull-driven events come from periodic auto-pull or manual "),i(5,"strong"),r(6,"Pull"),a(),r(7," clicks. "),a())}function le(l,u){if(l&1&&(i(0,"tr",71)(1,"td",72),r(2),a(),i(3,"td",73),r(4),a(),i(5,"td",74)(6,"span"),r(7),a()(),i(8,"td",75),r(9),a(),i(10,"td",76),r(11),a(),i(12,"td",77),r(13),a()()),l&2){let e,t,n,s=u.$implicit,d=m(4);o(2),c(" ",d.formatObservedAt(s.observedAt)," "),o(2),c(" ",d.windowLabelOf(s.windowType)," "),o(2),$("text-[10px] px-1.5 py-0.5 rounded-full border "+d.sourceBadgeClassOf(s.source)),o(),c(" ",(e=s.source)!==null&&e!==void 0?e:"\u2014"," "),o(2),c(" ",d.formatUtilization((t=s.utilization)!==null&&t!==void 0?t:null)," "),o(2),c(" ",(n=s.lastObservedStatus)!==null&&n!==void 0?n:"\u2014"," "),o(2),c(" ",d.formatResetCountdown(s.resetsAtMs)," ")}}function se(l,u){if(l&1&&(i(0,"div",66)(1,"table",68)(2,"thead",62)(3,"tr")(4,"th",69),r(5,"When"),a(),i(6,"th",69),r(7,"Window"),a(),i(8,"th",69),r(9,"Source"),a(),i(10,"th",70),r(11,"Util"),a(),i(12,"th",69),r(13,"Status"),a(),i(14,"th",69),r(15,"Reset in"),a()()(),i(16,"tbody"),k(17,le,14,8,"tr",71,K),a()()()),l&2){let e=m(2).$implicit,t=m();o(17),D(t.historyItemsOf(e.accountKey))}}function de(l,u){if(l&1){let e=H();i(0,"div",59)(1,"div",61)(2,"span",62),r(3," Usage event history "),i(4,"span",63),r(5),a()(),i(6,"button",64),f("click",function(){E(e);let n=m().$implicit,s=m();return w(s.handleRefreshHistory(n.accountKey))}),r(7),a()(),v(8,oe,8,0,"div",65)(9,se,19,0,"div",66),a()}if(l&2){let e=m().$implicit,t=m();o(5),c(" \xB7 ",t.historyItemsOf(e.accountKey).length," event(s) "),o(),p("disabled",t.isHistoryLoading(e.accountKey)),o(),c(" ",t.isHistoryLoading(e.accountKey)?"\u2026":"Refresh history"," "),o(),_(!t.historyItemsOf(e.accountKey).length&&!t.isHistoryLoading(e.accountKey)?8:9)}}function ce(l,u){if(l&1){let e=H();i(0,"div",38)(1,"div",39)(2,"div"),r(3),a(),i(4,"div",40)(5,"div",41)(6,"span",42),r(7),a(),v(8,ne,2,4,"span",43)(9,ie,2,1,"span",44),a(),i(10,"div",45),v(11,ae,2,1,"span",46),i(12,"button",47),f("click",function(){let n=E(e).$implicit,s=m();return w(s.handleEditEmail(n))}),r(13),a()(),i(14,"div",48)(15,"span",49),r(16,"key:"),a(),r(17),a()(),i(18,"button",50),f("click",function(){let n=E(e).$implicit,s=m();return w(s.handleRefreshUsage(n.accountKey))}),g(),i(19,"svg",51),x(20,"path",10),a(),b(),i(21,"span"),r(22),a()()(),i(23,"div",52),x(24,"app-cc-account-usage-view",53),a(),i(25,"div",54)(26,"button",55),f("click",function(){let n=E(e).$implicit,s=m();return w(s.handleToggleHistory(n.accountKey))}),g(),i(27,"svg",56),x(28,"path",57),a(),r(29),v(30,re,2,0,"span",58),a(),v(31,de,10,4,"div",59),a()()}if(l&2){let e=u.$implicit,t=m();S("xl:col-span-2",t.isHistoryOpen(e.accountKey))("xl:col-span-3",!1),o(2),$("shrink-0 w-8 h-8 rounded-md flex items-center justify-center text-sm font-bold "+t.avatarBgClassOf(e.accountKey)),F("aria-label","Avatar for "+t.displayNameOf(e)),o(),c(" ",t.avatarLetterOf(e)," "),o(4),c(" ",t.displayNameOf(e)," "),o(),_(e.tokenStatus?8:-1),o(),_(e.planTier?9:-1),o(2),_(e.email?11:-1),o(),p("title",t.hasEmail(e)?"Edit email":"Set email manually"),o(),c(" ",t.hasEmail(e)?"\u270F\uFE0F Edit":"\u270F\uFE0F Set email"," "),o(),p("title","key: "+e.accountKey+(e.organizationId?" \xB7 org: "+e.organizationId:"")),o(3),c(" ",e.accountKey.slice(0,12)," "),o(),p("disabled",t.isRefreshingUsageOf(e.accountKey)),o(),S("animate-spin",t.isRefreshingUsageOf(e.accountKey)),o(3),M(t.isRefreshingUsageOf(e.accountKey)?"\u2026":"Pull"),o(2),p("accountKey",e.accountKey),o(2),p("title",t.isHistoryOpen(e.accountKey)?"Hide usage history":"Show usage history"),o(),S("rotate-90",t.isHistoryOpen(e.accountKey)),o(2),c(" ",t.isHistoryOpen(e.accountKey)?"Hide":"Show"," history "),o(),_(t.isHistoryLoading(e.accountKey)?30:-1),o(),_(t.isHistoryOpen(e.accountKey)?31:-1)}}function ue(l,u){l&1&&(i(0,"div",23),r(1," No instance mappings yet. Mappings appear after the first "),i(2,"code",67),r(3,"rate_limit_event"),a(),r(4," on a session with a bound account, or after a manual "),i(5,"strong",6),r(6,"Pull usage"),a(),r(7,". "),a())}function me(l,u){if(l&1&&(i(0,"span",37),r(1),a(),i(2,"span",82),r(3),a(),i(4,"span",83),r(5,"\xB7"),a(),i(6,"span"),r(7,"5h: "),i(8,"strong"),r(9),a()(),i(10,"span",83),r(11,"\xB7"),a()),l&2){let e=u,t=m().$implicit,n=m();o(),c(" ",n.displayNameByAccountKey(e)," "),o(2),c("(",e.slice(0,6),"\u2026)"),o(5),$(n.pacingColorClassForFiveHour(t.items)),o(),M(n.formatUtilization(n.latestFiveHourUtilOf(t.items)))}}function pe(l,u){if(l&1&&(i(0,"div",24)(1,"div",78),g(),i(2,"svg",9),x(3,"path",79),a()(),b(),i(4,"div",40)(5,"div",80),r(6),a(),i(7,"div",81),v(8,me,12,5),i(9,"span",49),r(10),a()()()()),l&2){let e,t=u.$implicit,n=m();o(6),c(" ",t.ccapId," "),o(2),_((e=n.latestAccountKeyOf(t.items))?8:-1,e),o(2),c("",n.itemsCountOf(t.items)," record(s)")}}var we=(()=>{class l{account_DS=A(W);isRefreshing_$=y(!1);isRefreshingAllUsage_$=y(!1);refreshingUsageKeys_$=y(new Set);editEmailModalOpen_$=y(!1);editEmailAccountKey_$=y(null);editEmailValue_$=y("");editEmailSaving_$=y(!1);expandedHistoryKeys_$=y(new Set);loadingHistoryKeys_$=y(new Set);instanceCount_$=V(()=>this.account_DS.instanceMapping_$()?.instances.length??0);ngOnInit(){this.account_DS.loadDashboardBootstrap(),this.account_DS.startLiveUpdates()}handleRefresh(){return C(this,null,function*(){this.isRefreshing_$.set(!0);try{yield this.account_DS.refreshAccounts()}finally{this.isRefreshing_$.set(!1)}})}handleRefreshUsage(e){return C(this,null,function*(){this.refreshingUsageKeys_$.update(t=>{let n=new Set(t);return n.add(e),n});try{yield this.account_DS.refreshAccountUsage(e)}finally{this.refreshingUsageKeys_$.update(t=>{let n=new Set(t);return n.delete(e),n})}})}handleRefreshAllUsage(){return C(this,null,function*(){let e=this.account_DS.accounts_$().map(t=>t.accountKey);if(e.length!==0){this.isRefreshingAllUsage_$.set(!0);try{yield Promise.all(e.map(t=>this.account_DS.refreshAccountUsage(t)))}finally{this.isRefreshingAllUsage_$.set(!1)}}})}formatResetCountdown(e){if(e==null||!isFinite(e)||e<=0)return"\u2014";let t=e-Date.now();if(t<=0)return"expired";let n=Math.floor(t/6e4),s=Math.floor(n/(60*24)),d=Math.floor(n%(60*24)/60),h=n%60;return s>0?`${s}d ${d}h`:d>0?`${d}h ${h}m`:`${h}m`}isRefreshingUsageOf(e){return this.refreshingUsageKeys_$().has(e)}handleEditEmail(e){this.editEmailAccountKey_$.set(e.accountKey),this.editEmailValue_$.set(e.email??""),this.editEmailModalOpen_$.set(!0)}handleEditEmailSave(){return C(this,null,function*(){let e=this.editEmailAccountKey_$();if(e===null)return;let t=this.editEmailValue_$().trim();this.editEmailSaving_$.set(!0);try{yield this.account_DS.renameAccount({accountKey:e,email:t===""?null:t}),this.handleEditEmailClose()}finally{this.editEmailSaving_$.set(!1)}})}handleEditEmailClose(){this.editEmailModalOpen_$.set(!1),this.editEmailAccountKey_$.set(null),this.editEmailValue_$.set("")}hasEmail(e){return typeof e.email=="string"&&e.email!==""}handleToggleHistory(e){return C(this,null,function*(){if(this.expandedHistoryKeys_$().has(e)){this.expandedHistoryKeys_$.update(s=>{let d=new Set(s);return d.delete(e),d});return}this.expandedHistoryKeys_$.update(s=>{let d=new Set(s);return d.add(e),d}),this.account_DS.usageHistoryMap_$().get(e)===void 0&&(yield this.loadHistoryFor(e))})}handleRefreshHistory(e){return C(this,null,function*(){yield this.loadHistoryFor(e)})}loadHistoryFor(e){return C(this,null,function*(){this.loadingHistoryKeys_$.update(t=>{let n=new Set(t);return n.add(e),n});try{yield this.account_DS.loadAccountUsageHistory({accountKey:e})}finally{this.loadingHistoryKeys_$.update(t=>{let n=new Set(t);return n.delete(e),n})}})}isHistoryOpen(e){return this.expandedHistoryKeys_$().has(e)}isHistoryLoading(e){return this.loadingHistoryKeys_$().has(e)}historyItemsOf(e){let n=(this.account_DS.usageHistoryMap_$().get(e)??[]).slice();return n.sort((s,d)=>{let h=s.observedAt?Date.parse(s.observedAt):0;return(d.observedAt?Date.parse(d.observedAt):0)-h}),n}sourceBadgeClassOf(e){return e==="stream"?"bg-cyan-900/40 border-cyan-700 text-cyan-300":e==="pull"?"bg-emerald-900/40 border-emerald-700 text-emerald-300":"bg-neutral-800 border-neutral-700 text-neutral-400"}formatObservedAt(e){if(e==null||e==="")return"\u2014";let t=Date.parse(e);if(!isFinite(t)||t<=0)return e;let n=new Date(t),s=String(n.getFullYear()),d=String(n.getMonth()+1).padStart(2,"0"),h=String(n.getDate()).padStart(2,"0"),O=String(n.getHours()).padStart(2,"0"),Y=String(n.getMinutes()).padStart(2,"0"),q=String(n.getSeconds()).padStart(2,"0");return`${s}-${d}-${h} ${O}:${Y}:${q}`}windowLabelOf(e){switch(e){case"five_hour":return"5-hour session";case"seven_day":return"Weekly";case"seven_day_opus":return"Weekly \xB7 Opus";case"seven_day_sonnet":return"Weekly \xB7 Sonnet";case"extra_usage":return"Extra (pay-as-you-go)";default:return e}}tokenStatusBadgeClassOf(e){return e==="valid"?"bg-green-900/40 border-green-700 text-green-300":e==="scope-incomplete"?"bg-amber-900/40 border-amber-700 text-amber-300":e==="expired"||e==="revoked"?"bg-red-900/40 border-red-700 text-red-300":"bg-neutral-800 border-neutral-700 text-neutral-400"}avatarLetterOf(e){let t=this.displayNameOf(e).trim();return t.length>0?t.charAt(0).toUpperCase():"A"}avatarBgClassOf(e){let t=["bg-emerald-700/60 text-emerald-200","bg-cyan-700/60 text-cyan-200","bg-indigo-700/60 text-indigo-200","bg-fuchsia-700/60 text-fuchsia-200","bg-amber-700/60 text-amber-200","bg-rose-700/60 text-rose-200","bg-teal-700/60 text-teal-200","bg-violet-700/60 text-violet-200"],n=0;for(let s=0;s<e.length;s++)n=n*31+e.charCodeAt(s)&2147483647;return t[n%t.length]}displayNameOf(e){return e.displayName!==""?e.displayName:`account-${e.accountKey.slice(0,6)}`}itemsCountOf(e){return e.length}latestFiveHourUtilOf(e){for(let t of e)if(t.windowType==="five_hour"&&typeof t.utilization=="number")return t.utilization;return null}latestAccountKeyOf(e){if(e.length===0)return null;let t=e[0];for(let n of e){let s=n.observedAt?Date.parse(n.observedAt):0,d=t.observedAt?Date.parse(t.observedAt):0;s>d&&(t=n)}return t.accountKey}displayNameByAccountKey(e){let t=this.account_DS.accounts_$().find(n=>n.accountKey===e);return t?this.displayNameOf(t):`account-${e.slice(0,6)}`}formatUtilization(e){return e===null?"\u2014":`${Math.round(e*100)}%`}utilizationColorClass(e){return e===null||e<.5?"text-green-400":e<.85?"text-yellow-300":"text-red-400"}pacingColorClassForFiveHour(e){let t;for(let d of e)if(d.windowType==="five_hour"){t=d;break}if(!t)return"text-neutral-500";let n=U.computePacingFraction({windowType:"five_hour",resetsAtMs:t.resetsAtMs,nowMs:Date.now()});if(n===null){let d=t.utilization??null;return this.utilizationColorClass(d)}let s=U.classifyPacing({utilization:t.utilization,pacingFraction:n});return U.colorClassForPacing(s)}static \u0275fac=function(t){return new(t||l)};static \u0275cmp=T({type:l,selectors:[["app-cc-usage-dashboard"]],hostAttrs:[1,"flex","flex-col","flex-1","min-h-0","overflow-auto","p-4"],standalone:!0,features:[I],decls:55,vars:21,consts:[[1,"flex","items-start","justify-between","mb-6","pb-3","border-b","border-neutral-700","gap-3"],[1,"min-w-0","flex-1"],[1,"text-xl","font-bold","text-neutral-100","flex","items-center","gap-2"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-5","h-5","text-neonCyan"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M9 19V6l3-3 3 3v13M5 21h14a2 2 0 002-2v-7l-7-7-7 7v7a2 2 0 002 2z"],[1,"text-xs","text-neutral-500","mt-1"],[1,"text-neutral-400"],[1,"flex","items-center","gap-2","shrink-0"],["type","button","title","Re-scan local credential files (~/.claude/.credentials.json) and register newly discovered accounts.",1,"px-3","py-1.5","text-xs","rounded-md","border","border-neonDefault","bg-neonDefault/15","text-neutral-100","hover:bg-neonDefault/30","hover:border-neonDefault","transition-colors","disabled:opacity-40","disabled:cursor-not-allowed","font-medium","flex","items-center","gap-1.5",3,"click","disabled"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-3.5","h-3.5"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"],["type","button","title","Pull live usage data from Anthropic for every known account.",1,"px-3","py-1.5","text-xs","rounded-md","border","border-neonCyan","bg-neonCyan/15","text-neutral-100","hover:bg-neonCyan/30","hover:border-neonCyan","transition-colors","disabled:opacity-40","disabled:cursor-not-allowed","font-medium","flex","items-center","gap-1.5",3,"click","disabled"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M13 10V3L4 14h7v7l9-11h-7z"],[1,"text-sm","text-neutral-400","italic","py-4"],[1,"text-sm","text-red-400","bg-red-950/30","border","border-red-700","rounded","p-3","mb-4"],[1,"mb-6"],[1,"text-xs","font-semibold","text-neutral-400","uppercase","tracking-wider","mb-3","flex","items-center","gap-2"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"],[1,"text-neutral-600","font-normal","normal-case","tracking-normal"],[1,"rounded-lg","border","border-dashed","border-neutral-700","bg-neutral-900/30","px-6","py-10","text-center"],[1,"grid","grid-cols-1","md:grid-cols-2","xl:grid-cols-3","gap-3"],[1,"rounded-lg","border","border-neutral-800","hover:border-neutral-700","hover:shadow-md","hover:shadow-black/30","bg-gradient-to-br","from-neutral-900/60","to-neutral-950/30","transition-all","overflow-hidden","flex","flex-col",3,"xl:col-span-2","xl:col-span-3"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"],[1,"rounded-lg","border","border-dashed","border-neutral-700","bg-neutral-900/30","px-4","py-6","text-center","text-[11px]","text-neutral-500"],[1,"flex","items-center","gap-3","py-2.5","px-3","rounded-lg","border","border-neutral-800","mb-2","hover:border-neutral-700","hover:bg-neutral-900/40","transition-all"],["title","Set CC account email","maxWidth","sm",3,"closed","isOpen"],[1,"flex","flex-col","gap-3"],[1,"text-xs","text-neutral-400"],["type","email","placeholder","user@example.com","autofocus","",1,"w-full","px-3","py-2","rounded-md","bg-neutral-900","border","border-neutral-700","text-sm","text-neutral-100","placeholder-neutral-500","focus:outline-none","focus:border-neonCyan",3,"ngModelChange","ngModel"],[1,"flex","items-center","justify-end","gap-2","pt-2"],["type","button",1,"px-3","py-1.5","text-xs","rounded-md","border","border-neutral-700","text-neutral-300","hover:bg-neutral-800","transition-colors",3,"click"],["type","button",1,"px-3","py-1.5","text-xs","rounded-md","border","border-neonCyan","bg-neonCyan/15","text-neutral-100","hover:bg-neonCyan/30","transition-colors","disabled:opacity-40","disabled:cursor-not-allowed",3,"click","disabled"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-12","h-12","mx-auto","text-neutral-600","mb-3"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","1.5","d","M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"],[1,"text-sm","text-neutral-300","font-medium","mb-1"],[1,"text-xs","text-neutral-500"],[1,"px-1.5","py-0.5","rounded","bg-neutral-800","text-neonCyan","font-mono"],[1,"text-neutral-300"],[1,"rounded-lg","border","border-neutral-800","hover:border-neutral-700","hover:shadow-md","hover:shadow-black/30","bg-gradient-to-br","from-neutral-900/60","to-neutral-950/30","transition-all","overflow-hidden","flex","flex-col"],[1,"flex","items-start","gap-2","py-2.5","px-3","border-b","border-neutral-800/70"],[1,"flex-1","min-w-0"],[1,"flex","items-center","gap-1.5","min-w-0"],[1,"text-sm","text-neutral-100","font-semibold","truncate"],[3,"class","title"],[1,"text-[9px]","text-neutral-200","px-1.5","py-0.5","rounded-full","border","border-indigo-700","bg-indigo-900/30","font-medium","shrink-0"],[1,"flex","items-center","gap-1.5","mt-0.5","min-w-0"],[1,"text-[11px]","text-neonCyan/90","truncate"],["type","button",1,"text-[9px]","text-neutral-400","hover:text-neonCyan","border","border-neutral-700","hover:border-neonCyan","rounded","px-1","py-0.5","transition-colors","shrink-0",3,"click","title"],[1,"text-[10px]","text-neutral-500","font-mono","truncate","mt-0.5",3,"title"],[1,"text-neutral-600"],["type","button","title","Pull live usage data from Anthropic for this account.",1,"shrink-0","px-2","py-1","text-[11px]","rounded-md","border","border-neonCyan","bg-neonCyan/15","text-neutral-100","hover:bg-neonCyan/30","transition-colors","flex","items-center","gap-1","disabled:opacity-40","disabled:cursor-not-allowed",3,"click","disabled"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-3","h-3"],[1,"px-3","py-2.5","border-b","border-neutral-800/40","flex-1"],[3,"accountKey"],[1,"px-3","py-2"],["type","button",1,"text-[11px]","text-neutral-400","hover:text-neonCyan","flex","items-center","gap-1","transition-colors",3,"click","title"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-3","h-3","transition-transform"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M9 5l7 7-7 7"],[1,"text-neutral-500","italic","ml-1"],[1,"mt-2","rounded-md","border","border-neutral-800","bg-neutral-950/40","p-2"],[3,"title"],[1,"flex","items-center","justify-between","mb-2"],[1,"text-[10px]","text-neutral-500","uppercase","tracking-wider"],[1,"text-neutral-600","normal-case","tracking-normal","ml-1"],["type","button","title","Re-fetch usage event history from server.",1,"text-[10px]","text-neutral-400","hover:text-neonCyan","border","border-neutral-700","hover:border-neonCyan","rounded","px-1.5","py-0.5","transition-colors","disabled:opacity-40","disabled:cursor-not-allowed",3,"click","disabled"],[1,"text-[11px]","text-neutral-500","italic","px-2","py-3"],[1,"overflow-x-auto"],[1,"px-1","py-0.5","rounded","bg-neutral-800","text-neutral-400","font-mono","text-[10px]"],[1,"w-full","text-[11px]","text-left"],[1,"py-1","px-2","font-medium"],[1,"py-1","px-2","font-medium","text-right"],[1,"border-t","border-neutral-800/60","hover:bg-neutral-900/40"],[1,"py-1","px-2","font-mono","text-neutral-300"],[1,"py-1","px-2","text-neutral-300"],[1,"py-1","px-2"],[1,"py-1","px-2","font-mono","text-neutral-200","text-right"],[1,"py-1","px-2","text-neutral-400"],[1,"py-1","px-2","font-mono","text-neutral-500"],[1,"shrink-0","w-7","h-7","rounded-md","bg-neutral-800","border","border-neutral-700","flex","items-center","justify-center","text-neutral-400"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M5 12H3l9-9 9 9h-2M5 12v7a2 2 0 002 2h10a2 2 0 002-2v-7"],[1,"text-sm","text-neutral-200","font-medium","truncate","font-mono"],[1,"text-[11px]","text-neutral-500","mt-0.5","flex","items-center","gap-1.5","flex-wrap"],[1,"font-mono","text-neutral-600","text-[10px]"],[1,"text-neutral-700"]],template:function(t,n){if(t&1&&(i(0,"header",0)(1,"div",1)(2,"h1",2),g(),i(3,"svg",3),x(4,"path",4),a(),r(5," CC Usage & Accounts "),a(),b(),i(6,"p",5),r(7," Anthropic OAuth credentials \xB7 per-account 5-hour / weekly / opus / sonnet / extra usage windows \xB7 "),i(8,"span",6),r(9),a(),r(10," \xB7 "),i(11,"span",6),r(12),a()()(),i(13,"div",7)(14,"button",8),f("click",function(){return n.handleRefresh()}),g(),i(15,"svg",9),x(16,"path",10),a(),r(17),a(),b(),i(18,"button",11),f("click",function(){return n.handleRefreshAllUsage()}),g(),i(19,"svg",9),x(20,"path",12),a(),r(21),a()()(),v(22,Z,2,0,"div",13)(23,ee,4,1,"div",14),b(),i(24,"section",15)(25,"h2",16),g(),i(26,"svg",9),x(27,"path",17),a(),r(28," Known CC Accounts "),b(),i(29,"span",18),r(30),a()(),v(31,te,13,0,"div",19),i(32,"div",20),k(33,ce,32,27,"div",21,J),a()(),i(35,"section")(36,"h2",16),g(),i(37,"svg",9),x(38,"path",22),a(),r(39," Instance \u2194 Account Mapping "),b(),i(40,"span",18),r(41),a()(),v(42,ue,8,0,"div",23),k(43,pe,11,3,"div",24,Q),a(),i(45,"app-s-modal",25),f("closed",function(){return n.handleEditEmailClose()}),i(46,"div",26)(47,"p",27),r(48," Enter the email address linked to this Claude account. Leave empty to clear. "),a(),i(49,"input",28),f("ngModelChange",function(d){return n.editEmailValue_$.set(d)}),a(),i(50,"div",29)(51,"button",30),f("click",function(){return n.handleEditEmailClose()}),r(52," Cancel "),a(),i(53,"button",31),f("click",function(){return n.handleEditEmailSave()}),r(54),a()()()()),t&2){let s,d;o(9),c("",n.account_DS.accounts_$().length," account(s)"),o(3),c("",n.instanceCount_$()," instance mapping(s)"),o(2),p("disabled",n.isRefreshing_$()||n.account_DS.isLoading_$()),o(),S("animate-spin",n.isRefreshing_$()),o(2),c(" ",n.isRefreshing_$()?"Discovering\u2026":"Refresh accounts"," "),o(),p("disabled",n.isRefreshingAllUsage_$()||!n.account_DS.accounts_$().length),o(),S("animate-spin",n.isRefreshingAllUsage_$()),o(2),c(" ",n.isRefreshingAllUsage_$()?"Pulling all\u2026":"Pull all usage"," "),o(),_(n.account_DS.isLoading_$()?22:-1),o(),_((s=n.account_DS.loadError_$())?23:-1,s),o(7),c(" \xB7 ",n.account_DS.accounts_$().length," "),o(),_(!n.account_DS.accounts_$().length&&!n.account_DS.isLoading_$()?31:-1),o(2),D(n.account_DS.accounts_$()),o(8),c(" \xB7 ",n.instanceCount_$()," "),o(),_(!n.instanceCount_$()&&!n.account_DS.isLoading_$()?42:-1),o(),D((d=(d=n.account_DS.instanceMapping_$())==null?null:d.instances)!==null&&d!==void 0?d:R(20,X)),o(2),p("isOpen",n.editEmailModalOpen_$()),o(4),p("ngModel",n.editEmailValue_$()),o(4),p("disabled",n.editEmailSaving_$()),o(),c(" ",n.editEmailSaving_$()?"Saving\u2026":"Save"," ")}},dependencies:[B,N,L,P,z,j,G],encapsulation:2})}return l})();export{we as CC_UsageDashboard_Component};
|
|
2
|
+
//# sourceMappingURL=cc-usage-dashboard.component-OQS2BC4L.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["src/app/_modules/external-sessions/_modules/claude-code/_collections/cc-account-usage-pacing.util.ts", "src/app/_modules/external-sessions/_modules/claude-code/_components/cc-usage-dashboard/cc-usage-dashboard.component.ts", "src/app/_modules/external-sessions/_modules/claude-code/_components/cc-usage-dashboard/cc-usage-dashboard.component.html"],
|
|
4
|
+
"sourcesContent": ["/**\n * CC Account usage pacing util (REQ-CC-USAGE-DASHBOARD-001 Slice 6 cycle 867).\n *\n * Pacing target compute: minden time-windowed utilization-hoz (five_hour /\n * seven_day / seven_day_opus / seven_day_sonnet) ki tudja számolni a\n * jelenlegi időponti pacing-target-et (`elapsed_sec * 100 / window_sec`),\n * és klasszifikálja, hogy a tényleges utilization above / on-pace / below\n * pacing-en van-e. Az `extra_usage` window NEM time-based, ehhez NEM\n * használható (a hívó döntse el melyik window-on alkalmazza).\n *\n * Pure-static, NEM service-injekt. A Slice 6 Dashboard view-frissítés és\n * a későbbi per-window usage-card komponens egyaránt ezt használja.\n */\nexport class CC_AccountUsagePacing_Util {\n\n /** Time-windowed windowType-ok másodpercekben. */\n static readonly WINDOW_SEC_BY_TYPE: Record<string, number> = {\n five_hour: 5 * 3600,\n seven_day: 7 * 24 * 3600,\n seven_day_opus: 7 * 24 * 3600,\n seven_day_sonnet: 7 * 24 * 3600,\n };\n\n /**\n * Pacing fraction (0..1): mennyi telt el a window-ból. NEM utilization-hez\n * köthető. Példa: ha a 5h window 2.5h-nál tart, pacing = 0.5.\n *\n * Compute: `windowStart = resetsAtMs - windowSec*1000`;\n * `elapsed = max(0, now - windowStart)`;\n * `pacing = clamp(elapsed / windowSec*1000, 0, 1)`.\n *\n * Visszaad null-t, ha NEM time-windowed type vagy NEM kalkulálható\n * (windowSec hiányzik a térképen, resetsAtMs negatív/0).\n */\n static computePacingFraction(params: {\n windowType: string;\n resetsAtMs: number | undefined;\n nowMs: number;\n }): number | null {\n const windowSec: number | undefined =\n CC_AccountUsagePacing_Util.WINDOW_SEC_BY_TYPE[params.windowType];\n if (windowSec === undefined) {\n return null;\n }\n if (!params.resetsAtMs || params.resetsAtMs <= 0) {\n return null;\n }\n const windowMs: number = windowSec * 1000;\n const windowStart: number = params.resetsAtMs - windowMs;\n const elapsed: number = Math.max(0, params.nowMs - windowStart);\n const pacing: number = elapsed / windowMs;\n if (pacing < 0) {\n return 0;\n }\n if (pacing > 1) {\n return 1;\n }\n return pacing;\n }\n\n /**\n * Pacing klasszifikáció: utilization vs pacing-target. Tolerancia (default\n * 0.10) belül 'on-pace'; alatta 'below' (egészséges, alulhasználat); fölötte\n * 'above' (gyors égetés).\n *\n * Visszaad null-t, ha bármelyik input hiányzik.\n */\n static classifyPacing(params: {\n utilization: number | undefined;\n pacingFraction: number | null;\n tolerance?: number;\n }): 'below' | 'on-pace' | 'above' | null {\n if (params.utilization == null || params.pacingFraction === null) {\n return null;\n }\n const tolerance: number = params.tolerance ?? 0.10;\n const diff: number = params.utilization - params.pacingFraction;\n if (diff > tolerance) {\n return 'above';\n }\n if (diff < -tolerance) {\n return 'below';\n }\n return 'on-pace';\n }\n\n /**\n * Tailwind text-color class a pacing-klasszifikáció alapján:\n * - 'below' → 'text-green-400' (alulhasználat, egészséges)\n * - 'on-pace' → 'text-yellow-300' (on-target, watch)\n * - 'above' → 'text-red-400' (gyors égetés, közeli rate-limit)\n * - null → 'text-neutral-500' (no-data fallback)\n */\n static colorClassForPacing(classification: 'below' | 'on-pace' | 'above' | null): string {\n if (classification === 'below') {\n return 'text-green-400';\n }\n if (classification === 'on-pace') {\n return 'text-yellow-300';\n }\n if (classification === 'above') {\n return 'text-red-400';\n }\n return 'text-neutral-500';\n }\n}\n", "import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, OnInit, Signal, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { S_Modal_Component } from '../../../../../shared/_components/s-modal/s-modal.component';\nimport { CC_Account_DataService } from '../../_services/cc-account.data-service';\nimport { CC_Account_Response } from '../../_models/interfaces/cc-account.interface';\nimport { CC_AccountUsageState_Response } from '../../_models/interfaces/cc-account-usage-state.interface';\nimport { CC_AccountUsageEvent_Response } from '../../_models/interfaces/cc-account-usage-event.interface';\nimport { CC_AccountUsagePacing_Util } from '../../_collections/cc-account-usage-pacing.util';\nimport { CC_AccountUsageView_Component } from '../cc-account-usage-view/cc-account-usage-view.component';\n\n/**\n * CC Account Usage Dashboard skeleton komponens (REQ-CC-USAGE-DASHBOARD-001\n * Slice 5 cycle 858).\n *\n * Standalone Angular komponens — listázza az ismert CC account-okat + a\n * cross-instance instance-mapping aggregate-et. A skeleton-szint:\n * loading state, error state, üres-lista placeholder, és minimum lista-\n * render. A részletes account-card + per-window usage-render a Slice\n * további szeleteiben (cycle 859+).\n *\n * Data-flow: ngOnInit → CC_Account_DataService.loadDashboardBootstrap\n * (Promise.all listAccounts + getInstanceMapping) → signal-update →\n * template re-render.\n *\n * Refresh-button: explicit user-action → POST /cc-account/refresh +\n * automatikus listAccounts re-fetch (data-service refreshAccounts hívás).\n */\n@Component({\n selector: 'app-cc-usage-dashboard',\n standalone: true,\n imports: [CommonModule, FormsModule, S_Modal_Component, CC_AccountUsageView_Component],\n templateUrl: './cc-usage-dashboard.component.html',\n host: { class: 'flex flex-col flex-1 min-h-0 overflow-auto p-4' },\n})\n/** CC_UsageDashboard_Component class. */\nexport class CC_UsageDashboard_Component implements OnInit {\n\n readonly account_DS: CC_Account_DataService = inject(CC_Account_DataService);\n\n /** Refresh-button folyamat-jelző (a data-service.isLoading_$ mellett külön ehhez). */\n readonly isRefreshing_$ = signal<boolean>(false);\n\n /** Globális 'Refresh all usage' folyamat-jelző (cycle 873). */\n readonly isRefreshingAllUsage_$ = signal<boolean>(false);\n\n /** Per-account refresh-usage folyamat-jelző Set (cycle 873). */\n readonly refreshingUsageKeys_$ = signal<Set<string>>(new Set<string>());\n\n /** Edit-email modal nyitva-jelző (cycle 877: shared S_Modal flow). */\n readonly editEmailModalOpen_$ = signal<boolean>(false);\n\n /** Edit-email modal — éppen szerkesztett accountKey (null = nincs nyitva). */\n readonly editEmailAccountKey_$ = signal<string | null>(null);\n\n /** Edit-email modal — input-mező live értéke (ngModel két-irányú binding). */\n readonly editEmailValue_$ = signal<string>('');\n\n /** Edit-email modal — save folyamat-jelző (a Save gomb spinner-jéhez). */\n readonly editEmailSaving_$ = signal<boolean>(false);\n\n /**\n * Cycle 879: melyik account history-panel-je van nyitva. A Set-tartalom\n * accountKey-eket tárol (több is nyitva lehet egyszerre).\n */\n readonly expandedHistoryKeys_$ = signal<Set<string>>(new Set<string>());\n\n /** Per-account history-loading folyamat-jelző (a fetch alatt). */\n readonly loadingHistoryKeys_$ = signal<Set<string>>(new Set<string>());\n\n\n /**\n * Computed: a cross-instance instance-mapping aggregate `{ instances }`\n * top-level array hossza. A template ezzel dönti el, hogy a \"no instances\"\n * placeholder vagy a lista renderel.\n */\n readonly instanceCount_$: Signal<number> = computed((): number => {\n const mapping = this.account_DS.instanceMapping_$();\n return mapping?.instances.length ?? 0;\n });\n\n ngOnInit(): void {\n // fire-and-forget: a Promise hibái a data-service.loadError_$ signal-ba\n // mennek, NEM throw-olnak — a template loadError_$-rel rendereli.\n void this.account_DS.loadDashboardBootstrap();\n // REQ-CC-USAGE-DASHBOARD-001 Slice 6 second-half (cycle 871): real-time\n // socket subscription a `cc:account-usage-update` és `cc:account-list-update`\n // event-ekre. A subscription a service singleton élettartam alatt él\n // (root-providedIn), így nem teardown-oljuk a komponens destroy-jakor.\n this.account_DS.startLiveUpdates();\n }\n\n /** Refresh-button click — POST /refresh + auto listAccounts. */\n async handleRefresh(): Promise<void> {\n this.isRefreshing_$.set(true);\n try {\n await this.account_DS.refreshAccounts();\n } finally {\n this.isRefreshing_$.set(false);\n }\n }\n\n /** Per-account 'Refresh usage' gomb: aktív Anthropic /api/oauth/usage pull (cycle 873). */\n async handleRefreshUsage(accountKey: string): Promise<void> {\n this.refreshingUsageKeys_$.update((set: Set<string>): Set<string> => {\n const next: Set<string> = new Set(set);\n next.add(accountKey);\n return next;\n });\n try {\n await this.account_DS.refreshAccountUsage(accountKey);\n } finally {\n this.refreshingUsageKeys_$.update((set: Set<string>): Set<string> => {\n const next: Set<string> = new Set(set);\n next.delete(accountKey);\n return next;\n });\n }\n }\n\n /** Globális 'Refresh all usage' gomb: minden ismert account-ra usage-pull (cycle 873). */\n async handleRefreshAllUsage(): Promise<void> {\n const keys: string[] = this.account_DS.accounts_$().map(\n (a: CC_Account_Response): string => a.accountKey,\n );\n if (keys.length === 0) {\n return;\n }\n this.isRefreshingAllUsage_$.set(true);\n try {\n await Promise.all(keys.map((k: string): Promise<unknown> => this.account_DS.refreshAccountUsage(k)));\n } finally {\n this.isRefreshingAllUsage_$.set(false);\n }\n }\n\n /** Reset countdown formázás — emberi olvasható ('2h 34m', '5d 1h', 'expired'). */\n formatResetCountdown(resetsAtMs: number | undefined): string {\n if (resetsAtMs == null || !isFinite(resetsAtMs) || resetsAtMs <= 0) {\n return '—';\n }\n const diffMs: number = resetsAtMs - Date.now();\n if (diffMs <= 0) {\n return 'expired';\n }\n const totalMinutes: number = Math.floor(diffMs / 60_000);\n const days: number = Math.floor(totalMinutes / (60 * 24));\n const hours: number = Math.floor((totalMinutes % (60 * 24)) / 60);\n const minutes: number = totalMinutes % 60;\n if (days > 0) {\n return `${days}d ${hours}h`;\n }\n if (hours > 0) {\n return `${hours}h ${minutes}m`;\n }\n return `${minutes}m`;\n }\n\n /** True ha az adott account kulcsra fut a per-account refresh-usage. */\n isRefreshingUsageOf(accountKey: string): boolean {\n return this.refreshingUsageKeys_$().has(accountKey);\n }\n\n /**\n * Manuális email-bind: megnyitja a shared S_Modal-t az aktuális email-lel\n * (vagy üres mezővel); a tényleges PATCH a Save-click-en történik\n * (`handleEditEmailSave`).\n */\n handleEditEmail(account: CC_Account_Response): void {\n this.editEmailAccountKey_$.set(account.accountKey);\n this.editEmailValue_$.set(account.email ?? '');\n this.editEmailModalOpen_$.set(true);\n }\n\n /** Edit-email modal Save-click: trim + PATCH + close (üres = clear). */\n async handleEditEmailSave(): Promise<void> {\n const accountKey: string | null = this.editEmailAccountKey_$();\n if (accountKey === null) {\n return;\n }\n const trimmed: string = this.editEmailValue_$().trim();\n this.editEmailSaving_$.set(true);\n try {\n await this.account_DS.renameAccount({\n accountKey: accountKey,\n email: trimmed === '' ? null : trimmed,\n });\n this.handleEditEmailClose();\n } finally {\n this.editEmailSaving_$.set(false);\n }\n }\n\n /** Edit-email modal Cancel / X / backdrop: state-cleanup. */\n handleEditEmailClose(): void {\n this.editEmailModalOpen_$.set(false);\n this.editEmailAccountKey_$.set(null);\n this.editEmailValue_$.set('');\n }\n\n /** True, ha az account-rekord rendelkezik email-lel. Template használja a \"Set email\" / \"Edit email\" gomb-szöveghez. */\n hasEmail(account: CC_Account_Response): boolean {\n return typeof account.email === 'string' && account.email !== '';\n }\n\n /**\n * History expand-toggle (cycle 879). Első expand-kor lazy-fetch-eli a\n * `/cc-account/:accountKey/usage-history` endpoint-ot; további toggle-ök\n * NEM re-fetchelnek (a felhasználó explicit Refresh-history gombbal kérheti).\n */\n async handleToggleHistory(accountKey: string): Promise<void> {\n const isOpen: boolean = this.expandedHistoryKeys_$().has(accountKey);\n if (isOpen) {\n // Bezárás: csak a Set-ből kivesszük; a cache marad.\n this.expandedHistoryKeys_$.update((set: Set<string>): Set<string> => {\n const next: Set<string> = new Set(set);\n next.delete(accountKey);\n return next;\n });\n return;\n }\n // Nyitás: Set-be tesszük + lazy-load (csak ha még nincs cache-ben).\n this.expandedHistoryKeys_$.update((set: Set<string>): Set<string> => {\n const next: Set<string> = new Set(set);\n next.add(accountKey);\n return next;\n });\n const cached: CC_AccountUsageEvent_Response[] | undefined =\n this.account_DS.usageHistoryMap_$().get(accountKey);\n if (cached === undefined) {\n await this.loadHistoryFor(accountKey);\n }\n }\n\n /** Explicit history-refresh (a panel-en belül 'Refresh history' gomb). */\n async handleRefreshHistory(accountKey: string): Promise<void> {\n await this.loadHistoryFor(accountKey);\n }\n\n\n /** Belső: history-fetch + per-account loading-set kezelés. */\n private async loadHistoryFor(accountKey: string): Promise<void> {\n this.loadingHistoryKeys_$.update((set: Set<string>): Set<string> => {\n const next: Set<string> = new Set(set);\n next.add(accountKey);\n return next;\n });\n try {\n await this.account_DS.loadAccountUsageHistory({ accountKey: accountKey });\n } finally {\n this.loadingHistoryKeys_$.update((set: Set<string>): Set<string> => {\n const next: Set<string> = new Set(set);\n next.delete(accountKey);\n return next;\n });\n }\n }\n\n /** True, ha a history-panel nyitva az adott accountKey-re. */\n isHistoryOpen(accountKey: string): boolean {\n return this.expandedHistoryKeys_$().has(accountKey);\n }\n\n /** True, ha éppen fut a history-fetch az adott accountKey-re. */\n isHistoryLoading(accountKey: string): boolean {\n return this.loadingHistoryKeys_$().has(accountKey);\n }\n\n /** History-eventek (descending observedAt) az adott accountKey-re a cache-ből. */\n historyItemsOf(accountKey: string): CC_AccountUsageEvent_Response[] {\n const items: CC_AccountUsageEvent_Response[] =\n this.account_DS.usageHistoryMap_$().get(accountKey) ?? [];\n // Defensive copy + descending observedAt sort (újabb felül).\n const copy: CC_AccountUsageEvent_Response[] = items.slice();\n copy.sort((a: CC_AccountUsageEvent_Response, b: CC_AccountUsageEvent_Response): number => {\n const ta: number = a.observedAt ? Date.parse(a.observedAt) : 0;\n const tb: number = b.observedAt ? Date.parse(b.observedAt) : 0;\n return tb - ta;\n });\n return copy;\n }\n\n /** History-event source-badge szín (stream / pull / unknown). */\n sourceBadgeClassOf(source: string | undefined): string {\n if (source === 'stream') {\n return 'bg-cyan-900/40 border-cyan-700 text-cyan-300';\n }\n if (source === 'pull') {\n return 'bg-emerald-900/40 border-emerald-700 text-emerald-300';\n }\n return 'bg-neutral-800 border-neutral-700 text-neutral-400';\n }\n\n /** ISO timestamp → emberi olvasható lokál-string ('2026-05-09 14:32:01'); null → '—'. */\n formatObservedAt(observedAt: string | undefined): string {\n if (observedAt == null || observedAt === '') {\n return '—';\n }\n const t: number = Date.parse(observedAt);\n if (!isFinite(t) || t <= 0) {\n return observedAt;\n }\n const d: Date = new Date(t);\n const yyyy: string = String(d.getFullYear());\n const mm: string = String(d.getMonth() + 1).padStart(2, '0');\n const dd: string = String(d.getDate()).padStart(2, '0');\n const hh: string = String(d.getHours()).padStart(2, '0');\n const mi: string = String(d.getMinutes()).padStart(2, '0');\n const ss: string = String(d.getSeconds()).padStart(2, '0');\n return `${yyyy}-${mm}-${dd} ${hh}:${mi}:${ss}`;\n }\n\n /**\n * Window-typeName → emberi label (template-render). Pure mapping.\n * Cycle 875: vizuális javítás — a snake_case helyett title-case + iconok.\n */\n windowLabelOf(windowType: string): string {\n switch (windowType) {\n case 'five_hour': return '5-hour session';\n case 'seven_day': return 'Weekly';\n case 'seven_day_opus': return 'Weekly · Opus';\n case 'seven_day_sonnet': return 'Weekly · Sonnet';\n case 'extra_usage': return 'Extra (pay-as-you-go)';\n default: return windowType;\n }\n }\n\n /**\n * Token-status badge color-class. Zöld: valid; sárga: scope-incomplete;\n * piros: expired/revoked; szürke: unknown.\n */\n tokenStatusBadgeClassOf(tokenStatus: string | undefined): string {\n if (tokenStatus === 'valid') {\n return 'bg-green-900/40 border-green-700 text-green-300';\n }\n if (tokenStatus === 'scope-incomplete') {\n return 'bg-amber-900/40 border-amber-700 text-amber-300';\n }\n if (tokenStatus === 'expired' || tokenStatus === 'revoked') {\n return 'bg-red-900/40 border-red-700 text-red-300';\n }\n return 'bg-neutral-800 border-neutral-700 text-neutral-400';\n }\n\n /**\n * Account avatar — a displayName első értelmes karaktere (vagy 'A' fallback).\n * Pure mapping; a HTML-template hash-szín-ezi a card-ikon háttérszínét.\n */\n avatarLetterOf(account: CC_Account_Response): string {\n const name: string = this.displayNameOf(account).trim();\n return name.length > 0 ? name.charAt(0).toUpperCase() : 'A';\n }\n\n /**\n * Avatar háttérszín stable hash-ből az accountKey alapján. 8 paletta-szín\n * — a card-ikon visszaadja az account vizuális identitását.\n */\n avatarBgClassOf(accountKey: string): string {\n const palette: string[] = [\n 'bg-emerald-700/60 text-emerald-200',\n 'bg-cyan-700/60 text-cyan-200',\n 'bg-indigo-700/60 text-indigo-200',\n 'bg-fuchsia-700/60 text-fuchsia-200',\n 'bg-amber-700/60 text-amber-200',\n 'bg-rose-700/60 text-rose-200',\n 'bg-teal-700/60 text-teal-200',\n 'bg-violet-700/60 text-violet-200',\n ];\n let hash: number = 0;\n for (let i: number = 0; i < accountKey.length; i++) {\n hash = (hash * 31 + accountKey.charCodeAt(i)) & 0x7fffffff;\n }\n return palette[hash % palette.length];\n }\n\n /**\n * Template helper: account `displayName` vagy fallback (`accountKey első 6 char`).\n * NEM logika — pure mapping, getter-szerű, max-method-params szabályon belül.\n */\n displayNameOf(account: CC_Account_Response): string {\n return account.displayName !== '' ? account.displayName : `account-${account.accountKey.slice(0, 6)}`;\n }\n\n /**\n * Template helper: per-instance items count → mappingéhez render-be ('N usage records').\n * Pure mapping a Slice 6 view részletesebb table-cell-jei előtt.\n */\n itemsCountOf(items: CC_AccountUsageState_Response[]): number {\n return items.length;\n }\n\n /**\n * Slice 6 first-step (cycle 865): latest five_hour utilization egy instance-en.\n * A `five_hour` windowType item utilization-jét adja vissza (0..1 fraction);\n * ha nincs ilyen item → null (template '—'-t renderel).\n */\n latestFiveHourUtilOf(items: CC_AccountUsageState_Response[]): number | null {\n for (const item of items) {\n if (item.windowType === 'five_hour' && typeof item.utilization === 'number') {\n return item.utilization;\n }\n }\n return null;\n }\n\n /**\n * Slice 6 first-step (cycle 865): legutoljára-látott account-kulcs egy instance-en.\n * Az `items` rendszerint egyetlen account-hoz tartozik (per-instance only egy active),\n * de defensive a legutóbbi observedAt szerint választ. Empty → null.\n */\n latestAccountKeyOf(items: CC_AccountUsageState_Response[]): string | null {\n if (items.length === 0) {\n return null;\n }\n let latest: CC_AccountUsageState_Response = items[0];\n for (const item of items) {\n const a: number = item.observedAt ? Date.parse(item.observedAt) : 0;\n const b: number = latest.observedAt ? Date.parse(latest.observedAt) : 0;\n if (a > b) {\n latest = item;\n }\n }\n return latest.accountKey;\n }\n\n /**\n * Slice 6 first-step (cycle 865): account-displayName lookup accountKey alapján\n * az `accounts_$` cache-ből. Fallback `account-{first6}` ha nincs match.\n */\n displayNameByAccountKey(accountKey: string): string {\n const found: CC_Account_Response | undefined = this.account_DS.accounts_$().find(\n (a): boolean => a.accountKey === accountKey,\n );\n if (found) {\n return this.displayNameOf(found);\n }\n return `account-${accountKey.slice(0, 6)}`;\n }\n\n /**\n * Slice 6 first-step (cycle 865): utilization fraction (0..1) → percent string '42%'.\n * NEM logika — pure mapping. null → '—' (no data).\n */\n formatUtilization(utilization: number | null): string {\n if (utilization === null) {\n return '—';\n }\n return `${Math.round(utilization * 100)}%`;\n }\n\n /**\n * Slice 6 second-step (cycle 866): utilization-küszöb-szín a Dashboard 5h\n * percent-jelzéséhez. Egyszerűbb threshold-alapú szín-jelzés (NEM időbeli-\n * adaptív). Megmarad mint fallback / null-data eset, ahol a pacing NEM\n * számolható (resetsAtMs hiányzik). Tartományok REQ-CC-RATE-001 amber/red.\n */\n utilizationColorClass(utilization: number | null): string {\n if (utilization === null || utilization < 0.5) {\n return 'text-green-400';\n }\n if (utilization < 0.85) {\n return 'text-yellow-300';\n }\n return 'text-red-400';\n }\n\n /**\n * Slice 6 fourth-step (cycle 868): pacing-target színkód a Dashboard 5h\n * utilization-jelzéséhez. A cycle 866 sima threshold-küszöb helyett\n * időbeli-adaptív: a window-elapsed alapján a user lássa, hogy a tényleges\n * utilization \"above pacing\" (gyors), \"on-pace\" vagy \"below pacing\"\n * (egészséges). A `CC_AccountUsagePacing_Util` static metódusait láncolja.\n *\n * Fallback `utilizationColorClass`-ra, ha pacing NEM számolható\n * (resetsAtMs hiányzik / extra_usage). Ezzel mindig van valami szín-jelzés.\n */\n pacingColorClassForFiveHour(items: CC_AccountUsageState_Response[]): string {\n let fiveHourItem: CC_AccountUsageState_Response | undefined;\n for (const item of items) {\n if (item.windowType === 'five_hour') {\n fiveHourItem = item;\n break;\n }\n }\n if (!fiveHourItem) {\n return 'text-neutral-500';\n }\n const pacingFraction: number | null = CC_AccountUsagePacing_Util.computePacingFraction({\n windowType: 'five_hour',\n resetsAtMs: fiveHourItem.resetsAtMs,\n nowMs: Date.now(),\n });\n if (pacingFraction === null) {\n // Fallback: time-bázis NEM számolható → sima threshold-color.\n const util: number | null = fiveHourItem.utilization ?? null;\n return this.utilizationColorClass(util);\n }\n const classification: 'below' | 'on-pace' | 'above' | null =\n CC_AccountUsagePacing_Util.classifyPacing({\n utilization: fiveHourItem.utilization,\n pacingFraction: pacingFraction,\n });\n return CC_AccountUsagePacing_Util.colorClassForPacing(classification);\n }\n}\n", "<!-- CC Account Usage Dashboard (REQ-CC-USAGE-DASHBOARD-001).\n Cycle 875 visual polish: avatar, status-badges, progress-bars, human window labels. -->\n\n<header class=\"flex items-start justify-between mb-6 pb-3 border-b border-neutral-700 gap-3\">\n <div class=\"min-w-0 flex-1\">\n <h1 class=\"text-xl font-bold text-neutral-100 flex items-center gap-2\">\n <svg class=\"w-5 h-5 text-neonCyan\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M9 19V6l3-3 3 3v13M5 21h14a2 2 0 002-2v-7l-7-7-7 7v7a2 2 0 002 2z\"/>\n </svg>\n CC Usage & Accounts\n </h1>\n <p class=\"text-xs text-neutral-500 mt-1\">\n Anthropic OAuth credentials · per-account 5-hour / weekly / opus / sonnet / extra usage windows\n ·\n <span class=\"text-neutral-400\">{{ account_DS.accounts_$().length }} account(s)</span>\n ·\n <span class=\"text-neutral-400\">{{ instanceCount_$() }} instance mapping(s)</span>\n </p>\n </div>\n <div class=\"flex items-center gap-2 shrink-0\">\n <button\n type=\"button\"\n class=\"px-3 py-1.5 text-xs rounded-md border border-neonDefault bg-neonDefault/15 text-neutral-100\n hover:bg-neonDefault/30 hover:border-neonDefault transition-colors\n disabled:opacity-40 disabled:cursor-not-allowed font-medium flex items-center gap-1.5\"\n [disabled]=\"isRefreshing_$() || account_DS.isLoading_$()\"\n (click)=\"handleRefresh()\"\n title=\"Re-scan local credential files (~/.claude/.credentials.json) and register newly discovered accounts.\"\n >\n <svg class=\"w-3.5 h-3.5\" [class.animate-spin]=\"isRefreshing_$()\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"/>\n </svg>\n {{ isRefreshing_$() ? 'Discovering…' : 'Refresh accounts' }}\n </button>\n <button\n type=\"button\"\n class=\"px-3 py-1.5 text-xs rounded-md border border-neonCyan bg-neonCyan/15 text-neutral-100\n hover:bg-neonCyan/30 hover:border-neonCyan transition-colors\n disabled:opacity-40 disabled:cursor-not-allowed font-medium flex items-center gap-1.5\"\n [disabled]=\"isRefreshingAllUsage_$() || !account_DS.accounts_$().length\"\n (click)=\"handleRefreshAllUsage()\"\n title=\"Pull live usage data from Anthropic for every known account.\"\n >\n <svg class=\"w-3.5 h-3.5\" [class.animate-spin]=\"isRefreshingAllUsage_$()\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M13 10V3L4 14h7v7l9-11h-7z\"/>\n </svg>\n {{ isRefreshingAllUsage_$() ? 'Pulling all…' : 'Pull all usage' }}\n </button>\n </div>\n</header>\n\n@if (account_DS.isLoading_$()) {\n <div class=\"text-sm text-neutral-400 italic py-4\">\n Loading dashboard…\n </div>\n}\n\n@if (account_DS.loadError_$(); as err) {\n <div class=\"text-sm text-red-400 bg-red-950/30 border border-red-700 rounded p-3 mb-4\">\n <strong>Load error:</strong> {{ err }}\n </div>\n}\n\n<section class=\"mb-6\">\n <h2 class=\"text-xs font-semibold text-neutral-400 uppercase tracking-wider mb-3 flex items-center gap-2\">\n <svg class=\"w-3.5 h-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z\"/>\n </svg>\n Known CC Accounts\n <span class=\"text-neutral-600 font-normal normal-case tracking-normal\">\n · {{ account_DS.accounts_$().length }}\n </span>\n </h2>\n\n @if (!account_DS.accounts_$().length && !account_DS.isLoading_$()) {\n <div class=\"rounded-lg border border-dashed border-neutral-700 bg-neutral-900/30 px-6 py-10 text-center\">\n <svg class=\"w-12 h-12 mx-auto text-neutral-600 mb-3\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"\n d=\"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z\"/>\n </svg>\n <p class=\"text-sm text-neutral-300 font-medium mb-1\">No CC accounts discovered yet</p>\n <p class=\"text-xs text-neutral-500\">\n Run <code class=\"px-1.5 py-0.5 rounded bg-neutral-800 text-neonCyan font-mono\">claude /login</code>\n on this machine, then click <strong class=\"text-neutral-300\">Refresh accounts</strong>.\n </p>\n </div>\n }\n\n <div class=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3\">\n @for (account of account_DS.accounts_$(); track account.accountKey) {\n <div class=\"rounded-lg border border-neutral-800 hover:border-neutral-700 hover:shadow-md hover:shadow-black/30\n bg-gradient-to-br from-neutral-900/60 to-neutral-950/30 transition-all overflow-hidden flex flex-col\"\n [class.xl:col-span-2]=\"isHistoryOpen(account.accountKey)\"\n [class.xl:col-span-3]=\"false\">\n <!-- Header row: avatar + displayName + accountKey + status badges + refresh gomb -->\n <div class=\"flex items-start gap-2 py-2.5 px-3 border-b border-neutral-800/70\">\n <!-- Avatar (initial letter, hash-stable color) -->\n <div [class]=\"'shrink-0 w-8 h-8 rounded-md flex items-center justify-center text-sm font-bold ' + avatarBgClassOf(account.accountKey)\"\n [attr.aria-label]=\"'Avatar for ' + displayNameOf(account)\">\n {{ avatarLetterOf(account) }}\n </div>\n <div class=\"flex-1 min-w-0\">\n <div class=\"flex items-center gap-1.5 min-w-0\">\n <span class=\"text-sm text-neutral-100 font-semibold truncate\">\n {{ displayNameOf(account) }}\n </span>\n @if (account.tokenStatus) {\n <span [class]=\"'text-[9px] px-1.5 py-0.5 rounded-full border font-medium shrink-0 ' + tokenStatusBadgeClassOf(account.tokenStatus)\"\n [title]=\"'Token status: ' + account.tokenStatus\">\n {{ account.tokenStatus }}\n </span>\n }\n @if (account.planTier) {\n <span class=\"text-[9px] text-neutral-200 px-1.5 py-0.5 rounded-full border border-indigo-700 bg-indigo-900/30 font-medium shrink-0\">\n {{ account.planTier }}\n </span>\n }\n </div>\n <div class=\"flex items-center gap-1.5 mt-0.5 min-w-0\">\n @if (account.email) {\n <span class=\"text-[11px] text-neonCyan/90 truncate\">{{ account.email }}</span>\n }\n <button\n type=\"button\"\n class=\"text-[9px] text-neutral-400 hover:text-neonCyan border border-neutral-700\n hover:border-neonCyan rounded px-1 py-0.5 transition-colors shrink-0\"\n (click)=\"handleEditEmail(account)\"\n [title]=\"hasEmail(account) ? 'Edit email' : 'Set email manually'\"\n >\n {{ hasEmail(account) ? '✏️ Edit' : '✏️ Set email' }}\n </button>\n </div>\n <div class=\"text-[10px] text-neutral-500 font-mono truncate mt-0.5\"\n [title]=\"'key: ' + account.accountKey + (account.organizationId ? ' · org: ' + account.organizationId : '')\">\n <span class=\"text-neutral-600\">key:</span> {{ account.accountKey.slice(0, 12) }}\n </div>\n </div>\n <button\n type=\"button\"\n class=\"shrink-0 px-2 py-1 text-[11px] rounded-md border border-neonCyan bg-neonCyan/15 text-neutral-100\n hover:bg-neonCyan/30 transition-colors flex items-center gap-1\n disabled:opacity-40 disabled:cursor-not-allowed\"\n [disabled]=\"isRefreshingUsageOf(account.accountKey)\"\n (click)=\"handleRefreshUsage(account.accountKey)\"\n title=\"Pull live usage data from Anthropic for this account.\"\n >\n <svg class=\"w-3 h-3\" [class.animate-spin]=\"isRefreshingUsageOf(account.accountKey)\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"/>\n </svg>\n <span>{{ isRefreshingUsageOf(account.accountKey) ? '…' : 'Pull' }}</span>\n </button>\n </div>\n <!-- Shared CC Account Usage View (cycle 885): 5-row usage status + togglable SVG graph. -->\n <div class=\"px-3 py-2.5 border-b border-neutral-800/40 flex-1\">\n <app-cc-account-usage-view [accountKey]=\"account.accountKey\" />\n </div>\n\n <!-- History expand-toggle + lazy-loaded panel (cycle 879). -->\n <div class=\"px-3 py-2\">\n <button\n type=\"button\"\n class=\"text-[11px] text-neutral-400 hover:text-neonCyan flex items-center gap-1 transition-colors\"\n (click)=\"handleToggleHistory(account.accountKey)\"\n [title]=\"isHistoryOpen(account.accountKey) ? 'Hide usage history' : 'Show usage history'\"\n >\n <svg class=\"w-3 h-3 transition-transform\"\n [class.rotate-90]=\"isHistoryOpen(account.accountKey)\"\n fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M9 5l7 7-7 7\"/>\n </svg>\n {{ isHistoryOpen(account.accountKey) ? 'Hide' : 'Show' }} history\n @if (isHistoryLoading(account.accountKey)) {\n <span class=\"text-neutral-500 italic ml-1\">loading…</span>\n }\n </button>\n @if (isHistoryOpen(account.accountKey)) {\n <div class=\"mt-2 rounded-md border border-neutral-800 bg-neutral-950/40 p-2\">\n <div class=\"flex items-center justify-between mb-2\">\n <span class=\"text-[10px] text-neutral-500 uppercase tracking-wider\">\n Usage event history\n <span class=\"text-neutral-600 normal-case tracking-normal ml-1\">\n · {{ historyItemsOf(account.accountKey).length }} event(s)\n </span>\n </span>\n <button\n type=\"button\"\n class=\"text-[10px] text-neutral-400 hover:text-neonCyan border border-neutral-700\n hover:border-neonCyan rounded px-1.5 py-0.5 transition-colors\n disabled:opacity-40 disabled:cursor-not-allowed\"\n [disabled]=\"isHistoryLoading(account.accountKey)\"\n (click)=\"handleRefreshHistory(account.accountKey)\"\n title=\"Re-fetch usage event history from server.\"\n >\n {{ isHistoryLoading(account.accountKey) ? '…' : 'Refresh history' }}\n </button>\n </div>\n @if (!historyItemsOf(account.accountKey).length && !isHistoryLoading(account.accountKey)) {\n <div class=\"text-[11px] text-neutral-500 italic px-2 py-3\">\n No history events recorded yet. Stream-driven events come from CC sessions when\n <code class=\"px-1 py-0.5 rounded bg-neutral-800 text-neutral-400 font-mono text-[10px]\">rate_limit_event</code>\n fires; pull-driven events come from periodic auto-pull or manual <strong>Pull</strong> clicks.\n </div>\n } @else {\n <div class=\"overflow-x-auto\">\n <table class=\"w-full text-[11px] text-left\">\n <thead class=\"text-[10px] text-neutral-500 uppercase tracking-wider\">\n <tr>\n <th class=\"py-1 px-2 font-medium\">When</th>\n <th class=\"py-1 px-2 font-medium\">Window</th>\n <th class=\"py-1 px-2 font-medium\">Source</th>\n <th class=\"py-1 px-2 font-medium text-right\">Util</th>\n <th class=\"py-1 px-2 font-medium\">Status</th>\n <th class=\"py-1 px-2 font-medium\">Reset in</th>\n </tr>\n </thead>\n <tbody>\n @for (ev of historyItemsOf(account.accountKey); track $index) {\n <tr class=\"border-t border-neutral-800/60 hover:bg-neutral-900/40\">\n <td class=\"py-1 px-2 font-mono text-neutral-300\">\n {{ formatObservedAt(ev.observedAt) }}\n </td>\n <td class=\"py-1 px-2 text-neutral-300\">\n {{ windowLabelOf(ev.windowType) }}\n </td>\n <td class=\"py-1 px-2\">\n <span [class]=\"'text-[10px] px-1.5 py-0.5 rounded-full border ' + sourceBadgeClassOf(ev.source)\">\n {{ ev.source ?? '—' }}\n </span>\n </td>\n <td class=\"py-1 px-2 font-mono text-neutral-200 text-right\">\n {{ formatUtilization(ev.utilization ?? null) }}\n </td>\n <td class=\"py-1 px-2 text-neutral-400\">\n {{ ev.lastObservedStatus ?? '—' }}\n </td>\n <td class=\"py-1 px-2 font-mono text-neutral-500\">\n {{ formatResetCountdown(ev.resetsAtMs) }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n</section>\n\n<section>\n <h2 class=\"text-xs font-semibold text-neutral-400 uppercase tracking-wider mb-3 flex items-center gap-2\">\n <svg class=\"w-3.5 h-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10\"/>\n </svg>\n Instance ↔ Account Mapping\n <span class=\"text-neutral-600 font-normal normal-case tracking-normal\">\n · {{ instanceCount_$() }}\n </span>\n </h2>\n\n @if (!instanceCount_$() && !account_DS.isLoading_$()) {\n <div class=\"rounded-lg border border-dashed border-neutral-700 bg-neutral-900/30 px-4 py-6 text-center text-[11px] text-neutral-500\">\n No instance mappings yet. Mappings appear after the first\n <code class=\"px-1 py-0.5 rounded bg-neutral-800 text-neutral-400 font-mono text-[10px]\">rate_limit_event</code>\n on a session with a bound account, or after a manual\n <strong class=\"text-neutral-400\">Pull usage</strong>.\n </div>\n }\n\n @for (entry of account_DS.instanceMapping_$()?.instances ?? []; track entry.ccapId) {\n <div class=\"flex items-center gap-3 py-2.5 px-3 rounded-lg border border-neutral-800 mb-2\n hover:border-neutral-700 hover:bg-neutral-900/40 transition-all\">\n <!-- Instance icon (server-szerű) -->\n <div class=\"shrink-0 w-7 h-7 rounded-md bg-neutral-800 border border-neutral-700 flex items-center justify-center text-neutral-400\">\n <svg class=\"w-3.5 h-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M5 12H3l9-9 9 9h-2M5 12v7a2 2 0 002 2h10a2 2 0 002-2v-7\"/>\n </svg>\n </div>\n <div class=\"flex-1 min-w-0\">\n <div class=\"text-sm text-neutral-200 font-medium truncate font-mono\">\n {{ entry.ccapId }}\n </div>\n <div class=\"text-[11px] text-neutral-500 mt-0.5 flex items-center gap-1.5 flex-wrap\">\n @if (latestAccountKeyOf(entry.items); as ak) {\n <span class=\"text-neutral-300\">\n {{ displayNameByAccountKey(ak) }}\n </span>\n <span class=\"font-mono text-neutral-600 text-[10px]\">({{ ak.slice(0, 6) }}…)</span>\n <span class=\"text-neutral-700\">·</span>\n <span>5h: <strong [class]=\"pacingColorClassForFiveHour(entry.items)\">{{ formatUtilization(latestFiveHourUtilOf(entry.items)) }}</strong></span>\n <span class=\"text-neutral-700\">·</span>\n }\n <span class=\"text-neutral-600\">{{ itemsCountOf(entry.items) }} record(s)</span>\n </div>\n </div>\n </div>\n }\n</section>\n\n<!-- Edit-email modal (cycle 877: shared S_Modal flow no-native-browser-dialogs review-szabály miatt). -->\n<app-s-modal\n [isOpen]=\"editEmailModalOpen_$()\"\n title=\"Set CC account email\"\n maxWidth=\"sm\"\n (closed)=\"handleEditEmailClose()\"\n>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-xs text-neutral-400\">\n Enter the email address linked to this Claude account. Leave empty to clear.\n </p>\n <input\n type=\"email\"\n [ngModel]=\"editEmailValue_$()\"\n (ngModelChange)=\"editEmailValue_$.set($event)\"\n placeholder=\"user@example.com\"\n class=\"w-full px-3 py-2 rounded-md bg-neutral-900 border border-neutral-700 text-sm text-neutral-100\n placeholder-neutral-500 focus:outline-none focus:border-neonCyan\"\n autofocus\n />\n <div class=\"flex items-center justify-end gap-2 pt-2\">\n <button\n type=\"button\"\n class=\"px-3 py-1.5 text-xs rounded-md border border-neutral-700 text-neutral-300\n hover:bg-neutral-800 transition-colors\"\n (click)=\"handleEditEmailClose()\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n class=\"px-3 py-1.5 text-xs rounded-md border border-neonCyan bg-neonCyan/15 text-neutral-100\n hover:bg-neonCyan/30 transition-colors disabled:opacity-40 disabled:cursor-not-allowed\"\n [disabled]=\"editEmailSaving_$()\"\n (click)=\"handleEditEmailSave()\"\n >\n {{ editEmailSaving_$() ? 'Saving…' : 'Save' }}\n </button>\n </div>\n </div>\n</app-s-modal>\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CC_AccountUsagePacing_Util", "WINDOW_SEC_BY_TYPE", "five_hour", "seven_day", "seven_day_opus", "seven_day_sonnet", "computePacingFraction", "params", "windowSec", "windowType", "undefined", "resetsAtMs", "windowMs", "windowStart", "pacing", "Math", "max", "nowMs", "classifyPacing", "utilization", "pacingFraction", "tolerance", "diff", "colorClassForPacing", "classification", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "ctx", "\u0275\u0275element", "\u0275\u0275classMap", "ctx_r2", "tokenStatusBadgeClassOf", "account_r2", "tokenStatus", "\u0275\u0275property", "planTier", "\u0275\u0275textInterpolate", "email", "formatObservedAt", "ev_r5", "observedAt", "windowLabelOf", "windowType", "sourceBadgeClassOf", "source", "tmp_25_0", "undefined", "formatUtilization", "tmp_26_0", "utilization", "tmp_27_0", "lastObservedStatus", "formatResetCountdown", "resetsAtMs", "\u0275\u0275repeaterCreate", "CC_UsageDashboard_Component_For_34_Conditional_31_Conditional_9_For_18_Template", "\u0275\u0275repeaterTrackByIndex", "\u0275\u0275repeater", "historyItemsOf", "accountKey", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r4", "\u0275\u0275nextContext", "$implicit", "\u0275\u0275resetView", "handleRefreshHistory", "\u0275\u0275template", "CC_UsageDashboard_Component_For_34_Conditional_31_Conditional_8_Template", "CC_UsageDashboard_Component_For_34_Conditional_31_Conditional_9_Template", "length", "isHistoryLoading", "\u0275\u0275conditional", "CC_UsageDashboard_Component_For_34_Conditional_8_Template", "CC_UsageDashboard_Component_For_34_Conditional_9_Template", "CC_UsageDashboard_Component_For_34_Conditional_11_Template", "_r1", "handleEditEmail", "handleRefreshUsage", "handleToggleHistory", "CC_UsageDashboard_Component_For_34_Conditional_30_Template", "CC_UsageDashboard_Component_For_34_Conditional_31_Template", "\u0275\u0275classProp", "isHistoryOpen", "avatarBgClassOf", "avatarLetterOf", "displayNameOf", "hasEmail", "organizationId", "slice", "isRefreshingUsageOf", "displayNameByAccountKey", "ak_r6", "pacingColorClassForFiveHour", "entry_r7", "items", "latestFiveHourUtilOf", "CC_UsageDashboard_Component_For_44_Conditional_8_Template", "ccapId", "tmp_11_0", "latestAccountKeyOf", "itemsCountOf", "CC_UsageDashboard_Component", "account_DS", "inject", "CC_Account_DataService", "isRefreshing_$", "signal", "isRefreshingAllUsage_$", "refreshingUsageKeys_$", "Set", "editEmailModalOpen_$", "editEmailAccountKey_$", "editEmailValue_$", "editEmailSaving_$", "expandedHistoryKeys_$", "loadingHistoryKeys_$", "instanceCount_$", "computed", "instanceMapping_$", "instances", "ngOnInit", "loadDashboardBootstrap", "startLiveUpdates", "handleRefresh", "__async", "set", "refreshAccounts", "update", "next", "add", "refreshAccountUsage", "delete", "handleRefreshAllUsage", "keys", "accounts_$", "map", "a", "Promise", "all", "k", "isFinite", "diffMs", "Date", "now", "totalMinutes", "Math", "floor", "days", "hours", "minutes", "has", "account", "handleEditEmailSave", "trimmed", "trim", "renameAccount", "handleEditEmailClose", "usageHistoryMap_$", "get", "loadHistoryFor", "loadAccountUsageHistory", "copy", "sort", "b", "ta", "parse", "t", "d", "yyyy", "String", "getFullYear", "mm", "getMonth", "padStart", "dd", "getDate", "hh", "getHours", "mi", "getMinutes", "ss", "getSeconds", "name", "charAt", "toUpperCase", "palette", "hash", "i", "charCodeAt", "displayName", "item", "latest", "found", "find", "round", "utilizationColorClass", "fiveHourItem", "pacingFraction", "CC_AccountUsagePacing_Util", "computePacingFraction", "nowMs", "util", "classification", "classifyPacing", "colorClassForPacing", "selectors", "hostAttrs", "standalone", "features", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "CC_UsageDashboard_Component_Conditional_22_Template", "CC_UsageDashboard_Component_Conditional_23_Template", "CC_UsageDashboard_Component_Conditional_31_Template", "CC_UsageDashboard_Component_For_34_Template", "_forTrack0", "CC_UsageDashboard_Component_Conditional_42_Template", "CC_UsageDashboard_Component_For_44_Template", "_forTrack1", "$event", "isLoading_$", "tmp_9_0", "loadError_$", "tmp_15_0", "\u0275\u0275pureFunction0", "_c0", "CommonModule", "FormsModule", "DefaultValueAccessor", "NgControlStatus", "NgModel", "S_Modal_Component", "CC_AccountUsageView_Component", "encapsulation"]
|
|
7
|
+
}
|