foliko 1.1.6 → 1.1.8

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 (307) hide show
  1. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  2. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  3. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  4. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  5. package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
  6. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  7. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  9. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  10. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  11. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  12. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  13. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  14. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  20. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  21. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  22. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  23. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  24. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  25. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  26. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  27. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  28. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  29. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  30. package/.agent/ARCHITECTURE.md +288 -0
  31. package/.agent/agents/ambient-agent.md +57 -0
  32. package/.agent/agents/debugger.md +55 -0
  33. package/.agent/agents/email-assistant.md +49 -0
  34. package/.agent/agents/file-manager.md +42 -0
  35. package/.agent/agents/python-developer.md +60 -0
  36. package/.agent/agents/scheduler.md +59 -0
  37. package/.agent/agents/web-developer.md +45 -0
  38. package/.agent/data/default.json +412 -3
  39. package/.agent/data/plugins-state.json +177 -174
  40. package/.agent/data/puppeteer-sessions/undefined.json +6 -0
  41. package/.agent/data/weixin-media/2026-04-08/img_1775618677512.jpg +0 -0
  42. package/.agent/data/weixin-media/2026-04-08/img_1775619073340.jpg +0 -0
  43. package/.agent/data/weixin-media/2026-04-08/img_1775619097536.jpg +0 -0
  44. package/.agent/data/weixin-media/2026-04-08/img_1775619209388.jpg +0 -0
  45. package/.agent/mcp_config.json +11 -3
  46. package/.agent/memory/feedback/mnrdvj5i-ca3dkd.md +9 -0
  47. package/.agent/memory/feedback/mnre365e-7s4zax.md +9 -0
  48. package/.agent/memory/feedback/mnre36jn-nkfgmp.md +9 -0
  49. package/.agent/memory/feedback/mnre3805-kjiq6h.md +9 -0
  50. package/.agent/memory/feedback/mnsf66kp-b10rcd.md +9 -0
  51. package/.agent/memory/feedback/mnsi3sz8-p5g2cw.md +9 -0
  52. package/.agent/memory/feedback/mnsibe47-sv2ni1.md +9 -0
  53. package/.agent/memory/feedback/mnsic89w-nn228o.md +9 -0
  54. package/.agent/memory/feedback/mnsj1xe9-x83ba0.md +9 -0
  55. package/.agent/memory/feedback/mnsj21iv-wnwelx.md +9 -0
  56. package/.agent/memory/feedback/mnsj2g4a-cog7a2.md +9 -0
  57. package/.agent/memory/feedback/mnsj4js7-lktjp6.md +9 -0
  58. package/.agent/memory/feedback/mnsj5d4y-uglwvp.md +9 -0
  59. package/.agent/memory/feedback/mnslkuo9-uous66.md +24 -0
  60. package/.agent/memory/feedback/mnsm3vq0-megoil.md +9 -0
  61. package/.agent/memory/feedback/mnsnn5x2-sxcihd.md +9 -0
  62. package/.agent/memory/feedback/mnsnq17s-nabrn9.md +9 -0
  63. package/.agent/memory/feedback/mnsnybet-wz7rn3.md +9 -0
  64. package/.agent/memory/feedback/mnsrw0s7-7s9e30.md +9 -0
  65. package/.agent/memory/feedback/mnu5hpnd-tlm16q.md +9 -0
  66. package/.agent/memory/feedback/mnu60uqe-xuoxp4.md +9 -0
  67. package/.agent/memory/project/mnqx54u5-loqtoe.md +9 -0
  68. package/.agent/memory/project/mnqx84cv-mx6dmd.md +9 -0
  69. package/.agent/memory/project/mnsacuyr-hgtk5n.md +20 -0
  70. package/.agent/memory/project/mnu5hy2x-bjsg7u.md +9 -0
  71. package/.agent/memory/reference/mnre3cww-penbo1.md +9 -0
  72. package/.agent/memory/reference/mns9wn48-luerua.md +14 -0
  73. package/.agent/memory/reference/mns9yz5c-thc2s0.md +16 -0
  74. package/.agent/memory/reference/mnsfy4um-910f1o.md +23 -0
  75. package/.agent/memory/reference/mnsg37dp-lmfj18.md +32 -0
  76. package/.agent/memory/reference/mnsll60q-0j911u.md +36 -0
  77. package/.agent/memory/reference/mnsmlb5y-nej31u.md +16 -0
  78. package/.agent/memory/reference/mnssle72-yrot96.md +9 -0
  79. package/.agent/memory/user/mnsfuon6-l416q1.md +21 -0
  80. package/.agent/memory/user/mnsg9kut-95m7rf.md +20 -0
  81. package/.agent/memory/user/mnu2eo1v-yy6fhe.md +9 -0
  82. package/.agent/memory/user/mnu2etuo-8u8jk8.md +9 -0
  83. package/.agent/plugins/poster-plugin/fonts/NotoColorEmoji-Regular.ttf +0 -0
  84. package/.agent/plugins/poster-plugin/fonts/Symbola_hint.ttf +0 -0
  85. package/.agent/plugins/poster-plugin/package.json +3 -3
  86. package/.agent/plugins/poster-plugin/src/canvas.js +8 -0
  87. package/.agent/plugins/poster-plugin/src/components/barcode.js +5 -2
  88. package/.agent/plugins/poster-plugin/src/components/bubble.js +3 -2
  89. package/.agent/plugins/poster-plugin/src/components/button.js +74 -30
  90. package/.agent/plugins/poster-plugin/src/components/columns.js +97 -83
  91. package/.agent/plugins/poster-plugin/src/components/grid.js +104 -92
  92. package/.agent/plugins/poster-plugin/src/components/highlightText.js +2 -1
  93. package/.agent/plugins/poster-plugin/src/components/imageFrame.js +143 -93
  94. package/.agent/plugins/poster-plugin/src/components/quote.js +85 -13
  95. package/.agent/plugins/poster-plugin/src/components/ribbon.js +13 -9
  96. package/.agent/plugins/poster-plugin/src/components/seal.js +5 -3
  97. package/.agent/plugins/poster-plugin/src/components/star.js +3 -3
  98. package/.agent/plugins/poster-plugin/src/components/table.js +1 -1
  99. package/.agent/plugins/poster-plugin/src/components/watermark.js +4 -2
  100. package/.agent/plugins/poster-plugin/src/composer.js +181 -13
  101. package/.agent/plugins/poster-plugin/src/elements/artText.js +16 -7
  102. package/.agent/plugins/poster-plugin/src/elements/background.js +20 -5
  103. package/.agent/plugins/poster-plugin/src/elements/richText.js +160 -107
  104. package/.agent/plugins/poster-plugin/src/elements/text.js +48 -45
  105. package/.agent/plugins/poster-plugin/src/fonts.js +556 -125
  106. package/.agent/plugins/poster-plugin/src/index.js +46 -1
  107. package/.agent/plugins/poster-plugin/yarn.lock +186 -356
  108. package/.agent/plugins/puppeteer-plugin/README.md +147 -0
  109. package/.agent/plugins/puppeteer-plugin/index.js +1422 -0
  110. package/.agent/plugins/puppeteer-plugin/package.json +9 -0
  111. package/.agent/plugins.json +5 -11
  112. package/.agent/rules/GEMINI.md +273 -0
  113. package/.agent/rules/allow-rule.md +77 -0
  114. package/.agent/rules/log-rule.md +83 -0
  115. package/.agent/rules/security-rule.md +93 -0
  116. package/.agent/scripts/auto_preview.py +148 -0
  117. package/.agent/scripts/checklist.py +217 -0
  118. package/.agent/scripts/session_manager.py +120 -0
  119. package/.agent/scripts/verify_all.py +327 -0
  120. package/.agent/sessions/cli_default.json +128 -5479
  121. package/.agent/skills/api-patterns/SKILL.md +81 -0
  122. package/.agent/skills/api-patterns/api-style.md +42 -0
  123. package/.agent/skills/api-patterns/auth.md +24 -0
  124. package/.agent/skills/api-patterns/documentation.md +26 -0
  125. package/.agent/skills/api-patterns/graphql.md +41 -0
  126. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  127. package/.agent/skills/api-patterns/response.md +37 -0
  128. package/.agent/skills/api-patterns/rest.md +40 -0
  129. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  130. package/.agent/skills/api-patterns/security-testing.md +122 -0
  131. package/.agent/skills/api-patterns/trpc.md +41 -0
  132. package/.agent/skills/api-patterns/versioning.md +22 -0
  133. package/.agent/skills/app-builder/SKILL.md +75 -0
  134. package/.agent/skills/app-builder/agent-coordination.md +71 -0
  135. package/.agent/skills/app-builder/feature-building.md +53 -0
  136. package/.agent/skills/app-builder/project-detection.md +34 -0
  137. package/.agent/skills/app-builder/scaffolding.md +118 -0
  138. package/.agent/skills/app-builder/tech-stack.md +40 -0
  139. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  140. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  141. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  142. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  143. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  144. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  145. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  146. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  147. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  148. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  149. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  150. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  151. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  152. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  153. package/.agent/skills/architecture/SKILL.md +55 -0
  154. package/.agent/skills/architecture/context-discovery.md +43 -0
  155. package/.agent/skills/architecture/examples.md +94 -0
  156. package/.agent/skills/architecture/pattern-selection.md +68 -0
  157. package/.agent/skills/architecture/patterns-reference.md +50 -0
  158. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  159. package/.agent/skills/clean-code/SKILL.md +201 -0
  160. package/.agent/skills/doc.md +177 -0
  161. package/.agent/skills/frontend-design/SKILL.md +418 -0
  162. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  163. package/.agent/skills/frontend-design/color-system.md +311 -0
  164. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  165. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  166. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  167. package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  168. package/.agent/skills/frontend-design/typography-system.md +345 -0
  169. package/.agent/skills/frontend-design/ux-psychology.md +1116 -0
  170. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  171. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  172. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  173. package/.agent/skills/mcp-builder/SKILL.md +176 -0
  174. package/.agent/skills/poster-design/SKILL.md +385 -0
  175. package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
  176. package/.agent/workflows/brainstorm.md +113 -0
  177. package/.agent/workflows/create.md +59 -0
  178. package/.agent/workflows/debug.md +103 -0
  179. package/.agent/workflows/deploy.md +176 -0
  180. package/.agent/workflows/enhance.md +63 -0
  181. package/.agent/workflows/orchestrate.md +237 -0
  182. package/.agent/workflows/plan.md +89 -0
  183. package/.agent/workflows/preview.md +81 -0
  184. package/.agent/workflows/simple-test.md +42 -0
  185. package/.agent/workflows/status.md +86 -0
  186. package/.agent/workflows/structured-orchestrate.md +180 -0
  187. package/.agent/workflows/test.md +144 -0
  188. package/.agent/workflows/ui-ux-pro-max.md +296 -0
  189. package/.env.example +56 -56
  190. package/README.md +441 -441
  191. package/SPEC.md +735 -696
  192. package/output/foliko-poster.png +0 -0
  193. package/outputs/emoji-font-showcase.png +0 -0
  194. package/outputs/foliko-muji-style.png +0 -0
  195. package/package.json +3 -2
  196. package/plugins/ambient-agent/EventWatcher.js +33 -37
  197. package/plugins/ambient-agent/ExplorerLoop.js +338 -36
  198. package/plugins/ambient-agent/GoalManager.js +7 -3
  199. package/plugins/ambient-agent/StateStore.js +30 -1
  200. package/plugins/ambient-agent/constants.js +15 -1
  201. package/plugins/ambient-agent/index.js +26 -33
  202. package/plugins/coordinator-plugin.js +3 -3
  203. package/plugins/default-plugins.js +4 -3
  204. package/plugins/email/index.js +150 -36
  205. package/plugins/email/monitor.js +79 -5
  206. package/plugins/email/reply.js +15 -25
  207. package/plugins/extension-executor-plugin.js +184 -32
  208. package/plugins/feishu-plugin.js +2 -2
  209. package/plugins/file-system-plugin.js +57 -24
  210. package/plugins/memory-plugin.js +176 -64
  211. package/plugins/python-plugin-loader.js +79 -9
  212. package/plugins/scheduler-plugin.js +64 -24
  213. package/plugins/telegram-plugin.js +2 -2
  214. package/plugins/think-plugin.js +7 -2
  215. package/plugins/web-plugin.js +263 -4
  216. package/plugins/weixin-plugin.js +2 -2
  217. package/skills/ambient-agent/SKILL.md +342 -314
  218. package/skills/find-skills/AGENTS.md +162 -162
  219. package/skills/find-skills/SKILL.md +133 -133
  220. package/src/core/agent-chat.js +64 -9
  221. package/src/core/agent.js +216 -69
  222. package/src/core/tool-registry.js +5 -5
  223. package/src/executors/mcp-executor.js +453 -35
  224. package/src/utils/id.js +5 -0
  225. package/system.md +3629 -0
  226. package/.agent/agents/code-assistant.json +0 -17
  227. package/.agent/agents/email-assistant.json +0 -14
  228. package/.agent/agents/file-assistant.json +0 -18
  229. package/.agent/agents/orchestrator-demo.md +0 -53
  230. package/.agent/agents/orchestrator.json +0 -7
  231. package/.agent/agents/system-assistant.json +0 -15
  232. package/.agent/agents/web-assistant.json +0 -12
  233. package/.agent/data/ambient/goals.json +0 -50
  234. package/.agent/data/ambient/memories.json +0 -7
  235. package/.agent/data/scheduler/tasks.json +0 -1
  236. package/.agent/memory/core.md +0 -1
  237. package/.agent/memory/feedback/mnrsiuoc-e1ru74.md +0 -9
  238. package/.agent/memory/feedback/mnrt2mmz-98az6n.md +0 -9
  239. package/.agent/memory/feedback/mnrtqrhm-kxsicz.md +0 -9
  240. package/.agent/memory/feedback/mnrts8vg-i0ngzp.md +0 -15
  241. package/.agent/memory/feedback/mnrtt7jt-c0trb2.md +0 -9
  242. package/.agent/memory/feedback/mnruc2f0-5s52la.md +0 -16
  243. package/.agent/memory/feedback/mnrumbmx-63sa0v.md +0 -9
  244. package/.agent/memory/project/mnn93ogy-ypjn27.md +0 -9
  245. package/.agent/memory/project/mnn98fqy-5nhc1u.md +0 -25
  246. package/.agent/memory/project/mnrp7p5n-8enm2a.md +0 -31
  247. package/.agent/memory/project/mnrp9ifb-yynks0.md +0 -40
  248. package/.agent/memory/project/mnrpb3b8-f617s4.md +0 -25
  249. package/.agent/memory/project/mnrrmqgg-focprv.md +0 -9
  250. package/.agent/memory/project/mnrtykbh-6atsor.md +0 -9
  251. package/.agent/memory/project/mnru9jiu-kgau16.md +0 -35
  252. package/.agent/memory/reference/mnq3oenw-46haj6.md +0 -63
  253. package/.agent/memory/reference/mnq5qxm2-mjoooh.md +0 -116
  254. package/.agent/memory/reference/mnrnvpwo-rcqv9m.md +0 -52
  255. package/.agent/memory/reference/mnrovxvz-zy9xqm.md +0 -25
  256. package/.agent/memory/reference/mnroxabj-1b3930.md +0 -68
  257. package/.agent/memory/reference/mnrpjtlp-mnb9od.md +0 -35
  258. package/.agent/memory/reference/mnrps1x3-6b8xfm.md +0 -28
  259. package/.agent/memory/reference/mnrpt9ov-15er5w.md +0 -22
  260. package/.agent/memory/reference/mnrq82dn-y9tv9e.md +0 -50
  261. package/.agent/memory/reference/mnrqnr5v-v75drf.md +0 -34
  262. package/.agent/memory/reference/mnrrfzys-urudaf.md +0 -31
  263. package/.agent/memory/reference/mnrrocha-t0027n.md +0 -21
  264. package/.agent/memory/reference/mnrukklc-bxndsb.md +0 -35
  265. package/.agent/memory/user/mnm67t9m-x8rekk.md +0 -9
  266. package/.agent/memory/user/mnn5mmqh-w6aktx.md +0 -11
  267. package/.agent/memory/user/mnnbfhhn-dk1bd1.md +0 -22
  268. package/.agent/memory/user/mnrt39t8-8eosy0.md +0 -9
  269. package/.agent/package.json +0 -8
  270. package/.agent/plugins/__pycache__/file_writer.cpython-312.pyc +0 -0
  271. package/.agent/plugins/daytona/README.md +0 -89
  272. package/.agent/plugins/daytona/index.js +0 -377
  273. package/.agent/plugins/daytona/package.json +0 -12
  274. package/.agent/plugins/marknative/README.md +0 -134
  275. package/.agent/plugins/marknative/fonts/SegoeUI Emoji.ttf +0 -0
  276. package/.agent/plugins/marknative/fonts.zip +0 -0
  277. package/.agent/plugins/marknative/index.js +0 -256
  278. package/.agent/plugins/marknative/package.json +0 -12
  279. package/.agent/plugins/poster-plugin/emojis/rocket.png +0 -1
  280. package/.agent/plugins/poster-plugin/test-background.svg +0 -1
  281. package/.agent/plugins/poster-plugin/test-full-poster.svg +0 -2
  282. package/.agent/plugins/poster-plugin/test-image.png +0 -0
  283. package/.agent/plugins/system-info/index.js +0 -387
  284. package/.agent/plugins/system-info/package.json +0 -4
  285. package/.agent/plugins/system-info/test.js +0 -40
  286. package/.agent/python-scripts/test_sample.py +0 -24
  287. package/.agent/skills/agent-browser/SKILL.md +0 -311
  288. package/.agent/skills/agent-browser/TEST_PLAN.md +0 -200
  289. package/.agent/skills/sysinfo/SKILL.md +0 -38
  290. package/.agent/skills/sysinfo/system-info.sh +0 -130
  291. package/.agent/skills/workflow/SKILL.md +0 -324
  292. package/.agent/test-agent.js +0 -35
  293. package/.agent/weixin.json +0 -6
  294. package/.agent/workflows/email-digest.json +0 -50
  295. package/.agent/workflows/file-backup.json +0 -21
  296. package/.agent/workflows/get-ip-notify.json +0 -32
  297. package/.agent/workflows/news-aggregator.json +0 -93
  298. package/.agent/workflows/news-dashboard-v2.json +0 -94
  299. package/.agent/workflows/notification-batch.json +0 -32
  300. package/foliko-cloud-rising.png +0 -0
  301. package/foliko-dawn-of-ai.png +0 -0
  302. package/foliko-mindful-observation.png +0 -0
  303. package/foliko-stellar-dreams.png +0 -0
  304. package/foliko-zen-jing.png +0 -0
  305. package/foliko-zen-kong.png +0 -0
  306. package/foliko-zen-wu.png +0 -0
  307. package/zen_karesansui.png +0 -0
@@ -0,0 +1,327 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Full Verification Suite - Antigravity Kit
4
+ ==========================================
5
+
6
+ Runs COMPLETE validation including all checks + performance + E2E.
7
+ Use this before deployment or major releases.
8
+
9
+ Usage:
10
+ python scripts/verify_all.py . --url <URL>
11
+
12
+ Includes ALL checks:
13
+ ✅ Security Scan (OWASP, secrets, dependencies)
14
+ ✅ Lint & Type Coverage
15
+ ✅ Schema Validation
16
+ ✅ Test Suite (unit + integration)
17
+ ✅ UX Audit (psychology, accessibility)
18
+ ✅ SEO Check
19
+ ✅ Lighthouse (Core Web Vitals)
20
+ ✅ Playwright E2E
21
+ ✅ Bundle Analysis (if applicable)
22
+ ✅ Mobile Audit (if applicable)
23
+ """
24
+
25
+ import sys
26
+ import subprocess
27
+ import argparse
28
+ from pathlib import Path
29
+ from typing import List, Dict, Optional
30
+ from datetime import datetime
31
+
32
+ # ANSI colors
33
+ class Colors:
34
+ HEADER = '\033[95m'
35
+ BLUE = '\033[94m'
36
+ CYAN = '\033[96m'
37
+ GREEN = '\033[92m'
38
+ YELLOW = '\033[93m'
39
+ RED = '\033[91m'
40
+ ENDC = '\033[0m'
41
+ BOLD = '\033[1m'
42
+
43
+ def print_header(text: str):
44
+ print(f"\n{Colors.BOLD}{Colors.CYAN}{'='*70}{Colors.ENDC}")
45
+ print(f"{Colors.BOLD}{Colors.CYAN}{text.center(70)}{Colors.ENDC}")
46
+ print(f"{Colors.BOLD}{Colors.CYAN}{'='*70}{Colors.ENDC}\n")
47
+
48
+ def print_step(text: str):
49
+ print(f"{Colors.BOLD}{Colors.BLUE}🔄 {text}{Colors.ENDC}")
50
+
51
+ def print_success(text: str):
52
+ print(f"{Colors.GREEN}✅ {text}{Colors.ENDC}")
53
+
54
+ def print_warning(text: str):
55
+ print(f"{Colors.YELLOW}⚠️ {text}{Colors.ENDC}")
56
+
57
+ def print_error(text: str):
58
+ print(f"{Colors.RED}❌ {text}{Colors.ENDC}")
59
+
60
+ # Complete verification suite
61
+ VERIFICATION_SUITE = [
62
+ # P0: Security (CRITICAL)
63
+ {
64
+ "category": "Security",
65
+ "checks": [
66
+ ("Security Scan", ".agent/skills/vulnerability-scanner/scripts/security_scan.py", True),
67
+ ("Dependency Analysis", ".agent/skills/vulnerability-scanner/scripts/dependency_analyzer.py", False),
68
+ ]
69
+ },
70
+
71
+ # P1: Code Quality (CRITICAL)
72
+ {
73
+ "category": "Code Quality",
74
+ "checks": [
75
+ ("Lint Check", ".agent/skills/lint-and-validate/scripts/lint_runner.py", True),
76
+ ("Type Coverage", ".agent/skills/lint-and-validate/scripts/type_coverage.py", False),
77
+ ]
78
+ },
79
+
80
+ # P2: Data Layer
81
+ {
82
+ "category": "Data Layer",
83
+ "checks": [
84
+ ("Schema Validation", ".agent/skills/database-design/scripts/schema_validator.py", False),
85
+ ]
86
+ },
87
+
88
+ # P3: Testing
89
+ {
90
+ "category": "Testing",
91
+ "checks": [
92
+ ("Test Suite", ".agent/skills/testing-patterns/scripts/test_runner.py", False),
93
+ ]
94
+ },
95
+
96
+ # P4: UX & Accessibility
97
+ {
98
+ "category": "UX & Accessibility",
99
+ "checks": [
100
+ ("UX Audit", ".agent/skills/frontend-design/scripts/ux_audit.py", False),
101
+ ("Accessibility Check", ".agent/skills/frontend-design/scripts/accessibility_checker.py", False),
102
+ ]
103
+ },
104
+
105
+ # P5: SEO & Content
106
+ {
107
+ "category": "SEO & Content",
108
+ "checks": [
109
+ ("SEO Check", ".agent/skills/seo-fundamentals/scripts/seo_checker.py", False),
110
+ ("GEO Check", ".agent/skills/geo-fundamentals/scripts/geo_checker.py", False),
111
+ ]
112
+ },
113
+
114
+ # P6: Performance (requires URL)
115
+ {
116
+ "category": "Performance",
117
+ "requires_url": True,
118
+ "checks": [
119
+ ("Lighthouse Audit", ".agent/skills/performance-profiling/scripts/lighthouse_audit.py", True),
120
+ ("Bundle Analysis", ".agent/skills/performance-profiling/scripts/bundle_analyzer.py", False),
121
+ ]
122
+ },
123
+
124
+ # P7: E2E Testing (requires URL)
125
+ {
126
+ "category": "E2E Testing",
127
+ "requires_url": True,
128
+ "checks": [
129
+ ("Playwright E2E", ".agent/skills/webapp-testing/scripts/playwright_runner.py", False),
130
+ ]
131
+ },
132
+
133
+ # P8: Mobile (if applicable)
134
+ {
135
+ "category": "Mobile",
136
+ "checks": [
137
+ ("Mobile Audit", ".agent/skills/mobile-design/scripts/mobile_audit.py", False),
138
+ ]
139
+ },
140
+
141
+ # P9: Internationalization
142
+ {
143
+ "category": "Internationalization",
144
+ "checks": [
145
+ ("i18n Check", ".agent/skills/i18n-localization/scripts/i18n_checker.py", False),
146
+ ]
147
+ },
148
+ ]
149
+
150
+ def run_script(name: str, script_path: Path, project_path: str, url: Optional[str] = None) -> dict:
151
+ """Run validation script"""
152
+ if not script_path.exists():
153
+ print_warning(f"{name}: Script not found, skipping")
154
+ return {"name": name, "passed": True, "skipped": True, "duration": 0}
155
+
156
+ print_step(f"Running: {name}")
157
+ start_time = datetime.now()
158
+
159
+ # Build command
160
+ cmd = ["python", str(script_path), project_path]
161
+ if url and ("lighthouse" in script_path.name.lower() or "playwright" in script_path.name.lower()):
162
+ cmd.append(url)
163
+
164
+ # Run
165
+ try:
166
+ result = subprocess.run(
167
+ cmd,
168
+ capture_output=True,
169
+ text=True,
170
+ timeout=600 # 10 minute timeout for slow checks
171
+ )
172
+
173
+ duration = (datetime.now() - start_time).total_seconds()
174
+ passed = result.returncode == 0
175
+
176
+ if passed:
177
+ print_success(f"{name}: PASSED ({duration:.1f}s)")
178
+ else:
179
+ print_error(f"{name}: FAILED ({duration:.1f}s)")
180
+ if result.stderr:
181
+ print(f" {result.stderr[:300]}")
182
+
183
+ return {
184
+ "name": name,
185
+ "passed": passed,
186
+ "output": result.stdout,
187
+ "error": result.stderr,
188
+ "skipped": False,
189
+ "duration": duration
190
+ }
191
+
192
+ except subprocess.TimeoutExpired:
193
+ duration = (datetime.now() - start_time).total_seconds()
194
+ print_error(f"{name}: TIMEOUT (>{duration:.0f}s)")
195
+ return {"name": name, "passed": False, "skipped": False, "duration": duration, "error": "Timeout"}
196
+
197
+ except Exception as e:
198
+ duration = (datetime.now() - start_time).total_seconds()
199
+ print_error(f"{name}: ERROR - {str(e)}")
200
+ return {"name": name, "passed": False, "skipped": False, "duration": duration, "error": str(e)}
201
+
202
+ def print_final_report(results: List[dict], start_time: datetime):
203
+ """Print comprehensive final report"""
204
+ total_duration = (datetime.now() - start_time).total_seconds()
205
+
206
+ print_header("📊 FULL VERIFICATION REPORT")
207
+
208
+ # Statistics
209
+ total = len(results)
210
+ passed = sum(1 for r in results if r["passed"] and not r.get("skipped"))
211
+ failed = sum(1 for r in results if not r["passed"] and not r.get("skipped"))
212
+ skipped = sum(1 for r in results if r.get("skipped"))
213
+
214
+ print(f"Total Duration: {total_duration:.1f}s")
215
+ print(f"Total Checks: {total}")
216
+ print(f"{Colors.GREEN}✅ Passed: {passed}{Colors.ENDC}")
217
+ print(f"{Colors.RED}❌ Failed: {failed}{Colors.ENDC}")
218
+ print(f"{Colors.YELLOW}⏭️ Skipped: {skipped}{Colors.ENDC}")
219
+ print()
220
+
221
+ # Category breakdown
222
+ print(f"{Colors.BOLD}Results by Category:{Colors.ENDC}")
223
+ current_category = None
224
+ for r in results:
225
+ # Print category header if changed
226
+ if r.get("category") and r["category"] != current_category:
227
+ current_category = r["category"]
228
+ print(f"\n{Colors.BOLD}{Colors.CYAN}{current_category}:{Colors.ENDC}")
229
+
230
+ # Print result
231
+ if r.get("skipped"):
232
+ status = f"{Colors.YELLOW}⏭️ {Colors.ENDC}"
233
+ elif r["passed"]:
234
+ status = f"{Colors.GREEN}✅{Colors.ENDC}"
235
+ else:
236
+ status = f"{Colors.RED}❌{Colors.ENDC}"
237
+
238
+ duration_str = f"({r.get('duration', 0):.1f}s)" if not r.get("skipped") else ""
239
+ print(f" {status} {r['name']} {duration_str}")
240
+
241
+ print()
242
+
243
+ # Failed checks detail
244
+ if failed > 0:
245
+ print(f"{Colors.BOLD}{Colors.RED}❌ FAILED CHECKS:{Colors.ENDC}")
246
+ for r in results:
247
+ if not r["passed"] and not r.get("skipped"):
248
+ print(f"\n{Colors.RED}✗ {r['name']}{Colors.ENDC}")
249
+ if r.get("error"):
250
+ error_preview = r["error"][:200]
251
+ print(f" Error: {error_preview}")
252
+ print()
253
+
254
+ # Final verdict
255
+ if failed > 0:
256
+ print_error(f"VERIFICATION FAILED - {failed} check(s) need attention")
257
+ print(f"\n{Colors.YELLOW}💡 Tip: Fix critical (security, lint) issues first{Colors.ENDC}")
258
+ return False
259
+ else:
260
+ print_success("✨ ALL CHECKS PASSED - Ready for deployment! ✨")
261
+ return True
262
+
263
+ def main():
264
+ parser = argparse.ArgumentParser(
265
+ description="Run complete Antigravity Kit verification suite",
266
+ formatter_class=argparse.RawDescriptionHelpFormatter,
267
+ epilog="""
268
+ Examples:
269
+ python scripts/verify_all.py . --url http://localhost:3000
270
+ python scripts/verify_all.py . --url https://staging.example.com --no-e2e
271
+ """
272
+ )
273
+ parser.add_argument("project", help="Project path to validate")
274
+ parser.add_argument("--url", required=True, help="URL for performance & E2E checks")
275
+ parser.add_argument("--no-e2e", action="store_true", help="Skip E2E tests")
276
+ parser.add_argument("--stop-on-fail", action="store_true", help="Stop on first failure")
277
+
278
+ args = parser.parse_args()
279
+
280
+ project_path = Path(args.project).resolve()
281
+
282
+ if not project_path.exists():
283
+ print_error(f"Project path does not exist: {project_path}")
284
+ sys.exit(1)
285
+
286
+ print_header("🚀 ANTIGRAVITY KIT - FULL VERIFICATION SUITE")
287
+ print(f"Project: {project_path}")
288
+ print(f"URL: {args.url}")
289
+ print(f"Started: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
290
+
291
+ start_time = datetime.now()
292
+ results = []
293
+
294
+ # Run all verification categories
295
+ for suite in VERIFICATION_SUITE:
296
+ category = suite["category"]
297
+ requires_url = suite.get("requires_url", False)
298
+
299
+ # Skip if requires URL and not provided
300
+ if requires_url and not args.url:
301
+ continue
302
+
303
+ # Skip E2E if flag set
304
+ if args.no_e2e and category == "E2E Testing":
305
+ continue
306
+
307
+ print_header(f"📋 {category.upper()}")
308
+
309
+ for name, script_path, required in suite["checks"]:
310
+ script = project_path / script_path
311
+ result = run_script(name, script, str(project_path), args.url)
312
+ result["category"] = category
313
+ results.append(result)
314
+
315
+ # Stop on critical failure if flag set
316
+ if args.stop_on_fail and required and not result["passed"] and not result.get("skipped"):
317
+ print_error(f"CRITICAL: {name} failed. Stopping verification.")
318
+ print_final_report(results, start_time)
319
+ sys.exit(1)
320
+
321
+ # Print final report
322
+ all_passed = print_final_report(results, start_time)
323
+
324
+ sys.exit(0 if all_passed else 1)
325
+
326
+ if __name__ == "__main__":
327
+ main()