@futdevpro/ccap 1.1.2881 → 1.1.2933
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client-dist/{agent-instances.module-U742BGNW.js → agent-instances.module-SF3QXH7Q.js} +2 -2
- package/client-dist/{ca.module-WANXRIO7.js → ca.module-ZXYBANCD.js} +2 -2
- package/client-dist/cc-usage-dashboard.component-UHRXNYYU.js +2 -0
- package/client-dist/cc-usage-dashboard.component-UHRXNYYU.js.map +7 -0
- package/client-dist/{cc.module-JZUXUXHP.js → cc.module-3IJO6TX5.js} +2 -2
- package/client-dist/{chunk-GDAL4G4Y.js → chunk-2K7TLHL3.js} +2 -2
- package/client-dist/{chunk-YE57GLWU.js → chunk-2LKPFAFT.js} +2 -2
- package/client-dist/{chunk-EBSMIZTK.js → chunk-3GPPZKXA.js} +2 -2
- package/client-dist/{chunk-KQLKM7RB.js → chunk-3NDSB3FP.js} +2 -2
- package/client-dist/{chunk-S4GJTHYZ.js → chunk-4HOHFHQY.js} +2 -2
- package/client-dist/{chunk-4TBE5I3U.js → chunk-52CLKNM3.js} +2 -2
- package/client-dist/{chunk-X7HHJQ2O.js → chunk-5DQCBSN4.js} +2 -2
- package/client-dist/{chunk-IR4THKPA.js → chunk-7FC47YOQ.js} +2 -2
- package/client-dist/{chunk-AS2SYIJB.js → chunk-7JD2RJHO.js} +2 -2
- package/client-dist/{chunk-DUN255KX.js → chunk-7R7RRZXO.js} +2 -2
- package/client-dist/{chunk-6IYFOHCN.js → chunk-AA3UG5RH.js} +2 -2
- package/client-dist/{chunk-XSXQC64X.js → chunk-ACBLDGL6.js} +2 -2
- package/client-dist/{chunk-6A2IM2XR.js → chunk-AQVXBUA5.js} +2 -2
- package/client-dist/{chunk-DNHL6M7F.js → chunk-AUIGEZUZ.js} +2 -2
- package/client-dist/{chunk-435IBC6L.js → chunk-B3XTPMW6.js} +2 -2
- package/client-dist/{chunk-HDCFO7OE.js → chunk-BSSBUQMF.js} +2 -2
- package/client-dist/{chunk-HPBX6VCV.js → chunk-BZODSYB4.js} +2 -2
- package/client-dist/{chunk-46N7EC7U.js → chunk-C7Y7EOTP.js} +2 -2
- package/client-dist/{chunk-26DXMUXV.js → chunk-CF32SLMO.js} +2 -2
- package/client-dist/{chunk-EY32IBWM.js → chunk-DEWO3RCC.js} +2 -2
- package/client-dist/{chunk-CSHUFD2L.js → chunk-DJPNMRQB.js} +2 -2
- package/client-dist/{chunk-JDK64BE7.js → chunk-DWDPX7GN.js} +2 -2
- package/client-dist/{chunk-TSPROG7P.js → chunk-FGCVS2XR.js} +2 -2
- package/client-dist/{chunk-767Z7I55.js → chunk-FPOA2CXV.js} +2 -2
- package/client-dist/{chunk-RRN36VPR.js → chunk-FQ7KTP4N.js} +2 -2
- package/client-dist/{chunk-CILMMQ5V.js → chunk-G3XU7AFS.js} +2 -2
- package/client-dist/{chunk-ONEB5UF5.js → chunk-GRFSKLRH.js} +2 -2
- package/client-dist/{chunk-6BQHKSUP.js → chunk-JKYTN4IT.js} +2 -2
- package/client-dist/{chunk-RQ2HFT2L.js → chunk-KH2H3WNG.js} +2 -2
- package/client-dist/{chunk-XH3SQ4UP.js → chunk-KK5KCTKO.js} +2 -2
- package/client-dist/{chunk-GR3CXOIX.js → chunk-KVLGE2TX.js} +2 -2
- package/client-dist/{chunk-6NWEJXDU.js → chunk-L22NVKP6.js} +2 -2
- package/client-dist/{chunk-HFVIX2ZG.js → chunk-L7ET4NMN.js} +2 -2
- package/client-dist/{chunk-BHWHGLKC.js → chunk-MLN5NNFE.js} +2 -2
- package/client-dist/{chunk-4RRBZXYU.js → chunk-N6CBIM3Q.js} +2 -2
- package/client-dist/{chunk-Q6JQHJME.js → chunk-ORFGZMJM.js} +2 -2
- package/client-dist/{chunk-U7ZBDYGU.js → chunk-P76SM44R.js} +2 -2
- package/client-dist/{chunk-FJGBPKHK.js → chunk-PKS4NUXK.js} +2 -2
- package/client-dist/{chunk-M3RL34GF.js → chunk-QUMACHM2.js} +2 -2
- package/client-dist/{chunk-PPRG7F5A.js → chunk-QWELO4IZ.js} +2 -2
- package/client-dist/{chunk-OP2PE3KG.js → chunk-RMI5MIMK.js} +2 -2
- package/client-dist/{chunk-OP2PE3KG.js.map → chunk-RMI5MIMK.js.map} +1 -1
- package/client-dist/{chunk-PQUBI6TC.js → chunk-RVMBHRZ4.js} +2 -2
- package/client-dist/{chunk-VQWGWQDA.js → chunk-SM6OLK3P.js} +2 -2
- package/client-dist/{chunk-LERWAULE.js → chunk-T4UXH4VI.js} +2 -2
- package/client-dist/{chunk-2LJT2APC.js → chunk-TJUC4UJO.js} +2 -2
- package/client-dist/{chunk-XJEATRA4.js → chunk-TQWGNGN7.js} +2 -2
- package/client-dist/{chunk-OZGFJXOA.js → chunk-U733DNNP.js} +2 -2
- package/client-dist/{chunk-467OMXRK.js → chunk-VHIVQE42.js} +2 -2
- package/client-dist/{chunk-XHF463TC.js → chunk-W2JOFYIP.js} +2 -2
- package/client-dist/{chunk-YX6NZTP7.js → chunk-XCM5OTA2.js} +2 -2
- package/client-dist/{chunk-SKHAAE4A.js → chunk-XUIND3Z7.js} +2 -2
- package/client-dist/{chunk-NJPSU6MN.js → chunk-Y3TU3XB6.js} +2 -2
- package/client-dist/{chunk-4OKUKX55.js → chunk-YDTOH4TX.js} +2 -2
- package/client-dist/{chunk-J5NYZUBP.js → chunk-YUA67L6D.js} +2 -2
- package/client-dist/{chunk-QDTY7SR6.js → chunk-ZIUOV7TD.js} +2 -2
- package/client-dist/{chunk-KMEGS6BP.js → chunk-ZWXTHLAF.js} +2 -2
- package/client-dist/{consultant.module-WL4WEIIF.js → consultant.module-BLJWRAGO.js} +2 -2
- package/client-dist/{crd.module-OE3ML5C7.js → crd.module-IVABLS5S.js} +2 -2
- package/client-dist/{dashboard.module-NBINBB72.js → dashboard.module-VF74IE7S.js} +2 -2
- package/client-dist/{do-character-preview.component-3NLSIHMO.css.map → do-character-preview.component-AWJ6PC6Z.css.map} +2 -2
- package/client-dist/{do.module-BLTXJC4T.js → do.module-62BEJMCY.js} +4 -4
- package/client-dist/{document-library.module-TXGZT2VZ.js → document-library.module-U3XCH34R.js} +2 -2
- package/client-dist/{embedding-eval.module-PYE5NL5R.js → embedding-eval.module-FF45WVLU.js} +2 -2
- package/client-dist/{embedding-registry.module-46PAOMQR.js → embedding-registry.module-67P7G74S.js} +2 -2
- package/client-dist/{err.module-B743IN5O.js → err.module-FFVEHDQ7.js} +2 -2
- package/client-dist/{feedback.module-H4YSPDLF.js → feedback.module-WGSHEJMF.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-6SK6OZH7.js → host-runtime-mcp.module-MA2RED5X.js} +2 -2
- package/client-dist/index.html +2 -2
- package/client-dist/{live-dev-pipeline.module-MCPAY2LG.js → live-dev-pipeline.module-ID23FB5H.js} +2 -2
- package/client-dist/{logs.module-CJF7RLV7.js → logs.module-FJYFLWN4.js} +2 -2
- package/client-dist/{main-NZFBSJOQ.js → main-BEDPIKFQ.js} +3 -3
- package/client-dist/{main-NZFBSJOQ.js.map → main-BEDPIKFQ.js.map} +3 -3
- package/client-dist/{master-control-remote-poc.module-LJ5ANCQ6.js → master-control-remote-poc.module-7HH5WVLB.js} +2 -2
- package/client-dist/{mobile-app.module-G7LAAOOP.js → mobile-app.module-OJW2CGEG.js} +2 -2
- package/client-dist/{model-registry.module-WDAX2AHY.js → model-registry.module-2YVNUZTJ.js} +2 -2
- package/client-dist/{oc.module-T43BN7CJ.js → oc.module-LSZIPGGA.js} +2 -2
- package/client-dist/{orc.module-R3P5Y4YW.js → orc.module-XFF3AEVT.js} +2 -2
- package/client-dist/{project-management.module-ODMCGFYI.js → project-management.module-F2GQZRED.js} +2 -2
- package/client-dist/project-source-routed.module-67W3FF7R.js +2 -0
- package/client-dist/{scheduler.module-TZLVYYMO.js → scheduler.module-NAHRKPQ3.js} +2 -2
- package/client-dist/{session.module-3XGXYP4K.js → session.module-QNGNGJKL.js} +2 -2
- package/client-dist/{set.module-M3PJXM3W.js → set.module-GNLSTQZB.js} +2 -2
- package/client-dist/{setup.module-2U3R4YDE.js → setup.module-C7IUGHXY.js} +2 -2
- package/client-dist/styles-MUU7N64U.css +2 -0
- package/client-dist/styles-MUU7N64U.css.map +7 -0
- package/client-dist/{terminals.module-ULIXEKUD.js → terminals.module-7XS2L34N.js} +2 -2
- package/client-dist/{voice-notes-poc.module-GZGIIFPR.js → voice-notes-poc.module-ZV5GCEJF.js} +2 -2
- package/client-dist/{wfs.module-6B4QN7NS.js → wfs.module-BT3QPUHF.js} +2 -2
- package/package.json +1 -1
- package/server/build/src/_modules/external-sessions/_collections/utils/exs-status-mapping.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_collections/utils/exs-status-mapping.util.js +14 -0
- package/server/build/src/_modules/external-sessions/_collections/utils/exs-status-mapping.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_models/interfaces/exs-instance-presence-info.interface.d.ts +8 -0
- package/server/build/src/_modules/external-sessions/_models/interfaces/exs-instance-presence-info.interface.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.d.ts +13 -3
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.js +45 -3
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.spec.js +33 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe-outcome.type.d.ts +22 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe-outcome.type.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe-outcome.type.js +3 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe-outcome.type.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe-result.interface.d.ts +13 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe-result.interface.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe-result.interface.js +3 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe-result.interface.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.d.ts +14 -36
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.js +15 -16
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-window-snapshot.interface.d.ts +8 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-window-snapshot.interface.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-window-snapshot.interface.js +3 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-window-snapshot.interface.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.d.ts +26 -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 +89 -0
- 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/terminal/cc-terminal-session-closed-guard.util.d.ts +12 -0
- 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 +34 -0
- 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/_enums/cc-detail-status.enum.d.ts +7 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_enums/cc-detail-status.enum.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_enums/cc-detail-status.enum.js +6 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_enums/cc-detail-status.enum.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_enums/cc-status.enum.d.ts +15 -2
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_enums/cc-status.enum.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_enums/cc-status.enum.js +15 -2
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_enums/cc-status.enum.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.d.ts +49 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.js +71 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.spec.d.ts +2 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.spec.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.spec.js +45 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.spec.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.d.ts +36 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.js +162 -39
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.spec.js +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.js +15 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-auto-pull.control-service.d.ts +70 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-auto-pull.control-service.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-auto-pull.control-service.js +152 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-auto-pull.control-service.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-auto-pull.control-service.spec.d.ts +2 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-auto-pull.control-service.spec.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-auto-pull.control-service.spec.js +153 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-auto-pull.control-service.spec.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.d.ts +4 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.js +23 -3
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.spec.js +5 -5
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-event.data-service.d.ts +43 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-event.data-service.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-event.data-service.js +80 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-event.data-service.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.d.ts +15 -2
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.js +24 -4
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.spec.js +2 -2
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.spec.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 +81 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.js +160 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.js.map +1 -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 +44 -79
- 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/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 +13 -0
- 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/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 +23 -68
- 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/_services/exs-instance-presence.service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.js +12 -0
- package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.js.map +1 -1
- 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 +30 -4
- 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 +68 -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-heartbeat-self-healing.spec.js +29 -0
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.js.map +1 -1
- package/server/build/src/app.server.d.ts.map +1 -1
- package/server/build/src/app.server.js +40 -31
- package/server/build/src/app.server.js.map +1 -1
- package/client-dist/cc-usage-dashboard.component-TPMSJIGI.js +0 -2
- package/client-dist/cc-usage-dashboard.component-TPMSJIGI.js.map +0 -7
- package/client-dist/project-source-routed.module-M22ABRHR.js +0 -2
- package/client-dist/styles-OJOSC7GL.css +0 -2
- package/client-dist/styles-OJOSC7GL.css.map +0 -7
- /package/client-dist/{agent-instances.module-U742BGNW.js.map → agent-instances.module-SF3QXH7Q.js.map} +0 -0
- /package/client-dist/{ca.module-WANXRIO7.js.map → ca.module-ZXYBANCD.js.map} +0 -0
- /package/client-dist/{cc.module-JZUXUXHP.js.map → cc.module-3IJO6TX5.js.map} +0 -0
- /package/client-dist/{chunk-GDAL4G4Y.js.map → chunk-2K7TLHL3.js.map} +0 -0
- /package/client-dist/{chunk-YE57GLWU.js.map → chunk-2LKPFAFT.js.map} +0 -0
- /package/client-dist/{chunk-EBSMIZTK.js.map → chunk-3GPPZKXA.js.map} +0 -0
- /package/client-dist/{chunk-KQLKM7RB.js.map → chunk-3NDSB3FP.js.map} +0 -0
- /package/client-dist/{chunk-S4GJTHYZ.js.map → chunk-4HOHFHQY.js.map} +0 -0
- /package/client-dist/{chunk-4TBE5I3U.js.map → chunk-52CLKNM3.js.map} +0 -0
- /package/client-dist/{chunk-X7HHJQ2O.js.map → chunk-5DQCBSN4.js.map} +0 -0
- /package/client-dist/{chunk-IR4THKPA.js.map → chunk-7FC47YOQ.js.map} +0 -0
- /package/client-dist/{chunk-AS2SYIJB.js.map → chunk-7JD2RJHO.js.map} +0 -0
- /package/client-dist/{chunk-DUN255KX.js.map → chunk-7R7RRZXO.js.map} +0 -0
- /package/client-dist/{chunk-6IYFOHCN.js.map → chunk-AA3UG5RH.js.map} +0 -0
- /package/client-dist/{chunk-XSXQC64X.js.map → chunk-ACBLDGL6.js.map} +0 -0
- /package/client-dist/{chunk-6A2IM2XR.js.map → chunk-AQVXBUA5.js.map} +0 -0
- /package/client-dist/{chunk-DNHL6M7F.js.map → chunk-AUIGEZUZ.js.map} +0 -0
- /package/client-dist/{chunk-435IBC6L.js.map → chunk-B3XTPMW6.js.map} +0 -0
- /package/client-dist/{chunk-HDCFO7OE.js.map → chunk-BSSBUQMF.js.map} +0 -0
- /package/client-dist/{chunk-HPBX6VCV.js.map → chunk-BZODSYB4.js.map} +0 -0
- /package/client-dist/{chunk-46N7EC7U.js.map → chunk-C7Y7EOTP.js.map} +0 -0
- /package/client-dist/{chunk-26DXMUXV.js.map → chunk-CF32SLMO.js.map} +0 -0
- /package/client-dist/{chunk-EY32IBWM.js.map → chunk-DEWO3RCC.js.map} +0 -0
- /package/client-dist/{chunk-CSHUFD2L.js.map → chunk-DJPNMRQB.js.map} +0 -0
- /package/client-dist/{chunk-JDK64BE7.js.map → chunk-DWDPX7GN.js.map} +0 -0
- /package/client-dist/{chunk-TSPROG7P.js.map → chunk-FGCVS2XR.js.map} +0 -0
- /package/client-dist/{chunk-767Z7I55.js.map → chunk-FPOA2CXV.js.map} +0 -0
- /package/client-dist/{chunk-RRN36VPR.js.map → chunk-FQ7KTP4N.js.map} +0 -0
- /package/client-dist/{chunk-CILMMQ5V.js.map → chunk-G3XU7AFS.js.map} +0 -0
- /package/client-dist/{chunk-ONEB5UF5.js.map → chunk-GRFSKLRH.js.map} +0 -0
- /package/client-dist/{chunk-6BQHKSUP.js.map → chunk-JKYTN4IT.js.map} +0 -0
- /package/client-dist/{chunk-RQ2HFT2L.js.map → chunk-KH2H3WNG.js.map} +0 -0
- /package/client-dist/{chunk-XH3SQ4UP.js.map → chunk-KK5KCTKO.js.map} +0 -0
- /package/client-dist/{chunk-GR3CXOIX.js.map → chunk-KVLGE2TX.js.map} +0 -0
- /package/client-dist/{chunk-6NWEJXDU.js.map → chunk-L22NVKP6.js.map} +0 -0
- /package/client-dist/{chunk-HFVIX2ZG.js.map → chunk-L7ET4NMN.js.map} +0 -0
- /package/client-dist/{chunk-BHWHGLKC.js.map → chunk-MLN5NNFE.js.map} +0 -0
- /package/client-dist/{chunk-4RRBZXYU.js.map → chunk-N6CBIM3Q.js.map} +0 -0
- /package/client-dist/{chunk-Q6JQHJME.js.map → chunk-ORFGZMJM.js.map} +0 -0
- /package/client-dist/{chunk-U7ZBDYGU.js.map → chunk-P76SM44R.js.map} +0 -0
- /package/client-dist/{chunk-FJGBPKHK.js.map → chunk-PKS4NUXK.js.map} +0 -0
- /package/client-dist/{chunk-M3RL34GF.js.map → chunk-QUMACHM2.js.map} +0 -0
- /package/client-dist/{chunk-PPRG7F5A.js.map → chunk-QWELO4IZ.js.map} +0 -0
- /package/client-dist/{chunk-PQUBI6TC.js.map → chunk-RVMBHRZ4.js.map} +0 -0
- /package/client-dist/{chunk-VQWGWQDA.js.map → chunk-SM6OLK3P.js.map} +0 -0
- /package/client-dist/{chunk-LERWAULE.js.map → chunk-T4UXH4VI.js.map} +0 -0
- /package/client-dist/{chunk-2LJT2APC.js.map → chunk-TJUC4UJO.js.map} +0 -0
- /package/client-dist/{chunk-XJEATRA4.js.map → chunk-TQWGNGN7.js.map} +0 -0
- /package/client-dist/{chunk-OZGFJXOA.js.map → chunk-U733DNNP.js.map} +0 -0
- /package/client-dist/{chunk-467OMXRK.js.map → chunk-VHIVQE42.js.map} +0 -0
- /package/client-dist/{chunk-XHF463TC.js.map → chunk-W2JOFYIP.js.map} +0 -0
- /package/client-dist/{chunk-YX6NZTP7.js.map → chunk-XCM5OTA2.js.map} +0 -0
- /package/client-dist/{chunk-SKHAAE4A.js.map → chunk-XUIND3Z7.js.map} +0 -0
- /package/client-dist/{chunk-NJPSU6MN.js.map → chunk-Y3TU3XB6.js.map} +0 -0
- /package/client-dist/{chunk-4OKUKX55.js.map → chunk-YDTOH4TX.js.map} +0 -0
- /package/client-dist/{chunk-J5NYZUBP.js.map → chunk-YUA67L6D.js.map} +0 -0
- /package/client-dist/{chunk-QDTY7SR6.js.map → chunk-ZIUOV7TD.js.map} +0 -0
- /package/client-dist/{chunk-KMEGS6BP.js.map → chunk-ZWXTHLAF.js.map} +0 -0
- /package/client-dist/{consultant.module-WL4WEIIF.js.map → consultant.module-BLJWRAGO.js.map} +0 -0
- /package/client-dist/{crd.module-OE3ML5C7.js.map → crd.module-IVABLS5S.js.map} +0 -0
- /package/client-dist/{dashboard.module-NBINBB72.js.map → dashboard.module-VF74IE7S.js.map} +0 -0
- /package/client-dist/{do.module-BLTXJC4T.js.map → do.module-62BEJMCY.js.map} +0 -0
- /package/client-dist/{document-library.module-TXGZT2VZ.js.map → document-library.module-U3XCH34R.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-PYE5NL5R.js.map → embedding-eval.module-FF45WVLU.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-46PAOMQR.js.map → embedding-registry.module-67P7G74S.js.map} +0 -0
- /package/client-dist/{err.module-B743IN5O.js.map → err.module-FFVEHDQ7.js.map} +0 -0
- /package/client-dist/{feedback.module-H4YSPDLF.js.map → feedback.module-WGSHEJMF.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-6SK6OZH7.js.map → host-runtime-mcp.module-MA2RED5X.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-MCPAY2LG.js.map → live-dev-pipeline.module-ID23FB5H.js.map} +0 -0
- /package/client-dist/{logs.module-CJF7RLV7.js.map → logs.module-FJYFLWN4.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-LJ5ANCQ6.js.map → master-control-remote-poc.module-7HH5WVLB.js.map} +0 -0
- /package/client-dist/{mobile-app.module-G7LAAOOP.js.map → mobile-app.module-OJW2CGEG.js.map} +0 -0
- /package/client-dist/{model-registry.module-WDAX2AHY.js.map → model-registry.module-2YVNUZTJ.js.map} +0 -0
- /package/client-dist/{oc.module-T43BN7CJ.js.map → oc.module-LSZIPGGA.js.map} +0 -0
- /package/client-dist/{orc.module-R3P5Y4YW.js.map → orc.module-XFF3AEVT.js.map} +0 -0
- /package/client-dist/{project-management.module-ODMCGFYI.js.map → project-management.module-F2GQZRED.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-M22ABRHR.js.map → project-source-routed.module-67W3FF7R.js.map} +0 -0
- /package/client-dist/{scheduler.module-TZLVYYMO.js.map → scheduler.module-NAHRKPQ3.js.map} +0 -0
- /package/client-dist/{session.module-3XGXYP4K.js.map → session.module-QNGNGJKL.js.map} +0 -0
- /package/client-dist/{set.module-M3PJXM3W.js.map → set.module-GNLSTQZB.js.map} +0 -0
- /package/client-dist/{setup.module-2U3R4YDE.js.map → setup.module-C7IUGHXY.js.map} +0 -0
- /package/client-dist/{terminals.module-ULIXEKUD.js.map → terminals.module-7XS2L34N.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-GZGIIFPR.js.map → voice-notes-poc.module-ZV5GCEJF.js.map} +0 -0
- /package/client-dist/{wfs.module-6B4QN7NS.js.map → wfs.module-BT3QPUHF.js.map} +0 -0
package/server/build/src/_modules/external-sessions/_modules/claude-code/_enums/cc-status.enum.d.ts
CHANGED
|
@@ -2,16 +2,23 @@
|
|
|
2
2
|
* Claude Code session állapotgép (state machine).
|
|
3
3
|
* Lehetséges átmenetek:
|
|
4
4
|
* creating → starting → running ↔ waiting_input
|
|
5
|
-
* running → completed | errored | terminated | stalled
|
|
6
|
-
* waiting_input → running | errored | terminated | stalled
|
|
5
|
+
* running → completed | errored | terminated | stalled | blocked
|
|
6
|
+
* waiting_input → running | errored | terminated | stalled | blocked
|
|
7
7
|
* stalled → running (bármely új event érkezésére) | terminated
|
|
8
8
|
* errored → terminated
|
|
9
9
|
* completed → running (resume)
|
|
10
|
+
* blocked → running (rate-limit reset → auto-trigger 'continue' prompt) | terminated
|
|
10
11
|
*
|
|
11
12
|
* A `stalled` nem-terminál állapot: a REQ-CC-STATUS-001 időalapú korrektor
|
|
12
13
|
* állítja be, amikor egy `running`/`waiting-input` session-ből 5-10 percig
|
|
13
14
|
* egyetlen új event sem érkezik. Új event érkezésekor automatikusan visszavált
|
|
14
15
|
* `running`-ra (lásd `CC_Monitoring_ControlService.updateActivity`).
|
|
16
|
+
*
|
|
17
|
+
* A `blocked` nem-terminál állapot: a REQ-CC-BLOCKED-USAGE-LIMIT-001 (cycle 812)
|
|
18
|
+
* Usage Limit Error / rate-limit-reached eseményre állítja be. A reset időpontig
|
|
19
|
+
* minden új user-üzenet queue-ba kerül, scheduled trigger-ek skippelnek.
|
|
20
|
+
* Reset után automatikus „continue" prompt indítja újra a session-t (NEM a
|
|
21
|
+
* queued üzenettel, hanem külön continue-vel — utána a queue-drain kézbesít).
|
|
15
22
|
*/
|
|
16
23
|
export declare enum CC_Status_Type {
|
|
17
24
|
/** Session objektum létrejött, CLI process még nem indult. */
|
|
@@ -24,6 +31,12 @@ export declare enum CC_Status_Type {
|
|
|
24
31
|
waitingInput = "waiting-input",
|
|
25
32
|
/** Timeout-alapú korrektor megállítottnak jelzi — nincs új event N percig; új event → running. */
|
|
26
33
|
stalled = "stalled",
|
|
34
|
+
/**
|
|
35
|
+
* REQ-CC-BLOCKED-USAGE-LIMIT-001 (cycle 812): Usage Limit / rate-limit miatt
|
|
36
|
+
* blokkolt — a reset időpontig nem fogadhat input-ot. Auto-resume a reset-kor
|
|
37
|
+
* `continue` prompt-tal, utána queue-drain.
|
|
38
|
+
*/
|
|
39
|
+
blocked = "blocked",
|
|
27
40
|
/** Hiba történt, de session recoverable. */
|
|
28
41
|
errored = "errored",
|
|
29
42
|
/** CLI process normálisan lezárult. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cc-status.enum.d.ts","sourceRoot":"","sources":["../../../../../../../src/_modules/external-sessions/_modules/claude-code/_enums/cc-status.enum.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cc-status.enum.d.ts","sourceRoot":"","sources":["../../../../../../../src/_modules/external-sessions/_modules/claude-code/_enums/cc-status.enum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,oBAAY,cAAc;IACxB,8DAA8D;IAC9D,QAAQ,aAAa;IACrB,yDAAyD;IACzD,QAAQ,aAAa;IACrB,wDAAwD;IACxD,OAAO,YAAY;IACnB,qCAAqC;IACrC,YAAY,kBAAkB;IAC9B,kGAAkG;IAClG,OAAO,YAAY;IACnB;;;;OAIG;IACH,OAAO,YAAY;IACnB,4CAA4C;IAC5C,OAAO,YAAY;IACnB,uCAAuC;IACvC,SAAS,cAAc;IACvB,mCAAmC;IACnC,UAAU,eAAe;CAC1B"}
|
package/server/build/src/_modules/external-sessions/_modules/claude-code/_enums/cc-status.enum.js
CHANGED
|
@@ -5,16 +5,23 @@ exports.CC_Status_Type = void 0;
|
|
|
5
5
|
* Claude Code session állapotgép (state machine).
|
|
6
6
|
* Lehetséges átmenetek:
|
|
7
7
|
* creating → starting → running ↔ waiting_input
|
|
8
|
-
* running → completed | errored | terminated | stalled
|
|
9
|
-
* waiting_input → running | errored | terminated | stalled
|
|
8
|
+
* running → completed | errored | terminated | stalled | blocked
|
|
9
|
+
* waiting_input → running | errored | terminated | stalled | blocked
|
|
10
10
|
* stalled → running (bármely új event érkezésére) | terminated
|
|
11
11
|
* errored → terminated
|
|
12
12
|
* completed → running (resume)
|
|
13
|
+
* blocked → running (rate-limit reset → auto-trigger 'continue' prompt) | terminated
|
|
13
14
|
*
|
|
14
15
|
* A `stalled` nem-terminál állapot: a REQ-CC-STATUS-001 időalapú korrektor
|
|
15
16
|
* állítja be, amikor egy `running`/`waiting-input` session-ből 5-10 percig
|
|
16
17
|
* egyetlen új event sem érkezik. Új event érkezésekor automatikusan visszavált
|
|
17
18
|
* `running`-ra (lásd `CC_Monitoring_ControlService.updateActivity`).
|
|
19
|
+
*
|
|
20
|
+
* A `blocked` nem-terminál állapot: a REQ-CC-BLOCKED-USAGE-LIMIT-001 (cycle 812)
|
|
21
|
+
* Usage Limit Error / rate-limit-reached eseményre állítja be. A reset időpontig
|
|
22
|
+
* minden új user-üzenet queue-ba kerül, scheduled trigger-ek skippelnek.
|
|
23
|
+
* Reset után automatikus „continue" prompt indítja újra a session-t (NEM a
|
|
24
|
+
* queued üzenettel, hanem külön continue-vel — utána a queue-drain kézbesít).
|
|
18
25
|
*/
|
|
19
26
|
var CC_Status_Type;
|
|
20
27
|
(function (CC_Status_Type) {
|
|
@@ -28,6 +35,12 @@ var CC_Status_Type;
|
|
|
28
35
|
CC_Status_Type["waitingInput"] = "waiting-input";
|
|
29
36
|
/** Timeout-alapú korrektor megállítottnak jelzi — nincs új event N percig; új event → running. */
|
|
30
37
|
CC_Status_Type["stalled"] = "stalled";
|
|
38
|
+
/**
|
|
39
|
+
* REQ-CC-BLOCKED-USAGE-LIMIT-001 (cycle 812): Usage Limit / rate-limit miatt
|
|
40
|
+
* blokkolt — a reset időpontig nem fogadhat input-ot. Auto-resume a reset-kor
|
|
41
|
+
* `continue` prompt-tal, utána queue-drain.
|
|
42
|
+
*/
|
|
43
|
+
CC_Status_Type["blocked"] = "blocked";
|
|
31
44
|
/** Hiba történt, de session recoverable. */
|
|
32
45
|
CC_Status_Type["errored"] = "errored";
|
|
33
46
|
/** CLI process normálisan lezárult. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cc-status.enum.js","sourceRoot":"","sources":["../../../../../../../src/_modules/external-sessions/_modules/claude-code/_enums/cc-status.enum.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"cc-status.enum.js","sourceRoot":"","sources":["../../../../../../../src/_modules/external-sessions/_modules/claude-code/_enums/cc-status.enum.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,IAAY,cAuBX;AAvBD,WAAY,cAAc;IACxB,8DAA8D;IAC9D,uCAAqB,CAAA;IACrB,yDAAyD;IACzD,uCAAqB,CAAA;IACrB,wDAAwD;IACxD,qCAAmB,CAAA;IACnB,qCAAqC;IACrC,gDAA8B,CAAA;IAC9B,kGAAkG;IAClG,qCAAmB,CAAA;IACnB;;;;OAIG;IACH,qCAAmB,CAAA;IACnB,4CAA4C;IAC5C,qCAAmB,CAAA;IACnB,uCAAuC;IACvC,yCAAuB,CAAA;IACvB,mCAAmC;IACnC,2CAAyB,CAAA;AAC3B,CAAC,EAvBW,cAAc,8BAAd,cAAc,QAuBzB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { DyFM_DataModel_Params, DyFM_Metadata } from '@futdevpro/fsm-dynamo';
|
|
2
|
+
/**
|
|
3
|
+
* CC Account Usage Event — append-only timeline (REQ-CC-USAGE-DASHBOARD-001 cycle 878).
|
|
4
|
+
*
|
|
5
|
+
* Minden usage-frissítésre (akár stream-driven `rate_limit_event`-ből, akár
|
|
6
|
+
* az auto-pull / manual-pull `/api/oauth/usage`-ból) egy új rekordot dobunk
|
|
7
|
+
* be ebbe a kollekcióba. NEM upsert — minden esemény külön sorként él, hogy
|
|
8
|
+
* **trend-elemzés és metrika-építés** (pl. „mennyit használt a user az utóbbi
|
|
9
|
+
* 7 napban", „milyen ütemben égeti", „mikor érte el a limit-et utoljára")
|
|
10
|
+
* lehetséges legyen.
|
|
11
|
+
*
|
|
12
|
+
* **Indexelt mezők:** `accountKey`, `windowType`, `lastObservedByCcapId`,
|
|
13
|
+
* `observedAt` — a leggyakoribb query-mintákhoz (account-szűrés + idő-tartomány).
|
|
14
|
+
*
|
|
15
|
+
* **NEM helyettesíti** a `CC_AccountUsageState` DBNT-t — az a *legutóbbi*
|
|
16
|
+
* snapshot per `(accountKey, windowType)`, gyors lookup-hoz; ez a *teljes
|
|
17
|
+
* történet* trend-megjelenítéshez. A két DBNT együtt él.
|
|
18
|
+
*/
|
|
19
|
+
export declare class CC_AccountUsageEvent extends DyFM_Metadata {
|
|
20
|
+
/** A `CC_Account` rekord stable kulcsa — az event ezt az account-ot érinti. */
|
|
21
|
+
accountKey: string;
|
|
22
|
+
/** Window-typeName: `five_hour` | `seven_day` | `seven_day_opus` | `seven_day_sonnet` | `extra_usage`. */
|
|
23
|
+
windowType: string;
|
|
24
|
+
/** Utilization fraction 0..1 (a CLI / Anthropic által szolgáltatott; lehet undefined ha nem értelmezhető). */
|
|
25
|
+
utilization?: number;
|
|
26
|
+
/** Reset timestamp ms (unix-seconds * 1000 vagy ISO-parsolt). */
|
|
27
|
+
resetsAtMs?: number;
|
|
28
|
+
/** Klasszifikáció a snapshot pillanatában: `reached` | `approaching` | `info`. */
|
|
29
|
+
lastObservedStatus?: string;
|
|
30
|
+
/** Forrás: `stream` (CC session rate_limit_event chunk) vagy `pull` (auto/manual /api/oauth/usage probe). */
|
|
31
|
+
source?: string;
|
|
32
|
+
/** Mely CCAP instance jelezte (akár stream-driven sessionből, akár pull-ból). */
|
|
33
|
+
lastObservedByCcapId?: string;
|
|
34
|
+
/** Stream-driven esetben a CC session id, ami küldte. `pull` source-nál üres / `pool-refresh`. */
|
|
35
|
+
lastObservedBySessionId?: string;
|
|
36
|
+
/** Az esemény timestamp-je (snapshot rögzítésének ideje). */
|
|
37
|
+
observedAt?: Date;
|
|
38
|
+
constructor(set?: CC_AccountUsageEvent);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* MongoDB dataParams: `ccap_cc_account_usage_event` collection. Append-only —
|
|
42
|
+
* sose törlünk, sose update-elünk meglévő rekordot. A trend-query mintákhoz
|
|
43
|
+
* a `(accountKey, observedAt)` és `(lastObservedByCcapId, observedAt)` compound
|
|
44
|
+
* index lenne ideális; Slice 1-ben single-field-indexek (a Mongo bő mintázatra
|
|
45
|
+
* single-field is acceptable, compound index a Slice 4 instance-mapping
|
|
46
|
+
* mintára Slice utánra hagyva).
|
|
47
|
+
*/
|
|
48
|
+
export declare const ccapCcAccountUsageEvent_dataParams: DyFM_DataModel_Params<CC_AccountUsageEvent>;
|
|
49
|
+
//# sourceMappingURL=cc-account-usage-event.data-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cc-account-usage-event.data-model.d.ts","sourceRoot":"","sources":["../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAe,MAAM,uBAAuB,CAAC;AAE1F;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAM;IAExB,0GAA0G;IAC1G,UAAU,EAAE,MAAM,CAAM;IAExB,8GAA8G;IAC9G,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,6GAA6G;IAC7G,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,iFAAiF;IACjF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,kGAAkG;IAClG,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,IAAI,CAAC;gBAEN,GAAG,CAAC,EAAE,oBAAoB;CAOvC;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kCAAkC,EAAE,qBAAqB,CAAC,oBAAoB,CAcvF,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ccapCcAccountUsageEvent_dataParams = exports.CC_AccountUsageEvent = void 0;
|
|
4
|
+
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
5
|
+
/**
|
|
6
|
+
* CC Account Usage Event — append-only timeline (REQ-CC-USAGE-DASHBOARD-001 cycle 878).
|
|
7
|
+
*
|
|
8
|
+
* Minden usage-frissítésre (akár stream-driven `rate_limit_event`-ből, akár
|
|
9
|
+
* az auto-pull / manual-pull `/api/oauth/usage`-ból) egy új rekordot dobunk
|
|
10
|
+
* be ebbe a kollekcióba. NEM upsert — minden esemény külön sorként él, hogy
|
|
11
|
+
* **trend-elemzés és metrika-építés** (pl. „mennyit használt a user az utóbbi
|
|
12
|
+
* 7 napban", „milyen ütemben égeti", „mikor érte el a limit-et utoljára")
|
|
13
|
+
* lehetséges legyen.
|
|
14
|
+
*
|
|
15
|
+
* **Indexelt mezők:** `accountKey`, `windowType`, `lastObservedByCcapId`,
|
|
16
|
+
* `observedAt` — a leggyakoribb query-mintákhoz (account-szűrés + idő-tartomány).
|
|
17
|
+
*
|
|
18
|
+
* **NEM helyettesíti** a `CC_AccountUsageState` DBNT-t — az a *legutóbbi*
|
|
19
|
+
* snapshot per `(accountKey, windowType)`, gyors lookup-hoz; ez a *teljes
|
|
20
|
+
* történet* trend-megjelenítéshez. A két DBNT együtt él.
|
|
21
|
+
*/
|
|
22
|
+
class CC_AccountUsageEvent extends fsm_dynamo_1.DyFM_Metadata {
|
|
23
|
+
/** A `CC_Account` rekord stable kulcsa — az event ezt az account-ot érinti. */
|
|
24
|
+
accountKey = '';
|
|
25
|
+
/** Window-typeName: `five_hour` | `seven_day` | `seven_day_opus` | `seven_day_sonnet` | `extra_usage`. */
|
|
26
|
+
windowType = '';
|
|
27
|
+
/** Utilization fraction 0..1 (a CLI / Anthropic által szolgáltatott; lehet undefined ha nem értelmezhető). */
|
|
28
|
+
utilization;
|
|
29
|
+
/** Reset timestamp ms (unix-seconds * 1000 vagy ISO-parsolt). */
|
|
30
|
+
resetsAtMs;
|
|
31
|
+
/** Klasszifikáció a snapshot pillanatában: `reached` | `approaching` | `info`. */
|
|
32
|
+
lastObservedStatus;
|
|
33
|
+
/** Forrás: `stream` (CC session rate_limit_event chunk) vagy `pull` (auto/manual /api/oauth/usage probe). */
|
|
34
|
+
source;
|
|
35
|
+
/** Mely CCAP instance jelezte (akár stream-driven sessionből, akár pull-ból). */
|
|
36
|
+
lastObservedByCcapId;
|
|
37
|
+
/** Stream-driven esetben a CC session id, ami küldte. `pull` source-nál üres / `pool-refresh`. */
|
|
38
|
+
lastObservedBySessionId;
|
|
39
|
+
/** Az esemény timestamp-je (snapshot rögzítésének ideje). */
|
|
40
|
+
observedAt;
|
|
41
|
+
constructor(set) {
|
|
42
|
+
super(set);
|
|
43
|
+
if (set) {
|
|
44
|
+
fsm_dynamo_1.DyFM_Object.cleanAssign(this, set);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.CC_AccountUsageEvent = CC_AccountUsageEvent;
|
|
49
|
+
/**
|
|
50
|
+
* MongoDB dataParams: `ccap_cc_account_usage_event` collection. Append-only —
|
|
51
|
+
* sose törlünk, sose update-elünk meglévő rekordot. A trend-query mintákhoz
|
|
52
|
+
* a `(accountKey, observedAt)` és `(lastObservedByCcapId, observedAt)` compound
|
|
53
|
+
* index lenne ideális; Slice 1-ben single-field-indexek (a Mongo bő mintázatra
|
|
54
|
+
* single-field is acceptable, compound index a Slice 4 instance-mapping
|
|
55
|
+
* mintára Slice utánra hagyva).
|
|
56
|
+
*/
|
|
57
|
+
exports.ccapCcAccountUsageEvent_dataParams = new fsm_dynamo_1.DyFM_DataModel_Params({
|
|
58
|
+
dataName: 'ccap_cc_account_usage_event',
|
|
59
|
+
properties: {
|
|
60
|
+
accountKey: { type: 'string', required: true, index: true },
|
|
61
|
+
windowType: { type: 'string', required: true, index: true },
|
|
62
|
+
utilization: { type: 'number' },
|
|
63
|
+
resetsAtMs: { type: 'number' },
|
|
64
|
+
lastObservedStatus: { type: 'string' },
|
|
65
|
+
source: { type: 'string', index: true },
|
|
66
|
+
lastObservedByCcapId: { type: 'string', index: true },
|
|
67
|
+
lastObservedBySessionId: { type: 'string' },
|
|
68
|
+
observedAt: { type: 'date', index: true },
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=cc-account-usage-event.data-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cc-account-usage-event.data-model.js","sourceRoot":"","sources":["../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.ts"],"names":[],"mappings":";;;AAAA,sDAA0F;AAE1F;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,oBAAqB,SAAQ,0BAAa;IACrD,+EAA+E;IAC/E,UAAU,GAAW,EAAE,CAAC;IAExB,0GAA0G;IAC1G,UAAU,GAAW,EAAE,CAAC;IAExB,8GAA8G;IAC9G,WAAW,CAAU;IAErB,iEAAiE;IACjE,UAAU,CAAU;IAEpB,kFAAkF;IAClF,kBAAkB,CAAU;IAE5B,6GAA6G;IAC7G,MAAM,CAAU;IAEhB,iFAAiF;IACjF,oBAAoB,CAAU;IAE9B,kGAAkG;IAClG,uBAAuB,CAAU;IAEjC,6DAA6D;IAC7D,UAAU,CAAQ;IAElB,YAAY,GAA0B;QACpC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEX,IAAI,GAAG,EAAE,CAAC;YACR,wBAAW,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;CACF;AAnCD,oDAmCC;AAED;;;;;;;GAOG;AACU,QAAA,kCAAkC,GAC7C,IAAI,kCAAqB,CAAuB;IAC9C,QAAQ,EAAE,6BAA6B;IACvC,UAAU,EAAE;QACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QAC3D,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QAC3D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9B,kBAAkB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;QACvC,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;QACrD,uBAAuB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3C,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;KAC1C;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cc-account-usage-event.data-model.spec.d.ts","sourceRoot":"","sources":["../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cc_account_usage_event_data_model_1 = require("./cc-account-usage-event.data-model");
|
|
4
|
+
describe('CC_AccountUsageEvent data model', () => {
|
|
5
|
+
it('üres konstruktorral létrehozható', () => {
|
|
6
|
+
const m = new cc_account_usage_event_data_model_1.CC_AccountUsageEvent();
|
|
7
|
+
expect(m).toBeDefined();
|
|
8
|
+
expect(m.accountKey).toBe('');
|
|
9
|
+
expect(m.windowType).toBe('');
|
|
10
|
+
});
|
|
11
|
+
it('set paraméterrel inicializálja a mezőket', () => {
|
|
12
|
+
const set = {
|
|
13
|
+
accountKey: 'k1',
|
|
14
|
+
windowType: 'five_hour',
|
|
15
|
+
utilization: 0.45,
|
|
16
|
+
resetsAtMs: 1_900_000_000_000,
|
|
17
|
+
lastObservedStatus: 'approaching',
|
|
18
|
+
source: 'pull',
|
|
19
|
+
lastObservedByCcapId: 'ccap-1',
|
|
20
|
+
lastObservedBySessionId: 'pool-refresh',
|
|
21
|
+
observedAt: new Date('2026-05-09T10:00:00.000Z'),
|
|
22
|
+
};
|
|
23
|
+
const m = new cc_account_usage_event_data_model_1.CC_AccountUsageEvent(set);
|
|
24
|
+
expect(m.accountKey).toBe('k1');
|
|
25
|
+
expect(m.windowType).toBe('five_hour');
|
|
26
|
+
expect(m.utilization).toBe(0.45);
|
|
27
|
+
expect(m.source).toBe('pull');
|
|
28
|
+
expect(m.lastObservedByCcapId).toBe('ccap-1');
|
|
29
|
+
});
|
|
30
|
+
it('dataParams dataName ccap_cc_account_usage_event', () => {
|
|
31
|
+
expect(cc_account_usage_event_data_model_1.ccapCcAccountUsageEvent_dataParams.dataName).toBe('ccap_cc_account_usage_event');
|
|
32
|
+
});
|
|
33
|
+
it('dataParams: accountKey + windowType kötelező + indexelt', () => {
|
|
34
|
+
const props = cc_account_usage_event_data_model_1.ccapCcAccountUsageEvent_dataParams.properties;
|
|
35
|
+
expect(props.accountKey).toEqual(jasmine.objectContaining({ type: 'string', required: true, index: true }));
|
|
36
|
+
expect(props.windowType).toEqual(jasmine.objectContaining({ type: 'string', required: true, index: true }));
|
|
37
|
+
});
|
|
38
|
+
it('dataParams: source / lastObservedByCcapId / observedAt indexelt (trend-query)', () => {
|
|
39
|
+
const props = cc_account_usage_event_data_model_1.ccapCcAccountUsageEvent_dataParams.properties;
|
|
40
|
+
expect(props.source.index).toBe(true);
|
|
41
|
+
expect(props.lastObservedByCcapId.index).toBe(true);
|
|
42
|
+
expect(props.observedAt.index).toBe(true);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=cc-account-usage-event.data-model.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cc-account-usage-event.data-model.spec.js","sourceRoot":"","sources":["../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-event.data-model.spec.ts"],"names":[],"mappings":";;AAAA,2FAG6C;AAE7C,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAE/C,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,GAAyB,IAAI,wDAAoB,EAAE,CAAC;QAC3D,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,GAAG,GAAkC;YACzC,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,WAAW;YACvB,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,iBAAiB;YAC7B,kBAAkB,EAAE,aAAa;YACjC,MAAM,EAAE,MAAM;YACd,oBAAoB,EAAE,QAAQ;YAC9B,uBAAuB,EAAE,cAAc;YACvC,UAAU,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;SACjD,CAAC;QACF,MAAM,CAAC,GAAyB,IAAI,wDAAoB,CAAC,GAA2B,CAAC,CAAC;QACtF,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,sEAAkC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,KAAK,GAA4B,sEAAkC,CAAC,UAAU,CAAC;QACrF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5G,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9G,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,KAAK,GAAwC,sEAAkC,CAAC,UAAU,CAAC;QACjG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DyNTS_SingletonService } from '@futdevpro/nts-dynamo';
|
|
2
2
|
import { CC_Account } from '../../_models/data-models/cc-account.data-model';
|
|
3
|
+
import { CC_AccountUsageEvent } from '../../_models/data-models/cc-account-usage-event.data-model';
|
|
3
4
|
import { CC_AccountUsageState } from '../../_models/data-models/cc-account-usage-state.data-model';
|
|
4
5
|
/**
|
|
5
6
|
* REST handler delegáció a CC Account endpoint-okhoz
|
|
@@ -18,6 +19,15 @@ export declare class CC_AccountRoute_ControlService extends DyNTS_SingletonServi
|
|
|
18
19
|
static readonly ACCOUNT_KEY_PATTERN: RegExp;
|
|
19
20
|
/** displayName max hossz — limit a `/list` response méretére (Dashboard pollolható). */
|
|
20
21
|
static readonly DISPLAY_NAME_MAX_LENGTH: number;
|
|
22
|
+
/** Email max hossz — RFC 5321 (320 char). */
|
|
23
|
+
static readonly EMAIL_MAX_LENGTH: number;
|
|
24
|
+
/**
|
|
25
|
+
* Email alap-formátum check (cycle 876). NEM teljes RFC 5322 — csak a triviális
|
|
26
|
+
* szakmányos validáció (`local@domain.tld`). A fő cél: a UI-bind ne fogadjon
|
|
27
|
+
* el véletlen szóközös / üres / random stringet. A teljes RFC 5322 implementálás
|
|
28
|
+
* túlzás (a server NEM authentikál ezzel — pure metadata).
|
|
29
|
+
*/
|
|
30
|
+
static readonly EMAIL_BASIC_PATTERN: RegExp;
|
|
21
31
|
/** Kontroll-karakter regex — sose engedjük be DB-be (későbbi UI-render zavart okozna). */
|
|
22
32
|
static readonly CONTROL_CHAR_PATTERN: RegExp;
|
|
23
33
|
static getInstance(): CC_AccountRoute_ControlService;
|
|
@@ -53,6 +63,25 @@ export declare class CC_AccountRoute_ControlService extends DyNTS_SingletonServi
|
|
|
53
63
|
}): Promise<{
|
|
54
64
|
items: CC_AccountUsageState[];
|
|
55
65
|
}>;
|
|
66
|
+
/**
|
|
67
|
+
* GET /cc-account/:accountKey/usage-history?windowType=&fromMs=&toMs=
|
|
68
|
+
*
|
|
69
|
+
* Történeti usage-event-lista (cycle 878). Append-only timeline a
|
|
70
|
+
* `ccap_cc_account_usage_event` collection-ből, opcionális szűrésekkel:
|
|
71
|
+
* - `windowType` (one of `five_hour|seven_day|seven_day_opus|seven_day_sonnet|extra_usage`)
|
|
72
|
+
* - `fromMs` / `toMs` (Unix ms timestamps az `observedAt`-ra)
|
|
73
|
+
*
|
|
74
|
+
* Sorrend: rögzítés szerinti (insert-order, opcionális explicit `observedAt`-rendezés
|
|
75
|
+
* a kliens-oldalon). A Dashboard chart-rendere ebből építi a trend-vonalat.
|
|
76
|
+
*/
|
|
77
|
+
handleGetAccountUsageHistory(params: {
|
|
78
|
+
accountKey: string;
|
|
79
|
+
query: unknown;
|
|
80
|
+
}): Promise<{
|
|
81
|
+
items: CC_AccountUsageEvent[];
|
|
82
|
+
}>;
|
|
83
|
+
/** Query-param parse pozitív integer ms timestamp-re. */
|
|
84
|
+
private parsePositiveInt;
|
|
56
85
|
/**
|
|
57
86
|
* POST /cc-account/:accountKey/refresh-usage — aktív usage-pull az Anthropic
|
|
58
87
|
* `/api/oauth/usage` endpoint-jával (REQ-CC-USAGE-DASHBOARD-001 cycle 873).
|
|
@@ -88,7 +117,13 @@ export declare class CC_AccountRoute_ControlService extends DyNTS_SingletonServi
|
|
|
88
117
|
items: CC_AccountUsageState[];
|
|
89
118
|
}[];
|
|
90
119
|
}>;
|
|
91
|
-
/**
|
|
120
|
+
/**
|
|
121
|
+
* PATCH /cc-account/:accountKey — user-editable mezők frissítése: `displayName`
|
|
122
|
+
* és/vagy `email` (cycle 876). Mindkettő opcionális — ha mindkettő hiányzik
|
|
123
|
+
* → 400. Ha az `email` empty/null → kitörli (clear). Validáció: displayName
|
|
124
|
+
* 200-char cap + control-char tiltás (mint korábban); email RFC-szerű alap-
|
|
125
|
+
* formátum-check (`@` + `.`) és 320-char cap (RFC 5321).
|
|
126
|
+
*/
|
|
92
127
|
handleRenameAccount(params: {
|
|
93
128
|
accountKey: string;
|
|
94
129
|
body: Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cc-account-route.control-service.d.ts","sourceRoot":"","sources":["../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;
|
|
1
|
+
{"version":3,"file":"cc-account-route.control-service.d.ts","sourceRoot":"","sources":["../../../../../../../../src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AAKnG;;;;;;;;;;;GAWG;AACH,qBAAa,8BAA+B,SAAQ,sBAAsB;IAExE,iGAAiG;IACjG,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAoB;IAE/D,wFAAwF;IACxF,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAO;IAEtD,6CAA6C;IAC7C,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAO;IAE/C;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAgC;IAE3E,0FAA0F;IAC1F,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAA2B;IAEvE,MAAM,CAAC,WAAW,IAAI,8BAA8B;IAIpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CACe;IAE9C,2DAA2D;IACrD,kBAAkB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAK5D;;;OAGG;IACG,0BAA0B,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAI9F,2DAA2D;IACrD,gBAAgB,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAe3E;;;;;;;;;OASG;IACG,qBAAqB,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,oBAAoB,EAAE,CAAA;KAAE,CAAC;IASvG;;;;;;;;;;OAUG;IACG,4BAA4B,CAAC,MAAM,EAAE;QACzC,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,OAAO,CAAC;KAChB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,oBAAoB,EAAE,CAAA;KAAE,CAAC;IAyB9C,yDAAyD;IACzD,OAAO,CAAC,gBAAgB;IAUxB;;;;;;;;;;OAUG;IACG,yBAAyB,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACvE,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;IA8FF;;;;;;;;;;OAUG;IACG,wBAAwB,IAAI,OAAO,CAAC;QACxC,SAAS,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,oBAAoB,EAAE,CAAA;SAAE,EAAE,CAAC;KAChE,CAAC;IA0BF;;;;;;OAMG;IACG,mBAAmB,CAAC,MAAM,EAAE;QAChC,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,GAAG,OAAO,CAAC,UAAU,CAAC;IAmIvB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;CAgBjC"}
|
|
@@ -4,6 +4,7 @@ exports.CC_AccountRoute_ControlService = void 0;
|
|
|
4
4
|
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
5
5
|
const nts_dynamo_1 = require("@futdevpro/nts-dynamo");
|
|
6
6
|
const cc_account_pool_control_service_1 = require("../../_services/core/account/cc-account-pool.control-service");
|
|
7
|
+
const cc_account_usage_event_data_service_1 = require("../../_services/core/account/cc-account-usage-event.data-service");
|
|
7
8
|
const cc_account_usage_state_data_service_1 = require("../../_services/core/account/cc-account-usage-state.data-service");
|
|
8
9
|
/**
|
|
9
10
|
* REST handler delegáció a CC Account endpoint-okhoz
|
|
@@ -22,6 +23,15 @@ class CC_AccountRoute_ControlService extends nts_dynamo_1.DyNTS_SingletonService
|
|
|
22
23
|
static ACCOUNT_KEY_PATTERN = /^[a-f0-9]{12}$/;
|
|
23
24
|
/** displayName max hossz — limit a `/list` response méretére (Dashboard pollolható). */
|
|
24
25
|
static DISPLAY_NAME_MAX_LENGTH = 200;
|
|
26
|
+
/** Email max hossz — RFC 5321 (320 char). */
|
|
27
|
+
static EMAIL_MAX_LENGTH = 320;
|
|
28
|
+
/**
|
|
29
|
+
* Email alap-formátum check (cycle 876). NEM teljes RFC 5322 — csak a triviális
|
|
30
|
+
* szakmányos validáció (`local@domain.tld`). A fő cél: a UI-bind ne fogadjon
|
|
31
|
+
* el véletlen szóközös / üres / random stringet. A teljes RFC 5322 implementálás
|
|
32
|
+
* túlzás (a server NEM authentikál ezzel — pure metadata).
|
|
33
|
+
*/
|
|
34
|
+
static EMAIL_BASIC_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
25
35
|
/** Kontroll-karakter regex — sose engedjük be DB-be (későbbi UI-render zavart okozna). */
|
|
26
36
|
static CONTROL_CHAR_PATTERN = /[\u0000-\u001F\u007F]/;
|
|
27
37
|
static getInstance() {
|
|
@@ -73,6 +83,48 @@ class CC_AccountRoute_ControlService extends nts_dynamo_1.DyNTS_SingletonService
|
|
|
73
83
|
const items = await ds.listByAccountKey(params.accountKey);
|
|
74
84
|
return { items: items };
|
|
75
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* GET /cc-account/:accountKey/usage-history?windowType=&fromMs=&toMs=
|
|
88
|
+
*
|
|
89
|
+
* Történeti usage-event-lista (cycle 878). Append-only timeline a
|
|
90
|
+
* `ccap_cc_account_usage_event` collection-ből, opcionális szűrésekkel:
|
|
91
|
+
* - `windowType` (one of `five_hour|seven_day|seven_day_opus|seven_day_sonnet|extra_usage`)
|
|
92
|
+
* - `fromMs` / `toMs` (Unix ms timestamps az `observedAt`-ra)
|
|
93
|
+
*
|
|
94
|
+
* Sorrend: rögzítés szerinti (insert-order, opcionális explicit `observedAt`-rendezés
|
|
95
|
+
* a kliens-oldalon). A Dashboard chart-rendere ebből építi a trend-vonalat.
|
|
96
|
+
*/
|
|
97
|
+
async handleGetAccountUsageHistory(params) {
|
|
98
|
+
this.validateAccountKeyFormat(params.accountKey);
|
|
99
|
+
const queryRec = params.query != null && typeof params.query === 'object' && !Array.isArray(params.query)
|
|
100
|
+
? params.query
|
|
101
|
+
: {};
|
|
102
|
+
const windowType = typeof queryRec.windowType === 'string'
|
|
103
|
+
? queryRec.windowType
|
|
104
|
+
: undefined;
|
|
105
|
+
const fromMs = this.parsePositiveInt(queryRec.fromMs);
|
|
106
|
+
const toMs = this.parsePositiveInt(queryRec.toMs);
|
|
107
|
+
const ds = new cc_account_usage_event_data_service_1.CC_AccountUsageEvent_DataService({
|
|
108
|
+
issuer: 'cc-account-route:get-usage-history',
|
|
109
|
+
});
|
|
110
|
+
const items = await ds.listByAccountInRange({
|
|
111
|
+
accountKey: params.accountKey,
|
|
112
|
+
windowType: windowType,
|
|
113
|
+
fromMs: fromMs,
|
|
114
|
+
toMs: toMs,
|
|
115
|
+
});
|
|
116
|
+
return { items: items };
|
|
117
|
+
}
|
|
118
|
+
/** Query-param parse pozitív integer ms timestamp-re. */
|
|
119
|
+
parsePositiveInt(raw) {
|
|
120
|
+
if (typeof raw === 'string' && raw !== '') {
|
|
121
|
+
const parsed = Number(raw);
|
|
122
|
+
if (!isNaN(parsed) && parsed > 0) {
|
|
123
|
+
return parsed;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
76
128
|
/**
|
|
77
129
|
* POST /cc-account/:accountKey/refresh-usage — aktív usage-pull az Anthropic
|
|
78
130
|
* `/api/oauth/usage` endpoint-jával (REQ-CC-USAGE-DASHBOARD-001 cycle 873).
|
|
@@ -203,59 +255,130 @@ class CC_AccountRoute_ControlService extends nts_dynamo_1.DyNTS_SingletonService
|
|
|
203
255
|
}
|
|
204
256
|
return { instances: instances };
|
|
205
257
|
}
|
|
206
|
-
/**
|
|
258
|
+
/**
|
|
259
|
+
* PATCH /cc-account/:accountKey — user-editable mezők frissítése: `displayName`
|
|
260
|
+
* és/vagy `email` (cycle 876). Mindkettő opcionális — ha mindkettő hiányzik
|
|
261
|
+
* → 400. Ha az `email` empty/null → kitörli (clear). Validáció: displayName
|
|
262
|
+
* 200-char cap + control-char tiltás (mint korábban); email RFC-szerű alap-
|
|
263
|
+
* formátum-check (`@` + `.`) és 320-char cap (RFC 5321).
|
|
264
|
+
*/
|
|
207
265
|
async handleRenameAccount(params) {
|
|
208
266
|
this.validateAccountKeyFormat(params.accountKey);
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
267
|
+
const fields = {};
|
|
268
|
+
let anyFieldProvided = false;
|
|
269
|
+
// displayName (opcionális, de ha jelen → validáljuk).
|
|
270
|
+
if (params.body?.displayName !== undefined) {
|
|
271
|
+
anyFieldProvided = true;
|
|
272
|
+
const raw = params.body.displayName;
|
|
273
|
+
if (typeof raw !== 'string') {
|
|
274
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
275
|
+
message: 'CC Account update: displayName must be a string.',
|
|
276
|
+
errorCode: 'CCAP-CC-ACCOUNT-RENAME-INVALID',
|
|
277
|
+
status: 400,
|
|
278
|
+
error: new Error('Invalid displayName: not a string'),
|
|
279
|
+
additionalContent: { accountKey: params.accountKey, providedType: typeof raw },
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
const trimmed = raw.trim();
|
|
283
|
+
if (trimmed === '') {
|
|
284
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
285
|
+
message: 'CC Account update: displayName must be non-empty after trim.',
|
|
286
|
+
errorCode: 'CCAP-CC-ACCOUNT-RENAME-INVALID',
|
|
287
|
+
status: 400,
|
|
288
|
+
error: new Error('Invalid displayName: empty'),
|
|
289
|
+
additionalContent: { accountKey: params.accountKey, rawLength: raw.length },
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
if (trimmed.length > CC_AccountRoute_ControlService.DISPLAY_NAME_MAX_LENGTH) {
|
|
293
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
294
|
+
message: `CC Account update: displayName exceeds max length`
|
|
295
|
+
+ ` (${CC_AccountRoute_ControlService.DISPLAY_NAME_MAX_LENGTH} chars).`,
|
|
296
|
+
errorCode: 'CCAP-CC-ACCOUNT-RENAME-INVALID',
|
|
297
|
+
status: 400,
|
|
298
|
+
error: new Error(`Invalid displayName: too long (${trimmed.length} chars)`),
|
|
299
|
+
additionalContent: {
|
|
300
|
+
accountKey: params.accountKey,
|
|
301
|
+
providedLength: trimmed.length,
|
|
302
|
+
maxLength: CC_AccountRoute_ControlService.DISPLAY_NAME_MAX_LENGTH,
|
|
303
|
+
},
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
if (CC_AccountRoute_ControlService.CONTROL_CHAR_PATTERN.test(trimmed)) {
|
|
307
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
308
|
+
message: 'CC Account update: displayName must not contain control characters.',
|
|
309
|
+
errorCode: 'CCAP-CC-ACCOUNT-RENAME-INVALID',
|
|
310
|
+
status: 400,
|
|
311
|
+
error: new Error('Invalid displayName: contains control characters'),
|
|
312
|
+
additionalContent: { accountKey: params.accountKey },
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
fields.displayName = trimmed;
|
|
228
316
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
317
|
+
// email (opcionális). Empty / null → clear; non-empty → RFC alap-validáció.
|
|
318
|
+
if (params.body?.email !== undefined) {
|
|
319
|
+
anyFieldProvided = true;
|
|
320
|
+
const raw = params.body.email;
|
|
321
|
+
if (raw === null || (typeof raw === 'string' && raw.trim() === '')) {
|
|
322
|
+
fields.email = null; // clear
|
|
323
|
+
}
|
|
324
|
+
else if (typeof raw === 'string') {
|
|
325
|
+
const trimmed = raw.trim();
|
|
326
|
+
if (trimmed.length > CC_AccountRoute_ControlService.EMAIL_MAX_LENGTH) {
|
|
327
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
328
|
+
message: `CC Account update: email exceeds max length`
|
|
329
|
+
+ ` (${CC_AccountRoute_ControlService.EMAIL_MAX_LENGTH} chars per RFC 5321).`,
|
|
330
|
+
errorCode: 'CCAP-CC-ACCOUNT-EMAIL-INVALID',
|
|
331
|
+
status: 400,
|
|
332
|
+
error: new Error(`Invalid email: too long (${trimmed.length} chars)`),
|
|
333
|
+
additionalContent: { accountKey: params.accountKey, providedLength: trimmed.length },
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
if (!CC_AccountRoute_ControlService.EMAIL_BASIC_PATTERN.test(trimmed)) {
|
|
337
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
338
|
+
message: 'CC Account update: email must look like an email address (`local@domain.tld`).',
|
|
339
|
+
errorCode: 'CCAP-CC-ACCOUNT-EMAIL-INVALID',
|
|
340
|
+
status: 400,
|
|
341
|
+
error: new Error('Invalid email: format check failed'),
|
|
342
|
+
additionalContent: { accountKey: params.accountKey },
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
if (CC_AccountRoute_ControlService.CONTROL_CHAR_PATTERN.test(trimmed)) {
|
|
346
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
347
|
+
message: 'CC Account update: email must not contain control characters.',
|
|
348
|
+
errorCode: 'CCAP-CC-ACCOUNT-EMAIL-INVALID',
|
|
349
|
+
status: 400,
|
|
350
|
+
error: new Error('Invalid email: contains control characters'),
|
|
351
|
+
additionalContent: { accountKey: params.accountKey },
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
fields.email = trimmed;
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
358
|
+
message: 'CC Account update: email must be a string or null.',
|
|
359
|
+
errorCode: 'CCAP-CC-ACCOUNT-EMAIL-INVALID',
|
|
360
|
+
status: 400,
|
|
361
|
+
error: new Error('Invalid email: not a string'),
|
|
362
|
+
additionalContent: { accountKey: params.accountKey, providedType: typeof raw },
|
|
363
|
+
});
|
|
364
|
+
}
|
|
242
365
|
}
|
|
243
|
-
if (
|
|
366
|
+
if (!anyFieldProvided) {
|
|
244
367
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
245
|
-
message: 'CC Account
|
|
368
|
+
message: 'CC Account update: at least one of `displayName` or `email` must be provided.',
|
|
246
369
|
errorCode: 'CCAP-CC-ACCOUNT-RENAME-INVALID',
|
|
247
370
|
status: 400,
|
|
248
|
-
error: new Error('
|
|
371
|
+
error: new Error('No editable fields provided'),
|
|
249
372
|
additionalContent: { accountKey: params.accountKey },
|
|
250
373
|
});
|
|
251
374
|
}
|
|
252
|
-
const updated = await this.accountPool_CS.renameAccount(params.accountKey,
|
|
375
|
+
const updated = await this.accountPool_CS.renameAccount(params.accountKey, fields);
|
|
253
376
|
if (updated == null) {
|
|
254
377
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
255
|
-
message: `CC Account not found for
|
|
378
|
+
message: `CC Account not found for update: ${params.accountKey}`,
|
|
256
379
|
errorCode: 'CCAP-CC-ACCOUNT-NOT-FOUND',
|
|
257
380
|
status: 404,
|
|
258
|
-
error: new Error(`CC Account not found for
|
|
381
|
+
error: new Error(`CC Account not found for update: ${params.accountKey}`),
|
|
259
382
|
additionalContent: { accountKey: params.accountKey },
|
|
260
383
|
});
|
|
261
384
|
}
|