hyperweave 0.2.25__tar.gz → 0.3.0__tar.gz

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 (417) hide show
  1. {hyperweave-0.2.25 → hyperweave-0.3.0}/CHANGELOG.md +34 -0
  2. {hyperweave-0.2.25 → hyperweave-0.3.0}/PKG-INFO +143 -104
  3. {hyperweave-0.2.25 → hyperweave-0.3.0}/README.md +142 -103
  4. {hyperweave-0.2.25 → hyperweave-0.3.0}/scripts/generate_proofset.py +396 -45
  5. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/_version.py +2 -2
  6. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/cli.py +14 -1
  7. hyperweave-0.3.0/src/hyperweave/compose/assembler.py +398 -0
  8. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/context.py +43 -9
  9. hyperweave-0.3.0/src/hyperweave/compose/engine.py +173 -0
  10. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/layout.py +6 -1
  11. hyperweave-0.3.0/src/hyperweave/compose/palette.py +135 -0
  12. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/resolver.py +263 -63
  13. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/resolvers/chart.py +60 -3
  14. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/resolvers/stats.py +106 -44
  15. hyperweave-0.3.0/src/hyperweave/compose/validate_paradigms.py +254 -0
  16. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/config/loader.py +8 -1
  17. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/models.py +27 -0
  18. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/paradigm.py +85 -6
  19. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/schema.py +46 -45
  20. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/css/expression.css +16 -8
  21. hyperweave-0.3.0/src/hyperweave/data/genomes/automata.json +484 -0
  22. hyperweave-0.3.0/src/hyperweave/data/genomes/chrome.json +343 -0
  23. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/paradigms/brutalist.yaml +5 -0
  24. hyperweave-0.3.0/src/hyperweave/data/paradigms/cellular.yaml +211 -0
  25. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/paradigms/chrome.yaml +6 -0
  26. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/mcp/server.py +91 -15
  27. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/render/chart_engine.py +327 -1
  28. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/serve/app.py +125 -14
  29. hyperweave-0.3.0/src/hyperweave/templates/components/chart-milestone.svg.j2 +15 -0
  30. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/document.svg.j2 +2 -0
  31. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/badge/cellular-content.j2 +12 -10
  32. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/badge/cellular-defs.j2 +7 -7
  33. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/badge/chrome-content.j2 +8 -3
  34. hyperweave-0.3.0/src/hyperweave/templates/frames/chart/cellular-content.j2 +200 -0
  35. hyperweave-0.3.0/src/hyperweave/templates/frames/chart/cellular-defs.j2 +87 -0
  36. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/divider.svg.j2 +24 -15
  37. hyperweave-0.3.0/src/hyperweave/templates/frames/icon/cellular-content.j2 +106 -0
  38. hyperweave-0.3.0/src/hyperweave/templates/frames/icon/cellular-defs.j2 +25 -0
  39. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/icon/chrome-content.j2 +8 -4
  40. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/icon/chrome-defs.j2 +7 -3
  41. hyperweave-0.3.0/src/hyperweave/templates/frames/marquee-horizontal/cellular-overlay.j2 +22 -0
  42. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/marquee-horizontal/chrome-defs.j2 +8 -8
  43. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/marquee-horizontal.svg.j2 +15 -3
  44. hyperweave-0.3.0/src/hyperweave/templates/frames/stats/cellular-content.j2 +146 -0
  45. hyperweave-0.3.0/src/hyperweave/templates/frames/stats/cellular-defs.j2 +45 -0
  46. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip/cellular-content.j2 +20 -17
  47. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip/cellular-defs.j2 +8 -3
  48. hyperweave-0.3.0/src/hyperweave/templates/frames/strip/chrome-status.j2 +13 -0
  49. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/snapshots/url_stability/divider_band_chrome_static.svg +6 -5
  50. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/snapshots/url_stability/icon_github_chrome_static.svg +10 -9
  51. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_badge_cellular.py +12 -12
  52. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_badge_layout.py +20 -0
  53. hyperweave-0.3.0/tests/test_chrome_variants.py +309 -0
  54. hyperweave-0.3.0/tests/test_compose_variant_field.py +135 -0
  55. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_divider_cellular.py +22 -11
  56. hyperweave-0.3.0/tests/test_font_gating.py +95 -0
  57. hyperweave-0.3.0/tests/test_genome_automata.py +155 -0
  58. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_marquee_v0_2_16.py +49 -15
  59. hyperweave-0.3.0/tests/test_paradigm_cellular.py +179 -0
  60. hyperweave-0.3.0/tests/test_proofset.py +200 -0
  61. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_state_inference.py +51 -0
  62. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_strip_cellular.py +19 -11
  63. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_strip_status_toggle.py +8 -4
  64. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_url_stability.py +7 -0
  65. hyperweave-0.3.0/tests/test_variant_default_resolution.py +47 -0
  66. hyperweave-0.2.25/src/hyperweave/compose/assembler.py +0 -281
  67. hyperweave-0.2.25/src/hyperweave/compose/engine.py +0 -106
  68. hyperweave-0.2.25/src/hyperweave/compose/validate_paradigms.py +0 -58
  69. hyperweave-0.2.25/src/hyperweave/data/genomes/automata.json +0 -134
  70. hyperweave-0.2.25/src/hyperweave/data/genomes/chrome.json +0 -143
  71. hyperweave-0.2.25/src/hyperweave/data/paradigms/cellular.yaml +0 -175
  72. hyperweave-0.2.25/src/hyperweave/templates/components/chart-milestone.svg.j2 +0 -7
  73. hyperweave-0.2.25/src/hyperweave/templates/frames/chart/cellular-content.j2 +0 -166
  74. hyperweave-0.2.25/src/hyperweave/templates/frames/chart/cellular-defs.j2 +0 -45
  75. hyperweave-0.2.25/src/hyperweave/templates/frames/icon/cellular-content.j2 +0 -39
  76. hyperweave-0.2.25/src/hyperweave/templates/frames/icon/cellular-defs.j2 +0 -17
  77. hyperweave-0.2.25/src/hyperweave/templates/frames/marquee-horizontal/cellular-overlay.j2 +0 -13
  78. hyperweave-0.2.25/src/hyperweave/templates/frames/stats/cellular-content.j2 +0 -221
  79. hyperweave-0.2.25/src/hyperweave/templates/frames/stats/cellular-defs.j2 +0 -39
  80. hyperweave-0.2.25/src/hyperweave/templates/frames/strip/chrome-status.j2 +0 -8
  81. hyperweave-0.2.25/tests/test_compose_variant_field.py +0 -46
  82. hyperweave-0.2.25/tests/test_genome_automata.py +0 -92
  83. hyperweave-0.2.25/tests/test_paradigm_cellular.py +0 -84
  84. hyperweave-0.2.25/tests/test_proofset.py +0 -92
  85. hyperweave-0.2.25/tests/test_variant_default_resolution.py +0 -45
  86. {hyperweave-0.2.25 → hyperweave-0.3.0}/.dockerignore +0 -0
  87. {hyperweave-0.2.25 → hyperweave-0.3.0}/.github/workflows/ci.yml +0 -0
  88. {hyperweave-0.2.25 → hyperweave-0.3.0}/.github/workflows/deploy.yml +0 -0
  89. {hyperweave-0.2.25 → hyperweave-0.3.0}/.github/workflows/publish.yml +0 -0
  90. {hyperweave-0.2.25 → hyperweave-0.3.0}/.gitignore +0 -0
  91. {hyperweave-0.2.25 → hyperweave-0.3.0}/.pre-commit-config.yaml +0 -0
  92. {hyperweave-0.2.25 → hyperweave-0.3.0}/Dockerfile +0 -0
  93. {hyperweave-0.2.25 → hyperweave-0.3.0}/LICENSE +0 -0
  94. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/buttons/button-liquid.svg +0 -0
  95. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/cards/card-butterfly.svg +0 -0
  96. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/cards/card-python.svg +0 -0
  97. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/cards/card-sunflower.svg +0 -0
  98. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/cards/card-waves.svg +0 -0
  99. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/badge_critical.svg +0 -0
  100. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/badge_passing.svg +0 -0
  101. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/badge_warning.svg +0 -0
  102. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/banner.svg +0 -0
  103. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/icons/discord.svg +0 -0
  104. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/icons/notion.svg +0 -0
  105. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/icons/reddit.svg +0 -0
  106. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/icons/spotify.svg +0 -0
  107. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/icons/youtube.svg +0 -0
  108. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/marquee_counter.svg +0 -0
  109. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/marquee_horizontal.svg +0 -0
  110. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/marquee_vertical.svg +0 -0
  111. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/profile-cards/chart_stars_full.svg +0 -0
  112. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/profile-cards/stats.svg +0 -0
  113. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/brutalist-emerald/strip.svg +0 -0
  114. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/badge_critical.svg +0 -0
  115. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/badge_passing.svg +0 -0
  116. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/badge_warning.svg +0 -0
  117. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/banner.svg +0 -0
  118. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/icons/bluesky.svg +0 -0
  119. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/icons/github.svg +0 -0
  120. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/icons/instagram.svg +0 -0
  121. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/icons/mastodon.svg +0 -0
  122. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/icons/x.svg +0 -0
  123. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/marquee_counter.svg +0 -0
  124. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/marquee_horizontal.svg +0 -0
  125. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/marquee_vertical.svg +0 -0
  126. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/profile-cards/chart_stars_full.svg +0 -0
  127. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/profile-cards/stats.svg +0 -0
  128. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/chrome-horizon/strip.svg +0 -0
  129. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/telemetry/master_card.svg +0 -0
  130. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/telemetry/receipt.svg +0 -0
  131. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/telemetry/receipt_claude-code_medium.svg +0 -0
  132. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/telemetry/receipt_codex_large.svg +0 -0
  133. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/telemetry/receipt_voltage_xlarge.svg +0 -0
  134. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/telemetry/rhythm_strip.svg +0 -0
  135. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/examples/telemetry/rhythm_strip_voltage_xlarge.svg +0 -0
  136. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/footers/inneraura-footer-liquid.svg +0 -0
  137. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/footers/inneraura-footer-purple.svg +0 -0
  138. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/footers/inneraura-footer.svg +0 -0
  139. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/hyperweave-banner.svg +0 -0
  140. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/icons/cobalt-sapphire-discord.svg +0 -0
  141. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/icons/cobalt-sapphire-docs.svg +0 -0
  142. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/icons/cobalt-sapphire-github.svg +0 -0
  143. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/icons/cobalt-sapphire-instagram.svg +0 -0
  144. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/icons/cobalt-sapphire-linkedin.svg +0 -0
  145. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/icons/cobalt-sapphire-tiktok.svg +0 -0
  146. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/icons/cobalt-sapphire-x.svg +0 -0
  147. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/icons/cobalt-sapphire-youtube.svg +0 -0
  148. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/marquees/badge-showcase-triple.svg +0 -0
  149. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/marquees/genome-marquee-triple.svg +0 -0
  150. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/marquees/sample-badges.svg +0 -0
  151. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/mintlify-assets/404.svg +0 -0
  152. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/mintlify-assets/callout-icons.svg +0 -0
  153. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/mintlify-assets/divider.svg +0 -0
  154. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/mintlify-assets/favicon.svg +0 -0
  155. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/mintlify-assets/hero-banner.svg +0 -0
  156. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/mintlify-assets/hyperweave-banner-v2.svg +0 -0
  157. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/mintlify-assets/hyperweave-navbar-logo.svg +0 -0
  158. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/mintlify-assets/loader.svg +0 -0
  159. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/mintlify-assets/og-image.svg +0 -0
  160. {hyperweave-0.2.25 → hyperweave-0.3.0}/assets/timelines/hyperweave-roadmap.svg +0 -0
  161. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/assets/favicon.svg +0 -0
  162. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/assets/hyperweave-banner.svg +0 -0
  163. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/assets/hyperweave-navbar-logo.svg +0 -0
  164. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/assets/og-image.svg +0 -0
  165. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/explanation/architecture.mdx +0 -0
  166. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/explanation/camo-compatibility.mdx +0 -0
  167. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/explanation/cim-compliance.mdx +0 -0
  168. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/explanation/genome-profile-system.mdx +0 -0
  169. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/explanation/metadata-tiers.mdx +0 -0
  170. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/how-to/add-motion-to-badges.mdx +0 -0
  171. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/how-to/create-session-receipts.mdx +0 -0
  172. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/how-to/set-up-claude-code-hooks.mdx +0 -0
  173. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/how-to/use-live-data-badges.mdx +0 -0
  174. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/introduction.mdx +0 -0
  175. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/mint.json +0 -0
  176. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/quickstart.mdx +0 -0
  177. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/reference/cli.mdx +0 -0
  178. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/reference/compose-spec.mdx +0 -0
  179. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/reference/genomes.mdx +0 -0
  180. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/reference/http-api.mdx +0 -0
  181. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/reference/mcp-tools.mdx +0 -0
  182. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/reference/motions.mdx +0 -0
  183. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/reference/telemetry-contract.mdx +0 -0
  184. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/spec/hyperweave-protocol.mdx +0 -0
  185. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/tutorials/build-an-artifact-kit.mdx +0 -0
  186. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/tutorials/compose-your-first-badge.mdx +0 -0
  187. {hyperweave-0.2.25 → hyperweave-0.3.0}/docs/tutorials/install-session-telemetry.mdx +0 -0
  188. {hyperweave-0.2.25 → hyperweave-0.3.0}/fly.toml +0 -0
  189. {hyperweave-0.2.25 → hyperweave-0.3.0}/hooks/install.py +0 -0
  190. {hyperweave-0.2.25 → hyperweave-0.3.0}/hooks/session_end.sh +0 -0
  191. {hyperweave-0.2.25 → hyperweave-0.3.0}/justfile +0 -0
  192. {hyperweave-0.2.25 → hyperweave-0.3.0}/pyproject.toml +0 -0
  193. {hyperweave-0.2.25 → hyperweave-0.3.0}/scripts/extract_font_metrics.py +0 -0
  194. {hyperweave-0.2.25 → hyperweave-0.3.0}/scripts/extract_glyphs.py +0 -0
  195. {hyperweave-0.2.25 → hyperweave-0.3.0}/scripts/probe_live_stats.py +0 -0
  196. {hyperweave-0.2.25 → hyperweave-0.3.0}/scripts/probe_star_history.py +0 -0
  197. {hyperweave-0.2.25 → hyperweave-0.3.0}/scripts/stress_test.py +0 -0
  198. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/__init__.py +0 -0
  199. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/__main__.py +0 -0
  200. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/__init__.py +0 -0
  201. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/bar_chart.py +0 -0
  202. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/lanes.py +0 -0
  203. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/resolvers/__init__.py +0 -0
  204. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/rhythm.py +0 -0
  205. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/rhythm_strip.py +0 -0
  206. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/compose/treemap.py +0 -0
  207. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/config/__init__.py +0 -0
  208. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/config/genome_validator.py +0 -0
  209. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/config/registry.py +0 -0
  210. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/config/settings.py +0 -0
  211. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/connectors/__init__.py +0 -0
  212. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/connectors/arxiv.py +0 -0
  213. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/connectors/base.py +0 -0
  214. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/connectors/cache.py +0 -0
  215. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/connectors/github.py +0 -0
  216. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/connectors/rest.py +0 -0
  217. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/__init__.py +0 -0
  218. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/cell_layout.py +0 -0
  219. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/color.py +0 -0
  220. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/contracts.py +0 -0
  221. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/enums.py +0 -0
  222. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/font_metrics.py +0 -0
  223. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/state.py +0 -0
  224. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/text.py +0 -0
  225. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/core/thresholds.py +0 -0
  226. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/badge_modes.yaml +0 -0
  227. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/css/accessibility.css +0 -0
  228. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/css/bridge.css +0 -0
  229. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/css/status.css +0 -0
  230. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/font-metrics/chakra-petch.json +0 -0
  231. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/font-metrics/inter.json +0 -0
  232. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/font-metrics/jetbrains-mono.json +0 -0
  233. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/font-metrics/orbitron.json +0 -0
  234. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/fonts/chakra-petch.b64 +0 -0
  235. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/fonts/chakra-petch.meta.json +0 -0
  236. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/fonts/jetbrains-mono.b64 +0 -0
  237. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/fonts/jetbrains-mono.meta.json +0 -0
  238. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/fonts/orbitron.b64 +0 -0
  239. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/fonts/orbitron.meta.json +0 -0
  240. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/genomes/brutalist.json +0 -0
  241. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/genomes/telemetry-claude-code.json +0 -0
  242. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/genomes/telemetry-codex.json +0 -0
  243. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/genomes/telemetry-cream.json +0 -0
  244. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/genomes/telemetry-voltage.json +0 -0
  245. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/glyphs.json +0 -0
  246. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/motions/border/chromatic-pulse.yaml +0 -0
  247. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/motions/border/corner-trace.yaml +0 -0
  248. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/motions/border/dual-orbit.yaml +0 -0
  249. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/motions/border/entanglement.yaml +0 -0
  250. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/motions/border/rimrun.yaml +0 -0
  251. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/motions/static.yaml +0 -0
  252. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/paradigms/default.yaml +0 -0
  253. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/policies/normal.json +0 -0
  254. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/policies/permissive.json +0 -0
  255. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/policies/ungoverned.json +0 -0
  256. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/profiles/brutalist.contract.json +0 -0
  257. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/profiles/brutalist.yaml +0 -0
  258. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/profiles/chrome.contract.json +0 -0
  259. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/profiles/chrome.yaml +0 -0
  260. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/specimens.yaml +0 -0
  261. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/telemetry/model-pricing.yaml +0 -0
  262. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/telemetry/runtimes/claude-code.yaml +0 -0
  263. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/telemetry/runtimes/codex.yaml +0 -0
  264. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/telemetry/stage-config.yaml +0 -0
  265. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/telemetry/stage-labels.yaml +0 -0
  266. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/telemetry/tool-colors.yaml +0 -0
  267. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/arrow.json +0 -0
  268. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/aurora.json +0 -0
  269. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/beacon.json +0 -0
  270. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/bracket3d.json +0 -0
  271. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/chevron.json +0 -0
  272. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/crosshair.json +0 -0
  273. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/diamond.json +0 -0
  274. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/rocket.json +0 -0
  275. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/rules/bar.json +0 -0
  276. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/rules/dashed.json +0 -0
  277. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/rules/five-wave.json +0 -0
  278. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/rules/spectral.json +0 -0
  279. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/rules/straight.json +0 -0
  280. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/rules/wave.json +0 -0
  281. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/data/terminals/stijl.json +0 -0
  282. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/kit.py +0 -0
  283. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/mcp/__init__.py +0 -0
  284. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/mcp/__main__.py +0 -0
  285. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/py.typed +0 -0
  286. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/render/__init__.py +0 -0
  287. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/render/fonts.py +0 -0
  288. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/render/glyphs.py +0 -0
  289. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/render/motion.py +0 -0
  290. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/render/templates.py +0 -0
  291. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/serve/__init__.py +0 -0
  292. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/serve/data_tokens.py +0 -0
  293. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/telemetry/__init__.py +0 -0
  294. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/telemetry/capture.py +0 -0
  295. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/telemetry/codex_parser.py +0 -0
  296. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/telemetry/contract.py +0 -0
  297. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/telemetry/corrections.py +0 -0
  298. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/telemetry/cost.py +0 -0
  299. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/telemetry/models.py +0 -0
  300. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/telemetry/parser.py +0 -0
  301. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/telemetry/runtimes.py +0 -0
  302. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/telemetry/stages.py +0 -0
  303. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/chart-area.svg.j2 +0 -0
  304. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/chart-axes.svg.j2 +0 -0
  305. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/chart-empty-state.svg.j2 +0 -0
  306. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/chart-gridlines.svg.j2 +0 -0
  307. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/chart-markers/circle.svg.j2 +0 -0
  308. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/chart-markers/diamond.svg.j2 +0 -0
  309. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/chart-markers/endpoint-diamond.svg.j2 +0 -0
  310. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/chart-markers/endpoint-rect.svg.j2 +0 -0
  311. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/chart-markers/rect.svg.j2 +0 -0
  312. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/chart-polyline.svg.j2 +0 -0
  313. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/filter.svg.j2 +0 -0
  314. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/glyph-inline.svg.j2 +0 -0
  315. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/glyph.svg.j2 +0 -0
  316. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/gradient.svg.j2 +0 -0
  317. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/metadata.svg.j2 +0 -0
  318. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/metric.svg.j2 +0 -0
  319. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/phase-segment.svg.j2 +0 -0
  320. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/rule.svg.j2 +0 -0
  321. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/status.svg.j2 +0 -0
  322. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/components/terminal.svg.j2 +0 -0
  323. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/error-badge.svg.j2 +0 -0
  324. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/badge/brutalist-content.j2 +0 -0
  325. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/badge/brutalist-defs.j2 +0 -0
  326. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/badge/chrome-defs.j2 +0 -0
  327. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/badge/default-content.j2 +0 -0
  328. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/badge/default-defs.j2 +0 -0
  329. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/badge.svg.j2 +0 -0
  330. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/catalog.svg.j2 +0 -0
  331. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/chart/brutalist-content.j2 +0 -0
  332. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/chart/brutalist-defs.j2 +0 -0
  333. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/chart/chrome-content.j2 +0 -0
  334. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/chart/chrome-defs.j2 +0 -0
  335. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/chart.svg.j2 +0 -0
  336. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/divider/brutalist-seam.svg.j2 +0 -0
  337. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/divider/chrome-band.svg.j2 +0 -0
  338. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/icon/brutalist-content.j2 +0 -0
  339. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/icon/brutalist-defs.j2 +0 -0
  340. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/icon/default-content.j2 +0 -0
  341. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/icon/default-defs.j2 +0 -0
  342. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/icon.svg.j2 +0 -0
  343. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-content.j2 +0 -0
  344. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-defs.j2 +0 -0
  345. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-overlay.j2 +0 -0
  346. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/marquee-horizontal/cellular-content.j2 +0 -0
  347. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/marquee-horizontal/cellular-defs.j2 +0 -0
  348. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/marquee-horizontal/chrome-content.j2 +0 -0
  349. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/marquee-horizontal/chrome-overlay.j2 +0 -0
  350. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/marquee-horizontal/default-content.j2 +0 -0
  351. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/marquee-horizontal/default-defs.j2 +0 -0
  352. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/master-card.svg.j2 +0 -0
  353. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/receipt.svg.j2 +0 -0
  354. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/rhythm-strip.svg.j2 +0 -0
  355. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/stats/brutalist-content.j2 +0 -0
  356. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/stats/brutalist-defs.j2 +0 -0
  357. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/stats/chrome-content.j2 +0 -0
  358. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/stats/chrome-defs.j2 +0 -0
  359. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/stats.svg.j2 +0 -0
  360. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip/brutalist-content.j2 +0 -0
  361. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip/brutalist-defs.j2 +0 -0
  362. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip/brutalist-status.j2 +0 -0
  363. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip/cellular-status.j2 +0 -0
  364. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip/chrome-content.j2 +0 -0
  365. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip/chrome-defs.j2 +0 -0
  366. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip/default-content.j2 +0 -0
  367. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip/default-defs.j2 +0 -0
  368. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip/default-status.j2 +0 -0
  369. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/frames/strip.svg.j2 +0 -0
  370. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/motions/border/chromatic-pulse.svg.j2 +0 -0
  371. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/motions/border/corner-trace.svg.j2 +0 -0
  372. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/motions/border/dual-orbit.svg.j2 +0 -0
  373. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/motions/border/entanglement.svg.j2 +0 -0
  374. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/motions/border/rimrun.svg.j2 +0 -0
  375. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/partials/provider-glyphs.svg.j2 +0 -0
  376. {hyperweave-0.2.25 → hyperweave-0.3.0}/src/hyperweave/templates/partials/state-signal-cascade.j2 +0 -0
  377. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/__init__.py +0 -0
  378. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/conftest.py +0 -0
  379. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/fixtures/codex_session.jsonl +0 -0
  380. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/fixtures/codex_session_patches.jsonl +0 -0
  381. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/fixtures/github_contributions/synthetic.html +0 -0
  382. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/fixtures/session.json +0 -0
  383. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/fixtures/session.jsonl +0 -0
  384. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/helpers.py +0 -0
  385. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_assembler.py +0 -0
  386. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_badge_mode.py +0 -0
  387. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_chart_engine.py +0 -0
  388. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_chart_frame.py +0 -0
  389. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_codex_parser.py +0 -0
  390. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_compose_bar_chart.py +0 -0
  391. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_compose_rhythm_strip.py +0 -0
  392. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_compose_treemap.py +0 -0
  393. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_connectors.py +0 -0
  394. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_core.py +0 -0
  395. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_data_tokens.py +0 -0
  396. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_divider_genome_specific.py +0 -0
  397. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_font_metrics_chakra.py +0 -0
  398. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_github_scrape.py +0 -0
  399. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_kit.py +0 -0
  400. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_mcp.py +0 -0
  401. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_paradigm_dispatch.py +0 -0
  402. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_paradigm_extensibility.py +0 -0
  403. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_parse_transcript_auto.py +0 -0
  404. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_receipt_token_compliance.py +0 -0
  405. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_render.py +0 -0
  406. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_resolver_rhythm.py +0 -0
  407. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_runtime_registries.py +0 -0
  408. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_serve.py +0 -0
  409. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_serve_live_state.py +0 -0
  410. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_slot_metric_state.py +0 -0
  411. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_stats_card.py +0 -0
  412. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_telemetry.py +0 -0
  413. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_telemetry_contract_per_stage.py +0 -0
  414. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_telemetry_integration.py +0 -0
  415. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_telemetry_skin_dispatch.py +0 -0
  416. {hyperweave-0.2.25 → hyperweave-0.3.0}/tests/test_tool_class_completeness.py +0 -0
  417. {hyperweave-0.2.25 → hyperweave-0.3.0}/uv.lock +0 -0
@@ -5,6 +5,40 @@ All notable changes to HyperWeave are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.0] - 2026-05-10
9
+
10
+ Chrome ships five named variants. Automata ships sixteen tones with a pairing grammar that composes any two into a bifamily strip or divider. Stat cards, star charts, marquees, and icons redesigned. Per-frame font filtering cuts artifact payloads.
11
+
12
+ ### Added
13
+
14
+ - **Chrome variants** — horizon, abyssal, lightning, graphite, moth. Each carries its own gradient, glyph tone, text color, and status indicator.
15
+ - **Automata 16 tones** — violet, teal, bone, steel, amber, jade, magenta, cobalt, toxic, solar, abyssal, crimson, sulfur, indigo, burgundy, copper.
16
+ - **Pairing grammar** — `?variant=primary&pair=secondary` composes any two tones into a bifamily strip or divider. Other frame types silently ignore the parameter. Available on CLI, HTTP, and MCP.
17
+ - **Redesigned automata stat card, star chart, marquee, and icon** — contribution heatmap, star history with threshold markers, scrolling marquee, and social icon with living cell grid.
18
+
19
+ ### Changed
20
+
21
+ - **Chrome glyph dimensions match cellular** — both paradigms declare `glyph_size: 12`.
22
+ - **Star chart threshold labels** — offset increased so annotations sit clearly above the polyline glow.
23
+ - **Per-frame font filtering** — each frame embeds only the fonts its templates use. Icons and dividers ship font-free.
24
+
25
+ ### Notes
26
+
27
+ - 1035 tests (was 960).
28
+
29
+ ## [0.2.26] - 2026-05-07
30
+
31
+ Two follow-ups to v0.2.25's badge state architecture: strip status indicators now color correctly when CI metrics fail, and the snapshot test suite no longer fails on local-vs-CI version differences.
32
+
33
+ ### Fixed
34
+
35
+ - **Strip status indicator color tracks the most severe CI metric** — a strip with `BUILD:failing` next to `STARS` and `VERSION` now renders the right-edge diamond red, matching pre-v0.2.25 behavior. The v0.2.25 narrowing inadvertently dropped this for strips because their title is the repo identifier (`HYPERWEAVE`, `readme-ai`), not a state-bearing label. The engine now parses strip metric cells, runs state inference per allowlisted cell (`BUILD`, `COVERAGE`, `LINT`, etc.), and rolls up to the most severe state across them. Pure data strips (no allowlisted cells) stay neutral.
36
+ - **Snapshot tests handle local-vs-CI version differences** — the URL stability suite was treating package version strings as content (`version="0.2.20"` vs `version="0.2.25"` from dynamic git-tag versioning), failing CI when local snapshots were captured at a different version than the runner. Versions in metadata are now normalized for comparison alongside UUIDs and timestamps.
37
+
38
+ ### Notes
39
+
40
+ - 960 tests (was 955). 5 new tests pin the strip rollup contract across failing / passing / mixed-severity / pure-data / explicit-override cases.
41
+
8
42
  ## [0.2.25] - 2026-05-07
9
43
 
10
44
  Production badges on data-driven URLs (`STARS`, `FORKS`, `VERSION`, `LICENSE`, `PYTHON`) no longer trigger false-alarm status indicators on numeric values. Badge value text now centers correctly for every value length across all genomes.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperweave
3
- Version: 0.2.25
3
+ Version: 0.3.0
4
4
  Summary: Headless visual output layer for AI agents. One API call → self-contained SVG.
5
5
  Project-URL: Repository, https://github.com/InnerAura/hyperweave
6
6
  Project-URL: Issues, https://github.com/InnerAura/hyperweave/issues
@@ -42,15 +42,13 @@ Description-Content-Type: text/markdown
42
42
  Works everywhere an <code>&lt;img&gt;</code> tag works.
43
43
  </p>
44
44
 
45
- <!--
46
- <p align="center">
45
+ <!-- <p align="center">
47
46
  <img src="https://hyperweave.app/v1/badge/STARS/chrome.static?data=gh:InnerAura/hyperweave.stars" alt="stars"/>
48
47
  <img src="https://hyperweave.app/v1/badge/FORKS/chrome.static?data=gh:InnerAura/hyperweave.forks" alt="forks"/>
49
48
  <img src="https://hyperweave.app/v1/badge/VERSION/chrome.static?data=pypi:hyperweave.version" alt="version"/>
50
49
  <img src="https://hyperweave.app/v1/badge/LICENSE/chrome.static?data=gh:InnerAura/hyperweave.license" alt="license"/>
51
50
  <img src="https://hyperweave.app/v1/badge/PYTHON/chrome.static?data=pypi:hyperweave.python_requires" alt="python"/>
52
- </p>
53
- -->
51
+ </p> -->
54
52
 
55
53
  <p align="center">
56
54
  <img src="https://hyperweave.app/v1/strip/hyperweave/chrome.static?data=gh:InnerAura/hyperweave.build,pypi:hyperweave.version,gh:InnerAura/hyperweave.license&glyph=github" alt="strip"/>
@@ -101,7 +99,7 @@ HyperWeave is that primitive. One API call returns a self-contained SVG with dat
101
99
 
102
100
  ---
103
101
 
104
- ## Agent Receipts
102
+ ## Agentic Artifacts
105
103
 
106
104
  Every AI coding session produces a receipt &mdash; cost, tokens, tool distribution, session rhythm. One install, fully automatic.
107
105
 
@@ -155,269 +153,292 @@ Why genome and not theme? Because brand isn't a design problem, it's an infrastr
155
153
  <p align="center">
156
154
  <a href="#chrome"><kbd>chrome</kbd></a>
157
155
  &middot;
158
- <a href="#brutalist"><kbd>brutalist</kbd></a>
159
- &middot;
160
156
  <a href="#automata"><kbd>automata</kbd></a>
157
+ &middot;
158
+ <a href="#brutalist"><kbd>brutalist</kbd></a>
161
159
  </p>
162
160
 
163
161
  <h3 id="chrome">chrome</h3>
164
- <sub><b>chrome paradigm &middot; metallic env-mapping &middot; smooth corner radii</b></sub>
162
+
163
+ <p align="center">
164
+ <img src="https://hyperweave.app/v1/badge/BUILD/passing/chrome.static?state=passing&variant=horizon" alt="BUILD passing — horizon variant"/>
165
+ <img src="https://hyperweave.app/v1/badge/DEPLOY/live/chrome.static?state=passing&variant=abyssal" alt="DEPLOY live — abyssal variant"/>
166
+ <img src="https://hyperweave.app/v1/badge/COVERAGE/94%25/chrome.static?state=passing&variant=lightning" alt="COVERAGE 94% — lightning variant"/>
167
+ <img src="https://hyperweave.app/v1/badge/CRITICAL/0/chrome.static?state=warning&variant=graphite" alt="CRITICAL 0 — graphite variant"/>
168
+ <img src="https://hyperweave.app/v1/badge/TESTS/142/chrome.static?state=passing&variant=moth" alt="TESTS 142 — moth variant"/>
169
+ </p>
170
+
171
+ <p align="center">
172
+ <sub>5 variants: <code>horizon</code> &middot; <code>abyssal</code> &middot; <code>lightning</code> &middot; <code>graphite</code> &middot; <code>moth</code></sub>
173
+ </p>
165
174
 
166
175
  <table>
167
176
  <tr>
168
177
  <th align="left" width="160">Signals<br/><sub>state machine</sub></th>
169
178
  <td>
170
- <img src="https://hyperweave.app/v1/badge/BUILD/passing/chrome.static?state=passing" alt="passing"/>
171
- <img src="https://hyperweave.app/v1/badge/BUILD/warning/chrome.static?state=warning" alt="warning"/>
172
- <img src="https://hyperweave.app/v1/badge/BUILD/critical/chrome.static?state=critical" alt="critical"/>
179
+ <img src="https://hyperweave.app/v1/badge/BUILD/passing/chrome.static?state=passing&variant=horizon" alt="passing"/>
180
+ <img src="https://hyperweave.app/v1/badge/BUILD/warning/chrome.static?state=warning&variant=horizon" alt="warning"/>
181
+ <img src="https://hyperweave.app/v1/badge/BUILD/critical/chrome.static?state=critical&variant=horizon" alt="critical"/>
173
182
  <br/>
174
183
  <ul>
175
- <li><sub><code>/v1/badge/{title}/{value}/{genome}.static?state={state}</code></sub></li>
176
- <li><sub><code>hyperweave.app/v1/badge/BUILD/passing/chrome.static?state=passing</code></sub></li>
184
+ <li><sub><code>/v1/badge/{title}/{value}/{genome}.static?state={state}&variant={horizon|abyssal|lightning|graphite|moth}</code></sub></li>
185
+ <li><sub><code>hyperweave.app/v1/badge/BUILD/passing/chrome.static?state=passing&variant=horizon</code></sub></li>
177
186
  </ul>
178
187
  </td>
179
188
  </tr>
180
189
  <tr>
181
190
  <th align="left">Dashboard<br/><sub>strip</sub></th>
182
191
  <td>
183
- <img src="https://hyperweave.app/v1/strip/readme-ai/chrome.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&glyph=github" alt="strip"/>
192
+ <img src="https://hyperweave.app/v1/strip/readme-ai/chrome.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&glyph=github&variant=horizon" alt="strip"/>
184
193
  <br/>
185
194
  <ul>
186
- <li><sub><code>/v1/strip/{title}/{genome}.static?data={tokens}&subtitle={text}&glyph={glyph}</code></sub></li>
187
- <li><sub><code>hyperweave.app/v1/strip/readme-ai/chrome.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&glyph=github</code></sub></li>
195
+ <li><sub><code>/v1/strip/{title}/{genome}.static?data={tokens}&subtitle={text}&glyph={glyph}&variant={variant}</code></sub></li>
196
+ <li><sub><code>hyperweave.app/v1/strip/readme-ai/chrome.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&glyph=github&variant=horizon</code></sub></li>
188
197
  </ul>
189
198
  </td>
190
199
  </tr>
191
200
  <tr>
192
201
  <th align="left">Profile<br/><sub>stats card</sub></th>
193
202
  <td>
194
- <img src="https://hyperweave.app/v1/stats/eli64s/chrome.static" alt="stats" width="100%"/>
203
+ <img src="https://hyperweave.app/v1/stats/eli64s/chrome.static?variant=horizon" alt="stats" width="100%"/>
195
204
  <br/>
196
205
  <ul>
197
- <li><sub><code>/v1/stats/{username}/{genome}.static</code></sub></li>
198
- <li><sub><code>hyperweave.app/v1/stats/eli64s/chrome.static</code></sub></li>
206
+ <li><sub><code>/v1/stats/{username}/{genome}.static?variant={variant}</code></sub></li>
207
+ <li><sub><code>hyperweave.app/v1/stats/eli64s/chrome.static?variant=horizon</code></sub></li>
199
208
  </ul>
200
209
  </td>
201
210
  </tr>
202
211
  <tr>
203
212
  <th align="left">Star Chart<br/><sub>star history</sub></th>
204
213
  <td>
205
- <img src="https://hyperweave.app/v1/chart/stars/eli64s/readme-ai/chrome.static" alt="star chart" width="100%"/>
214
+ <img src="https://hyperweave.app/v1/chart/stars/eli64s/readme-ai/chrome.static?variant=horizon" alt="star chart" width="100%"/>
206
215
  <br/>
207
216
  <ul>
208
- <li><sub><code>/v1/chart/stars/{owner}/{repo}/{genome}.static</code></sub></li>
209
- <li><sub><code>hyperweave.app/v1/chart/stars/eli64s/readme-ai/chrome.static</code></sub></li>
217
+ <li><sub><code>/v1/chart/stars/{owner}/{repo}/{genome}.static?variant={variant}</code></sub></li>
218
+ <li><sub><code>hyperweave.app/v1/chart/stars/eli64s/readme-ai/chrome.static?variant=horizon</code></sub></li>
210
219
  </ul>
211
220
  </td>
212
221
  </tr>
213
222
  <tr>
214
223
  <th align="left">Marquee<br/><sub>horizontal ticker</sub></th>
215
224
  <td>
216
- <img src="https://hyperweave.app/v1/marquee/readme-ai/chrome.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count" alt="marquee"/>
225
+ <img src="https://hyperweave.app/v1/marquee/readme-ai/chrome.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count&variant=horizon" alt="marquee"/>
217
226
  <br/>
218
227
  <ul>
219
- <li><sub><code>/v1/marquee/{title}/{genome}.static?data={tokens}</code></sub></li>
220
- <li><sub><code>hyperweave.app/v1/marquee/readme-ai/chrome.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count</code></sub></li>
228
+ <li><sub><code>/v1/marquee/{title}/{genome}.static?data={tokens}&variant={variant}</code></sub></li>
229
+ <li><sub><code>hyperweave.app/v1/marquee/readme-ai/chrome.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count&variant=horizon</code></sub></li>
221
230
  </ul>
222
231
  </td>
223
232
  </tr>
224
233
  <tr>
225
234
  <th align="left">Icons<br/><sub>circle + square</sub></th>
226
235
  <td>
227
- <img src="https://hyperweave.app/v1/icon/youtube/chrome.static?shape=circle" alt="youtube" width="56"/>
228
- <img src="https://hyperweave.app/v1/icon/notion/chrome.static?shape=circle" alt="notion" width="56"/>
229
- <img src="https://hyperweave.app/v1/icon/npm/chrome.static?shape=square" alt="npm" width="56"/>
230
- <img src="https://hyperweave.app/v1/icon/instagram/chrome.static?shape=square" alt="instagram" width="56"/>
236
+ <img src="https://hyperweave.app/v1/icon/youtube/chrome.static?shape=circle&variant=horizon" alt="youtube" width="56"/>
237
+ <img src="https://hyperweave.app/v1/icon/notion/chrome.static?shape=circle&variant=horizon" alt="notion" width="56"/>
238
+ <img src="https://hyperweave.app/v1/icon/npm/chrome.static?shape=square&variant=horizon" alt="npm" width="56"/>
239
+ <img src="https://hyperweave.app/v1/icon/instagram/chrome.static?shape=square&variant=horizon" alt="instagram" width="56"/>
231
240
  <br/>
232
241
  <ul>
233
- <li><sub><code>/v1/icon/{glyph}/{genome}.static?shape={circle|square}</code></sub></li>
234
- <li><sub><code>hyperweave.app/v1/icon/youtube/chrome.static?shape=circle</code></sub></li>
242
+ <li><sub><code>/v1/icon/{glyph}/{genome}.static?shape={circle|square}&variant={variant}</code></sub></li>
243
+ <li><sub><code>hyperweave.app/v1/icon/youtube/chrome.static?shape=circle&variant=horizon</code></sub></li>
235
244
  </ul>
236
245
  </td>
237
246
  </tr>
238
247
  <tr>
239
248
  <th align="left">Divider<br/><sub>band</sub></th>
240
249
  <td>
241
- <img src="https://hyperweave.app/v1/divider/band/chrome.static" alt="chrome band divider"/>
250
+ <img src="https://hyperweave.app/v1/divider/band/chrome.static?variant=horizon" alt="chrome band divider"/>
242
251
  <br/>
243
252
  <ul>
244
- <li><sub><code>/v1/divider/band/{genome}.static</code></sub></li>
245
- <li><sub><code>hyperweave.app/v1/divider/band/chrome.static</code></sub></li>
253
+ <li><sub><code>/v1/divider/band/{genome}.static?variant={variant}</code></sub></li>
254
+ <li><sub><code>hyperweave.app/v1/divider/band/chrome.static?variant=horizon</code></sub></li>
246
255
  </ul>
247
256
  </td>
248
257
  </tr>
249
258
  </table>
250
259
 
251
- <h3 id="brutalist">brutalist</h3>
252
- <sub><b>brutalist paradigm &middot; sharp zero-radius &middot; 5 border SMIL motions</b></sub>
260
+ <h3 id="automata">automata</h3>
261
+
262
+ <p align="center">
263
+ <img src="https://hyperweave.app/v1/badge/DISCORD/JOIN/automata.static?glyph=discord&variant=indigo" alt="DISCORD JOIN — indigo variant"/>
264
+ <img src="https://hyperweave.app/v1/badge/DOCKER/PULL/automata.static?glyph=docker&variant=cobalt" alt="DOCKER PULL — cobalt variant"/>
265
+ <img src="https://hyperweave.app/v1/badge/STARS/automata.static?data=gh:InnerAura/hyperweave.stars&glyph=github&variant=bone" alt="STARS — bone variant"/>
266
+ <img src="https://hyperweave.app/v1/badge/FOLLOW/automata.static?glyph=x&variant=steel" alt="FOLLOW — steel variant"/>
267
+ <img src="https://hyperweave.app/v1/badge/HF/MODELS/automata.static?glyph=huggingface&variant=sulfur" alt="HF MODELS — sulfur variant"/>
268
+ <img src="https://hyperweave.app/v1/badge/LISTEN/automata.static?glyph=spotify&variant=jade" alt="LISTEN — jade variant"/>
269
+ </p>
270
+
271
+ <p align="center">
272
+ <sub>16 tones: <code>violet</code> &middot; <code>teal</code> &middot; <code>bone</code> &middot; <code>steel</code> &middot; <code>amber</code> &middot; <code>jade</code> &middot; <code>magenta</code> &middot; <code>cobalt</code> &middot; <code>toxic</code> &middot; <code>solar</code> &middot; <code>abyssal</code> &middot; <code>crimson</code> &middot; <code>sulfur</code> &middot; <code>indigo</code> &middot; <code>burgundy</code> &middot; <code>copper</code>. Pair any two via <code>?variant=primary&pair=secondary</code>.</sub>
273
+ </p>
253
274
 
254
275
  <table>
255
276
  <tr>
256
277
  <th align="left" width="160">Signals<br/><sub>state machine</sub></th>
257
278
  <td>
258
- <img src="https://hyperweave.app/v1/badge/BUILD/passing/brutalist.static?state=passing" alt="passing"/>
259
- <img src="https://hyperweave.app/v1/badge/BUILD/warning/brutalist.static?state=warning" alt="warning"/>
260
- <img src="https://hyperweave.app/v1/badge/BUILD/critical/brutalist.static?state=critical" alt="critical"/>
279
+ <img src="https://hyperweave.app/v1/badge/BUILD/passing/automata.static?state=passing&variant=bone" alt="passing"/>
280
+ <img src="https://hyperweave.app/v1/badge/BUILD/warning/automata.static?state=warning&variant=bone" alt="warning"/>
281
+ <img src="https://hyperweave.app/v1/badge/BUILD/critical/automata.static?state=critical&variant=bone" alt="critical"/>
261
282
  <br/>
262
283
  <ul>
263
284
  <li><sub><code>/v1/badge/{title}/{value}/{genome}.static?state={state}</code></sub></li>
264
- <li><sub><code>hyperweave.app/v1/badge/BUILD/passing/brutalist.static?state=passing</code></sub></li>
285
+ <li><sub><code>hyperweave.app/v1/badge/BUILD/passing/automata.static?state=passing&variant=bone</code></sub></li>
265
286
  </ul>
266
287
  </td>
267
288
  </tr>
268
289
  <tr>
269
290
  <th align="left">Dashboard<br/><sub>strip</sub></th>
270
291
  <td>
271
- <img src="https://hyperweave.app/v1/strip/readme-ai/brutalist.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&glyph=github" alt="strip"/>
292
+ <img src="https://hyperweave.app/v1/strip/readme-ai/automata.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&variant=bone&pair=steel&glyph=github" alt="strip"/>
272
293
  <br/>
273
294
  <ul>
274
- <li><sub><code>/v1/strip/{title}/{genome}.static?data={tokens}&subtitle={text}&glyph={glyph}</code></sub></li>
275
- <li><sub><code>hyperweave.app/v1/strip/readme-ai/brutalist.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&glyph=github</code></sub></li>
295
+ <li><sub><code>/v1/strip/{title}/automata.static?data={tokens}&variant={tone}&pair={tone}&subtitle={text}&glyph={glyph}</code></sub></li>
296
+ <li><sub><code>hyperweave.app/v1/strip/readme-ai/automata.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&variant=bone&pair=steel&glyph=github</code></sub></li>
276
297
  </ul>
277
298
  </td>
278
299
  </tr>
279
300
  <tr>
280
301
  <th align="left">Profile<br/><sub>stats card</sub></th>
281
302
  <td>
282
- <img src="https://hyperweave.app/v1/stats/eli64s/brutalist.static" alt="stats" width="100%"/>
303
+ <img src="https://hyperweave.app/v1/stats/eli64s/automata.static?variant=bone" alt="stats" width="100%"/>
283
304
  <br/>
284
305
  <ul>
285
- <li><sub><code>/v1/stats/{username}/{genome}.static</code></sub></li>
286
- <li><sub><code>hyperweave.app/v1/stats/eli64s/brutalist.static</code></sub></li>
306
+ <li><sub><code>/v1/stats/{username}/{genome}.static?variant={tone}</code></sub></li>
307
+ <li><sub><code>hyperweave.app/v1/stats/eli64s/automata.static?variant=bone</code></sub></li>
287
308
  </ul>
288
309
  </td>
289
310
  </tr>
290
311
  <tr>
291
312
  <th align="left">Star Chart<br/><sub>star history</sub></th>
292
313
  <td>
293
- <img src="https://hyperweave.app/v1/chart/stars/eli64s/readme-ai/brutalist.static" alt="star chart" width="100%"/>
314
+ <img src="https://hyperweave.app/v1/chart/stars/eli64s/readme-ai/automata.static?variant=bone" alt="star chart" width="100%"/>
294
315
  <br/>
295
316
  <ul>
296
- <li><sub><code>/v1/chart/stars/{owner}/{repo}/{genome}.static</code></sub></li>
297
- <li><sub><code>hyperweave.app/v1/chart/stars/eli64s/readme-ai/brutalist.static</code></sub></li>
317
+ <li><sub><code>/v1/chart/stars/{owner}/{repo}/{genome}.static?variant={tone}</code></sub></li>
318
+ <li><sub><code>hyperweave.app/v1/chart/stars/eli64s/readme-ai/automata.static?variant=bone</code></sub></li>
298
319
  </ul>
299
320
  </td>
300
321
  </tr>
301
322
  <tr>
302
323
  <th align="left">Marquee<br/><sub>horizontal ticker</sub></th>
303
324
  <td>
304
- <img src="https://hyperweave.app/v1/marquee/readme-ai/brutalist.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count" alt="marquee"/>
325
+ <img src="https://hyperweave.app/v1/marquee/readme-ai/automata.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count&variant=bone" alt="marquee"/>
305
326
  <br/>
306
327
  <ul>
307
- <li><sub><code>/v1/marquee/{title}/{genome}.static?data={tokens}</code></sub></li>
308
- <li><sub><code>hyperweave.app/v1/marquee/readme-ai/brutalist.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count</code></sub></li>
328
+ <li><sub><code>/v1/marquee/{title}/automata.static?data={tokens}&variant={tone}</code></sub></li>
329
+ <li><sub><code>hyperweave.app/v1/marquee/readme-ai/automata.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count&variant=bone</code></sub></li>
309
330
  </ul>
310
331
  </td>
311
332
  </tr>
312
333
  <tr>
313
- <th align="left">Icons<br/><sub>circle + square</sub></th>
334
+ <th align="left">Icons<br/><sub>square brand-matched tones</sub></th>
314
335
  <td>
315
- <img src="https://hyperweave.app/v1/icon/discord/brutalist.static?shape=circle" alt="discord" width="56"/>
316
- <img src="https://hyperweave.app/v1/icon/github/brutalist.static?shape=circle" alt="github" width="56"/>
317
- <img src="https://hyperweave.app/v1/icon/x/brutalist.static?shape=square" alt="x" width="56"/>
318
- <img src="https://hyperweave.app/v1/icon/spotify/brutalist.static?shape=square" alt="spotify" width="56"/>
336
+ <img src="https://hyperweave.app/v1/icon/docker/automata.static?shape=square&variant=cobalt" alt="docker cobalt" width="56"/>
337
+ <img src="https://hyperweave.app/v1/icon/discord/automata.static?shape=square&variant=indigo" alt="discord indigo" width="56"/>
338
+ <img src="https://hyperweave.app/v1/icon/huggingface/automata.static?shape=square&variant=sulfur" alt="huggingface sulfur" width="56"/>
339
+ <img src="https://hyperweave.app/v1/icon/youtube/automata.static?shape=square&variant=crimson" alt="youtube crimson" width="56"/>
319
340
  <br/>
320
341
  <ul>
321
- <li><sub><code>/v1/icon/{glyph}/{genome}.static?shape={circle|square}</code></sub></li>
322
- <li><sub><code>hyperweave.app/v1/icon/discord/brutalist.static?shape=circle</code></sub></li>
342
+ <li><sub><code>/v1/icon/{glyph}/automata.static?shape=square&variant={tone}</code></sub></li>
343
+ <li><sub><code>hyperweave.app/v1/icon/docker/automata.static?shape=square&variant=cobalt</code></sub></li>
323
344
  </ul>
324
345
  </td>
325
346
  </tr>
326
347
  <tr>
327
- <th align="left">Divider<br/><sub>seam</sub></th>
348
+ <th align="left">Divider<br/><sub>dissolve</sub></th>
328
349
  <td>
329
- <img src="https://hyperweave.app/v1/divider/seam/brutalist.static" alt="brutalist seam divider"/>
350
+ <img src="https://hyperweave.app/v1/divider/dissolve/automata.static?variant=bone&pair=steel" alt="automata dissolve divider"/>
330
351
  <br/>
331
352
  <ul>
332
- <li><sub><code>/v1/divider/seam/{genome}.static</code></sub></li>
333
- <li><sub><code>hyperweave.app/v1/divider/seam/brutalist.static</code></sub></li>
353
+ <li><sub><code>/v1/divider/dissolve/{genome}.static?variant={tone}&pair={tone}</code></sub></li>
354
+ <li><sub><code>hyperweave.app/v1/divider/dissolve/automata.static?variant=bone&pair=steel</code></sub></li>
334
355
  </ul>
335
356
  </td>
336
357
  </tr>
337
358
  </table>
338
359
 
339
- <h3 id="automata">automata</h3>
340
- <sub><b>cellular paradigm &middot; bifamily teal &times; amethyst &middot; abyssal-cyber chromatics</b></sub>
360
+ <h3 id="brutalist">brutalist</h3>
341
361
 
342
362
  <table>
343
363
  <tr>
344
- <th align="left" width="160">Signals<br/><sub>chromatic variant</sub></th>
364
+ <th align="left" width="160">Signals<br/><sub>state machine</sub></th>
345
365
  <td>
346
- <img src="https://hyperweave.app/v1/badge/PYPI/automata.static?data=pypi:hyperweave.version&glyph=python&variant=blue" alt="pypi teal"/>
347
- <img src="https://hyperweave.app/v1/badge/DISCORD/JOIN/automata.static?glyph=discord&variant=purple" alt="discord amethyst"/>
366
+ <img src="https://hyperweave.app/v1/badge/BUILD/passing/brutalist.static?state=passing" alt="passing"/>
367
+ <img src="https://hyperweave.app/v1/badge/BUILD/warning/brutalist.static?state=warning" alt="warning"/>
368
+ <img src="https://hyperweave.app/v1/badge/BUILD/critical/brutalist.static?state=critical" alt="critical"/>
348
369
  <br/>
349
370
  <ul>
350
- <li><sub><code>/v1/badge/{title}/automata.static?data={token}&variant={blue|purple|bifamily}</code></sub></li>
351
- <li><sub><code>hyperweave.app/v1/badge/DISCORD/JOIN/automata.static?glyph=discord&variant=purple</code></sub></li>
371
+ <li><sub><code>/v1/badge/{title}/{value}/{genome}.static?state={state}</code></sub></li>
372
+ <li><sub><code>hyperweave.app/v1/badge/BUILD/passing/brutalist.static?state=passing</code></sub></li>
352
373
  </ul>
353
374
  </td>
354
375
  </tr>
355
376
  <tr>
356
- <th align="left">Dashboard<br/><sub>strip &middot; bifamily</sub></th>
377
+ <th align="left">Dashboard<br/><sub>strip</sub></th>
357
378
  <td>
358
- <img src="https://hyperweave.app/v1/strip/readme-ai/automata.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&variant=bifamily&glyph=github" alt="strip"/>
379
+ <img src="https://hyperweave.app/v1/strip/readme-ai/brutalist.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&glyph=github" alt="strip"/>
359
380
  <br/>
360
381
  <ul>
361
- <li><sub><code>/v1/strip/{title}/automata.static?data={tokens}&variant=bifamily&subtitle={text}&glyph={glyph}</code></sub></li>
362
- <li><sub><code>hyperweave.app/v1/strip/readme-ai/automata.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&variant=bifamily&glyph=github</code></sub></li>
382
+ <li><sub><code>/v1/strip/{title}/{genome}.static?data={tokens}&subtitle={text}&glyph={glyph}</code></sub></li>
383
+ <li><sub><code>hyperweave.app/v1/strip/readme-ai/brutalist.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&glyph=github</code></sub></li>
363
384
  </ul>
364
385
  </td>
365
386
  </tr>
366
387
  <tr>
367
388
  <th align="left">Profile<br/><sub>stats card</sub></th>
368
389
  <td>
369
- <img src="https://hyperweave.app/v1/stats/eli64s/automata.static" alt="stats" width="100%"/>
390
+ <img src="https://hyperweave.app/v1/stats/eli64s/brutalist.static" alt="stats" width="100%"/>
370
391
  <br/>
371
392
  <ul>
372
393
  <li><sub><code>/v1/stats/{username}/{genome}.static</code></sub></li>
373
- <li><sub><code>hyperweave.app/v1/stats/eli64s/automata.static</code></sub></li>
394
+ <li><sub><code>hyperweave.app/v1/stats/eli64s/brutalist.static</code></sub></li>
374
395
  </ul>
375
396
  </td>
376
397
  </tr>
377
398
  <tr>
378
399
  <th align="left">Star Chart<br/><sub>star history</sub></th>
379
400
  <td>
380
- <img src="https://hyperweave.app/v1/chart/stars/eli64s/readme-ai/automata.static" alt="star chart" width="100%"/>
401
+ <img src="https://hyperweave.app/v1/chart/stars/eli64s/readme-ai/brutalist.static" alt="star chart" width="100%"/>
381
402
  <br/>
382
403
  <ul>
383
404
  <li><sub><code>/v1/chart/stars/{owner}/{repo}/{genome}.static</code></sub></li>
384
- <li><sub><code>hyperweave.app/v1/chart/stars/eli64s/readme-ai/automata.static</code></sub></li>
405
+ <li><sub><code>hyperweave.app/v1/chart/stars/eli64s/readme-ai/brutalist.static</code></sub></li>
385
406
  </ul>
386
407
  </td>
387
408
  </tr>
388
409
  <tr>
389
- <th align="left">Marquee<br/><sub>horizontal ticker &middot; bifamily</sub></th>
410
+ <th align="left">Marquee<br/><sub>horizontal ticker</sub></th>
390
411
  <td>
391
- <img src="https://hyperweave.app/v1/marquee/readme-ai/automata.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count&variant=bifamily" alt="marquee"/>
412
+ <img src="https://hyperweave.app/v1/marquee/readme-ai/brutalist.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count" alt="marquee"/>
392
413
  <br/>
393
414
  <ul>
394
- <li><sub><code>/v1/marquee/{title}/automata.static?data={tokens}&variant=bifamily</code></sub></li>
395
- <li><sub><code>hyperweave.app/v1/marquee/readme-ai/automata.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count&variant=bifamily</code></sub></li>
415
+ <li><sub><code>/v1/marquee/{title}/{genome}.static?data={tokens}</code></sub></li>
416
+ <li><sub><code>hyperweave.app/v1/marquee/readme-ai/brutalist.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version,pypi:readmeai.downloads,docker:zeroxeli/readme-ai.pull_count</code></sub></li>
396
417
  </ul>
397
418
  </td>
398
419
  </tr>
399
420
  <tr>
400
421
  <th align="left">Icons<br/><sub>circle + square</sub></th>
401
422
  <td>
402
- <img src="https://hyperweave.app/v1/icon/python/automata.static?shape=circle&variant=blue&v=20" alt="python" width="56"/>
403
- <img src="https://hyperweave.app/v1/icon/docker/automata.static?shape=square&variant=blue&v=20" alt="docker" width="56"/>
404
- <img src="https://hyperweave.app/v1/icon/huggingface/automata.static?shape=circle&variant=purple&v=20" alt="huggingface" width="56"/>
405
- <img src="https://hyperweave.app/v1/icon/jupyter/automata.static?shape=square&variant=purple&v=20" alt="jupyter" width="56"/>
423
+ <img src="https://hyperweave.app/v1/icon/discord/brutalist.static?shape=circle" alt="discord" width="56"/>
424
+ <img src="https://hyperweave.app/v1/icon/github/brutalist.static?shape=circle" alt="github" width="56"/>
425
+ <img src="https://hyperweave.app/v1/icon/x/brutalist.static?shape=square" alt="x" width="56"/>
426
+ <img src="https://hyperweave.app/v1/icon/spotify/brutalist.static?shape=square" alt="spotify" width="56"/>
406
427
  <br/>
407
428
  <ul>
408
- <li><sub><code>/v1/icon/{glyph}/automata.static?shape={circle|square}&variant={blue|purple}</code></sub></li>
409
- <li><sub><code>hyperweave.app/v1/icon/python/automata.static?shape=circle&variant=blue&v=20</code></sub></li>
429
+ <li><sub><code>/v1/icon/{glyph}/{genome}.static?shape={circle|square}</code></sub></li>
430
+ <li><sub><code>hyperweave.app/v1/icon/discord/brutalist.static?shape=circle</code></sub></li>
410
431
  </ul>
411
432
  </td>
412
433
  </tr>
413
434
  <tr>
414
- <th align="left">Divider<br/><sub>dissolve</sub></th>
435
+ <th align="left">Divider<br/><sub>seam</sub></th>
415
436
  <td>
416
- <img src="https://hyperweave.app/v1/divider/dissolve/automata.static" alt="automata dissolve divider"/>
437
+ <img src="https://hyperweave.app/v1/divider/seam/brutalist.static" alt="brutalist seam divider"/>
417
438
  <br/>
418
439
  <ul>
419
- <li><sub><code>/v1/divider/dissolve/{genome}.static</code></sub></li>
420
- <li><sub><code>hyperweave.app/v1/divider/dissolve/automata.static</code></sub></li>
440
+ <li><sub><code>/v1/divider/seam/{genome}.static</code></sub></li>
441
+ <li><sub><code>hyperweave.app/v1/divider/seam/brutalist.static</code></sub></li>
421
442
  </ul>
422
443
  </td>
423
444
  </tr>
@@ -425,14 +446,10 @@ Why genome and not theme? Because brand isn't a design problem, it's an infrastr
425
446
 
426
447
  | | chrome | brutalist | automata |
427
448
  |---|---|---|---|
428
- | Surface | `#000a14` deep void | `#14532D` dark field | `#04060A` void |
429
- | Signal | `#5ba3d4` metallic blue | `#10B981` emerald | `#1E849A` teal &middot; `#6B3B8A` amethyst |
430
- | Profile | chrome (smooth, env-mapped) | brutalist (sharp, zero-radius) | brutalist (cellular paradigm) |
431
- | Chromatic variant | &mdash; | &mdash; | `blue` / `purple` / `bifamily` |
432
- | Motions | 5 border SMIL | 5 border SMIL | static, chromatic-pulse, rimrun, corner-trace |
433
- | Divider | `band` (envelope drift) | `seam` (expansion joint) | `dissolve` (bifamily bridge) |
434
-
435
- <sub>The two automata signal badges share a URL and differ only in the chromatic variant: <code>?variant=blue</code> renders the teal palette, <code>?variant=purple</code> the amethyst, <code>?variant=bifamily</code> both. Each genome declares its allowed variants in its JSON config; unknown values return 422.</sub>
449
+ | Aesthetic | Metallic precision | Raw material | Living cellular grid |
450
+ | Variants | 5 named | &mdash; | 16 tones, any two pair |
451
+ | Motion | Animated border SMIL | Animated border SMIL | Animated cell grid |
452
+ | Divider | `band` | `seam` | `dissolve` |
436
453
 
437
454
  <h3 id="dividers"><code>/a/inneraura/dividers/</code></h3>
438
455
 
@@ -620,8 +637,8 @@ curl 'https://hyperweave.app/v1/badge/STARS/chrome.static?data=gh:anthropics/cla
620
637
  curl 'https://hyperweave.app/v1/strip/readme-ai/brutalist.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks'
621
638
  curl 'https://hyperweave.app/v1/marquee/SCROLL/brutalist.static?data=text:NEW%20RELEASE,gh:anthropics/claude-code.stars'
622
639
 
623
- # Chromatic variant (automata's blue/purple/bifamily axis) and size (badge default/compact)
624
- curl 'https://hyperweave.app/v1/badge/PYPI/automata.static?variant=purple&data=pypi:hyperweave.version'
640
+ # Chromatic variants (automata: 16 solo tones, pair any two via &pair=...; chrome: horizon/abyssal/lightning/graphite/moth)
641
+ curl 'https://hyperweave.app/v1/badge/PYPI/automata.static?variant=teal&pair=violet&data=pypi:hyperweave.version'
625
642
  curl 'https://hyperweave.app/v1/badge/build/passing/automata.static?size=compact'
626
643
 
627
644
  # Genome-themed dividers
@@ -672,13 +689,35 @@ Every artifact ships with:
672
689
  | Glyphs | 99 (93 Simple Icons + 6 geometric) |
673
690
  | Divider variants | 8 &mdash; 3 genome-themed (`band` chrome, `seam` brutalist, `dissolve` automata) + 5 genome-agnostic (`block`, `current`, `takeoff`, `void`, `zeropoint`) at <code>/a/inneraura/dividers/</code> |
674
691
  | Metadata tiers | 5 (Tier 0 silent &rarr; Tier 4 reasoning) |
675
- | Paradigms | 4 per frame (default, brutalist, chrome, cellular) — per-frame dispatch from genome |
676
692
  | Bundled fonts | 3 (JetBrains Mono, Orbitron, Chakra Petch — base64-embedded) |
677
693
 
678
694
  Stack: Pydantic, FastAPI, FastMCP v3, Jinja2, Typer.
679
695
 
680
696
  ---
681
697
 
698
+ ## Data Connectors
699
+
700
+ HyperWeave binds live data into any artifact through a unified token grammar (`?data=...`). Tokens are comma-separated; each token is either a literal (`text:`, `kv:`) or a live fetch (`<provider>:<identifier>.<metric>`).
701
+
702
+ | Prefix | Source | Identifier shape | Metrics |
703
+ |--------|--------|------------------|---------|
704
+ | `gh` / `github` | GitHub | `owner/repo` | `stars`, `forks`, `watchers`, `issues`, `license`, `language`, `build` |
705
+ | `pypi` | PyPI + pypistats.org | `package` | `version`, `license`, `python_requires`, `downloads` |
706
+ | `npm` | npm registry | `package` | `version`, `license`, `downloads` |
707
+ | `hf` / `huggingface` | HuggingFace Hub | `org/model` | `downloads`, `likes`, `tags`, `pipeline_tag`, `library_name` |
708
+ | `docker` | Docker Hub | `namespace/repo` | `pull_count`, `star_count`, `last_updated` |
709
+ | `arxiv` | arXiv API | `id` (e.g. `2310.06825`) | `title`, `authors`, `published`, `categories`, `summary` |
710
+ | `text` | literal | &mdash; | renders the payload as displayed text |
711
+ | `kv` | literal | `KEY=VALUE` | static role-tagged value |
712
+
713
+ Live tokens cache for 5&ndash;10 minutes per provider. Failures cache for 60s and surface as the em-dash sentinel (`—`) instead of fabricating zero values. Each provider runs through its own circuit breaker so a single upstream outage cannot trip unrelated fetches.
714
+
715
+ Embedded commas inside `text:` and `kv:` values escape as `\,`.
716
+
717
+ &rarr; [Open an issue](https://github.com/InnerAura/hyperweave/issues/new) to request a connector.
718
+
719
+ ---
720
+
682
721
  ## Contributing
683
722
 
684
723
  HyperWeave is early. If you're interested in building genomes, extending frame types, or just seeing what this looks like in your own README &mdash; [join the Discord](https://discord.gg/wVmcAZPQZ8).