abtars 0.1.0-alpha.1

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 (312) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +84 -0
  3. package/bundle/_registry.generated-M4WY2MMI.js +35 -0
  4. package/bundle/_registry.generated-M4WY2MMI.js.map +7 -0
  5. package/bundle/abtars-browser.js +162 -0
  6. package/bundle/abtars-browser.js.map +7 -0
  7. package/bundle/abtars-cli.js +1438 -0
  8. package/bundle/abtars-cli.js.map +7 -0
  9. package/bundle/abtars-restart.js +12 -0
  10. package/bundle/abtars-restart.js.map +7 -0
  11. package/bundle/abtars-rss.js +165 -0
  12. package/bundle/abtars-rss.js.map +7 -0
  13. package/bundle/abtars-task.js +258 -0
  14. package/bundle/abtars-task.js.map +7 -0
  15. package/bundle/abtars.js +4072 -0
  16. package/bundle/abtars.js.map +7 -0
  17. package/bundle/agent-api-rate-limit-OQNFMXTZ.js +38 -0
  18. package/bundle/agent-api-rate-limit-OQNFMXTZ.js.map +7 -0
  19. package/bundle/agent-registry-LT4JNQH6.js +18 -0
  20. package/bundle/agent-registry-LT4JNQH6.js.map +7 -0
  21. package/bundle/agents/default.md +29 -0
  22. package/bundle/anthropic-adapter-2APTH3LA.js +40 -0
  23. package/bundle/anthropic-adapter-2APTH3LA.js.map +7 -0
  24. package/bundle/bridge-lock-transport-4AC2G5G6.js +39 -0
  25. package/bundle/bridge-lock-transport-4AC2G5G6.js.map +7 -0
  26. package/bundle/browse-delivery-JXBY36GK.js +17 -0
  27. package/bundle/browse-delivery-JXBY36GK.js.map +7 -0
  28. package/bundle/browser-ELNDVPLC.js +18 -0
  29. package/bundle/browser-ELNDVPLC.js.map +7 -0
  30. package/bundle/capability-CIL3G4FI.js +17 -0
  31. package/bundle/capability-CIL3G4FI.js.map +7 -0
  32. package/bundle/chunk-265TPOPC.js +289 -0
  33. package/bundle/chunk-265TPOPC.js.map +7 -0
  34. package/bundle/chunk-2UENBO6M.js +223 -0
  35. package/bundle/chunk-2UENBO6M.js.map +7 -0
  36. package/bundle/chunk-2UPU3OW6.js +67 -0
  37. package/bundle/chunk-2UPU3OW6.js.map +7 -0
  38. package/bundle/chunk-2XU2X4OI.js +125 -0
  39. package/bundle/chunk-2XU2X4OI.js.map +7 -0
  40. package/bundle/chunk-3B7BBE4F.js +758 -0
  41. package/bundle/chunk-3B7BBE4F.js.map +7 -0
  42. package/bundle/chunk-3E545J66.js +69 -0
  43. package/bundle/chunk-3E545J66.js.map +7 -0
  44. package/bundle/chunk-5R2ANXQ7.js +510 -0
  45. package/bundle/chunk-5R2ANXQ7.js.map +7 -0
  46. package/bundle/chunk-6CPN4IGS.js +507 -0
  47. package/bundle/chunk-6CPN4IGS.js.map +7 -0
  48. package/bundle/chunk-6NR3OHEW.js +88 -0
  49. package/bundle/chunk-6NR3OHEW.js.map +7 -0
  50. package/bundle/chunk-6SETMHNN.js +206 -0
  51. package/bundle/chunk-6SETMHNN.js.map +7 -0
  52. package/bundle/chunk-6UCRKRWR.js +644 -0
  53. package/bundle/chunk-6UCRKRWR.js.map +7 -0
  54. package/bundle/chunk-AR6GO6YC.js +83 -0
  55. package/bundle/chunk-AR6GO6YC.js.map +7 -0
  56. package/bundle/chunk-AZJIODTQ.js +54 -0
  57. package/bundle/chunk-AZJIODTQ.js.map +7 -0
  58. package/bundle/chunk-BHMZ4RCC.js +3706 -0
  59. package/bundle/chunk-BHMZ4RCC.js.map +7 -0
  60. package/bundle/chunk-BQ2L4GMG.js +9175 -0
  61. package/bundle/chunk-BQ2L4GMG.js.map +7 -0
  62. package/bundle/chunk-BSSBCSCL.js +159 -0
  63. package/bundle/chunk-BSSBCSCL.js.map +7 -0
  64. package/bundle/chunk-BUUVFUPO.js +157 -0
  65. package/bundle/chunk-BUUVFUPO.js.map +7 -0
  66. package/bundle/chunk-CEVRHKJY.js +131 -0
  67. package/bundle/chunk-CEVRHKJY.js.map +7 -0
  68. package/bundle/chunk-CWOHNFUV.js +39 -0
  69. package/bundle/chunk-CWOHNFUV.js.map +7 -0
  70. package/bundle/chunk-D2DCBO6M.js +228 -0
  71. package/bundle/chunk-D2DCBO6M.js.map +7 -0
  72. package/bundle/chunk-FMWKEPM7.js +31 -0
  73. package/bundle/chunk-FMWKEPM7.js.map +7 -0
  74. package/bundle/chunk-GRNENTPA.js +145 -0
  75. package/bundle/chunk-GRNENTPA.js.map +7 -0
  76. package/bundle/chunk-GST5T3WZ.js +93 -0
  77. package/bundle/chunk-GST5T3WZ.js.map +7 -0
  78. package/bundle/chunk-GUQVJC3U.js +299 -0
  79. package/bundle/chunk-GUQVJC3U.js.map +7 -0
  80. package/bundle/chunk-HX7Y7EYP.js +3659 -0
  81. package/bundle/chunk-HX7Y7EYP.js.map +7 -0
  82. package/bundle/chunk-JCJS4ZIB.js +296 -0
  83. package/bundle/chunk-JCJS4ZIB.js.map +7 -0
  84. package/bundle/chunk-JW6RU47G.js +184 -0
  85. package/bundle/chunk-JW6RU47G.js.map +7 -0
  86. package/bundle/chunk-LSPKJQCI.js +24 -0
  87. package/bundle/chunk-LSPKJQCI.js.map +7 -0
  88. package/bundle/chunk-M6VBAPNT.js +16 -0
  89. package/bundle/chunk-M6VBAPNT.js.map +7 -0
  90. package/bundle/chunk-MPX525QO.js +129 -0
  91. package/bundle/chunk-MPX525QO.js.map +7 -0
  92. package/bundle/chunk-MW6WDLU7.js +130 -0
  93. package/bundle/chunk-MW6WDLU7.js.map +7 -0
  94. package/bundle/chunk-NT3OBORC.js +215 -0
  95. package/bundle/chunk-NT3OBORC.js.map +7 -0
  96. package/bundle/chunk-NWDBD4PA.js +50 -0
  97. package/bundle/chunk-NWDBD4PA.js.map +7 -0
  98. package/bundle/chunk-OP7BTAWY.js +29 -0
  99. package/bundle/chunk-OP7BTAWY.js.map +7 -0
  100. package/bundle/chunk-PLCY3GFH.js +77 -0
  101. package/bundle/chunk-PLCY3GFH.js.map +7 -0
  102. package/bundle/chunk-PNEDC45Y.js +97 -0
  103. package/bundle/chunk-PNEDC45Y.js.map +7 -0
  104. package/bundle/chunk-QBGBT5QS.js +81 -0
  105. package/bundle/chunk-QBGBT5QS.js.map +7 -0
  106. package/bundle/chunk-RVE2N7FA.js +70 -0
  107. package/bundle/chunk-RVE2N7FA.js.map +7 -0
  108. package/bundle/chunk-TZHIDLDS.js +71910 -0
  109. package/bundle/chunk-TZHIDLDS.js.map +7 -0
  110. package/bundle/chunk-UCQ2WC3B.js +126 -0
  111. package/bundle/chunk-UCQ2WC3B.js.map +7 -0
  112. package/bundle/chunk-UHRP745J.js +214 -0
  113. package/bundle/chunk-UHRP745J.js.map +7 -0
  114. package/bundle/chunk-V76TVMCM.js +58 -0
  115. package/bundle/chunk-V76TVMCM.js.map +7 -0
  116. package/bundle/chunk-VVEDVGCR.js +981 -0
  117. package/bundle/chunk-VVEDVGCR.js.map +7 -0
  118. package/bundle/chunk-W6FAL35D.js +102 -0
  119. package/bundle/chunk-W6FAL35D.js.map +7 -0
  120. package/bundle/chunk-X6TERNVJ.js +15902 -0
  121. package/bundle/chunk-X6TERNVJ.js.map +7 -0
  122. package/bundle/chunk-X76UX47U.js +47 -0
  123. package/bundle/chunk-X76UX47U.js.map +7 -0
  124. package/bundle/chunk-XREWVCUO.js +518 -0
  125. package/bundle/chunk-XREWVCUO.js.map +7 -0
  126. package/bundle/chunk-Y6XAEX2Q.js +408 -0
  127. package/bundle/chunk-Y6XAEX2Q.js.map +7 -0
  128. package/bundle/chunk-YOCTDKKL.js +28 -0
  129. package/bundle/chunk-YOCTDKKL.js.map +7 -0
  130. package/bundle/chunk-ZXPXCDA6.js +160 -0
  131. package/bundle/chunk-ZXPXCDA6.js.map +7 -0
  132. package/bundle/commands-BHVUOU3V.js +31 -0
  133. package/bundle/commands-BHVUOU3V.js.map +7 -0
  134. package/bundle/completion-buffer-P253ONKF.js +13 -0
  135. package/bundle/completion-buffer-P253ONKF.js.map +7 -0
  136. package/bundle/config-RGSDAPZN.js +19 -0
  137. package/bundle/config-RGSDAPZN.js.map +7 -0
  138. package/bundle/config-show-ERTATR6E.js +40 -0
  139. package/bundle/config-show-ERTATR6E.js.map +7 -0
  140. package/bundle/context-HCEGZNDC.js +72 -0
  141. package/bundle/context-HCEGZNDC.js.map +7 -0
  142. package/bundle/delegation-tools-GYTS2D6A.js +27 -0
  143. package/bundle/delegation-tools-GYTS2D6A.js.map +7 -0
  144. package/bundle/deploy-lib-import-32ZFKHWP.js +49 -0
  145. package/bundle/deploy-lib-import-32ZFKHWP.js.map +7 -0
  146. package/bundle/digital-signature-OFCGSHWO.js +13 -0
  147. package/bundle/digital-signature-OFCGSHWO.js.map +7 -0
  148. package/bundle/direct-api-transport-YR7SXXNN.js +860 -0
  149. package/bundle/direct-api-transport-YR7SXXNN.js.map +7 -0
  150. package/bundle/discord-adapter-YYWVMPPU.js +584 -0
  151. package/bundle/discord-adapter-YYWVMPPU.js.map +7 -0
  152. package/bundle/dist-MTMKARCP.js +1969 -0
  153. package/bundle/dist-MTMKARCP.js.map +7 -0
  154. package/bundle/dns-wakeup-27M7D2MR.js +107 -0
  155. package/bundle/dns-wakeup-27M7D2MR.js.map +7 -0
  156. package/bundle/doctor-QNUSDY73.js +248 -0
  157. package/bundle/doctor-QNUSDY73.js.map +7 -0
  158. package/bundle/ensure-invariants-NMXNS476.js +49 -0
  159. package/bundle/ensure-invariants-NMXNS476.js.map +7 -0
  160. package/bundle/env-schema-2KBHBDGN.js +19 -0
  161. package/bundle/env-schema-2KBHBDGN.js.map +7 -0
  162. package/bundle/esm-DDP6NCZG.js +100663 -0
  163. package/bundle/esm-DDP6NCZG.js.map +7 -0
  164. package/bundle/fallback-policy-L4QV2PEJ.js +46 -0
  165. package/bundle/fallback-policy-L4QV2PEJ.js.map +7 -0
  166. package/bundle/health-check-SPA7NT6N.js +56 -0
  167. package/bundle/health-check-SPA7NT6N.js.map +7 -0
  168. package/bundle/hook-system-6Q5YTR53.js +17 -0
  169. package/bundle/hook-system-6Q5YTR53.js.map +7 -0
  170. package/bundle/hotskills-K7BM4YLB.js +12 -0
  171. package/bundle/hotskills-K7BM4YLB.js.map +7 -0
  172. package/bundle/install-6HRZVKUM.js +15 -0
  173. package/bundle/install-6HRZVKUM.js.map +7 -0
  174. package/bundle/install-log-IAPHYKD4.js +28 -0
  175. package/bundle/install-log-IAPHYKD4.js.map +7 -0
  176. package/bundle/install-manifest-SPQRUNXL.js +102 -0
  177. package/bundle/install-manifest-SPQRUNXL.js.map +7 -0
  178. package/bundle/install-validate-PVLZXYLQ.js +53 -0
  179. package/bundle/install-validate-PVLZXYLQ.js.map +7 -0
  180. package/bundle/irc-adapter-OI5UZSQF.js +293 -0
  181. package/bundle/irc-adapter-OI5UZSQF.js.map +7 -0
  182. package/bundle/irc-config-55YO6EGB.js +88 -0
  183. package/bundle/irc-config-55YO6EGB.js.map +7 -0
  184. package/bundle/logs-ZNYXX5PA.js +19 -0
  185. package/bundle/logs-ZNYXX5PA.js.map +7 -0
  186. package/bundle/media-utils-XNNDTYFI.js +4662 -0
  187. package/bundle/media-utils-XNNDTYFI.js.map +7 -0
  188. package/bundle/message-pipeline-LLH5SYMO.js +33 -0
  189. package/bundle/message-pipeline-LLH5SYMO.js.map +7 -0
  190. package/bundle/meta.json +41304 -0
  191. package/bundle/model-health-registry-35LQNVQR.js +11 -0
  192. package/bundle/model-health-registry-35LQNVQR.js.map +7 -0
  193. package/bundle/notification-Y5S5MMLV.js +13 -0
  194. package/bundle/notification-Y5S5MMLV.js.map +7 -0
  195. package/bundle/openrouter-credits-EDY7ETAU.js +32 -0
  196. package/bundle/openrouter-credits-EDY7ETAU.js.map +7 -0
  197. package/bundle/passwd-RRFV4CC5.js +133 -0
  198. package/bundle/passwd-RRFV4CC5.js.map +7 -0
  199. package/bundle/paths-G33RZWZ7.js +17 -0
  200. package/bundle/paths-G33RZWZ7.js.map +7 -0
  201. package/bundle/peer-client-52XYMNI7.js +156 -0
  202. package/bundle/peer-client-52XYMNI7.js.map +7 -0
  203. package/bundle/peer-config-VK6EDLN5.js +16 -0
  204. package/bundle/peer-config-VK6EDLN5.js.map +7 -0
  205. package/bundle/peer-sessions-EAXTNQ36.js +49 -0
  206. package/bundle/peer-sessions-EAXTNQ36.js.map +7 -0
  207. package/bundle/pending-callback-RIMQZ7FJ.js +40 -0
  208. package/bundle/pending-callback-RIMQZ7FJ.js.map +7 -0
  209. package/bundle/phase-transport-KYERDL2O.js +22 -0
  210. package/bundle/phase-transport-KYERDL2O.js.map +7 -0
  211. package/bundle/public/css/dashboard.css +542 -0
  212. package/bundle/public/index.html +180 -0
  213. package/bundle/public/js/app.js +437 -0
  214. package/bundle/public/memory-universe.js +384 -0
  215. package/bundle/responses-adapter-AAQTY3K4.js +30 -0
  216. package/bundle/responses-adapter-AAQTY3K4.js.map +7 -0
  217. package/bundle/restore-ZE3SEPSS.js +46 -0
  218. package/bundle/restore-ZE3SEPSS.js.map +7 -0
  219. package/bundle/self-healer-utils-DMUUXC47.js +43 -0
  220. package/bundle/self-healer-utils-DMUUXC47.js.map +7 -0
  221. package/bundle/skill-stats-LLEXEXLR.js +22 -0
  222. package/bundle/skill-stats-LLEXEXLR.js.map +7 -0
  223. package/bundle/sleep-OYIUOVQD.js +19 -0
  224. package/bundle/sleep-OYIUOVQD.js.map +7 -0
  225. package/bundle/soul-loader-54WCVNLJ.js +16 -0
  226. package/bundle/soul-loader-54WCVNLJ.js.map +7 -0
  227. package/bundle/src-JL4PVO23.js +8 -0
  228. package/bundle/src-JL4PVO23.js.map +7 -0
  229. package/bundle/sse-parser-anthropic-P7CE2MH2.js +72 -0
  230. package/bundle/sse-parser-anthropic-P7CE2MH2.js.map +7 -0
  231. package/bundle/sse-parser-responses-EQQA5FWN.js +63 -0
  232. package/bundle/sse-parser-responses-EQQA5FWN.js.map +7 -0
  233. package/bundle/ssrf-guard-FZCBYIVW.js +64 -0
  234. package/bundle/ssrf-guard-FZCBYIVW.js.map +7 -0
  235. package/bundle/start-FH3GRMJ4.js +35 -0
  236. package/bundle/start-FH3GRMJ4.js.map +7 -0
  237. package/bundle/stream-single-WSG4D53C.js +33 -0
  238. package/bundle/stream-single-WSG4D53C.js.map +7 -0
  239. package/bundle/stt-2UH3RITX.js +14 -0
  240. package/bundle/stt-2UH3RITX.js.map +7 -0
  241. package/bundle/subagent-runtime-LE2ZXH3G.js +12 -0
  242. package/bundle/subagent-runtime-LE2ZXH3G.js.map +7 -0
  243. package/bundle/system-message-T5R3EYYN.js +30 -0
  244. package/bundle/system-message-T5R3EYYN.js.map +7 -0
  245. package/bundle/system-status-KQ6KHFJ6.js +189 -0
  246. package/bundle/system-status-KQ6KHFJ6.js.map +7 -0
  247. package/bundle/task-store-K7CQDEPI.js +22 -0
  248. package/bundle/task-store-K7CQDEPI.js.map +7 -0
  249. package/bundle/telegram-adapter-2V3XUMT5.js +1060 -0
  250. package/bundle/telegram-adapter-2V3XUMT5.js.map +7 -0
  251. package/bundle/tool-registry-MU3OX4UI.js +38 -0
  252. package/bundle/tool-registry-MU3OX4UI.js.map +7 -0
  253. package/bundle/tool-sandbox-VYOK4ZOA.js +20 -0
  254. package/bundle/tool-sandbox-VYOK4ZOA.js.map +7 -0
  255. package/bundle/transport-config-YLXU33RO.js +57 -0
  256. package/bundle/transport-config-YLXU33RO.js.map +7 -0
  257. package/bundle/update-QCW5LXRN.js +13 -0
  258. package/bundle/update-QCW5LXRN.js.map +7 -0
  259. package/bundle/update-check-27KZSAP6.js +12 -0
  260. package/bundle/update-check-27KZSAP6.js.map +7 -0
  261. package/bundle/usage-tracker-OVVEVMOY.js +17 -0
  262. package/bundle/usage-tracker-OVVEVMOY.js.map +7 -0
  263. package/bundle/user-registry-D4SD73UV.js +16 -0
  264. package/bundle/user-registry-D4SD73UV.js.map +7 -0
  265. package/core/professor.json +14 -0
  266. package/core/prompts/browsing_prompt.md +39 -0
  267. package/core/prompts/compaction.md +32 -0
  268. package/core/skills/memory/classification/SKILL.md +37 -0
  269. package/core/skills/memory/memory-anomalies/SKILL.md +39 -0
  270. package/core/skills/memory/memory-search/SKILL.md +48 -0
  271. package/core/skills/memory/topic-save/SKILL.md +44 -0
  272. package/core/skills/ops/cron/SKILL.md +51 -0
  273. package/core/skills/ops/gdrive-backup/SKILL.md +15 -0
  274. package/core/skills/ops/session-start/SKILL.md +11 -0
  275. package/core/skills/ops/skill-authoring/SKILL.md +54 -0
  276. package/core/skills/ops/system-health/SKILL.md +104 -0
  277. package/core/skills/ops/troubleshooting/SKILL.md +48 -0
  278. package/core/skills/ops/trust-gating/SKILL.md +30 -0
  279. package/core/skills/tools/a2a-communication/SKILL.md +68 -0
  280. package/core/skills/tools/browse-delegate/SKILL.md +27 -0
  281. package/core/skills/tools/browser/SKILL.md +36 -0
  282. package/core/skills/tools/clawhub/SKILL.md +44 -0
  283. package/core/skills/tools/delegation/SKILL.md +48 -0
  284. package/core/skills/tools/fxtwitter/SKILL.md +52 -0
  285. package/core/skills/tools/gmail/SKILL.md +44 -0
  286. package/core/skills/tools/irc-chat/SKILL.md +84 -0
  287. package/core/skills/tools/linear/SKILL.md +90 -0
  288. package/core/skills/tools/mcporter/SKILL.md +46 -0
  289. package/core/skills/tools/model-scout/SKILL.md +132 -0
  290. package/core/skills/tools/model-scout/scout-add-model.py +67 -0
  291. package/core/skills/tools/model-scout/scout-ollama.py +116 -0
  292. package/core/skills/tools/model-scout/scout-openrouter.py +85 -0
  293. package/core/skills/tools/nlm/SKILL.md +40 -0
  294. package/core/skills/tools/todo/SKILL.md +30 -0
  295. package/core/skills/tools/twitterX/SKILL.md +52 -0
  296. package/core/skills/tools/twitterX/scripts/abtars-tweet.js +532 -0
  297. package/core/skills/tools/twitterX/scripts/package.json +1 -0
  298. package/core/skills/tools/web-fetch/SKILL.md +29 -0
  299. package/package.json +59 -0
  300. package/scripts/abtars-daemon.service +23 -0
  301. package/scripts/abtars-fetch.sh +42 -0
  302. package/scripts/abtars-watchdog.service +13 -0
  303. package/scripts/abtars.sh +14 -0
  304. package/scripts/abtars@.service +21 -0
  305. package/scripts/browser-patchright.sh +79 -0
  306. package/scripts/com.abtars.daemon.plist +24 -0
  307. package/scripts/com.abtars.watchdog.plist +27 -0
  308. package/scripts/daily-backup.sh +62 -0
  309. package/scripts/doctor.sh +553 -0
  310. package/scripts/hooks/audit-logger.sh +22 -0
  311. package/scripts/upgrade-deps.sh +64 -0
  312. package/scripts/watchdog.sh +309 -0
@@ -0,0 +1,542 @@
1
+ * { margin: 0; padding: 0; box-sizing: border-box; }
2
+
3
+ body {
4
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
5
+ background: #1a1a2e;
6
+ color: #e0e0e0;
7
+ min-height: 100vh;
8
+ overflow: hidden;
9
+ }
10
+
11
+ .dashboard-layout {
12
+ display: flex;
13
+ flex-direction: row;
14
+ height: calc(100vh - 69px);
15
+ }
16
+
17
+ .main-area {
18
+ flex: 1;
19
+ display: flex;
20
+ flex-direction: column;
21
+ min-width: 0;
22
+ overflow: hidden;
23
+ }
24
+
25
+ header {
26
+ display: flex;
27
+ align-items: center;
28
+ gap: 16px;
29
+ padding: 20px 24px;
30
+ background: #16213e;
31
+ border-bottom: 1px solid #0f3460;
32
+ }
33
+
34
+ header img {
35
+ width: 48px;
36
+ height: 48px;
37
+ border-radius: 8px;
38
+ }
39
+
40
+ header h1 {
41
+ font-size: 1.4rem;
42
+ font-weight: 600;
43
+ color: #e0e0e0;
44
+ }
45
+
46
+ .connection-banner {
47
+ background: #f44336;
48
+ color: #fff;
49
+ text-align: center;
50
+ padding: 8px;
51
+ font-size: 0.9rem;
52
+ font-weight: 500;
53
+ }
54
+
55
+ .grid {
56
+ display: grid;
57
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr));
58
+ gap: 20px;
59
+ padding: 24px;
60
+ max-width: 100%;
61
+ overflow: hidden;
62
+ }
63
+
64
+ .card {
65
+ background: #16213e;
66
+ border-radius: 12px;
67
+ padding: 20px;
68
+ border: 1px solid #0f3460;
69
+ }
70
+
71
+ .card h2 {
72
+ font-size: 1rem;
73
+ font-weight: 600;
74
+ margin-bottom: 14px;
75
+ color: #a0c4ff;
76
+ }
77
+
78
+ .stat-row {
79
+ display: flex;
80
+ justify-content: space-between;
81
+ padding: 4px 0;
82
+ font-size: 0.85rem;
83
+ }
84
+
85
+ .stat-label { color: #9e9e9e; }
86
+ .stat-value { color: #e0e0e0; font-weight: 500; }
87
+
88
+ .indicator {
89
+ display: inline-block;
90
+ width: 10px;
91
+ height: 10px;
92
+ border-radius: 50%;
93
+ margin-right: 6px;
94
+ vertical-align: middle;
95
+ }
96
+
97
+ .indicator.green { background: #4caf50; }
98
+ .indicator.yellow { background: #ff9800; }
99
+ .indicator.red { background: #f44336; }
100
+
101
+ .badge {
102
+ display: inline-block;
103
+ padding: 2px 8px;
104
+ border-radius: 4px;
105
+ font-size: 0.75rem;
106
+ font-weight: 600;
107
+ }
108
+
109
+ .badge.running { background: rgba(76,175,80,0.2); color: #4caf50; }
110
+ .badge.clickable { cursor: pointer; }
111
+ .badge.clickable { cursor: pointer; transition: background 0.2s; }
112
+ .badge.clickable:hover { background: rgba(76,175,80,0.35); }
113
+ .badge.stopped { background: rgba(255,152,0,0.2); color: #ff9800; }
114
+ .badge.error { background: rgba(244,67,54,0.2); color: #f44336; }
115
+ .badge.disabled { background: rgba(100,100,100,0.2); color: #777; }
116
+ .badge.coming { background: rgba(100,100,100,0.15); color: #666; font-style: italic; }
117
+
118
+ /* Platform group */
119
+ .platform-group { margin-bottom: 14px; }
120
+ .platform-group h3 {
121
+ font-size: 0.8rem;
122
+ color: #7e7e9e;
123
+ text-transform: uppercase;
124
+ letter-spacing: 0.5px;
125
+ margin-bottom: 8px;
126
+ }
127
+
128
+ .platform-item {
129
+ display: flex;
130
+ align-items: center;
131
+ justify-content: space-between;
132
+ padding: 6px 0;
133
+ border-bottom: 1px solid rgba(255,255,255,0.04);
134
+ }
135
+
136
+ .platform-item .name { font-size: 0.85rem; }
137
+
138
+ .platform-item button {
139
+ padding: 4px 12px;
140
+ border: none;
141
+ border-radius: 4px;
142
+ font-size: 0.75rem;
143
+ cursor: pointer;
144
+ font-weight: 500;
145
+ transition: opacity 0.2s;
146
+ }
147
+
148
+ .platform-item button:hover { opacity: 0.85; }
149
+
150
+ .btn-start { background: #4caf50; color: #fff; }
151
+ .btn-stop { background: #f44336; color: #fff; }
152
+
153
+ .platform-item button:disabled {
154
+ background: #333;
155
+ color: #666;
156
+ cursor: not-allowed;
157
+ }
158
+
159
+ .platform-item .coming-soon-tip {
160
+ font-size: 0.7rem;
161
+ color: #666;
162
+ font-style: italic;
163
+ }
164
+
165
+ /* Transport */
166
+ .progress-bar-bg {
167
+ background: #0f3460;
168
+ border-radius: 6px;
169
+ height: 14px;
170
+ margin-top: 8px;
171
+ overflow: hidden;
172
+ }
173
+
174
+ .progress-bar-fill {
175
+ height: 100%;
176
+ border-radius: 6px;
177
+ background: #4caf50;
178
+ transition: width 0.4s ease;
179
+ }
180
+
181
+ /* Memory */
182
+ .search-box {
183
+ display: flex;
184
+ gap: 8px;
185
+ margin-bottom: 10px;
186
+ }
187
+
188
+ .search-box input {
189
+ flex: 1;
190
+ padding: 6px 10px;
191
+ border: 1px solid #0f3460;
192
+ border-radius: 6px;
193
+ background: #1a1a2e;
194
+ color: #e0e0e0;
195
+ font-size: 0.85rem;
196
+ outline: none;
197
+ }
198
+
199
+ .search-box input:focus { border-color: #a0c4ff; }
200
+
201
+ .search-box button {
202
+ padding: 6px 14px;
203
+ border: none;
204
+ border-radius: 6px;
205
+ background: #0f3460;
206
+ color: #a0c4ff;
207
+ cursor: pointer;
208
+ font-size: 0.85rem;
209
+ font-weight: 500;
210
+ }
211
+
212
+ .layer-toggles {
213
+ display: flex;
214
+ gap: 6px;
215
+ margin-bottom: 10px;
216
+ flex-wrap: wrap;
217
+ }
218
+
219
+ .layer-btn {
220
+ padding: 3px 10px;
221
+ border: 1px solid #0f3460;
222
+ border-radius: 4px;
223
+ background: transparent;
224
+ color: #9e9e9e;
225
+ cursor: pointer;
226
+ font-size: 0.75rem;
227
+ transition: all 0.2s;
228
+ }
229
+
230
+ .layer-btn.active {
231
+ background: #0f3460;
232
+ color: #a0c4ff;
233
+ border-color: #a0c4ff;
234
+ }
235
+
236
+ .layer-btn:disabled {
237
+ color: #555;
238
+ border-color: #333;
239
+ cursor: not-allowed;
240
+ }
241
+
242
+ .search-results {
243
+ max-height: 200px;
244
+ overflow-y: auto;
245
+ font-size: 0.8rem;
246
+ }
247
+
248
+ .search-result-item {
249
+ padding: 6px 0;
250
+ border-bottom: 1px solid rgba(255,255,255,0.04);
251
+ }
252
+
253
+ .search-result-item .result-meta {
254
+ display: flex;
255
+ gap: 8px;
256
+ align-items: center;
257
+ margin-bottom: 2px;
258
+ }
259
+
260
+ .search-result-item .result-content {
261
+ font-size: 0.8rem;
262
+ color: #ccc;
263
+ }
264
+
265
+ .search-result-item .source {
266
+ font-size: 0.7rem;
267
+ color: #7e7e9e;
268
+ }
269
+
270
+ .search-result-item .score {
271
+ font-size: 0.7rem;
272
+ color: #ff9800;
273
+ font-weight: 600;
274
+ }
275
+
276
+ /* Split card */
277
+ .card-split { display: flex; flex-direction: column; }
278
+ .split-divider { border: none; border-top: 1px solid #0f3460; margin: 14px 0; }
279
+ .split-bottom h2 { margin-bottom: 10px; }
280
+
281
+ /* Search toggle button */
282
+ .btn-search-toggle {
283
+ width: 100%;
284
+ padding: 8px;
285
+ border: 1px solid #0f3460;
286
+ border-radius: 6px;
287
+ background: transparent;
288
+ color: #a0c4ff;
289
+ cursor: pointer;
290
+ font-size: 0.85rem;
291
+ font-weight: 500;
292
+ transition: background 0.2s;
293
+ }
294
+ .btn-search-toggle:hover { background: rgba(15,52,96,0.5); }
295
+
296
+ /* Search panel */
297
+ .search-panel {
298
+ background: #16213e;
299
+ border-top: 1px solid #0f3460;
300
+ padding: 16px 24px;
301
+ flex: 1;
302
+ display: flex;
303
+ flex-direction: column;
304
+ min-height: 0;
305
+ overflow: hidden;
306
+ }
307
+ .search-panel-header { margin-bottom: 12px; flex-shrink: 0; }
308
+ .search-panel-row {
309
+ display: flex;
310
+ align-items: center;
311
+ gap: 10px;
312
+ flex-wrap: wrap;
313
+ }
314
+ .keyword-input {
315
+ flex: 1;
316
+ padding: 6px 10px;
317
+ border: 1px solid #0f3460;
318
+ border-radius: 6px;
319
+ background: #1a1a2e;
320
+ color: #e0e0e0;
321
+ font-size: 0.85rem;
322
+ outline: none;
323
+ }
324
+ .keyword-input:focus { border-color: #a0c4ff; }
325
+ .btn-search {
326
+ padding: 6px 18px;
327
+ border: none;
328
+ border-radius: 6px;
329
+ background: #0f3460;
330
+ color: #a0c4ff;
331
+ cursor: pointer;
332
+ font-size: 0.85rem;
333
+ font-weight: 500;
334
+ }
335
+ .keyword-filters {
336
+ display: flex;
337
+ gap: 6px;
338
+ flex-wrap: wrap;
339
+ margin-top: 8px;
340
+ }
341
+ .keyword-chip {
342
+ display: inline-flex;
343
+ align-items: center;
344
+ gap: 4px;
345
+ padding: 3px 10px;
346
+ background: #0f3460;
347
+ color: #a0c4ff;
348
+ border-radius: 12px;
349
+ font-size: 0.8rem;
350
+ cursor: pointer;
351
+ transition: background 0.2s;
352
+ }
353
+ .keyword-chip:hover { background: #f44336; color: #fff; }
354
+ .search-panel .search-results {
355
+ max-height: none;
356
+ overflow-y: auto;
357
+ flex: 1;
358
+ min-height: 0;
359
+ font-size: 0.8rem;
360
+ }
361
+
362
+ /* A2A Traffic Panel */
363
+ .a2a-panel {
364
+ background: #16213e;
365
+ border-top: 1px solid #0f3460;
366
+ padding: 16px 24px;
367
+ flex: 1;
368
+ display: flex;
369
+ flex-direction: column;
370
+ min-height: 0;
371
+ overflow: hidden;
372
+ }
373
+ .a2a-panel .a2a-header {
374
+ display: flex;
375
+ align-items: center;
376
+ justify-content: space-between;
377
+ margin-bottom: 12px;
378
+ flex-shrink: 0;
379
+ }
380
+ .a2a-panel .a2a-header h3 { margin: 0; font-size: 0.95rem; color: #a0c4ff; }
381
+ .a2a-panel .a2a-count { font-size: 0.75rem; color: #888; }
382
+ .a2a-entries {
383
+ flex: 1;
384
+ overflow-y: auto;
385
+ min-height: 0;
386
+ font-size: 0.8rem;
387
+ }
388
+ .a2a-entry {
389
+ padding: 8px 10px;
390
+ border-bottom: 1px solid #0f3460;
391
+ display: grid;
392
+ grid-template-columns: 70px 60px 1fr;
393
+ gap: 8px;
394
+ align-items: start;
395
+ }
396
+ .a2a-entry:hover { background: rgba(160,196,255,0.05); }
397
+ .a2a-time { color: #888; font-family: monospace; font-size: 0.75rem; }
398
+ .a2a-endpoint { font-weight: 500; }
399
+ .a2a-endpoint.prompt { color: #4caf50; }
400
+ .a2a-endpoint.reset { color: #ff9800; }
401
+ .a2a-endpoint.status { color: #888; }
402
+ .a2a-body { color: #ccc; }
403
+ .a2a-body .a2a-prompt { color: #a0c4ff; white-space: pre-wrap; word-break: break-word; }
404
+ .a2a-body .a2a-response { color: #888; margin-top: 2px; white-space: pre-wrap; word-break: break-word; max-height: 300px; overflow-y: auto; }
405
+ .a2a-body .a2a-meta { color: #555; font-size: 0.7rem; }
406
+ .a2a-empty { color: #555; text-align: center; padding: 40px; }
407
+
408
+ /* Log Panel */
409
+ .log-panel {
410
+ width: 400px;
411
+ flex-shrink: 0;
412
+ background: #16213e;
413
+ border-left: 1px solid #0f3460;
414
+ display: flex;
415
+ flex-direction: column;
416
+ overflow: hidden;
417
+ }
418
+ .log-panel-header {
419
+ padding: 14px 16px 10px;
420
+ border-bottom: 1px solid #0f3460;
421
+ flex-shrink: 0;
422
+ }
423
+ .log-panel-header h2 {
424
+ font-size: 1rem;
425
+ color: #a0c4ff;
426
+ margin-bottom: 8px;
427
+ }
428
+ .log-level-filters {
429
+ display: flex;
430
+ gap: 6px;
431
+ }
432
+ .log-level-btn {
433
+ padding: 3px 10px;
434
+ border: 1px solid #0f3460;
435
+ border-radius: 4px;
436
+ background: transparent;
437
+ color: #9e9e9e;
438
+ cursor: pointer;
439
+ font-size: 0.75rem;
440
+ transition: all 0.2s;
441
+ }
442
+ .log-level-btn.active { background: #0f3460; color: #a0c4ff; border-color: #a0c4ff; }
443
+ .log-level-btn.lvl-error.active { background: rgba(244,67,54,0.2); color: #f44336; border-color: #f44336; }
444
+ .log-level-btn.lvl-warn.active { background: rgba(255,152,0,0.2); color: #ff9800; border-color: #ff9800; }
445
+ .log-entries {
446
+ flex: 1;
447
+ overflow-y: auto;
448
+ padding: 8px 12px;
449
+ font-family: 'Consolas', 'Monaco', monospace;
450
+ font-size: 0.72rem;
451
+ line-height: 1.5;
452
+ }
453
+ .log-line { padding: 1px 0; white-space: pre-wrap; word-break: break-all; }
454
+ .log-line.info { color: #9e9e9e; }
455
+ .log-line.warn { color: #ff9800; }
456
+ .log-line.error { color: #f44336; }
457
+ .log-line.debug { color: #666; }
458
+
459
+ /* Cron Card */
460
+ .cron-entry {
461
+ display: flex;
462
+ align-items: center;
463
+ justify-content: space-between;
464
+ padding: 6px 0;
465
+ border-bottom: 1px solid rgba(255,255,255,0.04);
466
+ font-size: 0.82rem;
467
+ }
468
+ .cron-entry .cron-info { flex: 1; min-width: 0; }
469
+ .cron-entry .cron-label { color: #e0e0e0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
470
+ .cron-entry .cron-meta { font-size: 0.7rem; color: #7e7e9e; margin-top: 2px; }
471
+ .cron-entry .cron-actions { display: flex; gap: 4px; flex-shrink: 0; margin-left: 8px; }
472
+ .cron-entry .cron-actions button {
473
+ padding: 3px 8px;
474
+ border: none;
475
+ border-radius: 4px;
476
+ font-size: 0.7rem;
477
+ cursor: pointer;
478
+ font-weight: 500;
479
+ }
480
+ .badge.paused { background: rgba(255,152,0,0.2); color: #ff9800; }
481
+ .badge.high { background: rgba(244,67,54,0.15); color: #ff6b6b; font-size: 0.65rem; }
482
+
483
+ /* Responsive */
484
+ @media (max-width: 1024px) {
485
+ .grid {
486
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
487
+ padding: 16px;
488
+ gap: 16px;
489
+ }
490
+ }
491
+
492
+ @media (max-width: 768px) {
493
+ .dashboard-layout { flex-direction: column; }
494
+ .log-panel { width: 100%; height: 300px; border-left: none; border-top: 1px solid #0f3460; }
495
+ .grid {
496
+ grid-template-columns: 1fr;
497
+ padding: 12px;
498
+ gap: 12px;
499
+ }
500
+ header { padding: 14px 16px; }
501
+ }
502
+
503
+ /* Overlay panels */
504
+ .overlay-panel {
505
+ position: fixed;
506
+ top: 0; left: 0; right: 0; bottom: 0;
507
+ background: #0a1628;
508
+ z-index: 100;
509
+ display: flex;
510
+ flex-direction: column;
511
+ padding: 20px;
512
+ }
513
+ .overlay-header {
514
+ display: flex;
515
+ justify-content: space-between;
516
+ align-items: center;
517
+ margin-bottom: 16px;
518
+ flex-shrink: 0;
519
+ }
520
+ .overlay-header h2 { margin: 0; color: #e0e0e0; }
521
+ .overlay-body {
522
+ flex: 1;
523
+ overflow-y: auto;
524
+ }
525
+ .btn-close-overlay {
526
+ background: none;
527
+ border: 1px solid #333;
528
+ color: #e0e0e0;
529
+ font-size: 1.2rem;
530
+ cursor: pointer;
531
+ padding: 4px 10px;
532
+ border-radius: 4px;
533
+ }
534
+ .btn-close-overlay:hover { background: #1a2744; }
535
+
536
+ /* Log overlay font bump */
537
+ #log-overlay .log-entries { font-size: 0.82rem; }
538
+
539
+ /* Auth indicators */
540
+ .auth-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 6px; }
541
+ .auth-dot.ok { background: #4caf50; }
542
+ .auth-dot.no { background: #f44336; }