hyperweave 0.3.7__tar.gz → 0.3.8__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 (424) hide show
  1. {hyperweave-0.3.7 → hyperweave-0.3.8}/CHANGELOG.md +14 -0
  2. {hyperweave-0.3.7 → hyperweave-0.3.8}/PKG-INFO +1 -1
  3. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/_version.py +2 -2
  4. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/serve/app.py +37 -0
  5. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_serve.py +48 -0
  6. {hyperweave-0.3.7 → hyperweave-0.3.8}/.dockerignore +0 -0
  7. {hyperweave-0.3.7 → hyperweave-0.3.8}/.github/workflows/ci.yml +0 -0
  8. {hyperweave-0.3.7 → hyperweave-0.3.8}/.github/workflows/deploy.yml +0 -0
  9. {hyperweave-0.3.7 → hyperweave-0.3.8}/.github/workflows/publish.yml +0 -0
  10. {hyperweave-0.3.7 → hyperweave-0.3.8}/.gitignore +0 -0
  11. {hyperweave-0.3.7 → hyperweave-0.3.8}/.pre-commit-config.yaml +0 -0
  12. {hyperweave-0.3.7 → hyperweave-0.3.8}/Dockerfile +0 -0
  13. {hyperweave-0.3.7 → hyperweave-0.3.8}/LICENSE +0 -0
  14. {hyperweave-0.3.7 → hyperweave-0.3.8}/README.md +0 -0
  15. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/buttons/button-liquid.svg +0 -0
  16. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/cards/card-butterfly.svg +0 -0
  17. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/cards/card-python.svg +0 -0
  18. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/cards/card-sunflower.svg +0 -0
  19. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/cards/card-waves.svg +0 -0
  20. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/badge_critical.svg +0 -0
  21. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/badge_passing.svg +0 -0
  22. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/badge_warning.svg +0 -0
  23. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/banner.svg +0 -0
  24. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/icons/discord.svg +0 -0
  25. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/icons/notion.svg +0 -0
  26. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/icons/reddit.svg +0 -0
  27. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/icons/spotify.svg +0 -0
  28. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/icons/youtube.svg +0 -0
  29. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/marquee_counter.svg +0 -0
  30. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/marquee_horizontal.svg +0 -0
  31. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/marquee_vertical.svg +0 -0
  32. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/profile-cards/chart_stars_full.svg +0 -0
  33. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/profile-cards/stats.svg +0 -0
  34. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/brutalist-emerald/strip.svg +0 -0
  35. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/badge_critical.svg +0 -0
  36. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/badge_passing.svg +0 -0
  37. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/badge_warning.svg +0 -0
  38. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/banner.svg +0 -0
  39. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/icons/bluesky.svg +0 -0
  40. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/icons/github.svg +0 -0
  41. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/icons/instagram.svg +0 -0
  42. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/icons/mastodon.svg +0 -0
  43. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/icons/x.svg +0 -0
  44. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/marquee_counter.svg +0 -0
  45. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/marquee_horizontal.svg +0 -0
  46. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/marquee_vertical.svg +0 -0
  47. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/profile-cards/chart_stars_full.svg +0 -0
  48. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/profile-cards/stats.svg +0 -0
  49. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/chrome-horizon/strip.svg +0 -0
  50. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/telemetry/master_card.svg +0 -0
  51. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/telemetry/receipt.svg +0 -0
  52. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/telemetry/receipt_claude-code_medium.svg +0 -0
  53. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/telemetry/receipt_codex_large.svg +0 -0
  54. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/telemetry/receipt_voltage_xlarge.svg +0 -0
  55. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/telemetry/rhythm_strip.svg +0 -0
  56. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/examples/telemetry/rhythm_strip_voltage_xlarge.svg +0 -0
  57. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/footers/inneraura-footer-liquid.svg +0 -0
  58. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/footers/inneraura-footer-purple.svg +0 -0
  59. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/footers/inneraura-footer.svg +0 -0
  60. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/hyperweave-banner.svg +0 -0
  61. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/icons/cobalt-sapphire-discord.svg +0 -0
  62. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/icons/cobalt-sapphire-docs.svg +0 -0
  63. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/icons/cobalt-sapphire-github.svg +0 -0
  64. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/icons/cobalt-sapphire-instagram.svg +0 -0
  65. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/icons/cobalt-sapphire-linkedin.svg +0 -0
  66. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/icons/cobalt-sapphire-tiktok.svg +0 -0
  67. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/icons/cobalt-sapphire-x.svg +0 -0
  68. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/icons/cobalt-sapphire-youtube.svg +0 -0
  69. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/marquees/badge-showcase-triple.svg +0 -0
  70. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/marquees/genome-marquee-triple.svg +0 -0
  71. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/marquees/sample-badges.svg +0 -0
  72. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/mintlify-assets/404.svg +0 -0
  73. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/mintlify-assets/callout-icons.svg +0 -0
  74. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/mintlify-assets/divider.svg +0 -0
  75. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/mintlify-assets/favicon.svg +0 -0
  76. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/mintlify-assets/hero-banner.svg +0 -0
  77. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/mintlify-assets/hyperweave-banner-v2.svg +0 -0
  78. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/mintlify-assets/hyperweave-navbar-logo.svg +0 -0
  79. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/mintlify-assets/loader.svg +0 -0
  80. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/mintlify-assets/og-image.svg +0 -0
  81. {hyperweave-0.3.7 → hyperweave-0.3.8}/assets/timelines/hyperweave-roadmap.svg +0 -0
  82. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/assets/favicon.svg +0 -0
  83. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/assets/hyperweave-banner.svg +0 -0
  84. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/assets/hyperweave-navbar-logo.svg +0 -0
  85. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/assets/og-image.svg +0 -0
  86. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/explanation/architecture.mdx +0 -0
  87. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/explanation/camo-compatibility.mdx +0 -0
  88. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/explanation/cim-compliance.mdx +0 -0
  89. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/explanation/genome-profile-system.mdx +0 -0
  90. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/explanation/metadata-tiers.mdx +0 -0
  91. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/how-to/add-motion-to-badges.mdx +0 -0
  92. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/how-to/create-session-receipts.mdx +0 -0
  93. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/how-to/set-up-claude-code-hooks.mdx +0 -0
  94. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/how-to/use-live-data-badges.mdx +0 -0
  95. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/introduction.mdx +0 -0
  96. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/mint.json +0 -0
  97. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/quickstart.mdx +0 -0
  98. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/reference/cli.mdx +0 -0
  99. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/reference/compose-spec.mdx +0 -0
  100. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/reference/genomes.mdx +0 -0
  101. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/reference/http-api.mdx +0 -0
  102. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/reference/mcp-tools.mdx +0 -0
  103. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/reference/motions.mdx +0 -0
  104. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/reference/telemetry-contract.mdx +0 -0
  105. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/spec/hyperweave-protocol.mdx +0 -0
  106. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/tutorials/build-an-artifact-kit.mdx +0 -0
  107. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/tutorials/compose-your-first-badge.mdx +0 -0
  108. {hyperweave-0.3.7 → hyperweave-0.3.8}/docs/tutorials/install-session-telemetry.mdx +0 -0
  109. {hyperweave-0.3.7 → hyperweave-0.3.8}/fly.toml +0 -0
  110. {hyperweave-0.3.7 → hyperweave-0.3.8}/hooks/install.py +0 -0
  111. {hyperweave-0.3.7 → hyperweave-0.3.8}/hooks/session_end.sh +0 -0
  112. {hyperweave-0.3.7 → hyperweave-0.3.8}/justfile +0 -0
  113. {hyperweave-0.3.7 → hyperweave-0.3.8}/pyproject.toml +0 -0
  114. {hyperweave-0.3.7 → hyperweave-0.3.8}/scripts/extract_font_metrics.py +0 -0
  115. {hyperweave-0.3.7 → hyperweave-0.3.8}/scripts/extract_glyphs.py +0 -0
  116. {hyperweave-0.3.7 → hyperweave-0.3.8}/scripts/generate_proofset.py +0 -0
  117. {hyperweave-0.3.7 → hyperweave-0.3.8}/scripts/probe_live_stats.py +0 -0
  118. {hyperweave-0.3.7 → hyperweave-0.3.8}/scripts/probe_star_history.py +0 -0
  119. {hyperweave-0.3.7 → hyperweave-0.3.8}/scripts/stress_test.py +0 -0
  120. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/__init__.py +0 -0
  121. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/__main__.py +0 -0
  122. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/cli.py +0 -0
  123. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/__init__.py +0 -0
  124. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/assembler.py +0 -0
  125. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/bar_chart.py +0 -0
  126. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/context.py +0 -0
  127. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/engine.py +0 -0
  128. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/lanes.py +0 -0
  129. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/layout.py +0 -0
  130. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/palette.py +0 -0
  131. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/reasoning.py +0 -0
  132. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/resolver.py +0 -0
  133. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/resolvers/__init__.py +0 -0
  134. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/resolvers/chart.py +0 -0
  135. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/resolvers/stats.py +0 -0
  136. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/rhythm.py +0 -0
  137. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/rhythm_strip.py +0 -0
  138. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/treemap.py +0 -0
  139. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/compose/validate_paradigms.py +0 -0
  140. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/config/__init__.py +0 -0
  141. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/config/genome_validator.py +0 -0
  142. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/config/loader.py +0 -0
  143. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/config/registry.py +0 -0
  144. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/config/settings.py +0 -0
  145. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/connectors/__init__.py +0 -0
  146. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/connectors/arxiv.py +0 -0
  147. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/connectors/base.py +0 -0
  148. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/connectors/cache.py +0 -0
  149. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/connectors/github.py +0 -0
  150. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/connectors/rest.py +0 -0
  151. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/__init__.py +0 -0
  152. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/cell_layout.py +0 -0
  153. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/color.py +0 -0
  154. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/contracts.py +0 -0
  155. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/enums.py +0 -0
  156. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/font_metrics.py +0 -0
  157. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/models.py +0 -0
  158. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/paradigm.py +0 -0
  159. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/schema.py +0 -0
  160. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/state.py +0 -0
  161. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/text.py +0 -0
  162. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/core/thresholds.py +0 -0
  163. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/badge_modes.yaml +0 -0
  164. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/css/accessibility.css +0 -0
  165. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/css/bridge.css +0 -0
  166. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/css/expression.css +0 -0
  167. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/css/status.css +0 -0
  168. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/font-embedding.yaml +0 -0
  169. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/font-metrics/chakra-petch.json +0 -0
  170. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/font-metrics/inter.json +0 -0
  171. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/font-metrics/jetbrains-mono.json +0 -0
  172. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/font-metrics/orbitron.json +0 -0
  173. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/fonts/barlow-condensed-700.b64 +0 -0
  174. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/fonts/barlow-condensed-700.meta.json +0 -0
  175. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/fonts/barlow-condensed-900.b64 +0 -0
  176. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/fonts/barlow-condensed-900.meta.json +0 -0
  177. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/fonts/chakra-petch.b64 +0 -0
  178. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/fonts/chakra-petch.meta.json +0 -0
  179. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/fonts/jetbrains-mono.b64 +0 -0
  180. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/fonts/jetbrains-mono.meta.json +0 -0
  181. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/fonts/orbitron.b64 +0 -0
  182. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/fonts/orbitron.meta.json +0 -0
  183. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/genomes/automata.json +0 -0
  184. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/genomes/brutalist.json +0 -0
  185. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/genomes/chrome.json +0 -0
  186. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/genomes/telemetry-claude-code.json +0 -0
  187. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/genomes/telemetry-codex.json +0 -0
  188. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/genomes/telemetry-cream.json +0 -0
  189. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/genomes/telemetry-voltage.json +0 -0
  190. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/glyphs.json +0 -0
  191. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/motions/border/chromatic-pulse.yaml +0 -0
  192. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/motions/border/corner-trace.yaml +0 -0
  193. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/motions/border/dual-orbit.yaml +0 -0
  194. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/motions/border/entanglement.yaml +0 -0
  195. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/motions/border/rimrun.yaml +0 -0
  196. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/motions/static.yaml +0 -0
  197. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/paradigms/brutalist.yaml +0 -0
  198. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/paradigms/cellular.yaml +0 -0
  199. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/paradigms/chrome.yaml +0 -0
  200. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/paradigms/default.yaml +0 -0
  201. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/policies/normal.json +0 -0
  202. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/policies/permissive.json +0 -0
  203. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/policies/ungoverned.json +0 -0
  204. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/profiles/brutalist.contract.json +0 -0
  205. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/profiles/brutalist.yaml +0 -0
  206. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/profiles/chrome.contract.json +0 -0
  207. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/profiles/chrome.yaml +0 -0
  208. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/reasoning/__init__.py +0 -0
  209. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/reasoning/brutalist.yaml +0 -0
  210. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/specimens.yaml +0 -0
  211. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/telemetry/model-pricing.yaml +0 -0
  212. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/telemetry/runtimes/claude-code.yaml +0 -0
  213. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/telemetry/runtimes/codex.yaml +0 -0
  214. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/telemetry/stage-config.yaml +0 -0
  215. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/telemetry/stage-labels.yaml +0 -0
  216. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/telemetry/tool-colors.yaml +0 -0
  217. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/arrow.json +0 -0
  218. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/aurora.json +0 -0
  219. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/beacon.json +0 -0
  220. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/bracket3d.json +0 -0
  221. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/chevron.json +0 -0
  222. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/crosshair.json +0 -0
  223. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/diamond.json +0 -0
  224. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/rocket.json +0 -0
  225. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/rules/bar.json +0 -0
  226. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/rules/dashed.json +0 -0
  227. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/rules/five-wave.json +0 -0
  228. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/rules/spectral.json +0 -0
  229. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/rules/straight.json +0 -0
  230. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/rules/wave.json +0 -0
  231. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/data/terminals/stijl.json +0 -0
  232. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/kit.py +0 -0
  233. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/mcp/__init__.py +0 -0
  234. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/mcp/__main__.py +0 -0
  235. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/mcp/server.py +0 -0
  236. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/py.typed +0 -0
  237. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/render/__init__.py +0 -0
  238. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/render/chart_engine.py +0 -0
  239. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/render/fonts.py +0 -0
  240. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/render/glyphs.py +0 -0
  241. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/render/motion.py +0 -0
  242. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/render/templates.py +0 -0
  243. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/serve/__init__.py +0 -0
  244. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/serve/data_tokens.py +0 -0
  245. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/telemetry/__init__.py +0 -0
  246. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/telemetry/capture.py +0 -0
  247. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/telemetry/codex_parser.py +0 -0
  248. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/telemetry/contract.py +0 -0
  249. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/telemetry/corrections.py +0 -0
  250. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/telemetry/cost.py +0 -0
  251. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/telemetry/models.py +0 -0
  252. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/telemetry/parser.py +0 -0
  253. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/telemetry/receipt_paths.py +0 -0
  254. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/telemetry/runtimes.py +0 -0
  255. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/telemetry/stages.py +0 -0
  256. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-area.svg.j2 +0 -0
  257. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-axes.svg.j2 +0 -0
  258. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-empty-state.svg.j2 +0 -0
  259. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-gridlines.svg.j2 +0 -0
  260. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-markers/circle.svg.j2 +0 -0
  261. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-markers/diamond.svg.j2 +0 -0
  262. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-markers/endpoint-diamond.svg.j2 +0 -0
  263. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-markers/endpoint-rect.svg.j2 +0 -0
  264. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-markers/rect.svg.j2 +0 -0
  265. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-milestone-brutalist.svg.j2 +0 -0
  266. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-milestone.svg.j2 +0 -0
  267. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/chart-polyline.svg.j2 +0 -0
  268. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/filter.svg.j2 +0 -0
  269. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/glyph-inline.svg.j2 +0 -0
  270. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/glyph.svg.j2 +0 -0
  271. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/gradient.svg.j2 +0 -0
  272. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/metadata.svg.j2 +0 -0
  273. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/metric.svg.j2 +0 -0
  274. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/phase-segment.svg.j2 +0 -0
  275. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/rule.svg.j2 +0 -0
  276. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/status.svg.j2 +0 -0
  277. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/components/terminal.svg.j2 +0 -0
  278. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/document.svg.j2 +0 -0
  279. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/error-badge.svg.j2 +0 -0
  280. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/badge/brutalist-content.j2 +0 -0
  281. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/badge/brutalist-dark-content.j2 +0 -0
  282. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/badge/brutalist-defs.j2 +0 -0
  283. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/badge/brutalist-light-content.j2 +0 -0
  284. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/badge/cellular-content.j2 +0 -0
  285. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/badge/cellular-defs.j2 +0 -0
  286. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/badge/chrome-content.j2 +0 -0
  287. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/badge/chrome-defs.j2 +0 -0
  288. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/badge/default-content.j2 +0 -0
  289. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/badge/default-defs.j2 +0 -0
  290. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/badge.svg.j2 +0 -0
  291. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/catalog.svg.j2 +0 -0
  292. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/chart/brutalist-content.j2 +0 -0
  293. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/chart/brutalist-dark-content.j2 +0 -0
  294. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/chart/brutalist-defs.j2 +0 -0
  295. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/chart/brutalist-light-content.j2 +0 -0
  296. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/chart/cellular-content.j2 +0 -0
  297. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/chart/cellular-defs.j2 +0 -0
  298. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/chart/chrome-content.j2 +0 -0
  299. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/chart/chrome-defs.j2 +0 -0
  300. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/chart.svg.j2 +0 -0
  301. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/divider/brutalist-seam.svg.j2 +0 -0
  302. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/divider/chrome-band.svg.j2 +0 -0
  303. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/divider.svg.j2 +0 -0
  304. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/icon/brutalist-content.j2 +0 -0
  305. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/icon/brutalist-defs.j2 +0 -0
  306. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/icon/cellular-content.j2 +0 -0
  307. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/icon/cellular-defs.j2 +0 -0
  308. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/icon/chrome-content.j2 +0 -0
  309. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/icon/chrome-defs.j2 +0 -0
  310. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/icon/default-content.j2 +0 -0
  311. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/icon/default-defs.j2 +0 -0
  312. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/icon.svg.j2 +0 -0
  313. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-content.j2 +0 -0
  314. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-defs.j2 +0 -0
  315. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-overlay.j2 +0 -0
  316. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal/cellular-content.j2 +0 -0
  317. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal/cellular-defs.j2 +0 -0
  318. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal/cellular-overlay.j2 +0 -0
  319. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal/chrome-content.j2 +0 -0
  320. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal/chrome-defs.j2 +0 -0
  321. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal/chrome-overlay.j2 +0 -0
  322. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal/default-content.j2 +0 -0
  323. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal/default-defs.j2 +0 -0
  324. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/marquee-horizontal.svg.j2 +0 -0
  325. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/master-card.svg.j2 +0 -0
  326. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/receipt.svg.j2 +0 -0
  327. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/rhythm-strip.svg.j2 +0 -0
  328. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/stats/brutalist-content.j2 +0 -0
  329. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/stats/brutalist-dark-content.j2 +0 -0
  330. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/stats/brutalist-defs.j2 +0 -0
  331. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/stats/brutalist-light-content.j2 +0 -0
  332. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/stats/cellular-content.j2 +0 -0
  333. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/stats/cellular-defs.j2 +0 -0
  334. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/stats/chrome-content.j2 +0 -0
  335. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/stats/chrome-defs.j2 +0 -0
  336. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/stats.svg.j2 +0 -0
  337. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/brutalist-content.j2 +0 -0
  338. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/brutalist-dark-content.j2 +0 -0
  339. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/brutalist-defs.j2 +0 -0
  340. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/brutalist-light-content.j2 +0 -0
  341. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/brutalist-status.j2 +0 -0
  342. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/cellular-content.j2 +0 -0
  343. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/cellular-defs.j2 +0 -0
  344. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/cellular-status.j2 +0 -0
  345. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/chrome-content.j2 +0 -0
  346. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/chrome-defs.j2 +0 -0
  347. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/chrome-status.j2 +0 -0
  348. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/default-content.j2 +0 -0
  349. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/default-defs.j2 +0 -0
  350. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip/default-status.j2 +0 -0
  351. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/frames/strip.svg.j2 +0 -0
  352. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/motions/border/chromatic-pulse.svg.j2 +0 -0
  353. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/motions/border/corner-trace.svg.j2 +0 -0
  354. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/motions/border/dual-orbit.svg.j2 +0 -0
  355. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/motions/border/entanglement.svg.j2 +0 -0
  356. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/motions/border/rimrun.svg.j2 +0 -0
  357. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/partials/provider-glyphs.svg.j2 +0 -0
  358. {hyperweave-0.3.7 → hyperweave-0.3.8}/src/hyperweave/templates/partials/state-signal-cascade.j2 +0 -0
  359. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/__init__.py +0 -0
  360. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/conftest.py +0 -0
  361. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/fixtures/codex_session.jsonl +0 -0
  362. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/fixtures/codex_session_patches.jsonl +0 -0
  363. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/fixtures/github_contributions/synthetic.html +0 -0
  364. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/fixtures/session.json +0 -0
  365. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/fixtures/session.jsonl +0 -0
  366. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/fixtures/synthetic_session.jsonl +0 -0
  367. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/helpers.py +0 -0
  368. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/snapshots/url_stability/divider_band_chrome_static.svg +0 -0
  369. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/snapshots/url_stability/icon_github_chrome_static.svg +0 -0
  370. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_assembler.py +0 -0
  371. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_badge_brutalist_dark.py +0 -0
  372. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_badge_cellular.py +0 -0
  373. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_badge_layout.py +0 -0
  374. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_badge_mode.py +0 -0
  375. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_chart_engine.py +0 -0
  376. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_chart_frame.py +0 -0
  377. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_chromatic_coverage_validator.py +0 -0
  378. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_chrome_variants.py +0 -0
  379. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_codex_parser.py +0 -0
  380. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_compose_bar_chart.py +0 -0
  381. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_compose_rhythm_strip.py +0 -0
  382. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_compose_treemap.py +0 -0
  383. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_compose_variant_field.py +0 -0
  384. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_connectors.py +0 -0
  385. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_core.py +0 -0
  386. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_data_tokens.py +0 -0
  387. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_divider_cellular.py +0 -0
  388. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_divider_genome_specific.py +0 -0
  389. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_doctor.py +0 -0
  390. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_font_gating.py +0 -0
  391. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_font_metrics_chakra.py +0 -0
  392. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_font_subsetting.py +0 -0
  393. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_genome_automata.py +0 -0
  394. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_github_scrape.py +0 -0
  395. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_install_hook.py +0 -0
  396. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_kit.py +0 -0
  397. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_marquee_v0_2_16.py +0 -0
  398. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_mcp.py +0 -0
  399. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_paradigm_cellular.py +0 -0
  400. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_paradigm_dispatch.py +0 -0
  401. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_paradigm_extensibility.py +0 -0
  402. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_parse_transcript_auto.py +0 -0
  403. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_proofset.py +0 -0
  404. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_receipt_paths.py +0 -0
  405. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_receipt_token_compliance.py +0 -0
  406. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_render.py +0 -0
  407. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_resolver_rhythm.py +0 -0
  408. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_runtime_registries.py +0 -0
  409. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_serve_live_state.py +0 -0
  410. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_slot_metric_state.py +0 -0
  411. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_state_inference.py +0 -0
  412. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_stats_brutalist.py +0 -0
  413. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_stats_card.py +0 -0
  414. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_strip_brutalist_grammar.py +0 -0
  415. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_strip_cellular.py +0 -0
  416. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_strip_status_toggle.py +0 -0
  417. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_telemetry.py +0 -0
  418. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_telemetry_contract_per_stage.py +0 -0
  419. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_telemetry_integration.py +0 -0
  420. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_telemetry_skin_dispatch.py +0 -0
  421. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_tool_class_completeness.py +0 -0
  422. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_url_stability.py +0 -0
  423. {hyperweave-0.3.7 → hyperweave-0.3.8}/tests/test_variant_default_resolution.py +0 -0
  424. {hyperweave-0.3.7 → hyperweave-0.3.8}/uv.lock +0 -0
@@ -5,6 +5,20 @@ 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.8] - 2026-05-19
9
+
10
+ Every artifact request now emits one greppable `HW_REQUEST` access-log line to stdout, so Fly.io's log stream reveals which GitHub repos embed HyperWeave SVGs via Camo's referer header. Health and metrics probes stay silent so 30-second checks don't drown the signal.
11
+
12
+ ### Added
13
+
14
+ - **Access log middleware** — one `HW_REQUEST` line per non-probe request carries method, path with query string, user-agent, referer, x-forwarded-for, and status. Whitespace inside header values collapses to `_` so each `key=value` token stays grep-addressable.
15
+ - **Silent probe filter** — `/health` and `/metrics` skip the access log; Fly health-check traffic no longer pollutes the stream.
16
+
17
+ ### Notes
18
+
19
+ - Logs flow through the `hyperweave.serve.access` named logger at INFO; uvicorn's stdout handler delivers them to Fly's log stream.
20
+ - Request and response bodies are never logged. The referer header is the only embed-attribution signal captured.
21
+
8
22
  ## [0.3.7] - 2026-05-18
9
23
 
10
24
  Font payloads now embed only the characters each artifact actually renders, and fonts an artifact never displays are no longer embedded at all. Across every text-bearing artifact type — badges, strips, stats cards, star charts, marquees, receipts, and rhythm strips — and across all three genomes, gzip size drops by an average of 59% per artifact.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperweave
3
- Version: 0.3.7
3
+ Version: 0.3.8
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
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.3.7'
22
- __version_tuple__ = version_tuple = (0, 3, 7)
21
+ __version__ = version = '0.3.8'
22
+ __version_tuple__ = version_tuple = (0, 3, 8)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import logging
5
6
  from contextlib import asynccontextmanager
6
7
  from typing import TYPE_CHECKING, Annotated, Any
7
8
 
@@ -115,6 +116,42 @@ async def svg_camo_headers(request: Request, call_next): # type: ignore[no-unty
115
116
  return response
116
117
 
117
118
 
119
+ # -- Request observability middleware ---------------------------------------
120
+ # Emits one greppable `HW_REQUEST` line per non-probe request so we can
121
+ # track which GitHub repos embed our SVGs via Camo (referer header) and how
122
+ # often they're viewed. Probe endpoints stay silent to keep Fly health-check
123
+ # noise out of the access log. Bodies are never logged.
124
+
125
+ _ACCESS_LOG = logging.getLogger("hyperweave.serve.access")
126
+ _SILENT_PATHS = frozenset({"/health", "/metrics"})
127
+
128
+
129
+ def _scrub(value: str | None) -> str:
130
+ """Collapse whitespace in header values so each key=value stays a single grep token."""
131
+ if not value:
132
+ return "-"
133
+ return value.replace(" ", "_").replace("\t", "_")
134
+
135
+
136
+ @app.middleware("http")
137
+ async def access_log(request: Request, call_next): # type: ignore[no-untyped-def]
138
+ response = await call_next(request)
139
+ if request.url.path in _SILENT_PATHS:
140
+ return response
141
+ path = request.url.path + (f"?{request.url.query}" if request.url.query else "")
142
+ ip = request.headers.get("x-forwarded-for") or (request.client.host if request.client else "-")
143
+ _ACCESS_LOG.info(
144
+ "HW_REQUEST method=%s path=%s ua=%s ref=%s ip=%s status=%d",
145
+ request.method,
146
+ _scrub(path),
147
+ _scrub(request.headers.get("user-agent")),
148
+ _scrub(request.headers.get("referer")),
149
+ _scrub(ip),
150
+ response.status_code,
151
+ )
152
+ return response
153
+
154
+
118
155
  # Request / Response models
119
156
 
120
157
 
@@ -8,6 +8,7 @@ rendering, and Camo-hardening middleware.
8
8
 
9
9
  from __future__ import annotations
10
10
 
11
+ import logging
11
12
  from typing import Any
12
13
  from unittest.mock import AsyncMock, patch
13
14
 
@@ -472,6 +473,53 @@ async def test_svg_camo_headers(client: AsyncClient, mock_compose: Any) -> None:
472
473
  assert resp.headers.get("x-content-type-options") == "nosniff"
473
474
 
474
475
 
476
+ # ===========================================================================
477
+ # Access log middleware (v0.3.8)
478
+ # ===========================================================================
479
+
480
+
481
+ async def test_access_log_emits_hw_request(
482
+ client: AsyncClient, mock_compose: Any, caplog: pytest.LogCaptureFixture
483
+ ) -> None:
484
+ with caplog.at_level(logging.INFO, logger="hyperweave.serve.access"):
485
+ resp = await client.get(
486
+ "/v1/badge/build/passing/brutalist",
487
+ headers={
488
+ "user-agent": "github-camo/abc123",
489
+ "referer": "https://github.com/Foo/bar",
490
+ "x-forwarded-for": "1.2.3.4",
491
+ },
492
+ )
493
+ assert resp.status_code == 200
494
+ lines = [r.message for r in caplog.records if "HW_REQUEST" in r.message]
495
+ assert lines, f"no HW_REQUEST line; got {[r.message for r in caplog.records]}"
496
+ line = lines[0]
497
+ assert "method=GET" in line
498
+ assert "path=/v1/badge/build/passing/brutalist" in line
499
+ assert "ua=github-camo/abc123" in line
500
+ assert "ref=https://github.com/Foo/bar" in line
501
+ assert "ip=1.2.3.4" in line
502
+ assert "status=200" in line
503
+
504
+
505
+ async def test_access_log_skips_health(client: AsyncClient, caplog: pytest.LogCaptureFixture) -> None:
506
+ with caplog.at_level(logging.INFO, logger="hyperweave.serve.access"):
507
+ await client.get("/health")
508
+ assert not any("HW_REQUEST" in r.message for r in caplog.records)
509
+
510
+
511
+ async def test_access_log_scrubs_whitespace_in_ua(
512
+ client: AsyncClient, mock_compose: Any, caplog: pytest.LogCaptureFixture
513
+ ) -> None:
514
+ with caplog.at_level(logging.INFO, logger="hyperweave.serve.access"):
515
+ await client.get(
516
+ "/v1/badge/build/passing/brutalist",
517
+ headers={"user-agent": "Mozilla/5.0 (X11; Linux x86_64)"},
518
+ )
519
+ line = next(r.message for r in caplog.records if "HW_REQUEST" in r.message)
520
+ assert "ua=Mozilla/5.0_(X11;_Linux_x86_64)" in line
521
+
522
+
475
523
  # ===========================================================================
476
524
  # Kit endpoint
477
525
  # ===========================================================================
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes