@agentunion/kite 1.4.0 → 1.6.0

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 (718) hide show
  1. package/.claude/skills/kite/checklists/feature-checklist.md +496 -0
  2. package/.claude/skills/kite/references/event-patterns.md +180 -0
  3. package/.claude/skills/kite/references/health-check.md +202 -0
  4. package/.claude/skills/kite/references/http-service.md +199 -0
  5. package/.claude/skills/kite/references/module-md-spec.md +172 -0
  6. package/.claude/skills/kite/references/multi-connection.md +147 -0
  7. package/.claude/skills/kite/references/rpc-patterns.md +199 -0
  8. package/.claude/skills/kite/references/shutdown-sequence.md +146 -0
  9. package/.claude/skills/kite/references/stdin-protocol.md +147 -0
  10. package/.claude/skills/kite/references/test-center-integration.md +178 -0
  11. package/.claude/skills/kite/references/ws-lifecycle.md +301 -0
  12. package/.claude/skills/kite/skill.md +272 -0
  13. package/.claude/skills/kite/templates/go/README.md +20 -0
  14. package/.claude/skills/kite/templates/node/entry.js +134 -0
  15. package/.claude/skills/kite/templates/node/module.md +16 -0
  16. package/.claude/skills/kite/templates/node/server.js +351 -0
  17. package/.claude/skills/kite/templates/node/server_http.js +90 -0
  18. package/.claude/skills/kite/templates/python/entry.py +425 -0
  19. package/.claude/skills/kite/templates/python/module.md +26 -0
  20. package/.claude/skills/kite/templates/python/server.py +447 -0
  21. package/.claude/skills/kite/templates/python/server_http.py +433 -0
  22. package/CHANGELOG.md +102 -0
  23. package/cli.js +78 -5
  24. package/core/dependency_checker.py +250 -0
  25. package/core/env_checker.py +586 -0
  26. package/dependencies_lock.json +128 -0
  27. package/docs/05-/347/237/255/344/277/241/350/256/244/350/257/201/344/270/216/347/224/250/346/210/267/344/277/241/346/201/257/346/216/245/345/217/243/346/226/207/346/241/243.md +507 -0
  28. package/docs/ACP/345/215/217/350/256/256/345/205/274/345/256/271/346/226/271/346/241/210.md +138 -0
  29. package/docs/CI/344/270/216AI/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/346/226/271/346/241/210.md +75 -0
  30. package/docs/CLI/345/274/200/345/217/221/350/256/241/345/210/222.md +595 -0
  31. package/docs/ClaudeCode/350/277/234/347/250/213/345/215/217/344/275/234/347/263/273/347/273/237-/346/212/200/346/234/257/350/257/204/344/274/260.md +535 -0
  32. package/docs/ClaudeCode/350/277/234/347/250/213/345/215/217/344/275/234/347/263/273/347/273/237/350/256/276/350/256/241.md +631 -0
  33. package/docs/Evol-App/344/275/277/347/224/250KernelClient/346/224/271/351/200/240/345/256/214/346/210/220.md +342 -0
  34. package/docs/Evol/346/216/247/345/210/266/345/217/260/346/217/222/344/273/266/345/214/226/346/236/266/346/236/204/346/246/202/350/246/201.md +604 -0
  35. package/docs/Evol/346/216/247/345/210/266/345/217/260/346/217/222/344/273/266/345/214/226/346/236/266/346/236/204/350/256/276/350/256/241.md +1708 -0
  36. package/docs/Evol/346/250/241/345/235/227/350/256/276/350/256/241/346/226/271/346/241/210.md +1154 -0
  37. package/docs/Evol/351/241/265/351/235/242/346/217/222/344/273/266/345/214/226-Evol/346/250/241/345/235/227/345/256/236/346/226/275/346/214/207/345/215/227.md +403 -0
  38. package/docs/Evol/351/241/265/351/235/242/346/217/222/344/273/266/345/214/226-/345/244/226/351/203/250/346/250/241/345/235/227/346/216/245/345/205/245/346/214/207/345/215/227.md +468 -0
  39. package/docs/HTTP-RPC/350/277/201/347/247/273/345/210/260WebSocket/350/256/241/345/210/222.md +318 -0
  40. package/docs/INDEX.md +388 -0
  41. package/docs/KITE_DOCS_GUIDE.md +33 -0
  42. package/docs/Kernel-Client-Kite-Token/346/224/257/346/214/201/345/256/236/346/226/275/345/256/214/346/210/220.md +330 -0
  43. package/docs/Kernel/344/270/273/345/212/250Ping/346/234/272/345/210/266-/346/255/243/347/241/256/345/256/236/347/216/260.md +235 -0
  44. package/docs/Kernel/344/270/273/345/212/250Ping/346/234/272/345/210/266/345/256/236/346/226/275/346/200/273/347/273/223.md +204 -0
  45. package/docs/Kite/345/256/211/350/243/205/351/227/256/351/242/230/350/247/243/345/206/263/346/226/271/346/241/210.md +362 -0
  46. package/docs/Kite/346/216/247/345/210/266/345/217/260/346/217/222/344/273/266/345/214/226/346/236/266/346/236/204/350/256/276/350/256/241-/347/273/210/346/236/201/347/233/256/346/240/207.md +721 -0
  47. package/docs/Kite/346/216/247/345/210/266/345/217/260/347/273/237/344/270/200WebSocket/346/224/271/351/200/240/346/226/271/346/241/210.md +821 -0
  48. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/01-/346/241/206/346/236/266/345/256/232/344/275/215.md +12 -0
  49. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/02-/346/240/270/345/277/203/346/246/202/345/277/265.md +341 -0
  50. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/03-/347/263/273/347/273/237/346/236/266/346/236/204.md +257 -0
  51. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/04-/346/250/241/345/235/227/350/247/204/350/214/203.md +263 -0
  52. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/05-/346/240/270/345/277/203/346/265/201/347/250/213-/346/226/260/347/211/210.md +267 -0
  53. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/05-/346/240/270/345/277/203/346/265/201/347/250/213.md +149 -0
  54. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/06-/347/233/256/345/275/225/347/273/223/346/236/204.md +231 -0
  55. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/07-/346/225/260/346/215/256/346/250/241/345/236/213.md +68 -0
  56. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/08-/346/211/251/345/261/225/346/200/247.md +34 -0
  57. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/09-/344/270/216/345/205/267/344/275/223/345/272/224/347/224/250/347/232/204/345/205/263/347/263/273.md +22 -0
  58. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/README.md +46 -0
  59. package/docs/Kite/347/263/273/347/273/237/345/220/257/345/212/250/346/265/201/347/250/213.md +567 -0
  60. package/docs/Launcher/345/220/257/345/212/250/345/231/250/346/226/207/346/241/243.md +745 -0
  61. package/docs/Polyglot/350/277/220/350/241/214/346/227/266/344/270/216Clawdbot/345/205/274/345/256/271/346/200/247/350/256/276/350/256/241.md +321 -0
  62. package/docs/Redis/344/270/216/346/250/241/345/235/227/345/244/232/345/256/236/344/276/213/346/226/271/346/241/210.md +438 -0
  63. package/docs/Relay-Kite-Token/350/256/244/350/257/201/345/256/236/346/226/275/345/256/214/346/210/220.md +178 -0
  64. package/docs/Relay-Token/346/235/203/351/231/220/351/205/215/347/275/256/351/252/214/350/257/201.md +113 -0
  65. package/docs/Watchdog/345/201/245/345/272/267/346/243/200/346/237/245/344/270/216WebSocket-Ping/346/234/272/345/210/266/345/210/206/346/236/220.md +367 -0
  66. package/docs/Watchdog/350/265/204/346/272/220/347/233/221/346/216/247/347/255/226/347/225/245.md +92 -0
  67. package/docs/WebSocket/346/216/245/346/224/266/345/276/252/347/216/257/346/255/273/351/224/201/351/230/262/350/214/203/350/247/204/350/214/203.md +357 -0
  68. package/docs/WebSocket/350/277/236/346/216/245/351/237/247/346/200/247/344/270/216/351/207/215/350/277/236/346/234/272/345/210/266/345/256/214/346/225/264/346/226/271/346/241/210.md +531 -0
  69. package/docs/WebSocket/350/277/236/346/216/245/351/237/247/346/200/247/346/226/271/346/241/210.md +169 -0
  70. package/docs/WebSocket/351/207/215/350/277/236/346/234/272/345/210/266/346/265/213/350/257/225/346/212/245/345/221/212.md +169 -0
  71. package/docs/WebSocket/351/207/215/350/277/236/351/200/200/351/201/277/346/234/272/345/210/266/346/226/271/346/241/210.md +394 -0
  72. package/docs/Web/346/250/241/345/235/227/344/270/216Evol/346/250/241/345/235/227/351/207/215/346/236/204/345/210/206/346/236/220.md +521 -0
  73. package/docs/audit-api-guide.md +68 -0
  74. package/docs/audit-module-design.md +315 -0
  75. package/docs/audit-module-implementation-summary.md +149 -0
  76. package/docs/llm-context-design.md +52 -0
  77. package/docs/llm-test-enhancement-plan.md +970 -0
  78. package/docs/logs-api-guide.md +42 -0
  79. package/docs/npm/345/214/205Python/347/216/257/345/242/203/347/256/241/347/220/206/346/226/271/346/241/210.md +302 -0
  80. package/docs/npm/345/217/221/345/270/203/344/270/216CLI/344/275/277/347/224/250/346/214/207/345/215/227.md +245 -0
  81. package/docs/stdio/344/270/216/347/253/257/345/217/243/345/217/221/347/216/260/351/207/215/346/236/204.md +480 -0
  82. package/docs/web/346/250/241/345/235/227/344/270/255/350/275/254/346/234/215/345/212/241/350/256/276/350/256/241/346/226/271/346/241/210.md +449 -0
  83. package/docs//344/272/213/344/273/266/345/244/204/347/220/206/346/234/272/345/210/266.md +388 -0
  84. package/docs//344/272/213/344/273/266/345/244/204/347/220/206/350/247/204/350/214/203.md +113 -0
  85. package/docs//344/272/213/344/273/266/350/256/242/351/230/205/351/200/232/351/205/215/347/254/246/350/247/204/350/214/203.md +256 -0
  86. package/docs//344/272/213/344/273/266/351/230/237/345/210/227/345/274/271/346/200/247/347/256/241/347/220/206.md +449 -0
  87. package/docs//344/272/244/344/272/222/345/274/217/347/273/210/347/253/257/346/216/247/345/210/266/346/226/271/346/241/210.md +301 -0
  88. package/docs//344/273/243/347/220/206/345/220/257/345/212/250/345/231/250/344/270/216/345/256/271/345/231/250/345/214/226.md +140 -0
  89. package/docs//344/273/243/347/240/201/347/273/237/350/256/241/345/267/245/345/205/267/344/275/277/347/224/250/350/257/264/346/230/216.md +217 -0
  90. package/docs//344/274/230/351/233/205/351/200/200/345/207/272/350/247/204/350/214/203.md +362 -0
  91. package/docs//344/276/235/350/265/226/347/256/241/347/220/206/350/257/264/346/230/216.md +141 -0
  92. package/docs//344/277/256/345/244/215/346/235/203/351/231/220/351/227/256/351/242/230-evol-RPC/346/235/203/351/231/220.md +268 -0
  93. package/docs//345/210/240/351/231/244kernel-client-example/345/256/214/346/210/220.md +309 -0
  94. package/docs//345/210/240/351/231/244ws-management/345/256/214/346/210/220.md +418 -0
  95. package/docs//345/220/257/345/212/250/344/274/230/345/214/226/346/226/271/346/241/210.md +522 -0
  96. package/docs//345/220/257/345/212/250/344/276/235/350/265/226/344/270/216/346/216/222/345/272/217.md +105 -0
  97. package/docs//345/256/211/350/243/205/350/204/232/346/234/254/345/274/200/345/217/221/346/226/207/346/241/243.md +643 -0
  98. package/docs//345/256/214/346/225/264/345/220/257/345/212/250/346/265/201/347/250/213/350/256/276/350/256/241.md +452 -0
  99. package/docs//345/256/236/347/216/260/350/247/204/345/210/222.md +195 -0
  100. package/docs//345/277/203/350/267/263/346/234/272/345/210/266/351/207/215/346/236/204/346/200/273/347/273/223.md +166 -0
  101. package/docs//346/217/241/346/211/213/350/256/244/350/257/201/346/226/271/346/241/210-/345/256/211/345/205/250/345/256/241/346/237/245.md +176 -0
  102. package/docs//346/217/241/346/211/213/350/256/244/350/257/201/346/226/271/346/241/210.md +908 -0
  103. package/docs//346/226/207/346/241/243/346/233/264/346/226/260/346/270/205/345/215/225.md +83 -0
  104. package/docs//346/227/245/345/277/227/344/270/216/345/274/202/345/270/270/345/244/204/347/220/206/350/247/204/350/214/203.md +829 -0
  105. package/docs//346/227/245/345/277/227/350/260/203/350/257/225/345/256/236/346/210/230/346/214/207/345/215/227.md +25 -0
  106. package/docs//346/236/266/346/236/204/345/200/237/351/211/264/346/214/207/345/215/227.md +977 -0
  107. package/docs//346/236/266/346/236/204/346/224/271/351/200/240-/345/256/214/346/210/220/346/200/273/347/273/223.md +440 -0
  108. package/docs//346/236/266/346/236/204/347/216/260/347/212/266/344/270/216/347/273/210/346/236/201/347/233/256/346/240/207/345/257/271/346/257/224/345/210/206/346/236/220.md +508 -0
  109. package/docs//346/250/241/345/235/227/345/244/232/350/277/236/346/216/245/346/216/247/345/210/266/347/255/226/347/225/245.md +220 -0
  110. package/docs//346/250/241/345/235/227/345/256/211/350/243/205/346/234/272/345/210/266/350/256/276/350/256/241.md +500 -0
  111. package/docs//346/250/241/345/235/227/345/274/200/345/217/221/346/214/207/345/215/227.md +1824 -0
  112. package/docs//346/250/241/345/235/227/347/203/255/346/233/264/346/226/260.md +89 -0
  113. package/docs//346/250/241/345/235/227/350/277/234/347/250/213/351/203/250/347/275/262/345/274/200/345/217/221/350/247/204/350/214/203.md +460 -0
  114. package/docs//346/250/241/345/235/227/351/200/200/345/207/272/346/234/272/345/210/266/345/256/214/346/225/264/346/226/271/346/241/210.md +303 -0
  115. package/docs//346/250/241/345/235/227/351/205/215/347/275/256/345/212/240/350/275/275/344/270/216/347/203/255/351/207/215/350/275/275/350/247/204/350/214/203.md +369 -0
  116. package/docs//346/265/213/350/257/225/344/270/255/345/277/203/346/267/273/345/212/240/346/250/241/345/235/227/346/265/213/350/257/225/346/214/207/345/215/227.md +147 -0
  117. package/docs//347/211/210/346/234/254/351/224/201/345/256/232/347/216/257/345/242/203/347/256/241/347/220/206/346/226/271/346/241/210.md +331 -0
  118. package/docs//347/216/257/345/242/203/345/217/230/351/207/217/344/270/216/350/277/220/350/241/214/346/227/266/347/233/256/345/275/225/350/256/276/350/256/241.md +499 -0
  119. package/docs//347/216/257/345/242/203/347/256/241/347/220/206/345/256/214/346/225/264/346/226/271/346/241/210.md +334 -0
  120. package/docs//350/231/232/346/213/237/346/250/241/345/235/227/344/270/255/350/275/254/346/234/215/345/212/241/345/256/214/346/225/264/350/256/276/350/256/241.md +1496 -0
  121. package/docs//350/231/232/346/213/237/347/216/257/345/242/203/345/267/245/344/275/234/345/216/237/347/220/206.md +163 -0
  122. package/docs//350/256/241/345/210/222/347/256/241/347/220/206/345/231/250/344/275/277/347/224/250/346/214/207/345/215/227.md +196 -0
  123. package/docs//350/256/244/350/257/201/346/250/241/345/235/227/344/270/216Gateway/350/256/276/350/256/241/346/226/271/346/241/210.md +765 -0
  124. package/docs//350/277/234/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/346/227/247/347/211/210.md +1117 -0
  125. package/docs//350/277/234/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241.md +451 -0
  126. package/docs//351/207/215/346/236/204/346/234/272/345/210/266/346/270/205/345/215/225.md +192 -0
  127. package/docs//351/223/276/350/267/257/350/277/275/350/270/252/346/226/271/346/241/210.md +242 -0
  128. package/docs//351/231/215/347/272/247/347/255/226/347/225/245/350/256/276/350/256/241/346/226/271/346/241/210.md +618 -0
  129. package/extensions/agents/assistant/entry.py +113 -14
  130. package/extensions/agents/assistant/module.md +27 -22
  131. package/extensions/agents/assistant/server.py +308 -106
  132. package/extensions/channels/acp_channel/entry.py +114 -16
  133. package/extensions/channels/acp_channel/module.md +4 -0
  134. package/extensions/channels/acp_channel/server.py +412 -105
  135. package/extensions/channels/phone_channel/__init__.py +1 -0
  136. package/extensions/channels/phone_channel/entry.py +503 -0
  137. package/extensions/channels/phone_channel/module.md +31 -0
  138. package/extensions/channels/phone_channel/server.py +686 -0
  139. package/extensions/event_hub_bench/entry.py +55 -12
  140. package/extensions/event_hub_bench/module.md +27 -27
  141. package/extensions/services/audit/README.md +134 -0
  142. package/extensions/services/audit/collector.py +73 -0
  143. package/extensions/services/audit/entry.py +444 -0
  144. package/extensions/services/audit/module.md +66 -0
  145. package/extensions/services/audit/query_audit.py +111 -0
  146. package/extensions/services/audit/routes/__init__.py +1 -0
  147. package/extensions/services/audit/routes/routes_audit.py +113 -0
  148. package/extensions/services/audit/schemas/__init__.py +5 -0
  149. package/extensions/services/audit/schemas/audit_event.py +92 -0
  150. package/extensions/services/audit/server.py +542 -0
  151. package/extensions/services/audit/storage.py +95 -0
  152. package/extensions/services/auth/entry.py +1054 -0
  153. package/extensions/services/auth/module.md +31 -0
  154. package/extensions/services/auth/token_store.py +185 -0
  155. package/extensions/services/auth/verifiers/evol_account.py +101 -0
  156. package/extensions/services/auth/verifiers/kite_token.py +38 -0
  157. package/extensions/services/auth/verifiers/pairing_code.py +71 -0
  158. package/extensions/services/backup/entry.py +505 -201
  159. package/extensions/services/backup/module.md +4 -2
  160. package/extensions/services/dataclaw/api/__init__.py +0 -0
  161. package/extensions/services/dataclaw/api/admin.py +367 -0
  162. package/extensions/services/dataclaw/api/copyright.py +175 -0
  163. package/extensions/services/dataclaw/api/credits.py +177 -0
  164. package/extensions/services/dataclaw/api/data.py +179 -0
  165. package/extensions/services/dataclaw/api/demands.py +269 -0
  166. package/extensions/services/dataclaw/api/feeds.py +262 -0
  167. package/extensions/services/dataclaw/api/identity.py +505 -0
  168. package/extensions/services/dataclaw/api/notifications.py +104 -0
  169. package/extensions/services/dataclaw/api/reviews.py +138 -0
  170. package/extensions/services/dataclaw/api/search.py +153 -0
  171. package/extensions/services/dataclaw/api/subscriptions.py +157 -0
  172. package/extensions/services/dataclaw/config.json5 +96 -0
  173. package/extensions/services/dataclaw/core/__init__.py +0 -0
  174. package/extensions/services/dataclaw/core/auth.py +95 -0
  175. package/extensions/services/dataclaw/core/config.py +50 -0
  176. package/extensions/services/dataclaw/core/database.py +70 -0
  177. package/extensions/services/dataclaw/entry.py +416 -0
  178. package/extensions/services/dataclaw/gofeed/351/241/271/347/233/256/346/211/200/346/234/211/346/235/203/350/275/254/347/247/273/346/265/201/347/250/213/350/257/264/346/230/216.md +309 -0
  179. package/extensions/services/dataclaw/migrate.py +283 -0
  180. package/extensions/services/dataclaw/models/__init__.py +0 -0
  181. package/extensions/services/dataclaw/module.md +49 -0
  182. package/extensions/services/dataclaw/requirements.txt +18 -0
  183. package/extensions/services/dataclaw/server.py +759 -0
  184. package/extensions/services/dataclaw/services/__init__.py +0 -0
  185. package/extensions/services/dataclaw/services/agent_service.py +132 -0
  186. package/extensions/services/dataclaw/services/credit_service.py +235 -0
  187. package/extensions/services/dataclaw/services/email_service.py +140 -0
  188. package/extensions/services/dataclaw/services/feed_service.py +259 -0
  189. package/extensions/services/dataclaw/services/notification_service.py +209 -0
  190. package/extensions/services/dataclaw/services/oauth_service.py +275 -0
  191. package/extensions/services/dataclaw/services/pricing.py +102 -0
  192. package/extensions/services/dataclaw/services/quality.py +79 -0
  193. package/extensions/services/dataclaw/services/reputation.py +142 -0
  194. package/extensions/services/dataclaw/services/sms_service.py +174 -0
  195. package/extensions/services/dataclaw/static/css/common.css +853 -0
  196. package/extensions/services/dataclaw/static/css/themes/blue.css +42 -0
  197. package/extensions/services/dataclaw/static/css/themes/dark.css +42 -0
  198. package/extensions/services/dataclaw/static/css/themes/light.css +35 -0
  199. package/extensions/services/dataclaw/static/js/api.js +103 -0
  200. package/extensions/services/dataclaw/static/js/common.js +321 -0
  201. package/extensions/services/dataclaw/static/js/i18n.js +95 -0
  202. package/extensions/services/dataclaw/static/js/pages/admin.js +152 -0
  203. package/extensions/services/dataclaw/static/js/pages/dashboard.js +82 -0
  204. package/extensions/services/dataclaw/static/js/pages/feed-detail.js +180 -0
  205. package/extensions/services/dataclaw/static/js/pages/feed-manage.js +158 -0
  206. package/extensions/services/dataclaw/static/js/theme.js +46 -0
  207. package/extensions/services/dataclaw/static/locales/en-US.json +464 -0
  208. package/extensions/services/dataclaw/static/locales/ja-JP.json +464 -0
  209. package/extensions/services/dataclaw/static/locales/zh-CN.json +464 -0
  210. package/extensions/services/dataclaw/templates/admin/index.html +90 -0
  211. package/extensions/services/dataclaw/templates/base.html +136 -0
  212. package/extensions/services/dataclaw/templates/credits/balance.html +106 -0
  213. package/extensions/services/dataclaw/templates/credits/deposit.html +164 -0
  214. package/extensions/services/dataclaw/templates/credits/history.html +90 -0
  215. package/extensions/services/dataclaw/templates/dashboard.html +52 -0
  216. package/extensions/services/dataclaw/templates/demands/create.html +78 -0
  217. package/extensions/services/dataclaw/templates/demands/detail.html +136 -0
  218. package/extensions/services/dataclaw/templates/demands/list.html +94 -0
  219. package/extensions/services/dataclaw/templates/feeds/create.html +95 -0
  220. package/extensions/services/dataclaw/templates/feeds/detail.html +110 -0
  221. package/extensions/services/dataclaw/templates/feeds/list.html +110 -0
  222. package/extensions/services/dataclaw/templates/feeds/manage.html +88 -0
  223. package/extensions/services/dataclaw/templates/index.html +185 -0
  224. package/extensions/services/dataclaw/templates/login.html +246 -0
  225. package/extensions/services/dataclaw/templates/register.html +164 -0
  226. package/extensions/services/dataclaw/templates/settings/notifications.html +96 -0
  227. package/extensions/services/dataclaw/templates/settings/profile.html +167 -0
  228. package/extensions/services/dataclaw/templates/subscriptions/list.html +64 -0
  229. package/extensions/services/dataclaw/tests/__init__.py +0 -0
  230. package/extensions/services/dataclaw/tests/conftest.py +68 -0
  231. package/extensions/services/dataclaw/tests/integration/__init__.py +0 -0
  232. package/extensions/services/dataclaw/tests/integration/test_workflows.py +239 -0
  233. package/extensions/services/dataclaw/tests/unit/__init__.py +0 -0
  234. package/extensions/services/dataclaw/tests/unit/test_admin.py +70 -0
  235. package/extensions/services/dataclaw/tests/unit/test_copyright.py +63 -0
  236. package/extensions/services/dataclaw/tests/unit/test_credits.py +80 -0
  237. package/extensions/services/dataclaw/tests/unit/test_data.py +98 -0
  238. package/extensions/services/dataclaw/tests/unit/test_demands.py +106 -0
  239. package/extensions/services/dataclaw/tests/unit/test_feeds.py +98 -0
  240. package/extensions/services/dataclaw/tests/unit/test_identity.py +88 -0
  241. package/extensions/services/dataclaw/tests/unit/test_notifications.py +36 -0
  242. package/extensions/services/dataclaw/tests/unit/test_reviews.py +68 -0
  243. package/extensions/services/dataclaw/tests/unit/test_search.py +64 -0
  244. package/extensions/services/dataclaw/tests/unit/test_subscriptions.py +65 -0
  245. package/extensions/services/dataclaw/tests/unit/test_system.py +106 -0
  246. package/extensions/services/dataclaw/utils/__init__.py +0 -0
  247. package/extensions/services/dataclaw/utils/crypto.py +38 -0
  248. package/extensions/services/dataclaw/utils/id_generator.py +52 -0
  249. package/extensions/services/dataclaw/ws/__init__.py +0 -0
  250. package/extensions/services/dataclaw/ws/handler.py +163 -0
  251. package/extensions/services/dataclaw//345/215/217/350/256/2561-/351/241/271/347/233/256/346/235/241/344/273/266/346/216/210/346/235/203/344/270/216/350/202/241/346/235/203/345/257/271/344/273/267/345/215/217/350/256/256.md +243 -0
  252. package/extensions/services/dataclaw//345/215/217/350/256/2562-/351/241/271/347/233/256/350/264/255/344/271/260/346/235/203/344/270/216/345/244/226/345/214/205/345/247/224/346/211/230/345/274/200/345/217/221/345/215/217/350/256/256.md +434 -0
  253. package/extensions/services/evol/__init__.py +1 -0
  254. package/extensions/services/evol/async_http.py +551 -0
  255. package/extensions/services/evol/auth_manager.py +602 -0
  256. package/extensions/services/evol/config.json5 +16 -0
  257. package/extensions/services/evol/config_loader.py +117 -0
  258. package/extensions/services/evol/entry.py +568 -0
  259. package/extensions/services/evol/evol_api.py +969 -0
  260. package/extensions/services/evol/evol_config.json5 +29 -0
  261. package/extensions/services/evol/mfa_totp.py +77 -0
  262. package/extensions/services/evol/migrate_tokens.py +122 -0
  263. package/extensions/services/evol/module.md +150 -0
  264. package/extensions/services/evol/nonce_pool.py +113 -0
  265. package/extensions/services/evol/oauth_manager.py +223 -0
  266. package/extensions/services/evol/pairing.py +251 -0
  267. package/extensions/services/evol/pairing_codes.jsonl +2 -0
  268. package/extensions/services/evol/relay.py +1031 -0
  269. package/extensions/services/evol/relay_config.json5 +85 -0
  270. package/extensions/services/evol/routes/__init__.py +1 -0
  271. package/extensions/services/evol/routes/routes_llm.py +231 -0
  272. package/extensions/services/evol/routes/routes_rpc.py +90 -0
  273. package/extensions/services/evol/routes/routes_test.py +68 -0
  274. package/extensions/services/evol/server.py +2426 -0
  275. package/extensions/services/evol/static/assets/CommissionView-Cs_ys6Gm.js +1 -0
  276. package/extensions/services/evol/static/assets/CommissionView-DACet_Oo.css +1 -0
  277. package/extensions/services/evol/static/assets/IframePage-DbO11U9G.js +1 -0
  278. package/extensions/services/evol/static/assets/IframePage-c572lT8i.css +1 -0
  279. package/extensions/services/evol/static/assets/TeamDetailView-DULrGD7k.css +1 -0
  280. package/extensions/services/evol/static/assets/TeamDetailView-gy_MBEqG.js +139 -0
  281. package/extensions/services/evol/static/assets/element-plus-Bd7pZkkM.js +63 -0
  282. package/extensions/services/evol/static/assets/index-CmMONKzG.css +1 -0
  283. package/extensions/services/evol/static/assets/index-D44bBe__.js +2 -0
  284. package/extensions/services/evol/static/assets/vue-vendor-DtF-__I4.js +29 -0
  285. package/extensions/services/evol/static/index.html +16 -0
  286. package/extensions/services/evol/static/logo.png +0 -0
  287. package/extensions/services/evol/stats_manager.py +243 -0
  288. package/extensions/services/evol/web/README.md +89 -0
  289. package/extensions/services/evol/web/build.bat +44 -0
  290. package/extensions/services/evol/web/index.html +13 -0
  291. package/extensions/services/evol/web/package-lock.json +1718 -0
  292. package/extensions/services/evol/web/package.json +26 -0
  293. package/extensions/services/evol/web/public/logo.png +0 -0
  294. package/extensions/services/evol/web/src/App.vue +7 -0
  295. package/extensions/services/evol/web/src/components/layout/AppHeader.vue +202 -0
  296. package/extensions/services/evol/web/src/components/layout/AppLayout.vue +61 -0
  297. package/extensions/services/evol/web/src/components/layout/AppSidebar.vue +115 -0
  298. package/extensions/services/evol/web/src/components/login/LoginPage.vue +271 -0
  299. package/extensions/services/evol/web/src/components/team/AddMemberModal.vue +181 -0
  300. package/extensions/services/evol/web/src/components/team/GroupTreeNode.vue +156 -0
  301. package/extensions/services/evol/web/src/components/team/TeamAlertConfig.vue +221 -0
  302. package/extensions/services/evol/web/src/components/team/TeamBillModal.vue +165 -0
  303. package/extensions/services/evol/web/src/components/team/TeamMembersAndGroups.vue +499 -0
  304. package/extensions/services/evol/web/src/components/team/TeamStatsPanel.vue +907 -0
  305. package/extensions/services/evol/web/src/components/team/TreeNode.vue +331 -0
  306. package/extensions/services/evol/web/src/components/team/stats/StatsExportProgress.vue +44 -0
  307. package/extensions/services/evol/web/src/components/team/stats/StatsHeader.vue +89 -0
  308. package/extensions/services/evol/web/src/components/team/stats/StatsMemberDetail.vue +415 -0
  309. package/extensions/services/evol/web/src/components/team/stats/StatsSummary.vue +42 -0
  310. package/extensions/services/evol/web/src/components/team/stats/helpers.ts +195 -0
  311. package/extensions/services/evol/web/src/components/team/stats/stats.css +741 -0
  312. package/extensions/services/evol/web/src/components/team/stats/useStatsApi.ts +114 -0
  313. package/extensions/services/evol/web/src/components/team/stats/useStatsCharts.ts +242 -0
  314. package/extensions/services/evol/web/src/components/team/stats/useStatsExport.ts +232 -0
  315. package/extensions/services/evol/web/src/composables/useFormatters.ts +42 -0
  316. package/extensions/services/evol/web/src/composables/useTheme.ts +52 -0
  317. package/extensions/services/evol/web/src/env.d.ts +7 -0
  318. package/extensions/services/evol/web/src/i18n/en.ts +361 -0
  319. package/extensions/services/evol/web/src/i18n/index.ts +36 -0
  320. package/extensions/services/evol/web/src/i18n/zh.ts +379 -0
  321. package/extensions/services/evol/web/src/main.ts +21 -0
  322. package/extensions/services/evol/web/src/router/index.ts +81 -0
  323. package/extensions/services/evol/web/src/services/kernel-client.ts +406 -0
  324. package/extensions/services/evol/web/src/stores/auth.ts +189 -0
  325. package/extensions/services/evol/web/src/stores/connection.ts +134 -0
  326. package/extensions/services/evol/web/src/stores/pages.ts +79 -0
  327. package/extensions/services/evol/web/src/styles/base.css +213 -0
  328. package/extensions/services/evol/web/src/styles/variables.css +138 -0
  329. package/extensions/services/evol/web/src/types/rpc.ts +35 -0
  330. package/extensions/services/evol/web/src/types/token.ts +87 -0
  331. package/extensions/services/evol/web/src/views/AccountView.vue +1532 -0
  332. package/extensions/services/evol/web/src/views/AiServiceView.vue +219 -0
  333. package/extensions/services/evol/web/src/views/CommissionView.vue +1220 -0
  334. package/extensions/services/evol/web/src/views/CreditsView.vue +131 -0
  335. package/extensions/services/evol/web/src/views/EndpointView.vue +163 -0
  336. package/extensions/services/evol/web/src/views/IframePage.vue +120 -0
  337. package/extensions/services/evol/web/src/views/TeamDetailView.vue +473 -0
  338. package/extensions/services/evol/web/src/views/TeamView.vue +332 -0
  339. package/extensions/services/evol/web/tsconfig.json +31 -0
  340. package/extensions/services/evol/web/tsconfig.node.json +10 -0
  341. package/extensions/services/evol/web/vite.config.ts +49 -0
  342. package/extensions/services/evolmem/__init__.py +0 -0
  343. package/extensions/services/evolmem/entry.py +387 -0
  344. package/extensions/services/evolmem/hooks/__init__.py +0 -0
  345. package/extensions/services/evolmem/hooks/assistant_stop.py +228 -0
  346. package/extensions/services/evolmem/hooks/common.py +76 -0
  347. package/extensions/services/evolmem/hooks/pre_tool_use.py +56 -0
  348. package/extensions/services/evolmem/hooks/session_end.py +133 -0
  349. package/extensions/services/evolmem/hooks/session_start.py +229 -0
  350. package/extensions/services/evolmem/hooks/user_prompt.py +122 -0
  351. package/extensions/services/evolmem/module.md +48 -0
  352. package/extensions/services/evolmem/prompts/00-server-info.md +28 -0
  353. package/extensions/services/evolmem/prompts/01-behavior.md +46 -0
  354. package/extensions/services/evolmem/prompts/02-summary-format.md +112 -0
  355. package/extensions/services/evolmem/prompts/03-file-query.md +92 -0
  356. package/extensions/services/evolmem/prompts/04-topic-stats.md +11 -0
  357. package/extensions/services/evolmem/prompts/05-recent-topics.md +84 -0
  358. package/extensions/services/evolmem/scripts/__init__.py +0 -0
  359. package/extensions/services/evolmem/scripts/extract_keywords.py +40 -0
  360. package/extensions/services/evolmem/scripts/search_topics.py +91 -0
  361. package/extensions/services/evolmem/server.py +641 -0
  362. package/extensions/services/gateway/entry.py +964 -0
  363. package/extensions/services/gateway/module.md +29 -0
  364. package/extensions/services/gateway/nonce_pool.py +65 -0
  365. package/extensions/services/gateway/relay.py +133 -0
  366. package/extensions/services/gateway/ws_server.py +285 -0
  367. package/extensions/services/kite_console/auth_manager.py +603 -0
  368. package/extensions/services/kite_console/config.json5 +19 -0
  369. package/extensions/services/kite_console/config_loader.py +117 -0
  370. package/extensions/services/kite_console/entry.py +528 -0
  371. package/extensions/services/kite_console/evol_api.py +179 -0
  372. package/extensions/services/kite_console/evol_config.json5 +29 -0
  373. package/extensions/services/kite_console/mfa_totp.py +77 -0
  374. package/extensions/services/kite_console/migrate_tokens.py +122 -0
  375. package/extensions/services/kite_console/module.md +37 -0
  376. package/extensions/services/kite_console/nonce_pool.py +113 -0
  377. package/extensions/services/kite_console/oauth_manager.py +223 -0
  378. package/extensions/services/kite_console/pairing.py +280 -0
  379. package/extensions/services/kite_console/pairing_codes.jsonl +2 -0
  380. package/extensions/services/kite_console/relay.py +1350 -0
  381. package/extensions/services/kite_console/relay_config.json5 +96 -0
  382. package/extensions/services/kite_console/routes/__init__.py +1 -0
  383. package/extensions/services/kite_console/routes/routes_llm.py +231 -0
  384. package/extensions/services/kite_console/routes/routes_proxy.py +115 -0
  385. package/extensions/services/kite_console/routes/routes_rpc.py +89 -0
  386. package/extensions/services/kite_console/routes/routes_test.py +68 -0
  387. package/extensions/services/kite_console/server.py +1742 -0
  388. package/extensions/services/kite_console/static/css/style.css +1854 -0
  389. package/extensions/services/kite_console/static/index.html +1524 -0
  390. package/extensions/services/kite_console/static/js/dialog.js +292 -0
  391. package/extensions/services/kite_console/static/js/evol-app.js +7740 -0
  392. package/extensions/services/kite_console/static/js/evol-app.js.backup +2777 -0
  393. package/extensions/services/kite_console/static/js/kernel-client.js +560 -0
  394. package/extensions/services/kite_console/static/js/kernel-client.js.backup +434 -0
  395. package/extensions/services/kite_console/static/js/registry-tests.js +592 -0
  396. package/extensions/services/kite_console/static/js/tests/ARCHITECTURE.md +67 -0
  397. package/extensions/services/kite_console/static/js/tests/README.md +140 -0
  398. package/extensions/services/kite_console/static/js/tests/index.js +161 -0
  399. package/extensions/services/kite_console/static/js/tests/integration/auth.js +120 -0
  400. package/extensions/services/kite_console/static/js/tests/integration/channel-interaction.js +188 -0
  401. package/extensions/services/kite_console/static/js/tests/integration/elastic-connection.js +115 -0
  402. package/extensions/services/kite_console/static/js/tests/integration/full-workflow.js +43 -0
  403. package/extensions/services/kite_console/static/js/tests/integration/multi-instance.js +304 -0
  404. package/extensions/services/kite_console/static/js/tests/integration/nested-rpc.js +266 -0
  405. package/extensions/services/kite_console/static/js/tests/integration/pingpong.js +25 -0
  406. package/extensions/services/kite_console/static/js/tests/integration/redis.js +227 -0
  407. package/extensions/services/kite_console/static/js/tests/integration/registry-core.js +52 -0
  408. package/extensions/services/kite_console/static/js/tests/integration/remote-deploy.js +85 -0
  409. package/extensions/services/kite_console/static/js/tests/integration/require-init.js +96 -0
  410. package/extensions/services/kite_console/static/js/tests/integration/scaling-control.js +193 -0
  411. package/extensions/services/kite_console/static/js/tests/integration/trace.js +109 -0
  412. package/extensions/services/kite_console/static/js/tests/modules/acp_channel.js +339 -0
  413. package/extensions/services/kite_console/static/js/tests/modules/auth.js +96 -0
  414. package/extensions/services/kite_console/static/js/tests/modules/backup.js +49 -0
  415. package/extensions/services/kite_console/static/js/tests/modules/gateway.js +41 -0
  416. package/extensions/services/kite_console/static/js/tests/modules/kernel.js +90 -0
  417. package/extensions/services/kite_console/static/js/tests/modules/launcher.js +75 -0
  418. package/extensions/services/kite_console/static/js/tests/modules/multi_instance.js +129 -0
  419. package/extensions/services/kite_console/static/js/tests/modules/phone_channel.js +364 -0
  420. package/extensions/services/kite_console/static/js/tests/modules/redis.js +178 -0
  421. package/extensions/services/kite_console/static/js/tests/modules/watchdog.js +60 -0
  422. package/extensions/services/kite_console/static/js/tests/modules/web.js +70 -0
  423. package/extensions/services/kite_console/static/js/tests/test-runner.js +123 -0
  424. package/extensions/services/kite_console/static/js/virtual-list.js +200 -0
  425. package/extensions/services/kite_console/static/pairing.html +248 -0
  426. package/extensions/services/kite_console/static/test_kernel_client_token.html +352 -0
  427. package/extensions/services/kite_console/static/test_registry.html +262 -0
  428. package/extensions/services/kite_console/static/test_relay.html +462 -0
  429. package/extensions/services/kite_console/stats_manager.py +247 -0
  430. package/extensions/services/logs/README.md +215 -0
  431. package/extensions/services/logs/api_logger.py +37 -0
  432. package/extensions/services/logs/baseline.py +121 -0
  433. package/extensions/services/logs/cleaner.py +76 -0
  434. package/extensions/services/logs/entry.py +449 -0
  435. package/extensions/services/logs/formatter.py +129 -0
  436. package/extensions/services/logs/module.md +38 -0
  437. package/extensions/services/logs/quick_diagnostic.py +128 -0
  438. package/extensions/services/logs/routes/__init__.py +1 -0
  439. package/extensions/services/logs/routes/routes_logs.py +218 -0
  440. package/extensions/services/logs/routes/routes_logs.py.backup +173 -0
  441. package/extensions/services/logs/scanner.py +100 -0
  442. package/extensions/services/logs/searcher.py +263 -0
  443. package/extensions/services/logs/server.py +553 -0
  444. package/extensions/services/logs.zip +0 -0
  445. package/extensions/services/model_service/config.json5 +30 -0
  446. package/extensions/services/model_service/entry.py +633 -162
  447. package/extensions/services/model_service/module.md +11 -2
  448. package/extensions/services/proxy/.claude/settings.local.json +13 -0
  449. package/extensions/services/proxy/__init__.py +0 -0
  450. package/extensions/services/proxy/agentcp/LICENCE +178 -0
  451. package/extensions/services/proxy/agentcp/README copy.md +85 -0
  452. package/extensions/services/proxy/agentcp/README.md +260 -0
  453. package/extensions/services/proxy/agentcp/__init__.py +16 -0
  454. package/extensions/services/proxy/agentcp/agent.py +4 -0
  455. package/extensions/services/proxy/agentcp/agentcp.py +2494 -0
  456. package/extensions/services/proxy/agentcp/agentprofile.json +89 -0
  457. package/extensions/services/proxy/agentcp/ap/__init__.py +16 -0
  458. package/extensions/services/proxy/agentcp/ap/ap_client.py +316 -0
  459. package/extensions/services/proxy/agentcp/assets/images/wechat_qr.png +0 -0
  460. package/extensions/services/proxy/agentcp/backup/metrics.json +31 -0
  461. package/extensions/services/proxy/agentcp/base/__init__.py +20 -0
  462. package/extensions/services/proxy/agentcp/base/auth_client.py +257 -0
  463. package/extensions/services/proxy/agentcp/base/client.py +112 -0
  464. package/extensions/services/proxy/agentcp/base/env.py +34 -0
  465. package/extensions/services/proxy/agentcp/base/html_util.py +336 -0
  466. package/extensions/services/proxy/agentcp/base/log.py +98 -0
  467. package/extensions/services/proxy/agentcp/ca/__init__.py +17 -0
  468. package/extensions/services/proxy/agentcp/ca/ca_client.py +414 -0
  469. package/extensions/services/proxy/agentcp/ca/ca_root.py +74 -0
  470. package/extensions/services/proxy/agentcp/context/__init__.py +20 -0
  471. package/extensions/services/proxy/agentcp/context/context.py +73 -0
  472. package/extensions/services/proxy/agentcp/context/exceptions.py +114 -0
  473. package/extensions/services/proxy/agentcp/create_profile.py +125 -0
  474. package/extensions/services/proxy/agentcp/create_profile_weather.py +125 -0
  475. package/extensions/services/proxy/agentcp/db/__init__.py +15 -0
  476. package/extensions/services/proxy/agentcp/db/db_mananger.py +550 -0
  477. package/extensions/services/proxy/agentcp/docs/UDP_HEARTBEAT_FIX_REPORT.md +265 -0
  478. package/extensions/services/proxy/agentcp/docs/heartbeat_issue_analysis.md +291 -0
  479. package/extensions/services/proxy/agentcp/file/__init__.py +16 -0
  480. package/extensions/services/proxy/agentcp/file/file_client.py +141 -0
  481. package/extensions/services/proxy/agentcp/file/wss_binary_message.py +137 -0
  482. package/extensions/services/proxy/agentcp/hcp.py +299 -0
  483. package/extensions/services/proxy/agentcp/heartbeat/__init__.py +16 -0
  484. package/extensions/services/proxy/agentcp/heartbeat/heartbeat_client.py +360 -0
  485. package/extensions/services/proxy/agentcp/improved_scheduler.py +498 -0
  486. package/extensions/services/proxy/agentcp/llm_agent_utils.py +249 -0
  487. package/extensions/services/proxy/agentcp/llm_server.py +172 -0
  488. package/extensions/services/proxy/agentcp/mermaid.py +210 -0
  489. package/extensions/services/proxy/agentcp/message.py +149 -0
  490. package/extensions/services/proxy/agentcp/metrics.py +256 -0
  491. package/extensions/services/proxy/agentcp/monitoring/__init__.py +20 -0
  492. package/extensions/services/proxy/agentcp/monitoring/global_monitor.py +27 -0
  493. package/extensions/services/proxy/agentcp/monitoring/metrics_store.py +325 -0
  494. package/extensions/services/proxy/agentcp/monitoring/monitoring_service.py +269 -0
  495. package/extensions/services/proxy/agentcp/monitoring/sliding_window.py +222 -0
  496. package/extensions/services/proxy/agentcp/monitoring/standalone_reader.py +224 -0
  497. package/extensions/services/proxy/agentcp/msg/__init__.py +21 -0
  498. package/extensions/services/proxy/agentcp/msg/connection_manager.py +456 -0
  499. package/extensions/services/proxy/agentcp/msg/message_client.py +2058 -0
  500. package/extensions/services/proxy/agentcp/msg/message_serialize.py +263 -0
  501. package/extensions/services/proxy/agentcp/msg/open_ai_message.py +88 -0
  502. package/extensions/services/proxy/agentcp/msg/session_manager.py +1062 -0
  503. package/extensions/services/proxy/agentcp/msg/stream_client.py +267 -0
  504. package/extensions/services/proxy/agentcp/msg/websocket_file_receiver.py +89 -0
  505. package/extensions/services/proxy/agentcp/msg/ws_logger.py +685 -0
  506. package/extensions/services/proxy/agentcp/msg/wss_binary_message.py +137 -0
  507. package/extensions/services/proxy/agentcp/requirements.txt +7 -0
  508. package/extensions/services/proxy/agentcp/samples/agent_graph/README.md +37 -0
  509. package/extensions/services/proxy/agentcp/samples/agent_graph/agentprofile.json +89 -0
  510. package/extensions/services/proxy/agentcp/samples/agent_graph/create_profile.py +138 -0
  511. package/extensions/services/proxy/agentcp/samples/agent_graph/main.py +164 -0
  512. package/extensions/services/proxy/agentcp/samples/agent_use/create_profile.py +123 -0
  513. package/extensions/services/proxy/agentcp/samples/agent_use/llm/create_profile.py +129 -0
  514. package/extensions/services/proxy/agentcp/samples/agent_use/llm/env.json +5 -0
  515. package/extensions/services/proxy/agentcp/samples/agent_use/llm/main.py +146 -0
  516. package/extensions/services/proxy/agentcp/samples/agent_use/main.py +123 -0
  517. package/extensions/services/proxy/agentcp/samples/agent_use/readme.md +379 -0
  518. package/extensions/services/proxy/agentcp/samples/agent_use/search/create_profile.py +129 -0
  519. package/extensions/services/proxy/agentcp/samples/agent_use/search/main.py +28 -0
  520. package/extensions/services/proxy/agentcp/samples/agent_use/tool/create_profile.py +129 -0
  521. package/extensions/services/proxy/agentcp/samples/agent_use/tool/main.py +20 -0
  522. package/extensions/services/proxy/agentcp/samples/ali_amap/README.md +97 -0
  523. package/extensions/services/proxy/agentcp/samples/ali_amap/amap_agent.py +88 -0
  524. package/extensions/services/proxy/agentcp/samples/ali_amap/create_profile.py +125 -0
  525. package/extensions/services/proxy/agentcp/samples/compute_agent/agent/powershell.py +228 -0
  526. package/extensions/services/proxy/agentcp/samples/compute_agent/agent/software.py +63 -0
  527. package/extensions/services/proxy/agentcp/samples/compute_agent/agent/tools.py +36 -0
  528. package/extensions/services/proxy/agentcp/samples/compute_agent/browser_user.py +41 -0
  529. package/extensions/services/proxy/agentcp/samples/deepseek/README.md +79 -0
  530. package/extensions/services/proxy/agentcp/samples/deepseek/create_profile.py +126 -0
  531. package/extensions/services/proxy/agentcp/samples/deepseek/deepseek.py +42 -0
  532. package/extensions/services/proxy/agentcp/samples/dify_chat/README.md +78 -0
  533. package/extensions/services/proxy/agentcp/samples/dify_chat/create_profile.py +126 -0
  534. package/extensions/services/proxy/agentcp/samples/dify_chat/dify_chat.py +47 -0
  535. package/extensions/services/proxy/agentcp/samples/dify_workflow/README.md +78 -0
  536. package/extensions/services/proxy/agentcp/samples/dify_workflow/create_profile.py +126 -0
  537. package/extensions/services/proxy/agentcp/samples/dify_workflow/dify_workflow.py +46 -0
  538. package/extensions/services/proxy/agentcp/samples/executor/README.md +44 -0
  539. package/extensions/services/proxy/agentcp/samples/executor/agentprofile.json +89 -0
  540. package/extensions/services/proxy/agentcp/samples/executor/create_profile.py +139 -0
  541. package/extensions/services/proxy/agentcp/samples/executor/main.py +160 -0
  542. package/extensions/services/proxy/agentcp/samples/filereader/README.md +45 -0
  543. package/extensions/services/proxy/agentcp/samples/filereader/agentprofile.json +90 -0
  544. package/extensions/services/proxy/agentcp/samples/filereader/create_profile.py +137 -0
  545. package/extensions/services/proxy/agentcp/samples/filereader/main.py +253 -0
  546. package/extensions/services/proxy/agentcp/samples/filewriter/README.md +38 -0
  547. package/extensions/services/proxy/agentcp/samples/filewriter/agentprofile.json +91 -0
  548. package/extensions/services/proxy/agentcp/samples/filewriter/create_profile.py +138 -0
  549. package/extensions/services/proxy/agentcp/samples/filewriter/main.py +289 -0
  550. package/extensions/services/proxy/agentcp/samples/hcp/README.md +85 -0
  551. package/extensions/services/proxy/agentcp/samples/hcp/acp_weather_agent.zip +0 -0
  552. package/extensions/services/proxy/agentcp/samples/hcp/create_profile.py +125 -0
  553. package/extensions/services/proxy/agentcp/samples/hcp/hcp.py +237 -0
  554. package/extensions/services/proxy/agentcp/samples/helloworld/README.md +68 -0
  555. package/extensions/services/proxy/agentcp/samples/helloworld/hello_world.py +40 -0
  556. package/extensions/services/proxy/agentcp/samples/llm_agent/MEADME.md +117 -0
  557. package/extensions/services/proxy/agentcp/samples/llm_agent/create_profile.py +125 -0
  558. package/extensions/services/proxy/agentcp/samples/llm_agent/qwen_agent.py +136 -0
  559. package/extensions/services/proxy/agentcp/samples/local_llm_agent/README.md +90 -0
  560. package/extensions/services/proxy/agentcp/samples/local_llm_agent/create_profile.py +125 -0
  561. package/extensions/services/proxy/agentcp/samples/local_llm_agent/main.py +49 -0
  562. package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/README.md +55 -0
  563. package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/create_profile.py +125 -0
  564. package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/main.py +23 -0
  565. package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/README.md +103 -0
  566. package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/create_profile.py +125 -0
  567. package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/main.py +69 -0
  568. package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/README.md +58 -0
  569. package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/create_profile.py +125 -0
  570. package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/main.py +25 -0
  571. package/extensions/services/proxy/agentcp/samples/qwen3/README.md +71 -0
  572. package/extensions/services/proxy/agentcp/samples/qwen3/create_profile.py +126 -0
  573. package/extensions/services/proxy/agentcp/samples/qwen3/qwen3.py +37 -0
  574. package/extensions/services/proxy/agentcp/samples/qwen3_tools/README.md +133 -0
  575. package/extensions/services/proxy/agentcp/samples/qwen3_tools/create_profile.py +126 -0
  576. package/extensions/services/proxy/agentcp/samples/qwen3_tools/qwen3_tools.py +98 -0
  577. package/extensions/services/proxy/agentcp/samples/search/create_profile_qwen.py +125 -0
  578. package/extensions/services/proxy/agentcp/samples/search/create_profile_search.py +125 -0
  579. package/extensions/services/proxy/agentcp/samples/search/qwen_agent.py +136 -0
  580. package/extensions/services/proxy/agentcp/samples/search/search_agent.py +170 -0
  581. package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/README.md +89 -0
  582. package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/create_profile.py +125 -0
  583. package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/main.py +44 -0
  584. package/extensions/services/proxy/agentcp/utils/__init__.py +15 -0
  585. package/extensions/services/proxy/agentcp/utils/file_util.py +117 -0
  586. package/extensions/services/proxy/agentcp/utils/proxy_bypass.py +99 -0
  587. package/extensions/services/proxy/agentcp/workflow.py +203 -0
  588. package/extensions/services/proxy/aid_manager.py +419 -0
  589. package/extensions/services/proxy/auth_bridge.py +182 -0
  590. package/extensions/services/proxy/config_store.py +79 -0
  591. package/extensions/services/proxy/entry.py +528 -0
  592. package/extensions/services/proxy/evol/__init__.py +1 -0
  593. package/extensions/services/proxy/evol/config.py +37 -0
  594. package/extensions/services/proxy/evol/http/__init__.py +1 -0
  595. package/extensions/services/proxy/evol/http/async_http.py +551 -0
  596. package/extensions/services/proxy/evol/log.py +28 -0
  597. package/extensions/services/proxy/evol/presenter/__init__.py +2 -0
  598. package/extensions/services/proxy/evol/presenter/agentIdPresenter.py +1031 -0
  599. package/extensions/services/proxy/evol/presenter/apikeyPresenter.py +96 -0
  600. package/extensions/services/proxy/evol/presenter/configPresenter.py +234 -0
  601. package/extensions/services/proxy/evol/presenter/userPresenter.py +71 -0
  602. package/extensions/services/proxy/evol/server/__init__.py +1 -0
  603. package/extensions/services/proxy/evol/server/claude_proxy_async.py +3434 -0
  604. package/extensions/services/proxy/evol/server/openclaw_proxy.py +1861 -0
  605. package/extensions/services/proxy/evol/server/proxy_config.py +15 -0
  606. package/extensions/services/proxy/evol/server/proxy_engine.py +501 -0
  607. package/extensions/services/proxy/evol/version.py +24 -0
  608. package/extensions/services/proxy/module.md +151 -0
  609. package/extensions/services/proxy/server.py +952 -0
  610. package/extensions/services/redis/ALIGNMENT_CHECKLIST.md +121 -0
  611. package/extensions/services/redis/ALIGNMENT_STATUS.md +548 -0
  612. package/extensions/services/redis/config.json5 +8 -0
  613. package/extensions/services/redis/entry.py +1509 -0
  614. package/extensions/services/redis/entry.py.backup +405 -0
  615. package/extensions/services/redis/module.md +48 -0
  616. package/extensions/services/redis/redis_builtin.py +332 -0
  617. package/extensions/services/redis/redis_external.py +164 -0
  618. package/extensions/services/testUi/entry.py +446 -0
  619. package/extensions/services/testUi/module.md +18 -0
  620. package/extensions/services/testUi/ui/cards.html +131 -0
  621. package/extensions/services/testUi/ui/index.html +22 -0
  622. package/extensions/services/testUi/ui/particles.html +143 -0
  623. package/extensions/services/watchdog/entry.py +1258 -767
  624. package/extensions/services/watchdog/module.md +3 -0
  625. package/extensions/services/watchdog/monitor.py +483 -75
  626. package/extensions/services/web/auth_manager.py +602 -0
  627. package/extensions/services/web/config.json5 +11 -0
  628. package/extensions/services/web/entry.py +598 -478
  629. package/extensions/services/web/mfa_totp.py +77 -0
  630. package/extensions/services/web/module.md +17 -14
  631. package/extensions/services/web/nonce_pool.py +113 -0
  632. package/extensions/services/web/oauth_manager.py +223 -0
  633. package/extensions/services/web/pairing.py +3 -2
  634. package/extensions/services/web/pairing_codes.jsonl +1 -0
  635. package/extensions/services/web/relay.py +442 -63
  636. package/extensions/services/web/relay_config.json5 +1 -2
  637. package/extensions/services/web/routes/routes_rpc.py +6 -6
  638. package/extensions/services/web/server.py +380 -181
  639. package/extensions/services/web/static/index.html +1752 -1738
  640. package/extensions/services/web/static/js/app.js +32 -0
  641. package/extensions/services/web/static/js/kernel-client.js +48 -9
  642. package/extensions/services/web/static/js/token-manager.js +10 -10
  643. package/extensions/services/web/vendor/bluetooth/audio.py +1 -1
  644. package/extensions/services/web/vendor/config.py +2 -2
  645. package/extensions/services/web/vendor/storage/identity.py +1 -1
  646. package/kernel/entry.py +77 -23
  647. package/kernel/event_hub.py +1122 -74
  648. package/kernel/module.md +26 -1
  649. package/kernel/registry_store.py +209 -36
  650. package/kernel/rpc_router.py +1400 -465
  651. package/kernel/server.py +1084 -108
  652. package/kite_cli/builders/__init__.py +4 -0
  653. package/kite_cli/builders/base.py +67 -0
  654. package/kite_cli/builders/custom.py +31 -0
  655. package/kite_cli/builders/detector.py +56 -0
  656. package/kite_cli/builders/go.py +34 -0
  657. package/kite_cli/builders/gradle.py +41 -0
  658. package/kite_cli/builders/maven.py +36 -0
  659. package/kite_cli/builders/npm.py +44 -0
  660. package/kite_cli/builders/python.py +37 -0
  661. package/kite_cli/commands/BUILD_GUIDE.md +109 -0
  662. package/kite_cli/commands/build.py +142 -0
  663. package/kite_cli/commands/check.py +60 -0
  664. package/kite_cli/commands/config.py +156 -0
  665. package/kite_cli/commands/deps.py +58 -0
  666. package/kite_cli/commands/deps_install.py +67 -0
  667. package/kite_cli/commands/disable.py +162 -0
  668. package/kite_cli/commands/enable.py +162 -0
  669. package/kite_cli/commands/env_check.py +45 -0
  670. package/kite_cli/commands/export.py +96 -0
  671. package/kite_cli/commands/import_cmd.py +110 -0
  672. package/kite_cli/commands/install.py +50 -23
  673. package/kite_cli/commands/install_skill.py +107 -0
  674. package/kite_cli/commands/list.py +128 -31
  675. package/kite_cli/commands/outdated.py +202 -0
  676. package/kite_cli/commands/prepare.py +49 -0
  677. package/kite_cli/commands/search.py +33 -17
  678. package/kite_cli/commands/update.py +115 -2
  679. package/kite_cli/commands/venv_setup.py +56 -0
  680. package/kite_cli/commands/why.py +48 -0
  681. package/kite_cli/core/config_manager.py +145 -0
  682. package/kite_cli/core/downloader.py +32 -2
  683. package/kite_cli/main.py +179 -5
  684. package/kite_cli/utils/colors.py +153 -0
  685. package/kite_cli/utils/dependency_graph.py +209 -0
  686. package/kite_cli/utils/process.py +55 -0
  687. package/kite_cli/utils/progress.py +207 -0
  688. package/kite_cli/utils/table.py +101 -0
  689. package/launcher/count_lines.py +192 -43
  690. package/launcher/entry.py +4543 -2517
  691. package/launcher/logging_setup.py +54 -1
  692. package/launcher/module.md +37 -2
  693. package/launcher/module_scanner.py +103 -20
  694. package/launcher/process_manager.py +355 -76
  695. package/main.py +10 -1
  696. package/package.json +11 -1
  697. package/python_version.json +4 -0
  698. package/requirements.txt +41 -0
  699. package/scripts/auto-fix-deps.py +128 -0
  700. package/scripts/env-manager.js +351 -0
  701. package/scripts/final-test.js +78 -0
  702. package/scripts/python-env.js +79 -0
  703. package/scripts/scan_dependencies.py +461 -0
  704. package/scripts/setup-python-env.js +700 -0
  705. package/scripts/test-alluser.js +48 -0
  706. package/scripts/test-different-version.js +86 -0
  707. package/scripts/test-direct.js +63 -0
  708. package/scripts/test-extract-installer.js +28 -0
  709. package/scripts/test-install-log.js +54 -0
  710. package/scripts/test-installer.js +39 -0
  711. package/scripts/test-integration.js +250 -0
  712. package/scripts/test-real-install.js +210 -0
  713. package/scripts/test-targetdir.js +49 -0
  714. package/scripts/test-venv-real.js +47 -0
  715. package/scripts/test-venv-simple.js +57 -0
  716. package/scripts/test-wait.js +49 -0
  717. package/scripts/test-with-log.js +63 -0
  718. package/extensions/services/web/config.yaml +0 -149
@@ -0,0 +1 @@
1
+ import{B as cs,k as ls,j as X,L as n,P as s,Z as t,u as a,X as r,R as b,F as g,ab as x,V as k,ap as C,e as m,m as H,H as c,Y as Q}from"./vue-vendor-DtF-__I4.js";import{a as ds,u as rs,b as ms,_ as us}from"./index-D44bBe__.js";import{a as vs,E as v}from"./element-plus-Bd7pZkkM.js";const _s={class:"commission-view"},hs={class:"page-title"},ys={class:"account-overview"},ps={class:"account-card"},ws={class:"account-label"},fs={class:"account-value primary"},bs={class:"account-card"},gs={class:"account-label"},ks={class:"account-value"},Cs={class:"account-card"},xs={class:"account-label"},Ss={class:"account-value"},As={key:0,class:"account-card"},Rs={class:"account-label"},Ts={class:"account-value small"},Ds={class:"commission-tabs"},Ls={class:"tab-content"},Is={key:0,class:"tab-panel"},Vs={key:0,class:"current-participation"},Ns={class:"section-title"},Es={class:"participation-card"},Ps={class:"participation-info"},Bs={class:"participation-name"},Fs={class:"participation-meta"},Ws={key:1,class:"empty-state"},Ms={class:"empty-text"},Us={class:"section-title",style:{"margin-top":"24px"}},js={key:2,class:"loading"},Os={key:3,class:"empty"},$s={key:4,class:"activities-list"},Ys={class:"activity-header"},qs={class:"activity-name"},Js={class:"activity-desc"},Xs={class:"activity-details"},Hs={class:"detail-item"},Qs={class:"detail-label"},zs={class:"detail-value"},Gs={key:0,class:"detail-item"},Zs={class:"detail-label"},Ks={class:"detail-value"},st={class:"detail-item"},tt={class:"detail-label"},it={class:"detail-value"},et={key:1,class:"ladder-rules"},ot={class:"detail-label"},at={class:"ladder-table"},nt={class:"ladder-rate"},ct={class:"activity-actions"},lt={key:0,class:"invite-code-input"},dt=["onUpdate:modelValue","placeholder"],rt=["disabled","onClick"],mt={key:2,class:"joined-badge"},ut={key:1,class:"tab-panel"},vt={key:0,class:"empty"},_t={key:1,class:"summary-list"},ht={class:"summary-header"},yt={class:"summary-grid"},pt={class:"summary-item"},wt={class:"summary-label"},ft={class:"summary-value primary"},bt={class:"summary-item"},gt={class:"summary-label"},kt={class:"summary-value"},Ct={class:"summary-item"},xt={class:"summary-label"},St={class:"summary-value"},At={class:"summary-item"},Rt={class:"summary-label"},Tt={class:"summary-value"},Dt={key:0,class:"summary-item"},Lt={class:"summary-label"},It={class:"summary-value"},Vt={key:2,class:"tab-panel"},Nt={class:"filter-bar"},Et={key:0,class:"loading"},Pt={key:1,class:"empty"},Bt={key:2,class:"records-list"},Ft={class:"record-header"},Wt={class:"record-date"},Mt={class:"record-details"},Ut={class:"record-row"},jt={class:"record-label"},Ot={class:"record-row"},$t={class:"record-label"},Yt={class:"mono"},qt={class:"record-row"},Jt={class:"record-label"},Xt={class:"record-row"},Ht={class:"record-label"},Qt={class:"mono primary-text"},zt={key:0,class:"record-row"},Gt={class:"record-label"},Zt={key:1,class:"record-row"},Kt={class:"record-label"},si={class:"error-text"},ti={key:3,class:"tab-panel"},ii={class:"withdraw-section"},ei={class:"withdraw-card"},oi={class:"withdraw-title"},ai={class:"withdraw-desc"},ni={class:"withdraw-form"},ci=["placeholder"],li=["disabled"],di={class:"withdraw-card"},ri={class:"withdraw-title"},mi={class:"withdraw-desc"},ui={key:0,class:"withdraw-disabled"},vi={class:"withdraw-info"},_i={class:"withdraw-form"},hi=["placeholder"],yi={key:0,class:"cash-preview"},pi=["disabled"],wi={key:4,class:"tab-panel"},fi={class:"filter-bar"},bi={key:0,class:"loading"},gi={key:1,class:"empty"},ki={key:2,class:"records-list"},Ci={class:"record-header"},xi={class:"record-date"},Si={class:"record-details"},Ai={class:"record-row"},Ri={class:"record-label"},Ti={class:"record-row"},Di={class:"record-label"},Li={class:"mono"},Ii={key:0,class:"record-row"},Vi={class:"record-label"},Ni={class:"mono"},Ei={class:"record-row"},Pi={class:"record-label"},Bi={class:"mono"},Fi={class:"record-row"},Wi={class:"record-label"},Mi={class:"mono"},Ui={key:1,class:"record-row"},ji={class:"record-label"},Oi={class:"error-text"},$i=cs({__name:"CommissionView",setup(Yi){const U=ds(),V=rs(),{t:i}=ms(),d=m("activity"),S=m([]),N=m(!1),w=m(null),E=H({}),_=H({commissionBalance:0,totalCommission:0,totalWithdrawn:0,exchangeRate:"",minWithdrawCredits:"",withdrawEnabled:!1}),P=m([]),A=m([]),B=m(!1),R=m(""),T=m(""),f=m(null),h=m(null),D=m([]),F=m(!1),L=m(""),I=m("");function u(e){return e==null?"0":e.toLocaleString()}function W(e){return e?new Date(e).toLocaleString():""}function j(e){return e?e.split(" ")[0]:""}function z(e){return{PUBLIC:i("commission.visibilityPublic"),VIP:i("commission.visibilityVip"),INVITE_ONLY:i("commission.visibilityInviteOnly")}[e]||e}function G(e){return{0:i("commission.statusPending"),1:i("commission.statusGranted"),2:i("commission.statusFailed"),3:i("commission.statusCancelled")}[e]||String(e)}function Z(e){return{0:i("commission.statusProcessing"),1:i("commission.statusSuccess"),2:i("commission.statusFailure"),3:i("commission.statusCancelled")}[e]||String(e)}function O(e){const l=S.value.find(o=>o.id===e);return(l==null?void 0:l.activityName)||`Activity #${e}`}function K(e){try{return JSON.parse(e)}catch{return[]}}async function y(e,l={}){return await V.callRpc(e,{kiteToken:U.kiteToken,...l})}async function ss(){N.value=!0;try{const e=await y("evol.commission.get_activities");e.success&&(S.value=e.data||[])}catch(e){console.error("Load activities failed:",e)}finally{N.value=!1}}async function $(){try{const e=await y("evol.commission.get_participation");e.success&&(w.value=e.data||null)}catch(e){console.error("Load participation failed:",e)}}async function M(){try{const e=await y("evol.commission.get_account");e.success&&e.data&&Object.assign(_,e.data)}catch(e){console.error("Load account failed:",e)}}async function ts(){try{const e=await y("evol.commission.get_summary");e.success&&(P.value=e.data||[])}catch(e){console.error("Load summary failed:",e)}}async function Y(){B.value=!0;try{const e={};R.value&&(e.startDate=R.value),T.value&&(e.endDate=T.value);const l=await y("evol.commission.get_records",e);l.success&&(A.value=l.data||[])}catch(e){console.error("Load records failed:",e)}finally{B.value=!1}}async function q(){F.value=!0;try{const e={};L.value&&(e.startDate=L.value),I.value&&(e.endDate=I.value);const l=await y("evol.commission.get_withdrawals",e);l.success&&(D.value=l.data||[])}catch(e){console.error("Load withdrawals failed:",e)}finally{F.value=!1}}async function is(e){try{const l={activityId:e.id};if(e.visibility==="INVITE_ONLY"){const p=E[e.id];if(!p){v.warning(i("commission.inviteCodePlaceholder"));return}l.inviteCode=p}const o=await y("evol.commission.join",l);o.success?(v.success(o.msg||i("commission.joinSuccess")),await $()):v.error(o.msg||i("common.error"))}catch(l){v.error(l.message||i("common.error"))}}async function es(){try{await vs.confirm(i("commission.confirmQuit"),i("common.confirm"),{confirmButtonText:i("common.confirm"),cancelButtonText:i("common.cancel"),type:"warning"})}catch{return}try{const e=await y("evol.commission.quit");e.success?(v.success(e.msg||i("commission.quitSuccess")),w.value=null):v.error(e.msg||i("common.error"))}catch(e){v.error(e.message||i("common.error"))}}async function os(){if(!(!f.value||f.value<=0))try{const e=await y("evol.commission.transfer",{creditsAmount:f.value});e.success?(v.success(e.msg||i("commission.transferSuccess")),f.value=null,await M()):v.error(e.msg||i("common.error"))}catch(e){v.error(e.message||i("common.error"))}}async function as(){if(!(!h.value||h.value<=0))try{const e=await y("evol.commission.withdraw",{creditsAmount:h.value});e.success?(v.success(e.msg||i("commission.withdrawSuccess")),h.value=null,await M()):v.error(e.msg||i("common.error"))}catch(e){v.error(e.message||i("common.error"))}}async function J(){!U.kiteToken||V.status!=="connected"||await Promise.all([ss(),$(),M(),ts()])}return ls(()=>{J()}),X(()=>V.status,e=>{e==="connected"&&setTimeout(J,500)}),X(d,e=>{e==="records"&&A.value.length===0?Y():e==="withdrawals"&&D.value.length===0&&q()}),(e,l)=>(c(),n("div",_s,[s("h2",hs,t(a(i)("commission.title")),1),s("div",ys,[s("div",ps,[s("div",ws,t(a(i)("commission.commissionBalance")),1),s("div",fs,t(u(_.commissionBalance)),1)]),s("div",bs,[s("div",gs,t(a(i)("commission.totalCommission")),1),s("div",ks,t(u(_.totalCommission)),1)]),s("div",Cs,[s("div",xs,t(a(i)("commission.totalWithdrawn")),1),s("div",Ss,t(u(_.totalWithdrawn)),1)]),_.withdrawEnabled!==void 0?(c(),n("div",As,[s("div",Rs,t(a(i)("commission.exchangeRate")),1),s("div",Ts,t(a(i)("commission.exchangeRateDesc",{n:_.exchangeRate||"-"})),1)])):r("",!0)]),s("div",Ds,[s("div",{class:b(["tab-item",{active:d.value==="activity"}]),onClick:l[0]||(l[0]=o=>d.value="activity")},t(a(i)("commission.currentActivity")),3),s("div",{class:b(["tab-item",{active:d.value==="summary"}]),onClick:l[1]||(l[1]=o=>d.value="summary")},t(a(i)("commission.summary")),3),s("div",{class:b(["tab-item",{active:d.value==="records"}]),onClick:l[2]||(l[2]=o=>d.value="records")},t(a(i)("commission.records")),3),s("div",{class:b(["tab-item",{active:d.value==="withdraw"}]),onClick:l[3]||(l[3]=o=>d.value="withdraw")},t(a(i)("commission.transfer"))+" / "+t(a(i)("commission.withdraw")),3),s("div",{class:b(["tab-item",{active:d.value==="withdrawals"}]),onClick:l[4]||(l[4]=o=>d.value="withdrawals")},t(a(i)("commission.withdrawals")),3)]),s("div",Ls,[d.value==="activity"?(c(),n("div",Is,[w.value?(c(),n("div",Vs,[s("div",Ns,t(a(i)("commission.currentActivity")),1),s("div",Es,[s("div",Ps,[s("div",Bs,t(O(w.value.activityId)),1),s("div",Fs,t(a(i)("commission.joinTime"))+": "+t(W(w.value.joinTime)),1)]),s("button",{class:"btn btn-danger",onClick:es},t(a(i)("commission.quitActivity")),1)])])):(c(),n("div",Ws,[s("div",Ms,t(a(i)("commission.notJoined")),1)])),s("div",Us,t(a(i)("commission.activities")),1),N.value?(c(),n("div",js,t(a(i)("common.loading")),1)):S.value.length===0?(c(),n("div",Os,t(a(i)("commission.noActivities")),1)):(c(),n("div",$s,[(c(!0),n(g,null,x(S.value,o=>(c(),n("div",{key:o.id,class:"activity-card"},[s("div",Ys,[s("div",qs,t(o.activityName),1),s("span",{class:b(["activity-badge","badge-"+(o.visibility||"").toLowerCase()])},t(z(o.visibility)),3)]),s("div",Js,t(o.activityDesc),1),s("div",Xs,[s("div",Hs,[s("span",Qs,t(a(i)("commission.commissionMode")),1),s("span",zs,[Q(t(o.commissionMode==="FIXED"?a(i)("commission.modeFixed"):a(i)("commission.modeLadder"))+" ",1),o.commissionMode==="FIXED"&&o.fixedRate?(c(),n(g,{key:0},[Q(" ("+t(o.fixedRate)+"%) ",1)],64)):r("",!0)])]),o.startTime?(c(),n("div",Gs,[s("span",Zs,t(a(i)("commission.activityTime")),1),s("span",Ks,t(j(o.startTime))+" ~ "+t(j(o.endTime)),1)])):r("",!0),s("div",st,[s("span",tt,t(a(i)("commission.maxCommission")),1),s("span",it,t(o.maxCommissionPerInviter?u(o.maxCommissionPerInviter):a(i)("commission.noLimit")),1)]),o.commissionMode==="LADDER"&&o.ladderRules?(c(),n("div",et,[s("div",ot,t(a(i)("commission.modeLadder")),1),s("div",at,[(c(!0),n(g,null,x(K(o.ladderRules),(p,ns)=>(c(),n("div",{key:ns,class:"ladder-row"},[s("span",null,t(u(p.min))+" ~ "+t(p.max?u(p.max):"∞"),1),s("span",nt,t(p.rate)+"%",1)]))),128))])])):r("",!0)]),s("div",ct,[o.visibility==="INVITE_ONLY"&&!w.value?(c(),n("div",lt,[k(s("input",{"onUpdate:modelValue":p=>E[o.id]=p,placeholder:a(i)("commission.inviteCodePlaceholder"),class:"input-field"},null,8,dt),[[C,E[o.id]]])])):r("",!0),!w.value||w.value.activityId!==o.id?(c(),n("button",{key:1,class:"btn btn-primary",disabled:!!w.value,onClick:p=>is(o)},t(a(i)("commission.joinActivity")),9,rt)):(c(),n("span",mt,t(a(i)("commission.currentActivity")),1))])]))),128))]))])):r("",!0),d.value==="summary"?(c(),n("div",ut,[P.value.length===0?(c(),n("div",vt,t(a(i)("commission.noSummary")),1)):(c(),n("div",_t,[(c(!0),n(g,null,x(P.value,o=>(c(),n("div",{key:o.activityId,class:"summary-card"},[s("div",ht,t(O(o.activityId)),1),s("div",yt,[s("div",pt,[s("div",wt,t(a(i)("commission.commissionCredits")),1),s("div",ft,t(u(o.totalCommissionCredits)),1)]),s("div",bt,[s("div",gt,t(a(i)("commission.totalConsumed")),1),s("div",kt,t(u(o.totalConsumedCredits)),1)]),s("div",Ct,[s("div",xt,t(a(i)("commission.totalInvitees")),1),s("div",St,t(o.totalInviteeCount),1)]),s("div",At,[s("div",Rt,t(a(i)("commission.totalSettles")),1),s("div",Tt,t(o.totalSettleCount),1)]),o.lastSettleDate?(c(),n("div",Dt,[s("div",Lt,t(a(i)("commission.lastSettle")),1),s("div",It,t(o.lastSettleDate),1)])):r("",!0)])]))),128))]))])):r("",!0),d.value==="records"?(c(),n("div",Vt,[s("div",Nt,[k(s("input",{type:"date","onUpdate:modelValue":l[5]||(l[5]=o=>R.value=o),class:"input-field"},null,512),[[C,R.value]]),k(s("input",{type:"date","onUpdate:modelValue":l[6]||(l[6]=o=>T.value=o),class:"input-field"},null,512),[[C,T.value]]),s("button",{class:"btn btn-ghost",onClick:Y},t(a(i)("common.confirm")),1)]),B.value?(c(),n("div",Et,t(a(i)("common.loading")),1)):A.value.length===0?(c(),n("div",Pt,t(a(i)("commission.noRecords")),1)):(c(),n("div",Bt,[(c(!0),n(g,null,x(A.value,o=>(c(),n("div",{key:o.id,class:"record-card"},[s("div",Ft,[s("span",Wt,t(o.settleDate),1),s("span",{class:b(["record-status","status-"+o.status])},t(G(o.status)),3)]),s("div",Mt,[s("div",Ut,[s("span",jt,t(a(i)("commission.consumeSource")),1),s("span",null,t(o.consumeSource==="PERSONAL"?a(i)("commission.sourcePersonal"):a(i)("commission.sourceTeam")),1)]),s("div",Ot,[s("span",$t,t(a(i)("commission.consumedCredits")),1),s("span",Yt,t(u(o.consumedCredits)),1)]),s("div",qt,[s("span",Jt,t(a(i)("commission.commissionRate")),1),s("span",null,t(o.commissionRate)+"%",1)]),s("div",Xt,[s("span",Ht,t(a(i)("commission.commissionCredits")),1),s("span",Qt,"+"+t(u(o.commissionCredits)),1)]),o.grantTime?(c(),n("div",zt,[s("span",Gt,t(a(i)("commission.grantTime")),1),s("span",null,t(W(o.grantTime)),1)])):r("",!0),o.failReason?(c(),n("div",Zt,[s("span",Kt,t(a(i)("commission.statusFailed")),1),s("span",si,t(o.failReason),1)])):r("",!0)])]))),128))]))])):r("",!0),d.value==="withdraw"?(c(),n("div",ti,[s("div",ii,[s("div",ei,[s("div",oi,t(a(i)("commission.transfer")),1),s("div",ai,t(a(i)("commission.transferDesc")),1),s("div",ni,[k(s("input",{"onUpdate:modelValue":l[7]||(l[7]=o=>f.value=o),type:"number",placeholder:a(i)("commission.creditsAmountPlaceholder"),class:"input-field",min:"1"},null,8,ci),[[C,f.value,void 0,{number:!0}]]),s("button",{class:"btn btn-primary",onClick:os,disabled:!f.value||f.value<=0},t(a(i)("commission.transfer")),9,li)])]),s("div",di,[s("div",ri,t(a(i)("commission.withdraw")),1),s("div",mi,t(a(i)("commission.withdrawDesc")),1),_.withdrawEnabled?(c(),n(g,{key:1},[s("div",vi,[s("span",null,t(a(i)("commission.minWithdraw"))+": "+t(u(Number(_.minWithdrawCredits)||0)),1),s("span",null,t(a(i)("commission.exchangeRate"))+": "+t(a(i)("commission.exchangeRateDesc",{n:_.exchangeRate||"-"})),1)]),s("div",_i,[k(s("input",{"onUpdate:modelValue":l[8]||(l[8]=o=>h.value=o),type:"number",placeholder:a(i)("commission.creditsAmountPlaceholder"),class:"input-field",min:"1"},null,8,hi),[[C,h.value,void 0,{number:!0}]]),h.value>0&&_.exchangeRate?(c(),n("div",yi," ≈ ¥"+t((h.value/Number(_.exchangeRate)).toFixed(2)),1)):r("",!0),s("button",{class:"btn btn-primary",onClick:as,disabled:!h.value||h.value<=0},t(a(i)("commission.withdraw")),9,pi)])],64)):(c(),n("div",ui,t(a(i)("commission.withdrawDisabled")),1))])])])):r("",!0),d.value==="withdrawals"?(c(),n("div",wi,[s("div",fi,[k(s("input",{type:"date","onUpdate:modelValue":l[9]||(l[9]=o=>L.value=o),class:"input-field"},null,512),[[C,L.value]]),k(s("input",{type:"date","onUpdate:modelValue":l[10]||(l[10]=o=>I.value=o),class:"input-field"},null,512),[[C,I.value]]),s("button",{class:"btn btn-ghost",onClick:q},t(a(i)("common.confirm")),1)]),F.value?(c(),n("div",bi,t(a(i)("common.loading")),1)):D.value.length===0?(c(),n("div",gi,t(a(i)("commission.noWithdrawals")),1)):(c(),n("div",ki,[(c(!0),n(g,null,x(D.value,o=>(c(),n("div",{key:o.id,class:"record-card"},[s("div",Ci,[s("span",xi,t(W(o.createTime)),1),s("span",{class:b(["record-status","status-"+o.status])},t(Z(o.status)),3)]),s("div",Si,[s("div",Ai,[s("span",Ri,t(a(i)("commission.withdrawType")),1),s("span",null,t(o.withdrawType==="TRANSFER"?a(i)("commission.typeTransfer"):a(i)("commission.typeCash")),1)]),s("div",Ti,[s("span",Di,t(a(i)("commission.creditsAmount")),1),s("span",Li,t(u(o.creditsAmount)),1)]),o.withdrawType==="CASH"&&o.cashAmount!=null?(c(),n("div",Ii,[s("span",Vi,t(a(i)("commission.cashAmount")),1),s("span",Ni,"¥"+t(Number(o.cashAmount).toFixed(2)),1)])):r("",!0),s("div",Ei,[s("span",Pi,t(a(i)("commission.balanceBefore")),1),s("span",Bi,t(u(o.balanceBefore)),1)]),s("div",Fi,[s("span",Wi,t(a(i)("commission.balanceAfter")),1),s("span",Mi,t(u(o.balanceAfter)),1)]),o.failReason?(c(),n("div",Ui,[s("span",ji,t(a(i)("commission.statusFailure")),1),s("span",Oi,t(o.failReason),1)])):r("",!0)])]))),128))]))])):r("",!0)])]))}}),Hi=us($i,[["__scopeId","data-v-b8d92a25"]]);export{Hi as default};
@@ -0,0 +1 @@
1
+ .commission-view[data-v-b8d92a25]{max-width:1000px;margin:0 auto}.account-overview[data-v-b8d92a25]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.account-card[data-v-b8d92a25]{background:var(--panel-bg);backdrop-filter:var(--panel-blur);-webkit-backdrop-filter:var(--panel-blur);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--panel-shadow);border:1px solid var(--border-color);text-align:center}.account-label[data-v-b8d92a25]{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.account-value[data-v-b8d92a25]{font-size:28px;font-weight:700;font-family:Spline Sans Mono,monospace;color:var(--text-primary)}.account-value.primary[data-v-b8d92a25]{color:var(--primary)}.account-value.small[data-v-b8d92a25]{font-size:16px}.commission-tabs[data-v-b8d92a25]{display:flex;gap:8px;border-bottom:1px solid var(--border-color);padding:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.commission-tabs[data-v-b8d92a25]::-webkit-scrollbar{display:none}.tab-item[data-v-b8d92a25]{padding:12px 20px;text-align:center;font-size:15px;font-weight:600;white-space:nowrap;flex-shrink:0;color:var(--text-muted);cursor:pointer;transition:all .2s;border-bottom:2px solid transparent;position:relative;bottom:-1px;background:transparent}.tab-item[data-v-b8d92a25]:hover{color:var(--text-primary)}.tab-item.active[data-v-b8d92a25]{color:var(--primary);border-bottom-color:var(--primary)}.tab-content[data-v-b8d92a25]{background:var(--panel-bg);backdrop-filter:var(--panel-blur);-webkit-backdrop-filter:var(--panel-blur);border-radius:var(--radius-lg);padding:32px;box-shadow:var(--panel-shadow);border:1px solid var(--border-color);min-height:400px}.tab-panel[data-v-b8d92a25]{animation:fadeIn-b8d92a25 .3s}@keyframes fadeIn-b8d92a25{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.section-title[data-v-b8d92a25]{font-size:16px;font-weight:700;color:var(--text-primary);margin-bottom:16px}.activities-list[data-v-b8d92a25]{display:flex;flex-direction:column;gap:16px}.activity-card[data-v-b8d92a25]{background:var(--btn-ghost-bg);border-radius:var(--radius);border:1px solid var(--border-color);padding:24px;transition:background .2s}.activity-card[data-v-b8d92a25]:hover{background:var(--border-color)}.activity-header[data-v-b8d92a25]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.activity-name[data-v-b8d92a25]{font-size:17px;font-weight:700;color:var(--text-primary)}.activity-badge[data-v-b8d92a25]{padding:4px 12px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;letter-spacing:.04em}.badge-public[data-v-b8d92a25]{background:#22c55e26;color:#22c55e}.badge-vip[data-v-b8d92a25]{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#422006}.badge-invite_only[data-v-b8d92a25]{background:#8b5cf626;color:#8b5cf6}.activity-desc[data-v-b8d92a25]{font-size:14px;color:var(--text-secondary);margin-bottom:16px;line-height:1.5}.activity-details[data-v-b8d92a25]{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.detail-item[data-v-b8d92a25]{display:flex;justify-content:space-between;align-items:center;font-size:14px}.detail-label[data-v-b8d92a25]{color:var(--text-muted);font-weight:600;font-size:13px}.detail-value[data-v-b8d92a25]{color:var(--text-primary);font-weight:500}.ladder-rules[data-v-b8d92a25]{margin-top:8px}.ladder-table[data-v-b8d92a25]{margin-top:8px;display:flex;flex-direction:column;gap:4px}.ladder-row[data-v-b8d92a25]{display:flex;justify-content:space-between;padding:6px 12px;background:var(--panel-bg);border-radius:6px;font-size:13px;font-family:Spline Sans Mono,monospace}.ladder-rate[data-v-b8d92a25]{color:var(--primary);font-weight:700}.activity-actions[data-v-b8d92a25]{display:flex;align-items:center;gap:12px;margin-top:8px}.invite-code-input[data-v-b8d92a25]{flex:1;max-width:240px}.joined-badge[data-v-b8d92a25]{padding:8px 20px;border-radius:var(--radius-pill);background:#22c55e26;color:#22c55e;font-size:14px;font-weight:600}.current-participation[data-v-b8d92a25]{margin-bottom:16px}.participation-card[data-v-b8d92a25]{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;background:#22c55e14;border:1px solid rgba(34,197,94,.2);border-radius:var(--radius)}.participation-name[data-v-b8d92a25]{font-size:16px;font-weight:700;color:var(--text-primary)}.participation-meta[data-v-b8d92a25]{font-size:13px;color:var(--text-secondary);margin-top:4px}.empty-state[data-v-b8d92a25]{text-align:center;padding:32px;margin-bottom:16px}.empty-text[data-v-b8d92a25]{color:var(--text-muted);font-size:15px}.summary-list[data-v-b8d92a25]{display:flex;flex-direction:column;gap:16px}.summary-card[data-v-b8d92a25]{background:var(--btn-ghost-bg);border-radius:var(--radius);border:1px solid var(--border-color);padding:24px}.summary-header[data-v-b8d92a25]{font-size:16px;font-weight:700;color:var(--text-primary);margin-bottom:16px}.summary-grid[data-v-b8d92a25]{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px}.summary-item[data-v-b8d92a25]{text-align:center}.summary-label[data-v-b8d92a25]{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.summary-value[data-v-b8d92a25]{font-size:20px;font-weight:700;font-family:Spline Sans Mono,monospace;color:var(--text-primary)}.summary-value.primary[data-v-b8d92a25]{color:var(--primary)}.filter-bar[data-v-b8d92a25]{display:flex;gap:12px;margin-bottom:20px;align-items:center;flex-wrap:wrap}.records-list[data-v-b8d92a25]{display:flex;flex-direction:column;gap:12px}.record-card[data-v-b8d92a25]{background:var(--btn-ghost-bg);border-radius:var(--radius);border:1px solid var(--border-color);padding:18px 22px}.record-header[data-v-b8d92a25]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.record-date[data-v-b8d92a25]{font-size:15px;font-weight:600;color:var(--text-primary);font-family:Spline Sans Mono,monospace}.record-status[data-v-b8d92a25]{padding:3px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600}.status-0[data-v-b8d92a25]{background:#eab30826;color:#eab308}.status-1[data-v-b8d92a25]{background:#22c55e26;color:#22c55e}.status-2[data-v-b8d92a25]{background:#ef444426;color:#ef4444}.status-3[data-v-b8d92a25]{background:#9ca3af26;color:#9ca3af}.record-details[data-v-b8d92a25]{display:flex;flex-direction:column;gap:6px}.record-row[data-v-b8d92a25]{display:flex;justify-content:space-between;align-items:center;font-size:14px}.record-label[data-v-b8d92a25]{color:var(--text-muted);font-weight:600;font-size:13px}.mono[data-v-b8d92a25]{font-family:Spline Sans Mono,monospace}.primary-text[data-v-b8d92a25]{color:var(--primary);font-weight:700}.error-text[data-v-b8d92a25]{color:var(--error, #ef4444)}.withdraw-section[data-v-b8d92a25]{display:flex;flex-direction:column;gap:24px}.withdraw-card[data-v-b8d92a25]{background:var(--btn-ghost-bg);border-radius:var(--radius);border:1px solid var(--border-color);padding:28px}.withdraw-title[data-v-b8d92a25]{font-size:17px;font-weight:700;color:var(--text-primary);margin-bottom:8px}.withdraw-desc[data-v-b8d92a25]{font-size:14px;color:var(--text-secondary);margin-bottom:20px;line-height:1.5}.withdraw-disabled[data-v-b8d92a25]{padding:16px;text-align:center;color:var(--text-muted);font-size:14px;background:var(--panel-bg);border-radius:8px}.withdraw-info[data-v-b8d92a25]{display:flex;gap:24px;margin-bottom:16px;font-size:13px;color:var(--text-secondary)}.withdraw-form[data-v-b8d92a25]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.cash-preview[data-v-b8d92a25]{font-size:16px;font-weight:700;color:var(--primary);font-family:Spline Sans Mono,monospace}.input-field[data-v-b8d92a25]{padding:10px 16px;border-radius:10px;border:1px solid var(--border-color);background:var(--panel-bg);color:var(--text-primary);font-size:14px;font-family:inherit;outline:none;transition:border-color .2s}.input-field[data-v-b8d92a25]:focus{border-color:var(--primary)}.btn[data-v-b8d92a25]{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 22px;border-radius:var(--radius-pill);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;border:1px solid transparent;font-family:inherit;white-space:nowrap}.btn[data-v-b8d92a25]:disabled{opacity:.5;cursor:not-allowed}.btn-primary[data-v-b8d92a25]{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary[data-v-b8d92a25]:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1px)}.btn-danger[data-v-b8d92a25]{background:#ef44441a;color:#ef4444;border-color:#ef44444d}.btn-danger[data-v-b8d92a25]:hover:not(:disabled){background:#ef444433}.btn-ghost[data-v-b8d92a25]{background:var(--btn-ghost-bg);color:var(--btn-ghost-text);border-color:var(--border-color)}.btn-ghost[data-v-b8d92a25]:hover:not(:disabled){background:var(--border-color)}.loading[data-v-b8d92a25],.empty[data-v-b8d92a25]{text-align:center;padding:40px;color:var(--text-muted)}@media (max-width: 768px){.account-overview[data-v-b8d92a25]{grid-template-columns:repeat(2,1fr)}.tab-content[data-v-b8d92a25]{padding:24px 16px}.activity-header[data-v-b8d92a25]{flex-direction:column;align-items:flex-start;gap:8px}.participation-card[data-v-b8d92a25]{flex-direction:column;gap:16px;align-items:flex-start}.filter-bar[data-v-b8d92a25]{flex-direction:column}.withdraw-form[data-v-b8d92a25]{flex-direction:column;align-items:stretch}.withdraw-info[data-v-b8d92a25]{flex-direction:column;gap:8px}}
@@ -0,0 +1 @@
1
+ import{B as w,az as k,k as x,a3 as E,ag as B,H as t,L as n,M as s,O as d,u as f,P as m,Z as I,e as l,c as _}from"./vue-vendor-DtF-__I4.js";import{a as L,_ as M}from"./index-D44bBe__.js";import{l as S,w as C}from"./element-plus-Bd7pZkkM.js";const N={class:"iframe-page"},P={key:0,class:"loading"},R={key:1,class:"error"},z=["src"],V=w({__name:"IframePage",setup(W){const p=k(),v=L(),r=l(),i=l(!0),c=l(""),g=_(()=>p.meta.pageEntry),y=_(()=>{const e=g.value;return e?e.type==="iframe"?e.source||"":e.type==="hosted"?`/module-ui/${e.module_id}/index.html`:"":""});function h(){var e;i.value=!1,(e=r.value)!=null&&e.contentWindow&&r.value.contentWindow.postMessage({type:"evol.context",payload:{user:v.userInfo,theme:"light",locale:"zh"}},"*")}function u(e){const{type:o,payload:a}=e.data||{};o==="evol.navigate"?window.location.hash=a.path:o==="evol.notify"&&console.log("[iframe] Notify:",a)}return x(()=>{window.addEventListener("message",u)}),E(()=>{window.removeEventListener("message",u)}),(e,o)=>{const a=B("el-icon");return t(),n("div",N,[i.value?(t(),n("div",P,[s(a,{class:"is-loading"},{default:d(()=>[s(f(S))]),_:1}),o[0]||(o[0]=m("span",null,"加载中...",-1))])):c.value?(t(),n("div",R,[s(a,null,{default:d(()=>[s(f(C))]),_:1}),m("p",null,I(c.value),1)])):(t(),n("iframe",{key:2,ref_key:"iframeRef",ref:r,src:y.value,frameborder:"0",onLoad:h},null,40,z))])}}}),H=M(V,[["__scopeId","data-v-52e29960"]]);export{H as default};
@@ -0,0 +1 @@
1
+ .iframe-page[data-v-52e29960]{width:100%;height:100%;position:relative}iframe[data-v-52e29960]{width:100%;height:100%;border:none}.loading[data-v-52e29960],.error[data-v-52e29960]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;color:#909399}.loading .el-icon[data-v-52e29960]{font-size:32px}.error[data-v-52e29960]{color:#f56c6c}.error .el-icon[data-v-52e29960]{font-size:48px}
@@ -0,0 +1 @@
1
+ .member-detail-dialog .el-dialog{border-radius:var(--radius-lg, 20px);overflow:hidden}.member-detail-dialog .el-dialog__header{padding:20px 24px 16px;border-bottom:1px solid var(--border-color);margin-right:0}.member-detail-dialog .el-dialog__body{padding:24px;max-height:65vh;overflow-y:auto}.dialog-header[data-v-643dad20]{display:flex;flex-direction:column;gap:6px}.dialog-title[data-v-643dad20]{font-size:17px;font-weight:700;color:var(--text-primary);margin:0}.dialog-member-info[data-v-643dad20]{display:flex;align-items:center;gap:10px}.dialog-member-name[data-v-643dad20]{font-size:13px;font-weight:600;color:var(--text-secondary)}.dialog-member-phone[data-v-643dad20]{font-size:12px;color:var(--text-muted)}.dialog-loading[data-v-643dad20]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 20px;color:var(--text-muted);font-size:14px}.dialog-spinner[data-v-643dad20]{width:28px;height:28px;border:3px solid var(--border-color);border-top-color:var(--primary);border-radius:50%;animation:d-spin-643dad20 .6s linear infinite}@keyframes d-spin-643dad20{to{transform:rotate(360deg)}}.detail-summary-row[data-v-643dad20]{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:24px}.detail-summary-card[data-v-643dad20]{padding:14px 16px;border-radius:var(--radius, 12px);border:1px solid var(--border-color);background:var(--bg-secondary)}.dsc-label[data-v-643dad20]{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.dsc-value[data-v-643dad20]{font-size:22px;font-weight:800;color:var(--text-primary);line-height:1.1;font-family:Spline Sans Mono,monospace}.dsc-value.accent[data-v-643dad20]{color:var(--primary)}.dsc-value small[data-v-643dad20]{font-size:13px;font-weight:500;color:var(--text-muted)}.model-groups[data-v-643dad20]{display:flex;flex-direction:column;gap:20px}.model-groups-title[data-v-643dad20]{font-size:14px;font-weight:700;color:var(--text-primary);margin:0}.model-type-group[data-v-643dad20]{display:flex;flex-direction:column;gap:10px}.mtg-header[data-v-643dad20]{display:flex;align-items:center;gap:10px;padding-bottom:8px;border-bottom:1px solid var(--border-light)}.mtg-badge[data-v-643dad20]{display:inline-flex;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:600;border:1px solid transparent}.mtg-badge.chatbot[data-v-643dad20]{background:#0ea5e91a;color:#0ea5e9;border-color:#0ea5e933}.mtg-badge.codex[data-v-643dad20]{background:#f59e0b1a;color:#d97706;border-color:#f59e0b33}.mtg-badge.claudecode[data-v-643dad20]{background:#f973161a;color:#ea580c;border-color:#f9731633}.mtg-badge.gemini[data-v-643dad20]{background:#ec48991a;color:#db2777;border-color:#ec489933}.mtg-badge.openclaw[data-v-643dad20]{background:#10b9811a;color:#059669;border-color:#10b98133}.mtg-summary[data-v-643dad20]{font-size:13px;color:var(--text-muted);font-weight:500}.mtg-models[data-v-643dad20]{display:flex;flex-direction:column;gap:8px}.mtg-model-card[data-v-643dad20]{padding:14px 16px;border:1px solid var(--border-color);border-radius:var(--radius, 12px);background:var(--bg-primary);transition:box-shadow .15s}.mtg-model-card[data-v-643dad20]:hover{box-shadow:var(--shadow-md)}.mmc-top[data-v-643dad20]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.mmc-name[data-v-643dad20]{font-size:13px;font-weight:600;color:var(--text-primary);word-break:break-all}.mmc-credits[data-v-643dad20]{font-size:14px;font-weight:700;color:var(--primary);white-space:nowrap;font-family:Spline Sans Mono,monospace}.mmc-meta[data-v-643dad20]{display:flex;gap:16px;font-size:12px;color:var(--text-muted);font-weight:500;margin-bottom:10px}.mmc-tokens[data-v-643dad20]{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding-top:10px;border-top:1px solid var(--border-light)}.mmc-token[data-v-643dad20]{display:flex;flex-direction:column;gap:4px;padding:8px;border-radius:8px;background:var(--bg-secondary);border-left:3px solid var(--border-color)}.mmc-token.t-input[data-v-643dad20]{border-left-color:#3b82f6}.mmc-token.t-output[data-v-643dad20]{border-left-color:#10b981}.mmc-token.t-cache-w[data-v-643dad20]{border-left-color:#f59e0b}.mmc-token.t-cache-r[data-v-643dad20]{border-left-color:#06b6d4}.mmc-token.t-total[data-v-643dad20]{border-left-color:#8b5cf6}.mt-label[data-v-643dad20]{font-size:10px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.mmc-token.t-input .mt-label[data-v-643dad20]{color:#3b82f6}.mmc-token.t-output .mt-label[data-v-643dad20]{color:#10b981}.mmc-token.t-total .mt-label[data-v-643dad20]{color:#8b5cf6}.mt-val[data-v-643dad20]{font-size:13px;font-weight:700;color:var(--text-primary);font-family:Spline Sans Mono,monospace}.detail-empty[data-v-643dad20]{text-align:center;padding:48px 20px;color:var(--text-muted);font-size:14px}.detail-empty p[data-v-643dad20]{margin:0}@media (max-width: 640px){.mmc-tokens[data-v-643dad20]{grid-template-columns:repeat(2,1fr)}.detail-summary-row[data-v-643dad20]{grid-template-columns:1fr}}.team-stats-panel{border-radius:12px;padding:24px;margin-top:24px}.stats-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px}.title-with-toggle{display:flex;align-items:center;gap:8px}.stats-title{font-size:18px;font-weight:700;color:var(--text-primary, #1a1a1a);margin:0}.toggle-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;color:var(--text-muted, #6b7280);cursor:pointer;border-radius:6px;transition:all .2s;padding:0;font-size:12px}.toggle-btn:hover{background:var(--border-color, #f3f4f6);color:var(--text-primary, #374151)}.toggle-icon{transition:transform .3s ease;display:inline-block}.toggle-icon.rotated{transform:rotate(-90deg)}.header-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.mode-selector{display:flex;gap:4px;background:var(--border-color, #f3f4f6);padding:4px;border-radius:8px}.mode-btn{padding:6px 16px;border:none;background:transparent;border-radius:6px;font-size:13px;font-weight:600;color:var(--text-muted, #6b7280);cursor:pointer;transition:all .2s;white-space:nowrap;font-family:inherit}.mode-btn:hover{color:var(--text-primary, #374151)}.mode-btn.active{background:var(--bg-primary, white);color:var(--primary, #0ea5e9);box-shadow:0 1px 3px #0000001a}.realtime-indicator{display:flex;align-items:center;gap:8px;padding:6px 12px;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:6px;font-size:13px;font-weight:600;color:#059669}.pulse-dot{width:8px;height:8px;background:#10b981;border-radius:50%;animation:pulse-dot 2s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}.date-controls{display:flex;gap:8px;align-items:center}.range-select,.member-select{padding:8px 12px;border:1px solid var(--border-color, #d1d5db);border-radius:8px;font-size:13px;cursor:pointer;background:var(--bg-primary, white);color:var(--text-primary, #374151);transition:all .2s;font-family:inherit}.range-select:hover,.member-select:hover:not(:disabled){border-color:var(--primary, #0ea5e9)}.range-select:focus,.member-select:focus{outline:none;border-color:var(--primary, #0ea5e9);box-shadow:0 0 0 3px #0ea5e91a}.member-select{min-width:140px}.member-select:disabled{opacity:.5;cursor:not-allowed}.custom-date-controls{display:flex;align-items:center;gap:8px}.date-picker{padding:8px 12px;border:1px solid var(--border-color, #d1d5db);border-radius:8px;font-size:14px;cursor:pointer;background:var(--bg-primary, white);transition:all .2s;font-family:inherit}.date-picker:hover{border-color:var(--primary, #0ea5e9)}.date-picker:focus{outline:none;border-color:var(--primary, #0ea5e9);box-shadow:0 0 0 3px #0ea5e91a}.date-nav-btn{padding:8px 12px;border:1px solid var(--border-color, #d1d5db);border-radius:8px;background:var(--bg-primary, white);color:var(--text-primary, #374151);font-size:14px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;min-width:40px;font-weight:600}.date-nav-btn:hover:not(:disabled){background:var(--primary, #0ea5e9);border-color:var(--primary, #0ea5e9);color:#fff;transform:translateY(-1px)}.date-nav-btn:disabled{opacity:.4;cursor:not-allowed}.refresh-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--border-color, #d1d5db);border-radius:8px;background:var(--bg-primary, white);color:var(--text-muted, #6b7280);cursor:pointer;transition:all .2s;font-size:16px}.refresh-btn:hover{border-color:var(--primary, #0ea5e9);color:var(--primary, #0ea5e9)}.refresh-btn.loading{opacity:.7;cursor:not-allowed}.refresh-icon{display:inline-block;transition:transform .3s}.refresh-icon.spinning{animation:spin .6s linear infinite}.loading-state,.hourly-loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:40px 20px;color:var(--text-muted, #6b7280);font-size:14px}.spinner-small{width:20px;height:20px;border:2px solid var(--border-color, #e5e7eb);border-top-color:var(--primary, #0ea5e9);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.collapsible-content{animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.stats-summary-row{display:flex;gap:12px;margin-bottom:16px;align-items:stretch}.summary-card{padding:10px 16px;border-radius:10px;border:1px solid var(--border-color, #e5e7eb);transition:all .2s;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}.summary-card.compact{min-height:auto;flex:0 0 auto}.summary-card.pie-card{flex:1;min-width:0}.summary-card:hover{box-shadow:0 4px 12px #0ea5e91f;border-color:var(--primary, #0ea5e9)}.summary-label{font-size:11px;font-weight:600;color:var(--text-muted, #9ca3af);margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}.summary-value{font-size:22px;font-weight:800;color:var(--text-primary, #1a1a1a);margin-bottom:2px;line-height:1}.summary-value.primary{background:linear-gradient(135deg,#0ea5e9,#0284c7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.summary-subtitle{font-size:11px;color:var(--text-muted, #6b7280);font-weight:500}.pie-chart-container{width:100%;height:90px}.section-subtitle{font-size:14px;font-weight:600;color:var(--text-primary, #374151);margin:0 0 16px}.title-with-toggle .section-subtitle{margin:0}.echarts-line-container{width:100%;height:280px}.hourly-chart-section,.trend-stats-section{border-radius:12px;padding:20px;margin-bottom:20px;border:1px solid var(--border-color, #e5e7eb)}.hourly-chart-header,.trend-stats-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:12px}.trend-stats-header{align-items:flex-start}.hourly-controls,.trend-stats-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.hourly-summary{display:flex;align-items:center;gap:16px;font-size:13px;color:var(--text-muted, #6b7280)}.hourly-total{display:flex;align-items:center;gap:4px}.hourly-total strong{color:var(--primary, #0ea5e9);font-size:15px}.hourly-count{padding:4px 10px;background:var(--border-color, #f3f4f6);border-radius:12px;font-size:12px}.hourly-chart{display:flex;flex-direction:column;gap:16px}.hourly-no-data{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:40px 20px;color:var(--text-muted, #9ca3af)}.hourly-no-data p{margin:0;font-size:13px}.period-selector{display:flex;gap:4px;background:var(--border-color, #f3f4f6);padding:4px;border-radius:8px}.period-btn{padding:6px 12px;border:none;background:transparent;border-radius:6px;font-size:12px;font-weight:600;color:var(--text-muted, #6b7280);cursor:pointer;transition:all .2s;white-space:nowrap;font-family:inherit}.period-btn:hover:not(:disabled){color:var(--text-primary, #374151);background:#ffffff80}.period-btn.active{background:var(--bg-primary, white);color:var(--primary, #0ea5e9);box-shadow:0 1px 3px #0000001a}.period-btn:disabled{opacity:.5;cursor:not-allowed}.hourly-legend{display:flex;justify-content:center;gap:20px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--border-color, #f3f4f6)}.hourly-legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-primary, #374151)}.hourly-legend-item .legend-dot,.legend-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0}.hourly-legend-item.chatbot .legend-dot{background:linear-gradient(135deg,#0ea5e9,#0284c7)}.hourly-legend-item.codex .legend-dot{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.hourly-legend-item.claudecode .legend-dot{background:linear-gradient(135deg,#f59e0b,#f97316)}.hourly-legend-item.gemini .legend-dot{background:linear-gradient(135deg,#ec4899,#f43f5e)}.hourly-legend-item.openclaw .legend-dot{background:linear-gradient(135deg,#f59e0b,#d97706)}.member-ranking{margin-bottom:0}.ranking-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:16px}.export-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap;font-family:inherit}.export-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #10b9814d}.export-btn:active{transform:translateY(0)}.ranking-table-container{border:1px solid var(--border-color, #e5e7eb);border-radius:8px;overflow:hidden}.ranking-table{width:100%;border-collapse:collapse;font-size:14px}.ranking-table thead{background:var(--border-color, #f9fafb)}.ranking-table th{padding:12px 16px;text-align:left;font-size:12px;font-weight:600;color:var(--text-muted, #6b7280);border-bottom:1px solid var(--border-color, #e5e7eb);text-transform:uppercase;letter-spacing:.5px}.ranking-table td{padding:12px 16px;border-bottom:1px solid var(--border-color, #f3f4f6);vertical-align:middle}.ranking-table tbody tr:hover{background:var(--border-color, #f9fafb)}.ranking-table tbody tr:last-child td{border-bottom:none}.rank-badge{width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;background:var(--border-color, #e5e7eb);color:var(--text-muted, #6b7280)}.rank-badge.gold{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#fff}.rank-badge.silver{background:linear-gradient(135deg,#d1d5db,#9ca3af);color:#fff}.rank-badge.bronze{background:linear-gradient(135deg,#fdba74,#f97316);color:#fff}.member-cell{display:flex;flex-direction:column;gap:2px}.member-name{font-size:14px;font-weight:600;color:var(--text-primary, #1a1a1a);line-height:1.4}.member-tag{font-size:12px;font-weight:400;color:var(--text-muted, #6b7280);margin-left:4px}.member-phone{font-size:12px;color:var(--text-muted, #9ca3af)}.credits-amount{font-size:16px;font-weight:700;color:var(--text-primary, #1a1a1a)}.credits-amount.primary{color:var(--primary, #0ea5e9)}.count-value{font-size:14px;font-weight:600;color:var(--text-primary, #374151)}.type-credits{font-size:16px;font-weight:700;color:var(--text-primary, #374151);min-width:80px}.detail-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:linear-gradient(135deg,#0ea5e9,#0284c7);color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap;font-family:inherit}.detail-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0ea5e94d}.detail-btn:active{transform:translateY(0)}.no-ranking{text-align:center;padding:24px;color:var(--text-muted, #9ca3af);font-size:14px}.empty-stats{text-align:center;padding:40px 20px;display:flex;flex-direction:column;align-items:center;gap:12px}.empty-stats p{font-size:14px;color:var(--text-muted, #9ca3af);margin:0}.group-stats-section{display:flex;flex-direction:column;gap:24px}.group-ranking-chart{border-radius:12px;padding:20px;border:1px solid var(--border-color, #e5e7eb)}.group-chart-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.group-chart-summary{font-size:13px;color:var(--text-muted, #9ca3af);font-weight:500}.group-bars-container{display:flex;flex-direction:column;gap:10px}.group-bar-row{display:flex;align-items:center;gap:10px;min-height:32px}.group-bar-rank{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;font-weight:700;background:var(--border-color, #f3f4f6);color:var(--text-muted, #6b7280);flex-shrink:0}.group-bar-rank.gold{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#fff}.group-bar-rank.silver{background:linear-gradient(135deg,#d1d5db,#9ca3af);color:#fff}.group-bar-rank.bronze{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.group-bar-name{width:120px;flex-shrink:0;font-size:13px;font-weight:600;color:var(--text-primary, #374151);display:flex;align-items:center;gap:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-bar-track{flex:1;min-width:0;height:24px;background:var(--border-color, #f3f4f6);border-radius:6px;overflow:hidden}.group-bar-stack{display:flex;height:100%;border-radius:6px;overflow:hidden}.group-bar-fill{height:100%;transition:width .6s ease;min-width:0}.group-bar-fill.chatbot{background:linear-gradient(135deg,#0ea5e9,#0284c7)}.group-bar-fill.codex{background:linear-gradient(135deg,#06b6d4,#0891b2)}.group-bar-fill.claudecode{background:linear-gradient(135deg,#f97316,#ea580c)}.group-bar-fill.gemini{background:linear-gradient(135deg,#10b981,#059669)}.group-bar-fill.openclaw{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}.group-bar-value{width:72px;flex-shrink:0;text-align:right;font-size:13px;font-weight:700;color:var(--text-primary, #374151);font-variant-numeric:tabular-nums}.group-detail-table,.group-trend-section{border-radius:12px;padding:20px;border:1px solid var(--border-color, #e5e7eb)}.group-trend-chart{width:100%}.group-trend-bars{display:flex;align-items:flex-end;gap:4px;height:200px;padding-bottom:28px;position:relative;overflow-x:auto}.group-trend-col{flex:1;min-width:32px;display:flex;flex-direction:column;align-items:center;height:100%;position:relative}.group-trend-bar-stack{width:100%;display:flex;flex-direction:column-reverse;align-items:stretch;flex:1;gap:2px;justify-content:flex-start}.group-trend-bar{width:100%;border-radius:3px;transition:height .6s ease;min-height:0;cursor:pointer}.group-trend-bar:hover{opacity:.8}.group-trend-col .trend-bar-label{position:absolute;bottom:0;font-size:11px;color:var(--text-muted, #9ca3af);white-space:nowrap}.group-color-1,.group-color-1 .legend-dot{background:#0ea5e9}.group-color-2,.group-color-2 .legend-dot{background:#06b6d4}.group-color-3,.group-color-3 .legend-dot{background:#f97316}.group-color-4,.group-color-4 .legend-dot{background:#10b981}.group-color-5,.group-color-5 .legend-dot{background:#8b5cf6}.group-color-6,.group-color-6 .legend-dot{background:#ec4899}.hourly-legend-item.group-color-1 .legend-dot{background:#0ea5e9}.hourly-legend-item.group-color-2 .legend-dot{background:#06b6d4}.hourly-legend-item.group-color-3 .legend-dot{background:#f97316}.hourly-legend-item.group-color-4 .legend-dot{background:#10b981}.hourly-legend-item.group-color-5 .legend-dot{background:#8b5cf6}.hourly-legend-item.group-color-6 .legend-dot{background:#ec4899}.export-progress-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn .2s ease-out}.export-progress-dialog{background:var(--bg-primary, white);border-radius:20px;padding:40px;box-shadow:0 20px 60px #0000004d;min-width:400px;max-width:500px;animation:scaleIn .3s cubic-bezier(.34,1.56,.64,1)}@keyframes scaleIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.progress-content{display:flex;flex-direction:column;align-items:center;gap:20px}.cute-loader{position:relative;width:100px;height:100px}.loader-circle{width:100px;height:100px;border-radius:50%;background:linear-gradient(135deg,#0ea5e9,#0284c7);animation:bounce 1s ease-in-out infinite}@keyframes bounce{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-10px) scale(1.05)}}.loader-face{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:80px;height:80px}.loader-eyes{display:flex;justify-content:space-around;margin-top:20px;gap:20px}.eye{width:12px;height:12px;background:#fff;border-radius:50%;position:relative;animation:blink 3s infinite}.eye:after{content:"";position:absolute;width:6px;height:6px;background:#333;border-radius:50%;top:3px;left:3px;animation:eyeMove 2s ease-in-out infinite}@keyframes blink{0%,48%,52%,to{transform:scaleY(1)}50%{transform:scaleY(.1)}}@keyframes eyeMove{0%,to{transform:translate(0)}25%{transform:translate(2px)}75%{transform:translate(-2px)}}.loader-mouth{width:30px;height:15px;border:3px solid white;border-top:none;border-radius:0 0 30px 30px;margin:8px auto 0;animation:smile 1s ease-in-out infinite}@keyframes smile{0%,to{width:30px}50%{width:35px}}.progress-title{font-size:20px;font-weight:700;margin:0;background:linear-gradient(135deg,#0ea5e9,#0284c7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.progress-info{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%}.current-member{font-size:15px;font-weight:600;color:var(--primary, #0ea5e9);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-text{font-size:13px;color:var(--text-muted, #6b7280);font-weight:500}.progress-bar-container{width:100%;position:relative}.progress-bar-bg{width:100%;height:30px;background:var(--border-color, #f3f4f6);border-radius:15px;overflow:hidden;box-shadow:inset 0 2px 4px #0000001a;position:relative}.progress-bar-fill{height:100%;background:linear-gradient(90deg,#0ea5e9,#0284c7,#0ea5e9);background-size:200% 100%;border-radius:15px;transition:width .3s ease;position:relative;overflow:hidden;animation:gradientShift 2s linear infinite}@keyframes gradientShift{0%{background-position:0% 50%}to{background-position:200% 50%}}.progress-bar-shine{position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shine 1.5s infinite}@keyframes shine{0%{left:-100%}to{left:100%}}.progress-percentage{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:13px;font-weight:700;color:var(--text-primary, #1a1a1a);z-index:1}.progress-tip{font-size:13px;color:var(--text-muted, #9ca3af);text-align:center;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}@media (max-width: 1024px){.stats-summary-row{flex-wrap:wrap}}@media (max-width: 640px){.ranking-table-container{overflow-x:auto}.ranking-table{min-width:900px}.summary-card{padding:8px 12px}.summary-value{font-size:18px}.echarts-line-container{height:200px}.token-usage-grid{grid-template-columns:1fr}}.search-area[data-v-beb34740]{margin-bottom:16px}.search-result[data-v-beb34740]{display:flex;flex-direction:column;gap:16px;padding:16px;background:var(--btn-ghost-bg);border-radius:var(--radius);border:1px solid var(--border-color)}.result-user[data-v-beb34740]{display:flex;align-items:center;gap:12px}.user-avatar[data-v-beb34740]{width:40px;height:40px;border-radius:50%;background:var(--primary-light);color:var(--primary);font-weight:700;font-size:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.user-info[data-v-beb34740]{flex:1}.user-name[data-v-beb34740]{font-size:15px;font-weight:600;color:var(--text-primary)}.user-phone[data-v-beb34740]{font-size:13px;color:var(--text-muted);font-family:Spline Sans Mono,monospace}.form-section[data-v-beb34740]{display:flex;flex-direction:column;gap:8px}.form-label[data-v-beb34740]{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.search-error[data-v-beb34740]{text-align:center;padding:20px;color:var(--error);font-size:14px}.tree-row[data-v-127a3a16]{display:flex;align-items:center;min-height:44px;border-bottom:1px solid var(--border-color);transition:background .15s}.tree-row[data-v-127a3a16]:hover{background:var(--btn-ghost-bg)}.group-row[data-v-127a3a16]{cursor:pointer;background:var(--bg-secondary, rgba(0, 0, 0, .02))}.group-row[data-v-127a3a16]:hover{background:var(--border-color)}.member-row[data-v-127a3a16]{background:transparent}.cell[data-v-127a3a16]{display:flex;align-items:center}.cell-checkbox[data-v-127a3a16]{width:40px;flex-shrink:0;justify-content:center}.cell-name[data-v-127a3a16]{flex:1;min-width:0;gap:8px;overflow:hidden}.cell-role[data-v-127a3a16],.cell-credits[data-v-127a3a16]{width:100px;flex-shrink:0}.cell-actions[data-v-127a3a16]{width:80px;flex-shrink:0;justify-content:flex-end;padding-right:8px}.expand-icon[data-v-127a3a16]{flex-shrink:0;transition:transform .2s;color:var(--text-muted)}.expand-icon.expanded[data-v-127a3a16]{transform:rotate(90deg)}.group-icon[data-v-127a3a16]{flex-shrink:0;color:var(--primary)}.group-name[data-v-127a3a16]{font-weight:600;font-size:13px;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-count[data-v-127a3a16]{font-size:11px;color:var(--text-muted);background:var(--btn-ghost-bg);padding:1px 8px;border-radius:10px;flex-shrink:0}.member-avatar[data-v-127a3a16]{width:28px;height:28px;border-radius:50%;background:var(--primary-light);color:var(--primary);font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.member-info[data-v-127a3a16]{display:flex;flex-direction:column;min-width:0;gap:1px}.member-name[data-v-127a3a16]{font-size:13px;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-remark[data-v-127a3a16]{font-size:11px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role-badge[data-v-127a3a16]{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;white-space:nowrap}.role-creator[data-v-127a3a16]{background:#fef3c7;color:#92400e}.role-admin[data-v-127a3a16]{background:#dbeafe;color:#1e40af}.role-member[data-v-127a3a16]{background:var(--btn-ghost-bg);color:var(--text-muted)}.mono[data-v-127a3a16]{font-family:Spline Sans Mono,monospace;font-weight:600;color:var(--text-secondary);font-size:13px}.action-buttons[data-v-127a3a16]{display:flex;gap:4px;align-items:center}.action-btn[data-v-127a3a16]{width:26px;height:26px;border-radius:6px;background:transparent;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:all .15s}.action-btn[data-v-127a3a16]:hover{background:var(--btn-ghost-bg);color:var(--text-primary)}.action-btn.danger[data-v-127a3a16]:hover{color:var(--error)}@media (max-width: 768px){.cell-role[data-v-127a3a16],.cell-credits[data-v-127a3a16]{display:none}.cell-actions[data-v-127a3a16]{width:50px}}.toolbar[data-v-a2b86d9c]{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.toolbar-actions[data-v-a2b86d9c]{display:flex;gap:8px}.tool-btn[data-v-a2b86d9c]{display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--radius-pill);background:var(--btn-ghost-bg);border:1px solid var(--border-color);cursor:pointer;font-size:13px;font-weight:600;color:var(--btn-ghost-text);transition:all .2s;font-family:inherit}.tool-btn[data-v-a2b86d9c]:hover{background:var(--border-color)}.tree-table[data-v-a2b86d9c]{border:1px solid var(--border-color);border-radius:var(--radius, 8px);overflow:hidden}.tree-table-header[data-v-a2b86d9c]{display:flex;align-items:center;height:40px;background:var(--btn-ghost-bg);border-bottom:1px solid var(--border-color);font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.tree-table-header .cell[data-v-a2b86d9c]{display:flex;align-items:center}.cell-checkbox[data-v-a2b86d9c]{width:40px;flex-shrink:0;justify-content:center}.cell-name[data-v-a2b86d9c]{flex:1;min-width:0;padding-left:12px}.cell-role[data-v-a2b86d9c],.cell-credits[data-v-a2b86d9c]{width:100px;flex-shrink:0}.cell-actions[data-v-a2b86d9c]{width:80px;flex-shrink:0;justify-content:flex-end;padding-right:8px}.tree-table-body[data-v-a2b86d9c]{max-height:600px;overflow-y:auto}.loading[data-v-a2b86d9c],.empty[data-v-a2b86d9c]{text-align:center;padding:40px;color:var(--text-muted)}@media (max-width: 768px){.cell-role[data-v-a2b86d9c],.cell-credits[data-v-a2b86d9c]{display:none}.cell-actions[data-v-a2b86d9c]{width:50px}.toolbar[data-v-a2b86d9c]{flex-direction:column;align-items:stretch}}.bill-toolbar[data-v-d8e1bc4e]{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.tool-btn[data-v-d8e1bc4e]{display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--radius-pill);background:var(--btn-ghost-bg);border:1px solid var(--border-color);cursor:pointer;font-size:13px;font-weight:600;color:var(--btn-ghost-text);transition:all .2s;font-family:inherit}.tool-btn[data-v-d8e1bc4e]:hover{background:var(--border-color)}.bill-list[data-v-d8e1bc4e]{border:1px solid var(--border-color);border-radius:var(--radius);overflow:hidden}.bill-header[data-v-d8e1bc4e],.bill-row[data-v-d8e1bc4e]{display:flex;padding:12px 16px}.bill-header[data-v-d8e1bc4e]{background:var(--btn-ghost-bg);font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.bill-row[data-v-d8e1bc4e]{border-top:1px solid var(--border-color);font-size:14px;color:var(--text-primary);transition:background .15s}.bill-row[data-v-d8e1bc4e]:hover{background:var(--btn-ghost-bg)}.bill-col[data-v-d8e1bc4e]{flex:1}.bill-col.date[data-v-d8e1bc4e]{flex:2}.mono[data-v-d8e1bc4e]{font-family:Spline Sans Mono,monospace}.loading[data-v-d8e1bc4e],.empty[data-v-d8e1bc4e]{text-align:center;padding:40px;color:var(--text-muted)}.alert-form[data-v-4b3cc206]{display:flex;flex-direction:column;gap:20px;margin-bottom:24px}.form-row[data-v-4b3cc206]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--border-color)}.form-row[data-v-4b3cc206]:last-child{border-bottom:none}.form-label[data-v-4b3cc206]{font-size:14px;font-weight:600;color:var(--text-secondary);flex-shrink:0}.alert-actions[data-v-4b3cc206]{display:flex;gap:10px;flex-wrap:wrap}.action-btn[data-v-4b3cc206]{padding:10px 20px;border-radius:var(--radius-pill);border:1px solid var(--border-color);background:var(--btn-ghost-bg);cursor:pointer;font-size:14px;font-weight:600;color:var(--btn-ghost-text);transition:all .2s;font-family:inherit}.action-btn[data-v-4b3cc206]:hover{background:var(--border-color)}.save-btn[data-v-4b3cc206]{background:var(--primary-gradient);color:#fff;border-color:transparent}.save-btn[data-v-4b3cc206]:hover{box-shadow:0 4px 12px #0ea5e94d}.test-btn[data-v-4b3cc206]{background:var(--warning-light);color:var(--warning);border-color:var(--warning)}.reset-btn[data-v-4b3cc206]{color:var(--error);border-color:var(--error-light)}.loading[data-v-4b3cc206]{text-align:center;padding:40px;color:var(--text-muted)}.team-detail-view[data-v-be89508c]{max-width:1400px;margin:0 auto;padding:0 24px}.detail-header[data-v-be89508c]{background:var(--panel-bg);backdrop-filter:var(--panel-blur);-webkit-backdrop-filter:var(--panel-blur);border-radius:var(--radius-lg);padding:24px 32px;box-shadow:var(--panel-shadow);border:1px solid var(--border-color);display:flex;align-items:center;gap:20px;margin-bottom:24px;flex-wrap:wrap}.back-btn[data-v-be89508c]{display:flex;align-items:center;gap:4px;padding:8px 14px;border-radius:var(--radius-pill);background:var(--btn-ghost-bg);border:1px solid var(--border-color);cursor:pointer;font-size:13px;font-weight:600;color:var(--btn-ghost-text);transition:all .2s;font-family:inherit;flex-shrink:0}.back-btn[data-v-be89508c]:hover{background:var(--border-color)}.header-info[data-v-be89508c]{display:flex;align-items:center;gap:14px;flex:1;min-width:0}.header-icon[data-v-be89508c]{width:48px;height:48px;border-radius:14px;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.header-text[data-v-be89508c]{min-width:0;display:flex;align-items:baseline;gap:12px}.team-name[data-v-be89508c]{font-size:20px;font-weight:700;color:var(--text-primary);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team-meta[data-v-be89508c]{font-size:13px;color:var(--text-muted);display:flex;align-items:center;gap:6px}.meta-dot[data-v-be89508c]{font-size:10px}.header-actions[data-v-be89508c]{display:flex;gap:8px;flex-shrink:0}.action-btn[data-v-be89508c]{padding:8px 16px;border-radius:var(--radius-pill);border:1px solid var(--border-color);background:var(--btn-ghost-bg);cursor:pointer;font-size:13px;font-weight:600;color:var(--btn-ghost-text);transition:all .2s;font-family:inherit}.action-btn[data-v-be89508c]:hover{background:var(--border-color)}.switch-btn[data-v-be89508c]{background:var(--primary-gradient);color:#fff;border-color:transparent}.switch-btn[data-v-be89508c]:hover{box-shadow:0 4px 12px #0ea5e94d}.active-badge[data-v-be89508c]{background:var(--primary-light);color:var(--primary);border-color:var(--primary);cursor:default}.danger-btn[data-v-be89508c]{color:var(--error);border-color:var(--error-light);background:var(--error-light)}.danger-btn[data-v-be89508c]:hover{background:var(--error);color:#fff}.detail-tabs[data-v-be89508c]{display:flex;gap:4px;border-bottom:1px solid var(--border-color);margin-bottom:0;overflow-x:auto;scrollbar-width:none}.detail-tabs[data-v-be89508c]::-webkit-scrollbar{display:none}.tab-item[data-v-be89508c]{padding:12px 18px;font-size:14px;font-weight:600;white-space:nowrap;flex-shrink:0;color:var(--text-muted);cursor:pointer;transition:all .2s;border-bottom:2px solid transparent;position:relative;bottom:-1px}.tab-item[data-v-be89508c]:hover{color:var(--text-primary)}.tab-item.active[data-v-be89508c]{color:var(--primary);border-bottom-color:var(--primary)}.tab-content[data-v-be89508c]{background:var(--panel-bg);backdrop-filter:var(--panel-blur);-webkit-backdrop-filter:var(--panel-blur);border-radius:0 0 var(--radius-lg) var(--radius-lg);padding:24px 32px;box-shadow:var(--panel-shadow);border:1px solid var(--border-color);border-top:none;min-height:400px}.tab-panel[data-v-be89508c]{animation:fadeIn-be89508c .3s}@keyframes fadeIn-be89508c{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.info-list[data-v-be89508c]{display:flex;flex-direction:column}.info-row[data-v-be89508c]{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-bottom:1px solid var(--border-color)}.info-row[data-v-be89508c]:last-child{border-bottom:none}.info-label[data-v-be89508c]{color:var(--text-muted);font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.info-value[data-v-be89508c]{color:var(--text-primary);font-size:15px;font-weight:500}.mono[data-v-be89508c]{font-family:Spline Sans Mono,monospace}.loading[data-v-be89508c],.empty[data-v-be89508c]{text-align:center;padding:40px;color:var(--text-muted)}@media (max-width: 768px){.detail-header[data-v-be89508c]{flex-direction:column;align-items:flex-start;gap:16px}.header-actions[data-v-be89508c]{width:100%;flex-wrap:wrap}.tab-content[data-v-be89508c]{padding:20px 16px}}