@ipv9/tokentracker-cli 0.39.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 (192) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +464 -0
  3. package/README.ko.md +464 -0
  4. package/README.md +476 -0
  5. package/README.zh-CN.md +469 -0
  6. package/bin/tracker.js +52 -0
  7. package/dashboard/dist/app-icon.png +0 -0
  8. package/dashboard/dist/apple-touch-icon.png +0 -0
  9. package/dashboard/dist/assets/ActivityHeatmap-BxBGHY1z.js +42 -0
  10. package/dashboard/dist/assets/Card-GROxUc_6.js +1 -0
  11. package/dashboard/dist/assets/DashboardPage-BZ5VFoBk.js +19 -0
  12. package/dashboard/dist/assets/DevicePage-CQts7ivB.js +1 -0
  13. package/dashboard/dist/assets/DialogTitle-DqFsk26U.js +1 -0
  14. package/dashboard/dist/assets/FadeIn-HBBXW_3q.js +1 -0
  15. package/dashboard/dist/assets/HeaderGithubStar-COD2HfaF.js +1 -0
  16. package/dashboard/dist/assets/IpCheckPage-Cn0l8-BQ.js +15 -0
  17. package/dashboard/dist/assets/LandingPage-CmV1BMU4.js +4356 -0
  18. package/dashboard/dist/assets/LeaderboardAvatar-CiIpWZwb.js +1 -0
  19. package/dashboard/dist/assets/LeaderboardPage-BU0mlR3g.js +6 -0
  20. package/dashboard/dist/assets/LeaderboardProfileModal-C49_3Xm9.js +72 -0
  21. package/dashboard/dist/assets/LeaderboardProfilePage-Bh1n0BAM.js +1 -0
  22. package/dashboard/dist/assets/LimitsPage-fZAmwLWT.js +2 -0
  23. package/dashboard/dist/assets/LocalOnlyNotice-D3rQdA-P.js +1 -0
  24. package/dashboard/dist/assets/LoginPage-enO4XP-c.js +1 -0
  25. package/dashboard/dist/assets/PopoverPopup-pitJEpN1.js +1 -0
  26. package/dashboard/dist/assets/Select-tT9x4ntD.js +1 -0
  27. package/dashboard/dist/assets/SelectItemText-C7F7eIm0.js +1 -0
  28. package/dashboard/dist/assets/SettingsPage-pDasZNU2.js +1 -0
  29. package/dashboard/dist/assets/SkillsPage-DEu7FY-2.js +1 -0
  30. package/dashboard/dist/assets/WidgetsPage-DGcO7rbp.js +1 -0
  31. package/dashboard/dist/assets/WrappedPage-D_1ID213.js +1 -0
  32. package/dashboard/dist/assets/agent-logos-DXQVg1xy.js +1 -0
  33. package/dashboard/dist/assets/arrow-up-right-DNLo92Ba.js +1 -0
  34. package/dashboard/dist/assets/download-DbBBBpJF.js +1 -0
  35. package/dashboard/dist/assets/geist-mono-cyrillic-400-normal-BPBWmzPh.woff +0 -0
  36. package/dashboard/dist/assets/geist-mono-cyrillic-400-normal-Ce5q_31Z.woff2 +0 -0
  37. package/dashboard/dist/assets/geist-mono-cyrillic-500-normal-CJBLNVQT.woff2 +0 -0
  38. package/dashboard/dist/assets/geist-mono-cyrillic-500-normal-mNhfPmgl.woff +0 -0
  39. package/dashboard/dist/assets/geist-mono-cyrillic-700-normal-DH5Q319x.woff +0 -0
  40. package/dashboard/dist/assets/geist-mono-cyrillic-700-normal-VCNRadI3.woff2 +0 -0
  41. package/dashboard/dist/assets/geist-mono-cyrillic-900-normal-BKC3PZkM.woff +0 -0
  42. package/dashboard/dist/assets/geist-mono-cyrillic-900-normal-DdrQ8KBw.woff2 +0 -0
  43. package/dashboard/dist/assets/geist-mono-latin-400-normal-CoULgQGM.woff +0 -0
  44. package/dashboard/dist/assets/geist-mono-latin-400-normal-LC9RFr9I.woff2 +0 -0
  45. package/dashboard/dist/assets/geist-mono-latin-500-normal-D3o2eNa9.woff2 +0 -0
  46. package/dashboard/dist/assets/geist-mono-latin-500-normal-DOxI7kZ4.woff +0 -0
  47. package/dashboard/dist/assets/geist-mono-latin-700-normal-D6izGJRP.woff2 +0 -0
  48. package/dashboard/dist/assets/geist-mono-latin-700-normal-QGw08Lff.woff +0 -0
  49. package/dashboard/dist/assets/geist-mono-latin-900-normal-CmoKXrdK.woff +0 -0
  50. package/dashboard/dist/assets/geist-mono-latin-900-normal-Cu5MFKsu.woff2 +0 -0
  51. package/dashboard/dist/assets/geist-mono-latin-ext-400-normal-Cgks_Qgx.woff2 +0 -0
  52. package/dashboard/dist/assets/geist-mono-latin-ext-400-normal-CxNRRMGd.woff +0 -0
  53. package/dashboard/dist/assets/geist-mono-latin-ext-500-normal-CQcGuCNt.woff2 +0 -0
  54. package/dashboard/dist/assets/geist-mono-latin-ext-500-normal-diTenJ8L.woff +0 -0
  55. package/dashboard/dist/assets/geist-mono-latin-ext-700-normal-BX9f1BHp.woff +0 -0
  56. package/dashboard/dist/assets/geist-mono-latin-ext-700-normal-YOllDaLV.woff2 +0 -0
  57. package/dashboard/dist/assets/geist-mono-latin-ext-900-normal-Br6WNUGb.woff +0 -0
  58. package/dashboard/dist/assets/geist-mono-latin-ext-900-normal-CrmBTzU2.woff2 +0 -0
  59. package/dashboard/dist/assets/index-BeoRn2gJ.js +2 -0
  60. package/dashboard/dist/assets/info-Bh5qTz6k.js +1 -0
  61. package/dashboard/dist/assets/main-BIY3Nj6I.js +969 -0
  62. package/dashboard/dist/assets/main-G_F9Iu_x.css +1 -0
  63. package/dashboard/dist/assets/use-limits-display-prefs-B4iJ-bBc.js +1 -0
  64. package/dashboard/dist/assets/use-native-settings-DHjPFDv8.js +1 -0
  65. package/dashboard/dist/assets/use-usage-limits-odqe9OY7.js +1 -0
  66. package/dashboard/dist/assets/useCurrency-BsSZiZMP.js +1 -0
  67. package/dashboard/dist/assets/useOpenInteractionType-BQhgq4rv.js +12 -0
  68. package/dashboard/dist/brand-logos/antigravity.svg +1 -0
  69. package/dashboard/dist/brand-logos/claude-code.svg +1 -0
  70. package/dashboard/dist/brand-logos/codebuddy.svg +1 -0
  71. package/dashboard/dist/brand-logos/codex.svg +15 -0
  72. package/dashboard/dist/brand-logos/copilot.svg +1 -0
  73. package/dashboard/dist/brand-logos/cursor.svg +1 -0
  74. package/dashboard/dist/brand-logos/gemini.svg +1 -0
  75. package/dashboard/dist/brand-logos/grok.svg +1 -0
  76. package/dashboard/dist/brand-logos/hermes.svg +1 -0
  77. package/dashboard/dist/brand-logos/kilo.svg +4 -0
  78. package/dashboard/dist/brand-logos/kimi.svg +1 -0
  79. package/dashboard/dist/brand-logos/kiro.svg +1 -0
  80. package/dashboard/dist/brand-logos/openclaw.svg +22 -0
  81. package/dashboard/dist/brand-logos/opencode.svg +3 -0
  82. package/dashboard/dist/clawd/happy.svg +161 -0
  83. package/dashboard/dist/clawd/idle/collapse.svg +101 -0
  84. package/dashboard/dist/clawd/idle/doze.svg +72 -0
  85. package/dashboard/dist/clawd/idle/follow.svg +64 -0
  86. package/dashboard/dist/clawd/idle/living.svg +196 -0
  87. package/dashboard/dist/clawd/idle/look.svg +115 -0
  88. package/dashboard/dist/clawd/idle/yawn.svg +158 -0
  89. package/dashboard/dist/clawd/mini/alert.svg +129 -0
  90. package/dashboard/dist/clawd/mini/crabwalk.svg +76 -0
  91. package/dashboard/dist/clawd/mini/enter-sleep.svg +65 -0
  92. package/dashboard/dist/clawd/mini/enter.svg +115 -0
  93. package/dashboard/dist/clawd/mini/happy.svg +124 -0
  94. package/dashboard/dist/clawd/mini/idle-tight.svg +15 -0
  95. package/dashboard/dist/clawd/mini/idle.svg +83 -0
  96. package/dashboard/dist/clawd/mini/peek.svg +82 -0
  97. package/dashboard/dist/clawd/mini/sleep.svg +112 -0
  98. package/dashboard/dist/clawd/react/double.svg +108 -0
  99. package/dashboard/dist/clawd/react/drag.svg +102 -0
  100. package/dashboard/dist/clawd/react/left.svg +102 -0
  101. package/dashboard/dist/clawd/react/right.svg +102 -0
  102. package/dashboard/dist/clawd/sleep/collapse-sleep.svg +247 -0
  103. package/dashboard/dist/clawd/sleep/sleeping.svg +118 -0
  104. package/dashboard/dist/clawd/sleep/wake.svg +277 -0
  105. package/dashboard/dist/clawd/static-base.svg +21 -0
  106. package/dashboard/dist/clawd/status/disconnected.svg +136 -0
  107. package/dashboard/dist/clawd/status/error.svg +94 -0
  108. package/dashboard/dist/clawd/status/notification.svg +134 -0
  109. package/dashboard/dist/clawd/working/building.svg +231 -0
  110. package/dashboard/dist/clawd/working/carrying.svg +107 -0
  111. package/dashboard/dist/clawd/working/conducting.svg +118 -0
  112. package/dashboard/dist/clawd/working/confused.svg +113 -0
  113. package/dashboard/dist/clawd/working/debugger.svg +91 -0
  114. package/dashboard/dist/clawd/working/juggling.svg +82 -0
  115. package/dashboard/dist/clawd/working/overheated.svg +75 -0
  116. package/dashboard/dist/clawd/working/pushing.svg +125 -0
  117. package/dashboard/dist/clawd/working/sweeping.svg +79 -0
  118. package/dashboard/dist/clawd/working/thinking.svg +119 -0
  119. package/dashboard/dist/clawd/working/typing.svg +153 -0
  120. package/dashboard/dist/clawd/working/ultrathink.svg +166 -0
  121. package/dashboard/dist/clawd/working/wizard.svg +98 -0
  122. package/dashboard/dist/dashboard-dark.png +0 -0
  123. package/dashboard/dist/favicon-16.png +0 -0
  124. package/dashboard/dist/favicon-32.png +0 -0
  125. package/dashboard/dist/favicon.ico +0 -0
  126. package/dashboard/dist/feed.xml +34 -0
  127. package/dashboard/dist/icon-192.png +0 -0
  128. package/dashboard/dist/icon-512.png +0 -0
  129. package/dashboard/dist/index.html +355 -0
  130. package/dashboard/dist/llms.txt +53 -0
  131. package/dashboard/dist/neon_bg.png +0 -0
  132. package/dashboard/dist/robots.txt +7 -0
  133. package/dashboard/dist/share.html +140 -0
  134. package/dashboard/dist/sitemap.xml +27 -0
  135. package/dashboard/dist/widgets-overview.png +0 -0
  136. package/package.json +78 -0
  137. package/scripts/install-local-service.sh +140 -0
  138. package/scripts/uninstall-local-service.sh +21 -0
  139. package/src/cli.js +95 -0
  140. package/src/commands/device-login.js +161 -0
  141. package/src/commands/diagnostics.js +38 -0
  142. package/src/commands/doctor.js +96 -0
  143. package/src/commands/init.js +1195 -0
  144. package/src/commands/serve.js +351 -0
  145. package/src/commands/status.js +609 -0
  146. package/src/commands/sync.js +2285 -0
  147. package/src/commands/uninstall.js +189 -0
  148. package/src/commands/wrapped.js +150 -0
  149. package/src/lib/antigravity-paths.js +48 -0
  150. package/src/lib/browser-auth.js +281 -0
  151. package/src/lib/categorizer-utils.js +232 -0
  152. package/src/lib/claude-categorizer.js +1319 -0
  153. package/src/lib/claude-config.js +204 -0
  154. package/src/lib/cli-ui.js +179 -0
  155. package/src/lib/codex-config.js +350 -0
  156. package/src/lib/codex-context-breakdown.js +400 -0
  157. package/src/lib/codex-rollout-parser.js +623 -0
  158. package/src/lib/codex-token-refresh.js +112 -0
  159. package/src/lib/cursor-config.js +425 -0
  160. package/src/lib/debug-flags.js +7 -0
  161. package/src/lib/diagnostics.js +272 -0
  162. package/src/lib/doctor.js +338 -0
  163. package/src/lib/fs.js +91 -0
  164. package/src/lib/gemini-config.js +288 -0
  165. package/src/lib/grok-hook.js +351 -0
  166. package/src/lib/init-flow.js +42 -0
  167. package/src/lib/local-api.js +1861 -0
  168. package/src/lib/openclaw-hook.js +420 -0
  169. package/src/lib/openclaw-session-plugin.js +520 -0
  170. package/src/lib/opencode-config.js +99 -0
  171. package/src/lib/passive-mode.js +185 -0
  172. package/src/lib/pricing/curated-overrides.json +79 -0
  173. package/src/lib/pricing/index.js +143 -0
  174. package/src/lib/pricing/litellm-fetcher.js +172 -0
  175. package/src/lib/pricing/matcher.js +255 -0
  176. package/src/lib/pricing/seed-snapshot.json +1 -0
  177. package/src/lib/progress.js +76 -0
  178. package/src/lib/project-usage-purge.js +106 -0
  179. package/src/lib/prompt.js +24 -0
  180. package/src/lib/proxy-env.js +131 -0
  181. package/src/lib/rollout.js +8442 -0
  182. package/src/lib/runtime-config.js +122 -0
  183. package/src/lib/skill-usage.js +267 -0
  184. package/src/lib/skills-manager.js +1127 -0
  185. package/src/lib/source-metadata.js +48 -0
  186. package/src/lib/sqlite-reader.js +136 -0
  187. package/src/lib/static-server.js +59 -0
  188. package/src/lib/subscriptions.js +453 -0
  189. package/src/lib/tracker-paths.js +16 -0
  190. package/src/lib/upload-throttle.js +148 -0
  191. package/src/lib/usage-limits.js +1806 -0
  192. package/src/lib/wrapped-aggregator.js +225 -0
@@ -0,0 +1,113 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ .body-anim {
5
+ transform-origin: 7.5px 15px;
6
+ animation: body-look 6s infinite ease-in-out;
7
+ }
8
+ .eyes-anim {
9
+ animation: eyes-look 6s infinite ease-in-out;
10
+ }
11
+ .eyes-blink {
12
+ transform-origin: 7.5px 9px;
13
+ animation: blink 6s infinite linear;
14
+ }
15
+ .question-mark-l {
16
+ transform-origin: center;
17
+ animation: question-pop-l 6s infinite ease-in-out;
18
+ opacity: 0;
19
+ }
20
+ .question-mark-r {
21
+ transform-origin: center;
22
+ animation: question-pop-r 6s infinite ease-in-out;
23
+ opacity: 0;
24
+ }
25
+
26
+ /* Character Upper Body Movement (Simulates Side-to-Side Head/Torso Tilt) */
27
+ @keyframes body-look {
28
+ 0%, 10% { transform: translate(0px, 0px); }
29
+ 15%, 35% { transform: translate(-2px, 0px) rotate(-2deg); } /* Looks left */
30
+ 40%, 45% { transform: translate(0px, 0px); }
31
+ 50%, 70% { transform: translate(2px, 0px) rotate(2deg); } /* Looks right */
32
+ 75%, 100% { transform: translate(0px, 0px); }
33
+ }
34
+
35
+ /* Eye Movement for Parallax Directional Looking */
36
+ @keyframes eyes-look {
37
+ 0%, 10% { transform: translate(0px, 0px); }
38
+ 15%, 35% { transform: translate(-3px, 0px); }
39
+ 40%, 45% { transform: translate(0px, 0px); }
40
+ 50%, 70% { transform: translate(3px, 0px); }
41
+ 75%, 100% { transform: translate(0px, 0px); }
42
+ }
43
+
44
+ /* Occasional Blinking */
45
+ @keyframes blink {
46
+ 0%, 13%, 17%, 48%, 52%, 80%, 84%, 100% { transform: scaleY(1); }
47
+ 15%, 50%, 82% { transform: scaleY(0.1); }
48
+ }
49
+
50
+ /* Confused Question Mark Animation Left */
51
+ @keyframes question-pop-l {
52
+ 0%, 15% { opacity: 0; transform: translate(-6px, 6px) scale(0.5); }
53
+ 20%, 30% { opacity: 1; transform: translate(-8px, -2px) scale(1); }
54
+ 35%, 100% { opacity: 0; transform: translate(-8px, -8px) scale(1.2); }
55
+ }
56
+
57
+ /* Confused Question Mark Animation Right */
58
+ @keyframes question-pop-r {
59
+ 0%, 50% { opacity: 0; transform: translate(6px, 6px) scale(0.5); }
60
+ 55%, 65% { opacity: 1; transform: translate(8px, -2px) scale(1); }
61
+ 70%, 100% { opacity: 0; transform: translate(8px, -8px) scale(1.2); }
62
+ }
63
+ </style>
64
+
65
+ <g id="pixel-question">
66
+ <rect x="1" y="0" width="2" height="1"/>
67
+ <rect x="0" y="1" width="1" height="1"/>
68
+ <rect x="3" y="1" width="1" height="2"/>
69
+ <rect x="2" y="3" width="1" height="1"/>
70
+ <rect x="1" y="4" width="1" height="1"/>
71
+ <rect x="1" y="6" width="1" height="1"/>
72
+ </g>
73
+ </defs>
74
+
75
+ <!-- Character Ground Shadow -->
76
+ <rect id="ground-shadow" x="3" y="15" width="9" height="1" fill="#000000" opacity="0.5"/>
77
+
78
+ <!-- Static Character Legs -->
79
+ <g id="legs" fill="#DE886D">
80
+ <rect id="outer-left-leg" x="3" y="13" width="1" height="2"/>
81
+ <rect id="inner-left-leg" x="5" y="13" width="1" height="2"/>
82
+ <rect id="inner-right-leg" x="9" y="13" width="1" height="2"/>
83
+ <rect id="outer-right-leg" x="11" y="13" width="1" height="2"/>
84
+ </g>
85
+
86
+ <!-- Animated Upper Body (Torso, Arms, and Eyes) -->
87
+ <g class="body-anim">
88
+ <!-- Body Color Group -->
89
+ <g fill="#DE886D">
90
+ <rect id="torso" x="2" y="6" width="11" height="7"/>
91
+ <!-- Scratching head arm (left arm raised slightly) -->
92
+ <rect id="left-arm" x="-1" y="7" width="2" height="2" transform="rotate(15 0 8)"/>
93
+ <rect id="right-arm" x="13" y="9" width="2" height="2"/>
94
+ </g>
95
+
96
+ <!-- Eyes Color Group -->
97
+ <g class="eyes-anim">
98
+ <g class="eyes-blink" fill="#000000">
99
+ <rect id="left-eye" x="4" y="8" width="1" height="2"/>
100
+ <rect id="right-eye" x="10" y="8" width="1" height="2"/>
101
+ </g>
102
+ </g>
103
+ </g>
104
+
105
+ <!-- Confused Question Marks -->
106
+ <g class="question-mark-l" fill="#40C4FF" transform="translate(0, 0)">
107
+ <use href="#pixel-question" />
108
+ </g>
109
+ <g class="question-mark-r" fill="#FFC107" transform="translate(10, 0)">
110
+ <use href="#pixel-question" />
111
+ </g>
112
+
113
+ </svg>
@@ -0,0 +1,91 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ .body-hunch {
5
+ transform-origin: 7.5px 15px;
6
+ animation: hunch-walk 2s infinite alternate ease-in-out;
7
+ }
8
+ .magnifying-glass {
9
+ transform-origin: 14px 10px; /* Pivot at the right shoulder */
10
+ animation: search-glass 3s infinite ease-in-out;
11
+ }
12
+ .leg-1 { animation: sneak-1 0.5s infinite linear; transform-origin: top center; transform-box: fill-box; }
13
+ .leg-2 { animation: sneak-2 0.5s infinite linear; transform-origin: top center; transform-box: fill-box; }
14
+ .shadow-sneak {
15
+ transform-origin: 7.5px 15.5px;
16
+ animation: shadow-shift 2s infinite alternate ease-in-out;
17
+ }
18
+
19
+ /* Sneaking forward and backward */
20
+ @keyframes hunch-walk {
21
+ 0% { transform: translate(-2px, 1px) rotate(2deg); }
22
+ 100% { transform: translate(3px, 1px) rotate(2deg); }
23
+ }
24
+ @keyframes shadow-shift {
25
+ 0% { transform: translateX(-2px) scale(0.9); opacity: 0.4; }
26
+ 100% { transform: translateX(3px) scale(0.9); opacity: 0.4; }
27
+ }
28
+
29
+ /* Hovering the magnifying glass over the eye */
30
+ @keyframes search-glass {
31
+ 0%, 100% { transform: rotate(0deg) scale(1); }
32
+ 50% { transform: rotate(-3deg) scale(1.05); }
33
+ }
34
+
35
+ /* Fast tiptoe / sneak leg movement */
36
+ @keyframes sneak-1 {
37
+ 0%, 100% { transform: rotate(0deg) scaleY(1); }
38
+ 50% { transform: rotate(-25deg) scaleY(0.7); }
39
+ }
40
+ @keyframes sneak-2 {
41
+ 0%, 100% { transform: rotate(-25deg) scaleY(0.7); }
42
+ 50% { transform: rotate(0deg) scaleY(1); }
43
+ }
44
+ </style>
45
+ </defs>
46
+
47
+ <rect id="ground-shadow" class="shadow-sneak" x="3" y="15" width="9" height="1" fill="#000000" opacity="0.5"/>
48
+
49
+ <g class="body-hunch">
50
+ <g id="legs" fill="#DE886D">
51
+ <rect id="outer-left-leg" class="leg-1" x="3" y="13" width="1" height="2"/>
52
+ <rect id="inner-left-leg" class="leg-2" x="5" y="13" width="1" height="2"/>
53
+ <rect id="inner-right-leg" class="leg-1" x="9" y="13" width="1" height="2"/>
54
+ <rect id="outer-right-leg" class="leg-2" x="11" y="13" width="1" height="2"/>
55
+ </g>
56
+
57
+ <g id="body-color-group" fill="#DE886D">
58
+ <rect id="torso" x="2" y="6" width="11" height="7"/>
59
+ <!-- Left arm tucked back slightly -->
60
+ <rect id="left-arm" x="0" y="9" width="2" height="2" transform="translate(1, -1) rotate(15 1 10)"/>
61
+ </g>
62
+
63
+ <!-- Left Eye (squinting) -->
64
+ <g fill="#000000">
65
+ <rect id="left-eye" x="4" y="8.5" width="1" height="1"/>
66
+ </g>
67
+
68
+ <!-- Right Arm & Magnifying Glass -->
69
+ <g class="magnifying-glass">
70
+ <rect id="right-arm" x="13" y="9" width="2" height="2" fill="#DE886D"/>
71
+
72
+ <!-- The Magnifying Glass -->
73
+ <g id="glass" transform="translate(13.5, 9.5)">
74
+ <!-- Angled Handle from hand to rim -->
75
+ <polygon points="0.5,1.5 1.5,0.5 -1,-2 -2,-1" fill="#795548"/>
76
+
77
+ <!-- Large circular-ish Rim -->
78
+ <rect x="-6" y="-5" width="6" height="6" fill="#546E7A" rx="2"/>
79
+
80
+ <!-- Magnified Right Eye (Huge!) - Drawn behind the lens -->
81
+ <rect x="-4" y="-3.5" width="2" height="3" fill="#000000"/>
82
+
83
+ <!-- Glass Lens (semi-transparent so eye shows through) -->
84
+ <rect x="-5.5" y="-4.5" width="5" height="5" fill="#E0F7FA" rx="1.5" opacity="0.6"/>
85
+
86
+ <!-- Glare / Reflection on the glass -->
87
+ <rect x="-4.5" y="-3.5" width="1.5" height="1.5" fill="#FFFFFF" opacity="0.8"/>
88
+ </g>
89
+ </g>
90
+ </g>
91
+ </svg>
@@ -0,0 +1,82 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ .body-rock {
5
+ transform-origin: 7.5px 15px;
6
+ animation: rock 0.6s infinite alternate ease-in-out;
7
+ }
8
+ .arm-juggle-l {
9
+ transform-origin: 1px 10px;
10
+ animation: arm-jl 0.6s infinite alternate ease-in-out;
11
+ }
12
+ .arm-juggle-r {
13
+ transform-origin: 14px 10px;
14
+ animation: arm-jr 0.6s infinite alternate ease-in-out;
15
+ }
16
+ .eyes-dart {
17
+ animation: dart 1.2s infinite;
18
+ }
19
+ .packet {
20
+ animation: juggle 1.2s infinite linear;
21
+ }
22
+ .p1 { animation-delay: 0s; fill: #FF5252; }
23
+ .p2 { animation-delay: -0.4s; fill: #FFC107; }
24
+ .p3 { animation-delay: -0.8s; fill: #4CAF50; }
25
+
26
+ @keyframes rock {
27
+ 0% { transform: rotate(-5deg); }
28
+ 100% { transform: rotate(5deg); }
29
+ }
30
+ @keyframes arm-jl {
31
+ 0% { transform: rotate(60deg); }
32
+ 100% { transform: rotate(10deg); }
33
+ }
34
+ @keyframes arm-jr {
35
+ 0% { transform: rotate(-10deg); }
36
+ 100% { transform: rotate(-60deg); }
37
+ }
38
+ @keyframes dart {
39
+ 0%, 100% { transform: translate(-2px, -2px); }
40
+ 25% { transform: translate(0, -3px); }
41
+ 50% { transform: translate(2px, -2px); }
42
+ 75% { transform: translate(0, 0); }
43
+ }
44
+ @keyframes juggle {
45
+ 0% { transform: translate(0px, 9px) rotate(0deg); }
46
+ 25% { transform: translate(8px, 0px) rotate(90deg); }
47
+ 50% { transform: translate(15px, 9px) rotate(180deg); }
48
+ 75% { transform: translate(8px, 4px) rotate(270deg); }
49
+ 100% { transform: translate(0px, 9px) rotate(360deg); }
50
+ }
51
+ </style>
52
+ </defs>
53
+
54
+ <rect id="ground-shadow" x="3" y="15" width="9" height="1" fill="#000000" opacity="0.5"/>
55
+
56
+ <!-- Juggling Packets -->
57
+ <g class="packets">
58
+ <rect class="packet p1" x="-1" y="-1" width="2" height="2" />
59
+ <rect class="packet p2" x="-1" y="-1" width="2" height="2" />
60
+ <rect class="packet p3" x="-1" y="-1" width="2" height="2" />
61
+ </g>
62
+
63
+ <g class="body-rock">
64
+ <g id="legs" fill="#DE886D">
65
+ <rect x="3" y="13" width="1" height="2"/>
66
+ <rect x="5" y="13" width="1" height="2"/>
67
+ <rect x="9" y="13" width="1" height="2"/>
68
+ <rect x="11" y="13" width="1" height="2"/>
69
+ </g>
70
+
71
+ <g id="body-color-group" fill="#DE886D">
72
+ <rect x="2" y="6" width="11" height="7"/>
73
+ <g class="arm-juggle-l"><rect x="0" y="9" width="2" height="2"/></g>
74
+ <g class="arm-juggle-r"><rect x="13" y="9" width="2" height="2"/></g>
75
+ </g>
76
+
77
+ <g class="eyes-dart" fill="#000000">
78
+ <rect x="4" y="8" width="1" height="2"/>
79
+ <rect x="10" y="8" width="1" height="2"/>
80
+ </g>
81
+ </g>
82
+ </svg>
@@ -0,0 +1,75 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ .body-exhausted {
5
+ transform-origin: 7.5px 15px;
6
+ animation: heavy-breathe 2.5s infinite ease-in-out;
7
+ }
8
+ .arm-fan {
9
+ transform-origin: 14px 10px;
10
+ animation: fan-self 0.4s infinite alternate ease-in-out;
11
+ }
12
+ .smoke {
13
+ opacity: 0;
14
+ animation: puff-smoke 3s infinite ease-out;
15
+ }
16
+ .sm1 { animation-delay: 0s; }
17
+ .sm2 { animation-delay: 1s; }
18
+ .sm3 { animation-delay: 2s; }
19
+
20
+ @keyframes heavy-breathe {
21
+ 0%, 100% { transform: scale(1, 1) translateY(0); }
22
+ 50% { transform: scale(1.05, 0.9) translateY(1.5px); }
23
+ }
24
+ @keyframes fan-self {
25
+ 0% { transform: rotate(0deg); }
26
+ 100% { transform: rotate(-60deg); }
27
+ }
28
+ @keyframes puff-smoke {
29
+ 0% { transform: translate(7.5px, 6px) scale(0.5); opacity: 0; }
30
+ 20% { opacity: 0.6; }
31
+ 100% { transform: translate(7.5px, -15px) scale(2); opacity: 0; }
32
+ }
33
+ </style>
34
+ <g id="smoke-puff">
35
+ <rect x="-1" y="-1" width="2" height="2" fill="#B0BEC5" rx="0.5"/>
36
+ <rect x="0" y="-2" width="2" height="2" fill="#CFD8DC" rx="0.5"/>
37
+ </g>
38
+ </defs>
39
+
40
+ <rect id="ground-shadow" x="-1" y="15" width="17" height="1" fill="#000000" opacity="0.5"/>
41
+
42
+ <!-- Smoke -->
43
+ <g>
44
+ <use href="#smoke-puff" class="smoke sm1"/>
45
+ <use href="#smoke-puff" class="smoke sm2" transform="translate(-2, 0)"/>
46
+ <use href="#smoke-puff" class="smoke sm3" transform="translate(2, 0)"/>
47
+ </g>
48
+
49
+ <g class="body-exhausted">
50
+ <!-- Sploot Legs -->
51
+ <g fill="#DE886D">
52
+ <rect x="3" y="9" width="1" height="1"/>
53
+ <rect x="5" y="9" width="1" height="1"/>
54
+ <rect x="9" y="9" width="1" height="1"/>
55
+ <rect x="11" y="9" width="1" height="1"/>
56
+ </g>
57
+
58
+ <!-- Torso Sploot -->
59
+ <g fill="#DE886D">
60
+ <rect x="1" y="10" width="13" height="5"/>
61
+ <rect x="-1" y="13" width="2" height="2"/> <!-- left arm down -->
62
+ </g>
63
+
64
+ <!-- Fanning Arm -->
65
+ <g class="arm-fan">
66
+ <rect x="14" y="11" width="2" height="2" fill="#DE886D"/>
67
+ </g>
68
+
69
+ <!-- Tired Eyes -->
70
+ <g fill="#000000">
71
+ <rect x="3.5" y="12.5" width="2" height="0.4"/>
72
+ <rect x="9.5" y="12.5" width="2" height="0.4"/>
73
+ </g>
74
+ </g>
75
+ </svg>
@@ -0,0 +1,125 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ /* Straining body lean */
5
+ .body-push {
6
+ transform-origin: 7.5px 15px; /* Pivot at the base of the feet */
7
+ animation: push-strain 0.6s infinite alternate ease-in-out;
8
+ }
9
+
10
+ /* Heavy Data Block shaking */
11
+ .data-block {
12
+ animation: block-shake 0.1s infinite alternate;
13
+ }
14
+
15
+ /* Scrambling legs (alternating) */
16
+ .leg {
17
+ transform-box: fill-box;
18
+ transform-origin: top center;
19
+ }
20
+ .leg-1 { animation: run-1 0.3s infinite linear; }
21
+ .leg-2 { animation: run-2 0.3s infinite linear; }
22
+
23
+ /* Sweat drop flying off */
24
+ .sweat {
25
+ opacity: 0;
26
+ animation: sweat-fly 2s infinite cubic-bezier(.25,.1,.25,1);
27
+ }
28
+
29
+ /* Ground shadow shifting */
30
+ .shadow-push {
31
+ transform-origin: 7.5px 15.5px;
32
+ animation: shadow-strain 0.6s infinite alternate ease-in-out;
33
+ }
34
+
35
+ /* Keyframes */
36
+ @keyframes push-strain {
37
+ 0% { transform: rotate(12deg) scale(1, 0.95); }
38
+ 100% { transform: rotate(18deg) scale(1.05, 0.9); } /* Deeper lean and squash */
39
+ }
40
+
41
+ @keyframes shadow-strain {
42
+ 0% { transform: translateX(1px) scaleX(1); opacity: 0.5; }
43
+ 100% { transform: translateX(3px) scaleX(1.1); opacity: 0.6; }
44
+ }
45
+
46
+ @keyframes block-shake {
47
+ 0% { transform: translate(0, 0); }
48
+ 100% { transform: translate(0.5px, -0.5px); }
49
+ }
50
+
51
+ /* Scrambling legs swinging backwards to push */
52
+ @keyframes run-1 {
53
+ 0%, 100% { transform: rotate(0deg) scaleY(1); }
54
+ 50% { transform: rotate(-25deg) scaleY(0.7); }
55
+ }
56
+ @keyframes run-2 {
57
+ 0%, 100% { transform: rotate(-25deg) scaleY(0.7); }
58
+ 50% { transform: rotate(0deg) scaleY(1); }
59
+ }
60
+
61
+ /* Sweat drop flies back and fades */
62
+ @keyframes sweat-fly {
63
+ 0% { transform: translate(0, 0) scale(0); opacity: 0; }
64
+ 10% { transform: translate(0, 0) scale(1); opacity: 1; }
65
+ 40% { transform: translate(-8px, -4px) scale(0.8); opacity: 0; }
66
+ 100% { opacity: 0; }
67
+ }
68
+ </style>
69
+ </defs>
70
+
71
+ <!-- Ground Shadows -->
72
+ <rect id="ground-shadow" class="shadow-push" x="3" y="15" width="9" height="1" fill="#000000" opacity="0.5"/>
73
+ <rect id="block-shadow" x="14" y="15" width="10" height="1" fill="#000000" opacity="0.4"/>
74
+
75
+ <!-- Heavy Data Block -->
76
+ <g class="data-block" transform="translate(14, 5)">
77
+ <!-- Main Block -->
78
+ <rect x="0" y="0" width="10" height="10" fill="#90A4AE"/>
79
+ <rect x="1" y="1" width="8" height="8" fill="#CFD8DC"/>
80
+
81
+ <!-- Data "Lights" on the block -->
82
+ <rect x="2" y="2" width="2" height="2" fill="#0082FC"/>
83
+ <rect x="6" y="2" width="2" height="2" fill="#FFC107"/>
84
+ <rect x="2" y="6" width="6" height="2" fill="#B0BEC5"/>
85
+ </g>
86
+
87
+ <!-- Leaning Body -->
88
+ <g class="body-push">
89
+
90
+ <!-- Sweat Drop (Positioned near the side of the head) -->
91
+ <g transform="translate(1, 4)">
92
+ <g class="sweat" fill="#40C4FF">
93
+ <rect x="0" y="1" width="1.5" height="1.5"/>
94
+ <rect x="0.25" y="0" width="1" height="1"/>
95
+ </g>
96
+ </g>
97
+
98
+ <!-- Body Base Color Group -->
99
+ <g id="body-color-group" fill="#DE886D">
100
+ <!-- Scrambling Legs -->
101
+ <rect id="outer-left-leg" class="leg leg-1" x="3" y="13" width="1" height="2"/>
102
+ <rect id="inner-left-leg" class="leg leg-2" x="5" y="13" width="1" height="2"/>
103
+ <rect id="inner-right-leg" class="leg leg-1" x="9" y="13" width="1" height="2"/>
104
+ <rect id="outer-right-leg" class="leg leg-2" x="11" y="13" width="1" height="2"/>
105
+
106
+ <!-- Main Torso -->
107
+ <rect id="torso" x="2" y="6" width="11" height="7"/>
108
+
109
+ <!-- Left Arm (Pushed forward, reaching across body) -->
110
+ <rect id="left-arm" x="0" y="9" width="2" height="2" transform="translate(11, 0) rotate(-15 1 10)"/>
111
+
112
+ <!-- Right Arm (Pushed forward, fully extended) -->
113
+ <rect id="right-arm" x="13" y="9" width="2" height="2" transform="translate(0, -1) rotate(-15 14 10)"/>
114
+ </g>
115
+
116
+ <!-- Eyes Color Group (Straining, looking at the block) -->
117
+ <g fill="#000000">
118
+ <!-- Left eye is squinting hard -->
119
+ <rect id="left-eye" x="8" y="8.5" width="1" height="1"/>
120
+ <!-- Right eye is wide with strain -->
121
+ <rect id="right-eye" x="12" y="7" width="1" height="2.5"/>
122
+ </g>
123
+
124
+ </g>
125
+ </svg>
@@ -0,0 +1,79 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ .body-sweep {
5
+ transform-origin: 7.5px 15px;
6
+ animation: sweep-lean 1.5s infinite ease-in-out;
7
+ }
8
+ .arm-sweep {
9
+ transform-origin: 14px 10px;
10
+ animation: sweep-arm 1.5s infinite ease-in-out;
11
+ }
12
+ .broom {
13
+ transform-origin: 13.5px 14px;
14
+ animation: sweep-broom 1.5s infinite ease-in-out;
15
+ }
16
+ .dust {
17
+ opacity: 0;
18
+ animation: sweep-dust 1.5s infinite ease-out;
19
+ }
20
+ .d1 { animation-delay: 0.2s; }
21
+ .d2 { animation-delay: 0.4s; }
22
+
23
+ @keyframes sweep-lean {
24
+ 0%, 100% { transform: rotate(5deg) translate(1px, 0); }
25
+ 50% { transform: rotate(15deg) translate(3px, 1px); }
26
+ }
27
+ @keyframes sweep-arm {
28
+ 0%, 100% { transform: rotate(0deg); }
29
+ 50% { transform: rotate(-20deg); }
30
+ }
31
+ @keyframes sweep-broom {
32
+ 0%, 100% { transform: rotate(10deg); }
33
+ 50% { transform: rotate(30deg) translate(2px, -1px); }
34
+ }
35
+ @keyframes sweep-dust {
36
+ 0%, 40% { transform: translate(17px, 14px) scale(0); opacity: 0; }
37
+ 50% { transform: translate(19px, 14px) scale(1); opacity: 1; }
38
+ 100% { transform: translate(25px, 14px) scale(0.5); opacity: 0; }
39
+ }
40
+ </style>
41
+ </defs>
42
+
43
+ <!-- Mirrored: entire scene flipped so Clawd sweeps leftward -->
44
+ <g transform="translate(15, 0) scale(-1, 1)">
45
+ <rect id="ground-shadow" x="3" y="15" width="13" height="1" fill="#000000" opacity="0.5"/>
46
+
47
+ <g class="body-sweep">
48
+ <g id="legs" fill="#DE886D">
49
+ <rect x="3" y="13" width="1" height="2"/>
50
+ <rect x="5" y="13" width="1" height="2"/>
51
+ <rect x="9" y="13" width="1" height="2"/>
52
+ <rect x="11" y="13" width="1" height="2"/>
53
+ </g>
54
+
55
+ <g id="body-color-group" fill="#DE886D">
56
+ <rect x="2" y="6" width="11" height="7"/>
57
+ <rect x="0" y="9" width="2" height="2" transform="translate(6, 1) rotate(-15 1 10)"/>
58
+ <g class="arm-sweep"><rect x="13" y="9" width="2" height="2"/></g>
59
+ </g>
60
+
61
+ <g fill="#000000">
62
+ <rect x="5" y="8" width="1" height="2"/>
63
+ <rect x="11" y="8" width="1" height="2"/>
64
+ </g>
65
+ </g>
66
+
67
+ <g class="broom">
68
+ <rect x="13.5" y="4" width="1" height="10" fill="#795548"/>
69
+ <rect x="12" y="14" width="4" height="2" fill="#FFC107"/>
70
+ </g>
71
+
72
+ <g class="dust" fill="#9E9E9E">
73
+ <rect x="0" y="0" width="1.5" height="1.5"/>
74
+ </g>
75
+ <g class="dust d1" fill="#B0BEC5">
76
+ <rect x="0" y="0" width="1" height="1"/>
77
+ </g>
78
+ </g>
79
+ </svg>