@futdevpro/ccap 1.1.2863 → 1.1.2881

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.
Files changed (241) hide show
  1. package/client-dist/{agent-instances.module-SRVXVWB4.js → agent-instances.module-U742BGNW.js} +2 -2
  2. package/client-dist/{ca.module-ZAYCRAK6.js → ca.module-WANXRIO7.js} +2 -2
  3. package/client-dist/cc-usage-dashboard.component-TPMSJIGI.js +2 -0
  4. package/client-dist/cc-usage-dashboard.component-TPMSJIGI.js.map +7 -0
  5. package/client-dist/{cc.module-BF2AOAIM.js → cc.module-JZUXUXHP.js} +2 -2
  6. package/client-dist/{chunk-CBIUSRE5.js → chunk-26DXMUXV.js} +2 -2
  7. package/client-dist/{chunk-AFF37OKI.js → chunk-2LJT2APC.js} +2 -2
  8. package/client-dist/{chunk-O7U4KV25.js → chunk-435IBC6L.js} +2 -2
  9. package/client-dist/{chunk-7JFONJTJ.js → chunk-467OMXRK.js} +2 -2
  10. package/client-dist/{chunk-7MSQD5HV.js → chunk-46N7EC7U.js} +2 -2
  11. package/client-dist/{chunk-XXO2YNDP.js → chunk-4OKUKX55.js} +2 -2
  12. package/client-dist/{chunk-34XFCTVF.js → chunk-4RRBZXYU.js} +2 -2
  13. package/client-dist/{chunk-OIBDRASW.js → chunk-4TBE5I3U.js} +2 -2
  14. package/client-dist/{chunk-DUN7ICUI.js → chunk-6A2IM2XR.js} +2 -2
  15. package/client-dist/{chunk-2LOFMRCO.js → chunk-6BQHKSUP.js} +2 -2
  16. package/client-dist/{chunk-4TEHGQ5C.js → chunk-6IYFOHCN.js} +2 -2
  17. package/client-dist/{chunk-WYTT3YHQ.js → chunk-6NWEJXDU.js} +2 -2
  18. package/client-dist/{chunk-ZMZ462V7.js → chunk-767Z7I55.js} +2 -2
  19. package/client-dist/{chunk-YU32GIMP.js → chunk-AS2SYIJB.js} +2 -2
  20. package/client-dist/{chunk-QUEQSNIS.js → chunk-BHWHGLKC.js} +2 -2
  21. package/client-dist/{chunk-TUKCFE3B.js → chunk-CILMMQ5V.js} +2 -2
  22. package/client-dist/{chunk-B7WQ5TK3.js → chunk-CSHUFD2L.js} +2 -2
  23. package/client-dist/{chunk-EZNIJZBL.js → chunk-DNHL6M7F.js} +2 -2
  24. package/client-dist/{chunk-EDQWK2Q5.js → chunk-DUN255KX.js} +2 -2
  25. package/client-dist/{chunk-UI6N7Y2P.js → chunk-EBSMIZTK.js} +2 -2
  26. package/client-dist/{chunk-YGTNCGIU.js → chunk-EY32IBWM.js} +2 -2
  27. package/client-dist/{chunk-I6OBHW45.js → chunk-FJGBPKHK.js} +2 -2
  28. package/client-dist/{chunk-EIT3LSQO.js → chunk-GDAL4G4Y.js} +2 -2
  29. package/client-dist/{chunk-FYXUOXRP.js → chunk-GR3CXOIX.js} +2 -2
  30. package/client-dist/{chunk-GODWUWRO.js → chunk-HDCFO7OE.js} +2 -2
  31. package/client-dist/{chunk-2X5MWPDN.js → chunk-HFVIX2ZG.js} +2 -2
  32. package/client-dist/{chunk-SX22WHCZ.js → chunk-HPBX6VCV.js} +2 -2
  33. package/client-dist/{chunk-VXJF6N32.js → chunk-IR4THKPA.js} +2 -2
  34. package/client-dist/{chunk-DZ74YN25.js → chunk-J5NYZUBP.js} +2 -2
  35. package/client-dist/{chunk-7JW45JC5.js → chunk-JDK64BE7.js} +2 -2
  36. package/client-dist/{chunk-EUY2HZZV.js → chunk-KMEGS6BP.js} +2 -2
  37. package/client-dist/{chunk-77HGZO43.js → chunk-KQLKM7RB.js} +2 -2
  38. package/client-dist/{chunk-52JG2IIG.js → chunk-LERWAULE.js} +2 -2
  39. package/client-dist/{chunk-L7PQ72ZG.js → chunk-M3RL34GF.js} +2 -2
  40. package/client-dist/{chunk-X2FIFUXZ.js → chunk-NJPSU6MN.js} +2 -2
  41. package/client-dist/{chunk-DHIVAX2C.js → chunk-ONEB5UF5.js} +2 -2
  42. package/client-dist/{chunk-ELFCSLIP.js → chunk-OP2PE3KG.js} +2 -2
  43. package/client-dist/{chunk-ELFCSLIP.js.map → chunk-OP2PE3KG.js.map} +1 -1
  44. package/client-dist/{chunk-SO3QL2U5.js → chunk-OZGFJXOA.js} +2 -2
  45. package/client-dist/{chunk-WQIBGXGU.js → chunk-PPRG7F5A.js} +2 -2
  46. package/client-dist/{chunk-4RT7LOTQ.js → chunk-PQUBI6TC.js} +2 -2
  47. package/client-dist/{chunk-XSP7NLZB.js → chunk-Q6JQHJME.js} +2 -2
  48. package/client-dist/{chunk-Q7GDEJL2.js → chunk-QDTY7SR6.js} +2 -2
  49. package/client-dist/{chunk-VLMQV3OI.js → chunk-RQ2HFT2L.js} +2 -2
  50. package/client-dist/{chunk-DU3IYPGM.js → chunk-RRN36VPR.js} +2 -2
  51. package/client-dist/{chunk-NI4AZWY2.js → chunk-S4GJTHYZ.js} +2 -2
  52. package/client-dist/{chunk-2Y7GYEOT.js → chunk-SKHAAE4A.js} +2 -2
  53. package/client-dist/{chunk-4XEPGDZH.js → chunk-TSPROG7P.js} +2 -2
  54. package/client-dist/{chunk-QHLRSGQG.js → chunk-U7ZBDYGU.js} +2 -2
  55. package/client-dist/{chunk-2DJBCAHJ.js → chunk-VQWGWQDA.js} +2 -2
  56. package/client-dist/{chunk-ZGWUDLYU.js → chunk-X7HHJQ2O.js} +2 -2
  57. package/client-dist/{chunk-23GMPVB5.js → chunk-XH3SQ4UP.js} +2 -2
  58. package/client-dist/{chunk-PZMEVMSF.js → chunk-XHF463TC.js} +2 -2
  59. package/client-dist/{chunk-CUUDVYOC.js → chunk-XJEATRA4.js} +2 -2
  60. package/client-dist/{chunk-QTRIOR6Z.js → chunk-XSXQC64X.js} +2 -2
  61. package/client-dist/{chunk-EMVGFT6L.js → chunk-YE57GLWU.js} +2 -2
  62. package/client-dist/{chunk-HSAGX22H.js → chunk-YX6NZTP7.js} +2 -2
  63. package/client-dist/{consultant.module-3PAIPMAH.js → consultant.module-WL4WEIIF.js} +2 -2
  64. package/client-dist/{crd.module-PJO2UJEG.js → crd.module-OE3ML5C7.js} +2 -2
  65. package/client-dist/{dashboard.module-TJMYHTHX.js → dashboard.module-NBINBB72.js} +2 -2
  66. package/client-dist/{do.module-SBE6P3B7.js → do.module-BLTXJC4T.js} +2 -2
  67. package/client-dist/{document-library.module-YH7IF4EP.js → document-library.module-TXGZT2VZ.js} +2 -2
  68. package/client-dist/{embedding-eval.module-STWWCUD7.js → embedding-eval.module-PYE5NL5R.js} +2 -2
  69. package/client-dist/{embedding-registry.module-XX6725DX.js → embedding-registry.module-46PAOMQR.js} +2 -2
  70. package/client-dist/{err.module-SL2IYMTF.js → err.module-B743IN5O.js} +2 -2
  71. package/client-dist/{feedback.module-RMRL65YC.js → feedback.module-H4YSPDLF.js} +2 -2
  72. package/client-dist/{host-runtime-mcp.module-OJORUP2R.js → host-runtime-mcp.module-6SK6OZH7.js} +2 -2
  73. package/client-dist/index.html +2 -2
  74. package/client-dist/{live-dev-pipeline.module-AMBMFVIH.js → live-dev-pipeline.module-MCPAY2LG.js} +2 -2
  75. package/client-dist/{logs.module-3CQ6KLLB.js → logs.module-CJF7RLV7.js} +2 -2
  76. package/client-dist/{main-RCFMPV3V.js → main-NZFBSJOQ.js} +3 -3
  77. package/client-dist/main-NZFBSJOQ.js.map +7 -0
  78. package/client-dist/{master-control-remote-poc.module-FD3E5JB7.js → master-control-remote-poc.module-LJ5ANCQ6.js} +2 -2
  79. package/client-dist/{mobile-app.module-LHVADRFV.js → mobile-app.module-G7LAAOOP.js} +2 -2
  80. package/client-dist/{model-registry.module-ZTKOWGAN.js → model-registry.module-WDAX2AHY.js} +2 -2
  81. package/client-dist/{oc.module-GLPSVTAT.js → oc.module-T43BN7CJ.js} +2 -2
  82. package/client-dist/{orc.module-BKMJC5YX.js → orc.module-R3P5Y4YW.js} +2 -2
  83. package/client-dist/{project-management.module-QEIXJONY.js → project-management.module-ODMCGFYI.js} +2 -2
  84. package/client-dist/project-source-routed.module-M22ABRHR.js +2 -0
  85. package/client-dist/{scheduler.module-TD4G2WNF.js → scheduler.module-TZLVYYMO.js} +2 -2
  86. package/client-dist/{session.module-YCITR6BG.js → session.module-3XGXYP4K.js} +2 -2
  87. package/client-dist/{set.module-JIWXIF2C.js → set.module-M3PJXM3W.js} +5 -5
  88. package/client-dist/{set.module-JIWXIF2C.js.map → set.module-M3PJXM3W.js.map} +3 -3
  89. package/client-dist/{setup.module-ZWL33O7N.js → setup.module-2U3R4YDE.js} +2 -2
  90. package/client-dist/styles-OJOSC7GL.css +2 -0
  91. package/client-dist/styles-OJOSC7GL.css.map +7 -0
  92. package/client-dist/{terminals.module-MKXQLASR.js → terminals.module-ULIXEKUD.js} +2 -2
  93. package/client-dist/{voice-notes-poc.module-7LUIU7P5.js → voice-notes-poc.module-GZGIIFPR.js} +2 -2
  94. package/client-dist/{wfs.module-2BMXPFAL.js → wfs.module-6B4QN7NS.js} +2 -2
  95. package/package.json +1 -1
  96. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.d.ts +85 -0
  97. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.d.ts.map +1 -0
  98. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.js +264 -0
  99. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.js.map +1 -0
  100. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.d.ts +18 -0
  101. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.d.ts.map +1 -1
  102. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.js +93 -0
  103. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.js.map +1 -1
  104. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.d.ts.map +1 -1
  105. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.js +14 -0
  106. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.js.map +1 -1
  107. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.d.ts +36 -0
  108. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.d.ts.map +1 -1
  109. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.js +136 -0
  110. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.js.map +1 -1
  111. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.d.ts +11 -0
  112. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.d.ts.map +1 -1
  113. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.js +40 -0
  114. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.js.map +1 -1
  115. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts.map +1 -1
  116. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js +34 -0
  117. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js.map +1 -1
  118. package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.d.ts +4 -4
  119. package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.d.ts.map +1 -1
  120. package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.js +12 -7
  121. package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.js.map +1 -1
  122. package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.spec.js +17 -14
  123. package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.spec.js.map +1 -1
  124. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.d.ts +6 -2
  125. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.d.ts.map +1 -1
  126. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.js +8 -4
  127. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.js.map +1 -1
  128. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-heartbeat-status.interface.d.ts +23 -0
  129. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-heartbeat-status.interface.d.ts.map +1 -0
  130. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-heartbeat-status.interface.js +3 -0
  131. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-heartbeat-status.interface.js.map +1 -0
  132. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.d.ts +10 -0
  133. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.d.ts.map +1 -0
  134. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.js +81 -0
  135. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.js.map +1 -0
  136. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.d.ts +49 -2
  137. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.d.ts.map +1 -1
  138. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js +107 -6
  139. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js.map +1 -1
  140. package/server/build/src/_modules/peer-instance/_services/pei-ws-client-active-reconnect.spec.d.ts +8 -0
  141. package/server/build/src/_modules/peer-instance/_services/pei-ws-client-active-reconnect.spec.d.ts.map +1 -0
  142. package/server/build/src/_modules/peer-instance/_services/pei-ws-client-active-reconnect.spec.js +112 -0
  143. package/server/build/src/_modules/peer-instance/_services/pei-ws-client-active-reconnect.spec.js.map +1 -0
  144. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts +26 -1
  145. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts.map +1 -1
  146. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js +60 -7
  147. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js.map +1 -1
  148. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts +8 -0
  149. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts.map +1 -1
  150. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.d.ts.map +1 -1
  151. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js +8 -2
  152. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js.map +1 -1
  153. package/client-dist/cc-usage-dashboard.component-TNMEIWMI.js +0 -2
  154. package/client-dist/cc-usage-dashboard.component-TNMEIWMI.js.map +0 -7
  155. package/client-dist/main-RCFMPV3V.js.map +0 -7
  156. package/client-dist/project-source-routed.module-LSFQT5DK.js +0 -2
  157. package/client-dist/styles-WS3OIV37.css +0 -2
  158. package/client-dist/styles-WS3OIV37.css.map +0 -7
  159. /package/client-dist/{agent-instances.module-SRVXVWB4.js.map → agent-instances.module-U742BGNW.js.map} +0 -0
  160. /package/client-dist/{ca.module-ZAYCRAK6.js.map → ca.module-WANXRIO7.js.map} +0 -0
  161. /package/client-dist/{cc.module-BF2AOAIM.js.map → cc.module-JZUXUXHP.js.map} +0 -0
  162. /package/client-dist/{chunk-CBIUSRE5.js.map → chunk-26DXMUXV.js.map} +0 -0
  163. /package/client-dist/{chunk-AFF37OKI.js.map → chunk-2LJT2APC.js.map} +0 -0
  164. /package/client-dist/{chunk-O7U4KV25.js.map → chunk-435IBC6L.js.map} +0 -0
  165. /package/client-dist/{chunk-7JFONJTJ.js.map → chunk-467OMXRK.js.map} +0 -0
  166. /package/client-dist/{chunk-7MSQD5HV.js.map → chunk-46N7EC7U.js.map} +0 -0
  167. /package/client-dist/{chunk-XXO2YNDP.js.map → chunk-4OKUKX55.js.map} +0 -0
  168. /package/client-dist/{chunk-34XFCTVF.js.map → chunk-4RRBZXYU.js.map} +0 -0
  169. /package/client-dist/{chunk-OIBDRASW.js.map → chunk-4TBE5I3U.js.map} +0 -0
  170. /package/client-dist/{chunk-DUN7ICUI.js.map → chunk-6A2IM2XR.js.map} +0 -0
  171. /package/client-dist/{chunk-2LOFMRCO.js.map → chunk-6BQHKSUP.js.map} +0 -0
  172. /package/client-dist/{chunk-4TEHGQ5C.js.map → chunk-6IYFOHCN.js.map} +0 -0
  173. /package/client-dist/{chunk-WYTT3YHQ.js.map → chunk-6NWEJXDU.js.map} +0 -0
  174. /package/client-dist/{chunk-ZMZ462V7.js.map → chunk-767Z7I55.js.map} +0 -0
  175. /package/client-dist/{chunk-YU32GIMP.js.map → chunk-AS2SYIJB.js.map} +0 -0
  176. /package/client-dist/{chunk-QUEQSNIS.js.map → chunk-BHWHGLKC.js.map} +0 -0
  177. /package/client-dist/{chunk-TUKCFE3B.js.map → chunk-CILMMQ5V.js.map} +0 -0
  178. /package/client-dist/{chunk-B7WQ5TK3.js.map → chunk-CSHUFD2L.js.map} +0 -0
  179. /package/client-dist/{chunk-EZNIJZBL.js.map → chunk-DNHL6M7F.js.map} +0 -0
  180. /package/client-dist/{chunk-EDQWK2Q5.js.map → chunk-DUN255KX.js.map} +0 -0
  181. /package/client-dist/{chunk-UI6N7Y2P.js.map → chunk-EBSMIZTK.js.map} +0 -0
  182. /package/client-dist/{chunk-YGTNCGIU.js.map → chunk-EY32IBWM.js.map} +0 -0
  183. /package/client-dist/{chunk-I6OBHW45.js.map → chunk-FJGBPKHK.js.map} +0 -0
  184. /package/client-dist/{chunk-EIT3LSQO.js.map → chunk-GDAL4G4Y.js.map} +0 -0
  185. /package/client-dist/{chunk-FYXUOXRP.js.map → chunk-GR3CXOIX.js.map} +0 -0
  186. /package/client-dist/{chunk-GODWUWRO.js.map → chunk-HDCFO7OE.js.map} +0 -0
  187. /package/client-dist/{chunk-2X5MWPDN.js.map → chunk-HFVIX2ZG.js.map} +0 -0
  188. /package/client-dist/{chunk-SX22WHCZ.js.map → chunk-HPBX6VCV.js.map} +0 -0
  189. /package/client-dist/{chunk-VXJF6N32.js.map → chunk-IR4THKPA.js.map} +0 -0
  190. /package/client-dist/{chunk-DZ74YN25.js.map → chunk-J5NYZUBP.js.map} +0 -0
  191. /package/client-dist/{chunk-7JW45JC5.js.map → chunk-JDK64BE7.js.map} +0 -0
  192. /package/client-dist/{chunk-EUY2HZZV.js.map → chunk-KMEGS6BP.js.map} +0 -0
  193. /package/client-dist/{chunk-77HGZO43.js.map → chunk-KQLKM7RB.js.map} +0 -0
  194. /package/client-dist/{chunk-52JG2IIG.js.map → chunk-LERWAULE.js.map} +0 -0
  195. /package/client-dist/{chunk-L7PQ72ZG.js.map → chunk-M3RL34GF.js.map} +0 -0
  196. /package/client-dist/{chunk-X2FIFUXZ.js.map → chunk-NJPSU6MN.js.map} +0 -0
  197. /package/client-dist/{chunk-DHIVAX2C.js.map → chunk-ONEB5UF5.js.map} +0 -0
  198. /package/client-dist/{chunk-SO3QL2U5.js.map → chunk-OZGFJXOA.js.map} +0 -0
  199. /package/client-dist/{chunk-WQIBGXGU.js.map → chunk-PPRG7F5A.js.map} +0 -0
  200. /package/client-dist/{chunk-4RT7LOTQ.js.map → chunk-PQUBI6TC.js.map} +0 -0
  201. /package/client-dist/{chunk-XSP7NLZB.js.map → chunk-Q6JQHJME.js.map} +0 -0
  202. /package/client-dist/{chunk-Q7GDEJL2.js.map → chunk-QDTY7SR6.js.map} +0 -0
  203. /package/client-dist/{chunk-VLMQV3OI.js.map → chunk-RQ2HFT2L.js.map} +0 -0
  204. /package/client-dist/{chunk-DU3IYPGM.js.map → chunk-RRN36VPR.js.map} +0 -0
  205. /package/client-dist/{chunk-NI4AZWY2.js.map → chunk-S4GJTHYZ.js.map} +0 -0
  206. /package/client-dist/{chunk-2Y7GYEOT.js.map → chunk-SKHAAE4A.js.map} +0 -0
  207. /package/client-dist/{chunk-4XEPGDZH.js.map → chunk-TSPROG7P.js.map} +0 -0
  208. /package/client-dist/{chunk-QHLRSGQG.js.map → chunk-U7ZBDYGU.js.map} +0 -0
  209. /package/client-dist/{chunk-2DJBCAHJ.js.map → chunk-VQWGWQDA.js.map} +0 -0
  210. /package/client-dist/{chunk-ZGWUDLYU.js.map → chunk-X7HHJQ2O.js.map} +0 -0
  211. /package/client-dist/{chunk-23GMPVB5.js.map → chunk-XH3SQ4UP.js.map} +0 -0
  212. /package/client-dist/{chunk-PZMEVMSF.js.map → chunk-XHF463TC.js.map} +0 -0
  213. /package/client-dist/{chunk-CUUDVYOC.js.map → chunk-XJEATRA4.js.map} +0 -0
  214. /package/client-dist/{chunk-QTRIOR6Z.js.map → chunk-XSXQC64X.js.map} +0 -0
  215. /package/client-dist/{chunk-EMVGFT6L.js.map → chunk-YE57GLWU.js.map} +0 -0
  216. /package/client-dist/{chunk-HSAGX22H.js.map → chunk-YX6NZTP7.js.map} +0 -0
  217. /package/client-dist/{consultant.module-3PAIPMAH.js.map → consultant.module-WL4WEIIF.js.map} +0 -0
  218. /package/client-dist/{crd.module-PJO2UJEG.js.map → crd.module-OE3ML5C7.js.map} +0 -0
  219. /package/client-dist/{dashboard.module-TJMYHTHX.js.map → dashboard.module-NBINBB72.js.map} +0 -0
  220. /package/client-dist/{do.module-SBE6P3B7.js.map → do.module-BLTXJC4T.js.map} +0 -0
  221. /package/client-dist/{document-library.module-YH7IF4EP.js.map → document-library.module-TXGZT2VZ.js.map} +0 -0
  222. /package/client-dist/{embedding-eval.module-STWWCUD7.js.map → embedding-eval.module-PYE5NL5R.js.map} +0 -0
  223. /package/client-dist/{embedding-registry.module-XX6725DX.js.map → embedding-registry.module-46PAOMQR.js.map} +0 -0
  224. /package/client-dist/{err.module-SL2IYMTF.js.map → err.module-B743IN5O.js.map} +0 -0
  225. /package/client-dist/{feedback.module-RMRL65YC.js.map → feedback.module-H4YSPDLF.js.map} +0 -0
  226. /package/client-dist/{host-runtime-mcp.module-OJORUP2R.js.map → host-runtime-mcp.module-6SK6OZH7.js.map} +0 -0
  227. /package/client-dist/{live-dev-pipeline.module-AMBMFVIH.js.map → live-dev-pipeline.module-MCPAY2LG.js.map} +0 -0
  228. /package/client-dist/{logs.module-3CQ6KLLB.js.map → logs.module-CJF7RLV7.js.map} +0 -0
  229. /package/client-dist/{master-control-remote-poc.module-FD3E5JB7.js.map → master-control-remote-poc.module-LJ5ANCQ6.js.map} +0 -0
  230. /package/client-dist/{mobile-app.module-LHVADRFV.js.map → mobile-app.module-G7LAAOOP.js.map} +0 -0
  231. /package/client-dist/{model-registry.module-ZTKOWGAN.js.map → model-registry.module-WDAX2AHY.js.map} +0 -0
  232. /package/client-dist/{oc.module-GLPSVTAT.js.map → oc.module-T43BN7CJ.js.map} +0 -0
  233. /package/client-dist/{orc.module-BKMJC5YX.js.map → orc.module-R3P5Y4YW.js.map} +0 -0
  234. /package/client-dist/{project-management.module-QEIXJONY.js.map → project-management.module-ODMCGFYI.js.map} +0 -0
  235. /package/client-dist/{project-source-routed.module-LSFQT5DK.js.map → project-source-routed.module-M22ABRHR.js.map} +0 -0
  236. /package/client-dist/{scheduler.module-TD4G2WNF.js.map → scheduler.module-TZLVYYMO.js.map} +0 -0
  237. /package/client-dist/{session.module-YCITR6BG.js.map → session.module-3XGXYP4K.js.map} +0 -0
  238. /package/client-dist/{setup.module-ZWL33O7N.js.map → setup.module-2U3R4YDE.js.map} +0 -0
  239. /package/client-dist/{terminals.module-MKXQLASR.js.map → terminals.module-ULIXEKUD.js.map} +0 -0
  240. /package/client-dist/{voice-notes-poc.module-7LUIU7P5.js.map → voice-notes-poc.module-GZGIIFPR.js.map} +0 -0
  241. /package/client-dist/{wfs.module-2BMXPFAL.js.map → wfs.module-6B4QN7NS.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["src/app/_modules/external-sessions/_modules/claude-code/_services/cc-account.api-service.ts", "src/app/_modules/external-sessions/_modules/claude-code/_services/cc-account.data-service.ts", "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": ["import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { firstValueFrom } from 'rxjs';\n\nimport { CC_Account_Response } from '../_models/interfaces/cc-account.interface';\nimport {\n CC_AccountInstanceMapping_Response,\n CC_AccountUsageState_Response,\n} from '../_models/interfaces/cc-account-usage-state.interface';\nimport { environment } from '../../../../../../environments/environment';\n\n/**\n * CC Account REST API service (REQ-CC-USAGE-DASHBOARD-001 Slice 5 cycle 856).\n *\n * HTTP-bridge a server-oldali `CC_Account_Controller` endpoint-jaihoz\n * (`/cc-account/*`). Egyszerű thin api-service mintán a\n * `cc-cci-instance-data.api-service.ts`-hez hasonlóan: minden hívás\n * `firstValueFrom`-mal Promise-ra fordított `HttpClient` get/post/patch.\n *\n * A Slice 5+ Dashboard komponensek és a Slice 6 instance-mapping view\n * data-service-en keresztül használja.\n */\n@Injectable({ providedIn: 'root' })\nexport class CC_Account_ApiService {\n\n private readonly baseUrl: string = `${environment.api.baseUrl}/cc-account`;\n\n private readonly http: HttpClient = inject(HttpClient);\n\n /** GET /cc-account/list — cross-instance account-lista. */\n listAccounts(): Promise<{ items: CC_Account_Response[] }> {\n return firstValueFrom(\n this.http.get<{ items: CC_Account_Response[] }>(`${this.baseUrl}/list`),\n );\n }\n\n /** POST /cc-account/refresh — a hívó CCAP instance-en credential-discovery újrafutás. */\n refreshLocalAccounts(): Promise<{ refreshedKeys: string[]; scannedPaths: number }> {\n return firstValueFrom(\n this.http.post<{ refreshedKeys: string[]; scannedPaths: number }>(\n `${this.baseUrl}/refresh`,\n {},\n ),\n );\n }\n\n /**\n * GET /cc-account/instance-mapping — Slice 4 cross-instance aggregate.\n * Minden ismert CCAP instance group-by lastObservedByCcapId — melyik account-okat\n * látta utoljára.\n */\n getInstanceMapping(): Promise<CC_AccountInstanceMapping_Response> {\n return firstValueFrom(\n this.http.get<CC_AccountInstanceMapping_Response>(`${this.baseUrl}/instance-mapping`),\n );\n }\n\n /** GET /cc-account/:accountKey — egy account részletek. */\n getAccount(accountKey: string): Promise<CC_Account_Response> {\n return firstValueFrom(\n this.http.get<CC_Account_Response>(`${this.baseUrl}/${accountKey}`),\n );\n }\n\n /**\n * GET /cc-account/:accountKey/usage — Slice 3 per-account usage state-ek.\n * 0..5 rekord (egy windowType-onként).\n */\n getAccountUsage(accountKey: string): Promise<{ items: CC_AccountUsageState_Response[] }> {\n return firstValueFrom(\n this.http.get<{ items: CC_AccountUsageState_Response[] }>(\n `${this.baseUrl}/${accountKey}/usage`,\n ),\n );\n }\n\n /**\n * POST /cc-account/:accountKey/refresh-usage — aktív Anthropic usage-pull\n * (REQ-CC-USAGE-DASHBOARD-001 cycle 873). A server credential-fájl + Bearer-rel\n * hív, az 5 window state-et upsert-eli, profile-mezőket (email/orgId/planTier)\n * a CC_Account-ba updateli, socket-broadcast.\n */\n refreshAccountUsage(accountKey: string): Promise<{ status: string; windowsUpserted: number; email: string | null }> {\n return firstValueFrom(\n this.http.post<{ status: string; windowsUpserted: number; email: string | null }>(\n `${this.baseUrl}/${accountKey}/refresh-usage`,\n {},\n ),\n );\n }\n\n /** PATCH /cc-account/:accountKey — display-name átírása (user-given). */\n renameAccount(params: {\n accountKey: string;\n displayName: string;\n }): Promise<CC_Account_Response> {\n return firstValueFrom(\n this.http.patch<CC_Account_Response>(\n `${this.baseUrl}/${params.accountKey}`,\n { displayName: params.displayName },\n ),\n );\n }\n}\n", "import { inject, Injectable, NgZone, OnDestroy, signal } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { CCAP_Socket_ControlService } from '../../../../../_services/control-services/ccap-socket.control-service';\nimport { CC_Account_ApiService } from './cc-account.api-service';\nimport { CC_Account_Response } from '../_models/interfaces/cc-account.interface';\nimport {\n CC_AccountInstanceMapping_Response,\n CC_AccountUsageState_Response,\n} from '../_models/interfaces/cc-account-usage-state.interface';\n\n/** Socket envelope shape — `CCAP_Socket_ControlService.event$` Subject közvetíti. */\ninterface SocketEnvelope_Interface {\n event: string;\n payload: Record<string, unknown>;\n}\n\n/** REQ-CC-USAGE-DASHBOARD-001 Slice 6 second-half: socket event nevek. */\nconst SOCKET_EVENT_CC_ACCOUNT_USAGE_UPDATE: string = 'cc:account-usage-update';\nconst SOCKET_EVENT_CC_ACCOUNT_LIST_UPDATE: string = 'cc:account-list-update';\n\n/**\n * CC Account Dashboard data service (REQ-CC-USAGE-DASHBOARD-001 Slice 5 cycle 857).\n *\n * SSOT a Slice 5+ Dashboard kliens-oldali state-jéhez. Signal-ek a komponensek\n * change-detection-jéhez (`accounts_$`, `accountUsageMap_$`, `instanceMapping_$`,\n * `isLoading_$`, `loadError_$`); async metódusok REST hívásokhoz a\n * `CC_Account_ApiService`-en át (cycle 856).\n *\n * NEM perzisztál (a backend DBNT a SSOT) — a kliens csak cache-eli a fetch-eket\n * a komponens élettartam alatt. Refresh: explicit user-action (`refreshAccounts`)\n * vagy szocket-event (Slice 6).\n */\n@Injectable({ providedIn: 'root' })\nexport class CC_Account_DataService implements OnDestroy {\n\n private readonly accountApi: CC_Account_ApiService = inject(CC_Account_ApiService);\n private readonly socket_CS: CCAP_Socket_ControlService = inject(CCAP_Socket_ControlService);\n private readonly ngZone: NgZone = inject(NgZone);\n\n /** Socket envelope subscription élettartam-kezelése. */\n private socketSubscription: Subscription | null = null;\n\n /** Cross-instance account-lista (a `listAccounts` REST eredménye). */\n readonly accounts_$ = signal<CC_Account_Response[]>([]);\n\n /**\n * Per-account usage state cache: `accountKey → usage-state[]` (5 windowType-onként\n * egy rekord max). A Slice 5 Dashboard account-card-ok ebből rendernek.\n */\n readonly accountUsageMap_$ = signal<Map<string, CC_AccountUsageState_Response[]>>(\n new Map(),\n );\n\n /** Cross-instance aggregate (Slice 4 instance-mapping endpoint cache). */\n readonly instanceMapping_$ = signal<CC_AccountInstanceMapping_Response | null>(null);\n\n /** Bármelyik load folyamatban-e (UI spinner-hez). */\n readonly isLoading_$ = signal<boolean>(false);\n\n /** Utolsó load hiba — null ha sikeres vagy nem futott. */\n readonly loadError_$ = signal<string | null>(null);\n\n /** Bootstrap fetch: account-list + instance-mapping párhuzamosan. */\n async loadDashboardBootstrap(): Promise<void> {\n this.isLoading_$.set(true);\n this.loadError_$.set(null);\n try {\n const [accountsResp, mappingResp] = await Promise.all([\n this.accountApi.listAccounts(),\n this.accountApi.getInstanceMapping(),\n ]);\n this.accounts_$.set(accountsResp.items);\n this.instanceMapping_$.set(mappingResp);\n } catch (err: unknown) {\n this.loadError_$.set(this.errorMessageOf(err));\n } finally {\n this.isLoading_$.set(false);\n }\n }\n\n /** Csak az account-listát tölti újra (kis fetch). */\n async loadAccounts(): Promise<void> {\n try {\n const resp = await this.accountApi.listAccounts();\n this.accounts_$.set(resp.items);\n } catch (err: unknown) {\n this.loadError_$.set(this.errorMessageOf(err));\n }\n }\n\n /**\n * Per-account usage-state fetch + cache-be írás. A Slice 5 account-card\n * komponens ezt hívja a saját accountKey-jére.\n */\n async loadAccountUsage(accountKey: string): Promise<void> {\n try {\n const resp = await this.accountApi.getAccountUsage(accountKey);\n const next: Map<string, CC_AccountUsageState_Response[]> = new Map(this.accountUsageMap_$());\n next.set(accountKey, resp.items);\n this.accountUsageMap_$.set(next);\n } catch (err: unknown) {\n this.loadError_$.set(this.errorMessageOf(err));\n }\n }\n\n /** Cross-instance aggregate refetch (Slice 4 — Slice 6 view bootstrap-jánál). */\n async loadInstanceMapping(): Promise<void> {\n try {\n const resp = await this.accountApi.getInstanceMapping();\n this.instanceMapping_$.set(resp);\n } catch (err: unknown) {\n this.loadError_$.set(this.errorMessageOf(err));\n }\n }\n\n /**\n * Explicit user-trigger: a hívó CCAP instance-en credential-discovery újrafutás\n * + account-lista refetch. POST /refresh után automatikusan listAccounts-szal frissít.\n */\n async refreshAccounts(): Promise<{ refreshedKeys: string[]; scannedPaths: number }> {\n this.isLoading_$.set(true);\n this.loadError_$.set(null);\n try {\n const refreshResult = await this.accountApi.refreshLocalAccounts();\n await this.loadAccounts();\n return refreshResult;\n } catch (err: unknown) {\n this.loadError_$.set(this.errorMessageOf(err));\n return { refreshedKeys: [], scannedPaths: 0 };\n } finally {\n this.isLoading_$.set(false);\n }\n }\n\n /**\n * Aktív usage-pull egy adott account-ra (REQ-CC-USAGE-DASHBOARD-001 cycle 873).\n * A server `POST /cc-account/:accountKey/refresh-usage`-t hívja, ami az\n * Anthropic `/api/oauth/usage` endpoint-ját triggeri Bearer-rel. A pull\n * eredménye automatikusan jön socket-eventként (`cc:account-usage-update`),\n * de a sikeres POST után explicit re-fetch-eljük is az adott account usage-ét\n * + a teljes account-listát (a profile-mezők is updatelődtek).\n */\n async refreshAccountUsage(accountKey: string): Promise<{ status: string; windowsUpserted: number; email: string | null }> {\n try {\n const result = await this.accountApi.refreshAccountUsage(accountKey);\n // Re-fetch a friss state-et — bár a socket-event is jön, a cache-frissítés\n // garantált a user-action végén.\n await this.loadAccountUsage(accountKey);\n await this.loadAccounts();\n return result;\n } catch (err: unknown) {\n this.loadError_$.set(this.errorMessageOf(err));\n return { status: 'error', windowsUpserted: 0, email: null };\n }\n }\n\n /**\n * Display-name átírása + a cache-elt account-lista frissítése (a megfelelő\n * elem displayName mezőjének felülírása, signal-update).\n */\n async renameAccount(params: { accountKey: string; displayName: string }): Promise<void> {\n try {\n const updated = await this.accountApi.renameAccount(params);\n const next: CC_Account_Response[] = this.accounts_$().map(\n (a): CC_Account_Response => (a.accountKey === params.accountKey ? updated : a),\n );\n this.accounts_$.set(next);\n } catch (err: unknown) {\n this.loadError_$.set(this.errorMessageOf(err));\n }\n }\n\n /**\n * Socket subscription init (REQ-CC-USAGE-DASHBOARD-001 Slice 6 second-half cycle 871).\n * A `CCAP_Socket_ControlService.event$` Subject minden socket-event-et közvetít\n * envelope-formában (event-name + payload). Mi az `cc:account-usage-update`\n * és `cc:account-list-update` event-ekre szűrünk és a megfelelő signal-eket frissítjük.\n *\n * Late subscription: a Dashboard component `ngOnInit`-jéből hívjuk (vagy explicit\n * service-init-kor), hogy ne legyen subscription-overhead, ha a Dashboard sose\n * nyílik meg.\n */\n startLiveUpdates(): void {\n if (this.socketSubscription != null) {\n return;\n }\n this.socketSubscription = this.socket_CS.event$.subscribe(\n (envelope: SocketEnvelope_Interface): void => {\n this.ngZone.run((): void => {\n if (envelope.event === SOCKET_EVENT_CC_ACCOUNT_USAGE_UPDATE) {\n this.handleAccountUsageUpdate(envelope.payload);\n } else if (envelope.event === SOCKET_EVENT_CC_ACCOUNT_LIST_UPDATE) {\n this.handleAccountListUpdate(envelope.payload);\n }\n });\n },\n );\n }\n\n /** Socket subscription teardown (component destroy / explicit stop). */\n stopLiveUpdates(): void {\n if (this.socketSubscription != null) {\n this.socketSubscription.unsubscribe();\n this.socketSubscription = null;\n }\n }\n\n ngOnDestroy(): void {\n this.stopLiveUpdates();\n }\n\n /**\n * Per-account usage state real-time frissítés. A server `persistAccountUsageState`\n * upsert sikere után emit-elt event-ből építjük újra a `accountUsageMap_$`\n * megfelelő `accountKey` bejegyzését. Ha a windowType már szerepel, lecseréljük;\n * különben hozzáadjuk.\n */\n private handleAccountUsageUpdate(payload: Record<string, unknown>): void {\n const accountKey: unknown = payload.accountKey;\n const windowType: unknown = payload.windowType;\n if (typeof accountKey !== 'string' || accountKey === '' || typeof windowType !== 'string') {\n return;\n }\n const newItem: CC_AccountUsageState_Response = {\n accountKey: accountKey,\n windowType: windowType,\n utilization: typeof payload.utilization === 'number' ? payload.utilization : undefined,\n resetsAtMs: typeof payload.resetsAtMs === 'number' ? payload.resetsAtMs : undefined,\n lastObservedStatus: typeof payload.lastObservedStatus === 'string' ? payload.lastObservedStatus : undefined,\n observedAt: typeof payload.observedAt === 'string' ? payload.observedAt : undefined,\n lastObservedByCcapId: typeof payload.lastObservedByCcapId === 'string' ? payload.lastObservedByCcapId : undefined,\n lastObservedBySessionId: typeof payload.lastObservedBySessionId === 'string' ? payload.lastObservedBySessionId : undefined,\n };\n\n const next: Map<string, CC_AccountUsageState_Response[]> = new Map(this.accountUsageMap_$());\n const existing: CC_AccountUsageState_Response[] = next.get(accountKey) ?? [];\n const replaced: CC_AccountUsageState_Response[] = existing.filter(\n (item: CC_AccountUsageState_Response): boolean => item.windowType !== windowType,\n );\n replaced.push(newItem);\n next.set(accountKey, replaced);\n this.accountUsageMap_$.set(next);\n }\n\n /**\n * Account-pool változás (új account felfedezve, displayName-átírás): a\n * legegyszerűbb és legbiztonságosabb módon `loadAccounts()` re-fetch-csel\n * frissítjük a `accounts_$` signal-t. Cross-instance change-ek esetén is\n * ez a megközelítés robosztus (a DB SSOT-ből minden instance ugyanazt látja).\n */\n private handleAccountListUpdate(_payload: Record<string, unknown>): void {\n void this.loadAccounts();\n }\n\n /** Hibaüzenet kinyerés tipikus shape-ekből (HttpErrorResponse / Error / unknown). */\n private errorMessageOf(err: unknown): string {\n if (err instanceof Error) {\n return err.message;\n }\n if (typeof err === 'object' && err !== null) {\n const rec: Record<string, unknown> = err as Record<string, unknown>;\n if (typeof rec.message === 'string') {\n return rec.message;\n }\n }\n return String(err);\n }\n}\n", "/**\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';\n\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_AccountUsagePacing_Util } from '../../_collections/cc-account-usage-pacing.util';\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],\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 accountDS: 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 /**\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.accountDS.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.accountDS.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.accountDS.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.accountDS.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.accountDS.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.accountDS.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.accountDS.refreshAccountUsage(k)));\n } finally {\n this.isRefreshingAllUsage_$.set(false);\n }\n }\n\n /** Per-account usage state-ek a kliens cache-ből (5 windowType-onként max 1 rekord). */\n usageItemsOf(accountKey: string): CC_AccountUsageState_Response[] {\n return this.accountDS.accountUsageMap_$().get(accountKey) ?? [];\n }\n\n /** Egy adott windowType state-jét adja vissza, vagy null. */\n usageItemOfWindow(accountKey: string, windowType: string): CC_AccountUsageState_Response | null {\n for (const item of this.usageItemsOf(accountKey)) {\n if (item.windowType === windowType) {\n return item;\n }\n }\n return null;\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 * 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 * Utilization → progress-bar width inline-style (0..100%). Null → 0%.\n * A HTML-ben a progress-csík `[style.width.%]`-szel kötve.\n */\n utilizationPercent(utilization: number | undefined): number {\n if (utilization == null || !isFinite(utilization)) {\n return 0;\n }\n return Math.max(0, Math.min(100, Math.round(utilization * 100)));\n }\n\n /**\n * Progress-bar fill color (zöld 0..50%, sárga 50..85%, piros 85+%; szürke ha null).\n */\n utilizationBarColorClass(utilization: number | undefined): string {\n if (utilization == null || !isFinite(utilization)) {\n return 'bg-neutral-600';\n }\n if (utilization >= 0.85) {\n return 'bg-red-500';\n }\n if (utilization >= 0.5) {\n return 'bg-amber-500';\n }\n return 'bg-emerald-500';\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.accountDS.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 &amp; Accounts\n </h1>\n <p class=\"text-xs text-neutral-500 mt-1\">\n Anthropic OAuth credentials &middot; per-account 5-hour / weekly / opus / sonnet / extra usage windows\n &middot;\n <span class=\"text-neutral-400\">{{ accountDS.accounts_$().length }} account(s)</span>\n &middot;\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_$() || accountDS.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_$() || !accountDS.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 (accountDS.isLoading_$()) {\n <div class=\"text-sm text-neutral-400 italic py-4\">\n Loading dashboard…\n </div>\n}\n\n@if (accountDS.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 &middot; {{ accountDS.accounts_$().length }}\n </span>\n </h2>\n\n @if (!accountDS.accounts_$().length && !accountDS.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 @for (account of accountDS.accounts_$(); track account.accountKey) {\n <div class=\"rounded-lg border border-neutral-800 mb-3 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\">\n <!-- Header row: avatar + displayName + email + accountKey + status badges + refresh gomb -->\n <div class=\"flex items-center gap-3 py-3 px-4 border-b border-neutral-800/70\">\n <!-- Avatar (initial letter, hash-stable color) -->\n <div [class]=\"'shrink-0 w-9 h-9 rounded-md flex items-center justify-center text-base 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-2 flex-wrap\">\n <span class=\"text-sm text-neutral-100 font-semibold truncate\">\n {{ displayNameOf(account) }}\n </span>\n @if (account.email) {\n <span class=\"text-xs text-neonCyan/90 truncate\">{{ account.email }}</span>\n }\n </div>\n <div class=\"text-[10px] text-neutral-500 font-mono truncate mt-0.5\">\n <span class=\"text-neutral-600\">key:</span> {{ account.accountKey }}\n @if (account.organizationId) {\n <span class=\"ml-2 text-neutral-600\">·</span>\n <span class=\"ml-2 text-neutral-600\">org:</span> {{ account.organizationId }}\n }\n </div>\n </div>\n <div class=\"flex items-center gap-1.5 shrink-0\">\n @if (account.tokenStatus) {\n <span [class]=\"'text-[10px] px-2 py-0.5 rounded-full border font-medium ' + tokenStatusBadgeClassOf(account.tokenStatus)\"\n [title]=\"'Token status: ' + account.tokenStatus\">\n {{ account.tokenStatus }}\n </span>\n }\n @if (account.planTier) {\n <span class=\"text-[10px] text-neutral-200 px-2 py-0.5 rounded-full border border-indigo-700 bg-indigo-900/30 font-medium\">\n {{ account.planTier }}\n </span>\n }\n <button\n type=\"button\"\n class=\"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 </div>\n <!-- Usage table: 5 windowType-onként progress-bar + reset countdown. -->\n <div class=\"px-4 py-3\">\n @if (!usageItemsOf(account.accountKey).length) {\n <div class=\"text-[11px] text-neutral-500 italic flex items-center gap-2\">\n <svg class=\"w-4 h-4\" 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 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"/>\n </svg>\n No usage data yet. Click <strong class=\"text-neutral-300\">Pull</strong> to fetch from Anthropic,\n or run a CC session — rate-limit events populate automatically.\n </div>\n } @else {\n <div class=\"space-y-2\">\n @for (windowType of ['five_hour', 'seven_day', 'seven_day_opus', 'seven_day_sonnet', 'extra_usage']; track windowType) {\n @if (usageItemOfWindow(account.accountKey, windowType); as item) {\n <div class=\"grid grid-cols-[160px_1fr_90px] items-center gap-3 text-[11px]\">\n <div class=\"text-neutral-300 font-medium truncate\" [title]=\"windowType\">\n {{ windowLabelOf(windowType) }}\n </div>\n <div class=\"flex items-center gap-2\">\n <div class=\"flex-1 h-2 bg-neutral-800 rounded-full overflow-hidden relative\">\n <div [class]=\"'h-full transition-all ' + utilizationBarColorClass(item.utilization)\"\n [style.width.%]=\"utilizationPercent(item.utilization)\"></div>\n </div>\n <span class=\"font-mono text-neutral-200 text-right w-10\">\n {{ formatUtilization(item.utilization ?? null) }}\n </span>\n </div>\n <div class=\"font-mono text-neutral-500 text-right text-[10px]\">\n {{ formatResetCountdown(item.resetsAtMs) }}\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n </div>\n }\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 &middot; {{ instanceCount_$() }}\n </span>\n </h2>\n\n @if (!instanceCount_$() && !accountDS.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 accountDS.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"],
5
+ "mappings": "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",
6
+ "names": ["CC_Account_ApiService", "baseUrl", "environment", "api", "http", "inject", "HttpClient", "listAccounts", "firstValueFrom", "get", "refreshLocalAccounts", "post", "getInstanceMapping", "getAccount", "accountKey", "getAccountUsage", "refreshAccountUsage", "renameAccount", "params", "patch", "displayName", "factory", "\u0275fac", "providedIn", "SOCKET_EVENT_CC_ACCOUNT_USAGE_UPDATE", "SOCKET_EVENT_CC_ACCOUNT_LIST_UPDATE", "CC_Account_DataService", "accountApi", "inject", "CC_Account_ApiService", "socket_CS", "CCAP_Socket_ControlService", "ngZone", "NgZone", "socketSubscription", "accounts_$", "signal", "accountUsageMap_$", "Map", "instanceMapping_$", "isLoading_$", "loadError_$", "loadDashboardBootstrap", "__async", "set", "accountsResp", "mappingResp", "Promise", "all", "listAccounts", "getInstanceMapping", "items", "err", "errorMessageOf", "loadAccounts", "resp", "loadAccountUsage", "accountKey", "getAccountUsage", "next", "loadInstanceMapping", "refreshAccounts", "refreshResult", "refreshLocalAccounts", "refreshedKeys", "scannedPaths", "refreshAccountUsage", "result", "status", "windowsUpserted", "email", "renameAccount", "params", "updated", "map", "a", "startLiveUpdates", "event$", "subscribe", "envelope", "run", "event", "handleAccountUsageUpdate", "payload", "handleAccountListUpdate", "stopLiveUpdates", "unsubscribe", "ngOnDestroy", "windowType", "newItem", "utilization", "undefined", "resetsAtMs", "lastObservedStatus", "observedAt", "lastObservedByCcapId", "lastObservedBySessionId", "replaced", "get", "filter", "item", "push", "_payload", "Error", "message", "rec", "String", "factory", "\u0275fac", "providedIn", "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\u0275textInterpolate", "account_r2", "email", "organizationId", "\u0275\u0275classMap", "ctx_r2", "tokenStatusBadgeClassOf", "tokenStatus", "\u0275\u0275property", "planTier", "windowType_r5", "windowLabelOf", "utilizationBarColorClass", "item_r4", "utilization", "\u0275\u0275styleProp", "utilizationPercent", "formatUtilization", "tmp_27_0", "undefined", "formatResetCountdown", "resetsAtMs", "\u0275\u0275template", "CC_UsageDashboard_Component_For_33_Conditional_24_For_2_Conditional_0_Template", "\u0275\u0275conditional", "tmp_21_0", "usageItemOfWindow", "accountKey", "\u0275\u0275repeaterCreate", "CC_UsageDashboard_Component_For_33_Conditional_24_For_2_Template", "\u0275\u0275repeaterTrackByIdentity", "\u0275\u0275repeater", "\u0275\u0275pureFunction0", "_c1", "CC_UsageDashboard_Component_For_33_Conditional_8_Template", "CC_UsageDashboard_Component_For_33_Conditional_13_Template", "CC_UsageDashboard_Component_For_33_Conditional_15_Template", "CC_UsageDashboard_Component_For_33_Conditional_16_Template", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r1", "$implicit", "\u0275\u0275nextContext", "\u0275\u0275resetView", "handleRefreshUsage", "CC_UsageDashboard_Component_For_33_Conditional_23_Template", "CC_UsageDashboard_Component_For_33_Conditional_24_Template", "avatarBgClassOf", "avatarLetterOf", "displayNameOf", "isRefreshingUsageOf", "\u0275\u0275classProp", "usageItemsOf", "length", "displayNameByAccountKey", "ak_r6", "slice", "pacingColorClassForFiveHour", "entry_r7", "items", "latestFiveHourUtilOf", "CC_UsageDashboard_Component_For_43_Conditional_8_Template", "ccapId", "tmp_11_0", "latestAccountKeyOf", "itemsCountOf", "CC_UsageDashboard_Component", "accountDS", "inject", "CC_Account_DataService", "isRefreshing_$", "signal", "isRefreshingAllUsage_$", "refreshingUsageKeys_$", "Set", "instanceCount_$", "computed", "instanceMapping_$", "instances", "ngOnInit", "loadDashboardBootstrap", "startLiveUpdates", "handleRefresh", "__async", "set", "refreshAccounts", "update", "next", "add", "refreshAccountUsage", "delete", "handleRefreshAllUsage", "keys", "accounts_$", "map", "a", "Promise", "all", "k", "accountUsageMap_$", "get", "windowType", "item", "isFinite", "diffMs", "Date", "now", "totalMinutes", "Math", "floor", "days", "hours", "minutes", "has", "account", "name", "trim", "charAt", "toUpperCase", "palette", "hash", "i", "charCodeAt", "max", "min", "round", "displayName", "latest", "observedAt", "parse", "b", "found", "find", "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_33_Template", "_forTrack0", "CC_UsageDashboard_Component_Conditional_41_Template", "CC_UsageDashboard_Component_For_43_Template", "_forTrack1", "isLoading_$", "tmp_9_0", "loadError_$", "tmp_15_0", "_c0", "CommonModule", "encapsulation"]
7
+ }