fullbleed 2.2.5__tar.gz → 2.3.1__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 (196) hide show
  1. {fullbleed-2.2.5 → fullbleed-2.3.1}/Cargo.lock +1 -1
  2. {fullbleed-2.2.5 → fullbleed-2.3.1}/Cargo.toml +1 -1
  3. fullbleed-2.2.5/README.md → fullbleed-2.3.1/PKG-INFO +93 -6
  4. fullbleed-2.2.5/PKG-INFO → fullbleed-2.3.1/README.md +50 -43
  5. fullbleed-2.3.1/fullbleed-agent-contract.json +6094 -0
  6. fullbleed-2.3.1/llms.txt +66 -0
  7. {fullbleed-2.2.5 → fullbleed-2.3.1}/pyproject.toml +36 -3
  8. fullbleed-2.3.1/python/fullbleed_cli/agent.py +161 -0
  9. fullbleed-2.3.1/python/fullbleed_cli/agent_acceptance.py +499 -0
  10. fullbleed-2.3.1/python/fullbleed_cli/agent_contract.py +1101 -0
  11. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/cli.py +464 -34
  12. fullbleed-2.3.1/python/fullbleed_cli/mcp.py +579 -0
  13. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold.py +82 -1
  14. fullbleed-2.3.1/python/fullbleed_cli/scaffold_templates/init/AGENTS.md +14 -0
  15. fullbleed-2.3.1/skills/fullbleed/SKILL.md +37 -0
  16. fullbleed-2.3.1/skills/fullbleed/agents/openai.yaml +4 -0
  17. fullbleed-2.3.1/skills/fullbleed/references/compliance.md +31 -0
  18. fullbleed-2.3.1/skills/fullbleed/references/selection.md +21 -0
  19. fullbleed-2.3.1/skills/fullbleed/references/workflows.md +66 -0
  20. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/flowable.rs +12 -0
  21. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/lib.rs +57 -0
  22. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/pdf.rs +150 -25
  23. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/pdf_raster.rs +199 -12
  24. {fullbleed-2.2.5 → fullbleed-2.3.1}/COPYRIGHT +0 -0
  25. {fullbleed-2.2.5 → fullbleed-2.3.1}/FONT_LICENSE_AUDIT.json +0 -0
  26. {fullbleed-2.2.5 → fullbleed-2.3.1}/FONT_LICENSE_AUDIT.md +0 -0
  27. {fullbleed-2.2.5 → fullbleed-2.3.1}/LICENSE +0 -0
  28. {fullbleed-2.2.5 → fullbleed-2.3.1}/LICENSING.md +0 -0
  29. {fullbleed-2.2.5 → fullbleed-2.3.1}/THIRD_PARTY_LICENSES.md +0 -0
  30. {fullbleed-2.2.5 → fullbleed-2.3.1}/build.rs +0 -0
  31. {fullbleed-2.2.5 → fullbleed-2.3.1}/build_backend/fullbleed_build_backend.py +0 -0
  32. {fullbleed-2.2.5 → fullbleed-2.3.1}/crates/fullbleed_audit_contract/Cargo.lock +0 -0
  33. {fullbleed-2.2.5 → fullbleed-2.3.1}/crates/fullbleed_audit_contract/Cargo.toml +0 -0
  34. {fullbleed-2.2.5 → fullbleed-2.3.1}/crates/fullbleed_audit_contract/LICENSE +0 -0
  35. {fullbleed-2.2.5 → fullbleed-2.3.1}/crates/fullbleed_audit_contract/README.md +0 -0
  36. {fullbleed-2.2.5 → fullbleed-2.3.1}/crates/fullbleed_audit_contract/specs/fullbleed.audit_registry.v1.yaml +0 -0
  37. {fullbleed-2.2.5 → fullbleed-2.3.1}/crates/fullbleed_audit_contract/specs/section508_html_registry.v1.yaml +0 -0
  38. {fullbleed-2.2.5 → fullbleed-2.3.1}/crates/fullbleed_audit_contract/specs/wcag20aa_registry.v1.yaml +0 -0
  39. {fullbleed-2.2.5 → fullbleed-2.3.1}/crates/fullbleed_audit_contract/src/json.rs +0 -0
  40. {fullbleed-2.2.5 → fullbleed-2.3.1}/crates/fullbleed_audit_contract/src/lib.rs +0 -0
  41. {fullbleed-2.2.5 → fullbleed-2.3.1}/crates/fullbleed_audit_contract/src/sha256.rs +0 -0
  42. {fullbleed-2.2.5 → fullbleed-2.3.1}/docs/specs/fullbleed.a11y.verify.v1.schema.json +0 -0
  43. {fullbleed-2.2.5 → fullbleed-2.3.1}/docs/specs/fullbleed.audit_registry.v1.yaml +0 -0
  44. {fullbleed-2.2.5 → fullbleed-2.3.1}/docs/specs/fullbleed.pmr.v1.schema.json +0 -0
  45. {fullbleed-2.2.5 → fullbleed-2.3.1}/docs/specs/section508_html_registry.v1.yaml +0 -0
  46. {fullbleed-2.2.5 → fullbleed-2.3.1}/docs/specs/wcag20aa_registry.v1.yaml +0 -0
  47. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/__init__.py +0 -0
  48. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/__main__.py +0 -0
  49. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/_abi.py +0 -0
  50. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/accessibility/__init__.py +0 -0
  51. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/accessibility/engine.py +0 -0
  52. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/accessibility/runtime.py +0 -0
  53. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/accessibility/types.py +0 -0
  54. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/audit_prototype.py +0 -0
  55. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/audit_section508.py +0 -0
  56. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/audit_wcag.py +0 -0
  57. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/__init__.py +0 -0
  58. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/accessibility.py +0 -0
  59. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/__init__.py +0 -0
  60. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/_core.py +0 -0
  61. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/agency_letter.py +0 -0
  62. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/court_motion_form.py +0 -0
  63. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/declaration_form.py +0 -0
  64. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/instruction_sheet.py +0 -0
  65. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/investment_portfolio_report.py +0 -0
  66. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/marriage_record.py +0 -0
  67. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/profiles.py +0 -0
  68. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/recorded_plat.py +0 -0
  69. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/redaction_request_form.py +0 -0
  70. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/cav/warranty_deed.py +0 -0
  71. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/core.py +0 -0
  72. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/primitives.py +0 -0
  73. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed/ui/style.py +0 -0
  74. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_assets/__init__.py +0 -0
  75. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_assets/bootstrap.min.css +0 -0
  76. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_assets/fonts/Inter-Variable.ttf +0 -0
  77. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_assets/fonts/NotoSans-Regular.ttf +0 -0
  78. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_assets/fonts/NotoSansMath-Regular.ttf +0 -0
  79. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_assets/fonts/NotoSansSymbols-Regular.ttf +0 -0
  80. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_assets/fonts/NotoSansSymbols2-Regular.ttf +0 -0
  81. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_assets/icons/bootstrap-icons.svg +0 -0
  82. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/__init__.py +0 -0
  83. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/__main__.py +0 -0
  84. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/assets.py +0 -0
  85. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/cache.py +0 -0
  86. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/finalize.py +0 -0
  87. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/__init__.py +0 -0
  88. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/.gitignore +0 -0
  89. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/COMPLIANCE.md +0 -0
  90. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/SCAFFOLDING.md +0 -0
  91. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/components/__init__.py +0 -0
  92. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/components/body.py +0 -0
  93. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/components/fb_ui.py +0 -0
  94. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/components/footer.py +0 -0
  95. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/components/header.py +0 -0
  96. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/components/primitives.py +0 -0
  97. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/components/styles/body.css +0 -0
  98. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/components/styles/footer.css +0 -0
  99. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/components/styles/header.css +0 -0
  100. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/components/styles/primitives.css +0 -0
  101. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/report.py +0 -0
  102. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/styles/report.css +0 -0
  103. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/init/styles/tokens.css +0 -0
  104. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/accessible/README.md +0 -0
  105. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/accessible/output/.gitignore +0 -0
  106. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/accessible/output/.gitkeep +0 -0
  107. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/accessible/report.py +0 -0
  108. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/accessible/styles/report.css +0 -0
  109. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/accessible/vendor/fonts/Inter-Variable.ttf +0 -0
  110. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/invoice/output/.gitignore +0 -0
  111. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/invoice/output/.gitkeep +0 -0
  112. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/invoice/report.py +0 -0
  113. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/invoice/templates/invoice.css +0 -0
  114. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/invoice/templates/invoice.html +0 -0
  115. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/COMPLIANCE.md +0 -0
  116. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/README.md +0 -0
  117. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/SCAFFOLDING.md +0 -0
  118. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/assets/brand-mark.svg +0 -0
  119. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/assets/reference-pattern.svg +0 -0
  120. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/__init__.py +0 -0
  121. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/appendix.py +0 -0
  122. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/architecture.py +0 -0
  123. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/cover.py +0 -0
  124. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/data_pages.py +0 -0
  125. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/fb_ui.py +0 -0
  126. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/primitives.py +0 -0
  127. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/appendix.css +0 -0
  128. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/architecture.css +0 -0
  129. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/cover.css +0 -0
  130. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/data.css +0 -0
  131. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/primitives.css +0 -0
  132. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/visuals.css +0 -0
  133. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/components/visuals.py +0 -0
  134. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/data/reference.json +0 -0
  135. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/output/.gitignore +0 -0
  136. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/report.py +0 -0
  137. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/styles/report.css +0 -0
  138. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/reference/styles/tokens.css +0 -0
  139. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/statement/output/.gitignore +0 -0
  140. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/statement/output/.gitkeep +0 -0
  141. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/statement/report.py +0 -0
  142. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/statement/templates/statement.css +0 -0
  143. {fullbleed-2.2.5 → fullbleed-2.3.1}/python/fullbleed_cli/scaffold_templates/new/statement/templates/statement.html +0 -0
  144. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/assets.rs +0 -0
  145. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/base64.rs +0 -0
  146. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/canvas.rs +0 -0
  147. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/css_native.rs +0 -0
  148. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/css_queries.rs +0 -0
  149. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/debug.rs +0 -0
  150. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/doc_context.rs +0 -0
  151. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/doc_template.rs +0 -0
  152. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/error.rs +0 -0
  153. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/finalize.rs +0 -0
  154. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/flate_native.rs +0 -0
  155. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/font.rs +0 -0
  156. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/font_subset.rs +0 -0
  157. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/frame.rs +0 -0
  158. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/glyph_report.rs +0 -0
  159. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/html.rs +0 -0
  160. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/html_dom.rs +0 -0
  161. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/html_entities.rs +0 -0
  162. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/html_entities_0.rs +0 -0
  163. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/html_entities_1.rs +0 -0
  164. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/html_entities_2.rs +0 -0
  165. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/html_entities_3.rs +0 -0
  166. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/html_entities_4.rs +0 -0
  167. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/html_entities_5.rs +0 -0
  168. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/image_native.rs +0 -0
  169. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/jit.rs +0 -0
  170. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/jpeg_native.rs +0 -0
  171. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/math.rs +0 -0
  172. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/metrics.rs +0 -0
  173. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/native_shape.rs +0 -0
  174. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/page_data.rs +0 -0
  175. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/page_template.rs +0 -0
  176. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/parallel.rs +0 -0
  177. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/pdf_encodings.rs +0 -0
  178. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/pdf_native.rs +0 -0
  179. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/pdfinspect.rs +0 -0
  180. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/perf.rs +0 -0
  181. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/plan.rs +0 -0
  182. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/python/abi_exports.rs +0 -0
  183. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/python.rs +0 -0
  184. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/python_abi.rs +0 -0
  185. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/raster.rs +0 -0
  186. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/raster_native.rs +0 -0
  187. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/sfnt.rs +0 -0
  188. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/sfnt_cff.rs +0 -0
  189. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/sfnt_outline.rs +0 -0
  190. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/spill.rs +0 -0
  191. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/style.rs +0 -0
  192. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/svg.rs +0 -0
  193. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/text_shape.rs +0 -0
  194. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/types.rs +0 -0
  195. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/unicode_data.rs +0 -0
  196. {fullbleed-2.2.5 → fullbleed-2.3.1}/src/xml.rs +0 -0
@@ -4,7 +4,7 @@ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "fullbleed"
7
- version = "2.2.5"
7
+ version = "2.3.1"
8
8
  dependencies = [
9
9
  "fullbleed_audit_contract",
10
10
  "subsetter",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "fullbleed"
3
- version = "2.2.5"
3
+ version = "2.3.1"
4
4
  edition = "2024"
5
5
  rust-version = "1.85"
6
6
  license = "MIT"
@@ -1,7 +1,52 @@
1
+ Metadata-Version: 2.4
2
+ Name: fullbleed
3
+ Version: 2.3.1
4
+ Classifier: Development Status :: 5 - Production/Stable
5
+ Classifier: License :: OSI Approved :: MIT License
6
+ Classifier: Operating System :: MacOS
7
+ Classifier: Operating System :: Microsoft :: Windows
8
+ Classifier: Operating System :: POSIX :: Linux
9
+ Classifier: Programming Language :: Rust
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3 :: Only
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Classifier: Programming Language :: Python :: Implementation :: CPython
18
+ Classifier: Topic :: Office/Business
19
+ Classifier: Topic :: Office/Business :: Financial
20
+ Classifier: Topic :: Printing
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: Text Processing :: Markup :: HTML
23
+ Provides-Extra: api
24
+ License-File: LICENSE
25
+ License-File: COPYRIGHT
26
+ License-File: LICENSING.md
27
+ License-File: THIRD_PARTY_LICENSES.md
28
+ License-File: FONT_LICENSE_AUDIT.md
29
+ License-File: FONT_LICENSE_AUDIT.json
30
+ Summary: Deterministic Python PDF engine for reports, invoices, accessible documents, print-ready output, and compiled VDP
31
+ Keywords: pdf-generation,document-generation,html-to-pdf,python-pdf-engine,deterministic-pdf,reports,invoices,statements,forms,transactional-documents,vdp,variable-data-printing,accessible-pdf,pdf-ua,pdf-a,pdf-x,ai-agents,agentic-document-generation,mcp
32
+ Home-Page: https://fullbleed.dev
33
+ License-Expression: MIT
34
+ Requires-Python: >=3.10
35
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
36
+ Project-URL: Agent-Contract, https://github.com/fullbleed-engine/fullbleed-official/blob/master/fullbleed-agent-contract.json
37
+ Project-URL: Agent-Skill, https://github.com/fullbleed-engine/fullbleed-official/tree/master/skills/fullbleed
38
+ Project-URL: Documentation, https://github.com/fullbleed-engine/fullbleed-official#readme
39
+ Project-URL: Homepage, https://fullbleed.dev
40
+ Project-URL: Issues, https://github.com/fullbleed-engine/fullbleed-official/issues
41
+ Project-URL: MCP, https://github.com/fullbleed-engine/fullbleed-official/tree/master/packages/fullbleed-mcp
42
+ Project-URL: Repository, https://github.com/fullbleed-engine/fullbleed-official
43
+
1
44
  <!-- SPDX-License-Identifier: MIT -->
2
- # Fullbleed
45
+ # Fullbleed PDF Engine
46
+
47
+ Fullbleed PDF Engine is a deterministic, self-contained document-generation runtime for Python and Rust. It turns structured data plus static HTML/CSS into reports, invoices, statements, letters, forms, certificates, accessible PDFs, print-ready documents, and high-volume compiled VDP output—without a browser or system PDF stack.
3
48
 
4
- Deterministic, self-contained HTML/CSS-to-PDF generation in Rust, with a Python-first CLI and Python engine bindings.
49
+ It is designed for human developers, automation, and AI agents alike: the installed runtime exposes its exact version, capabilities, commands, schemas, compliance profiles, examples, limitations, and tool-selection boundary as a generated machine contract.
5
50
 
6
51
 
7
52
  License: MIT.
@@ -10,16 +55,49 @@ License: MIT.
10
55
 
11
56
  - **Install:** `pip install fullbleed`
12
57
  - **Try:** `fullbleed init . && python report.py`
58
+ - **Discover:** `fullbleed agent-contract --format json`
13
59
  - **Outputs:** `output/report.pdf`
14
60
  - Deterministic + reproducible (`--repro-record` / `--repro-check`)
15
61
  - Agent-safe JSON schemas (`--json-only`, `--schema`)
16
62
 
17
63
  ## Positioning
18
64
 
19
- Fullbleed is a deterministic, offline-first document rendering engine for transactional/VDP pipelines (not a browser, not a hosted web-to-print SaaS).
65
+ Fullbleed is a deterministic, offline-first document rendering engine for structured print-document and transactional/VDP pipelines (not a browser, not a hosted web-to-print SaaS, and not a general editor for arbitrary existing PDF content).
20
66
 
21
67
  HTML and CSS are used as a familiar DSL for layout, styling, and data placement in transactional documents.
22
68
 
69
+ ## Agent discovery and integrations
70
+
71
+ An agent does not need release-specific Fullbleed knowledge. The installed binary generates one canonical contract containing its actual version, selection boundary, capabilities, parser-derived CLI surface, result schemas, PDF profiles, examples, limitations, Agent Skill metadata, MCP tools, and acceptance tasks:
72
+
73
+ ```bash
74
+ fullbleed agent-manifest --json
75
+ # Equivalent canonical form:
76
+ fullbleed agent-contract --format json
77
+ ```
78
+
79
+ The committed [`fullbleed-agent-contract.json`](fullbleed-agent-contract.json), [`cli_schema.md`](cli_schema.md), and [`llms.txt`](llms.txt) are generated from the built wheel. CI rejects version, command, schema, profile, or capability drift. Runtime introspection remains authoritative.
80
+
81
+ The first-party, versionless [`skills/fullbleed/SKILL.md`](skills/fullbleed/SKILL.md) teaches tool selection and the render/preview/diagnose/verify loop without duplicating the manual. It is bundled in the wheel and can be exported into any absent or empty agent-skill directory:
82
+
83
+ ```bash
84
+ fullbleed agent skill-path --json
85
+ fullbleed agent export-skill .agents/skills/fullbleed --json
86
+ ```
87
+
88
+ For tool-calling agents, install the separately versioned adapter so the core package remains dependency-free:
89
+
90
+ ```bash
91
+ python -m pip install fullbleed-mcp
92
+ fullbleed-mcp --root .
93
+ ```
94
+
95
+ The stdio server confines document paths to the selected workspace and delegates every engine operation to the installed Fullbleed runtime. It exposes semantic discovery, project creation, render/preview, inspect, verify, assets, and fixed/reflow compiled VDP tools. The dependency-free core also provides `fullbleed mcp --root .`.
96
+
97
+ Use Fullbleed when the requested artifact is a deterministic print document built from structured content. Use a browser when the requested artifact is a screenshot or interactive state of an arbitrary live website. Use a general PDF editor when existing page content itself must be rewritten.
98
+
99
+ Cold-agent testing is available through `fullbleed agent-acceptance`; compact copyable workflows live in [`examples/agent_workflows`](examples/agent_workflows), and the approach-neutral benchmark scaffold lives in [`agentdocbench`](agentdocbench).
100
+
23
101
 
24
102
  This README is the canonical usage guide for:
25
103
 
@@ -92,6 +170,11 @@ Fixed-geometry slots may remain inside immutable page-space transforms and clips
92
170
  captures that active coordinate-state program once and replays it in each compact record overlay;
93
171
  it does not rerun layout or clone the complete page display list.
94
172
 
173
+ Base-14/WinAnsi slot paint keeps the measured byte-patch linker. Registered embedded fonts use a
174
+ command-level overlay program so each bound value is shaped and included in the font subset while
175
+ the compiled layout, pagination, and static page stream remain shared. The throughput figures above
176
+ describe the Base-14 fast lane; they are not claims for registered-font shaping.
177
+
95
178
  The fixed-copy result remains scoped to identical content; the variable-data result is scoped to
96
179
  paint-only text whose geometry does not reflow. Neither is a claim that arbitrary new HTML or
97
180
  size-changing records render 200x faster. See
@@ -130,7 +213,7 @@ python -m pip install fullbleed
130
213
  From a local wheel:
131
214
 
132
215
  ```bash
133
- python -m pip install C:\path\to\fullbleed-2.2.5-cp310-abi3-win_amd64.whl
216
+ python -m pip install C:\path\to\fullbleed-2.3.1-cp310-abi3-win_amd64.whl
134
217
  ```
135
218
 
136
219
  From a source checkout with Rust installed, no Python build package is needed:
@@ -188,6 +271,9 @@ Scaffolded components now include `components/primitives.py` with reusable
188
271
  layout/content helpers (`Stack`, `Row`, `Text`, table/list helpers, key/value rows, etc.).
189
272
  Each scaffolded project also includes `SCAFFOLDING.md`, which should be your
190
273
  first read before restructuring components.
274
+ It also includes `AGENTS.md`, which preserves the installed-runtime-first
275
+ document workflow across future coding-agent sessions without making other
276
+ document tools categorically forbidden.
191
277
 
192
278
  Install additional project assets (defaults to `./vendor/...` in project context):
193
279
 
@@ -998,8 +1084,9 @@ Module exports:
998
1084
  The compiled lane runs parsing/layout once. `render_pdf_batch` virtualizes identical untagged page
999
1085
  content. The fixed binding methods accept columnar `dict[str, list[str]]` data and emit distinct
1000
1086
  fixed-geometry text overlays per record while sharing static paint. They require exact slot keys,
1001
- equal non-zero column lengths, page-local WinAnsi-compatible text, and an untagged profile; bound
1002
- values do not trigger reflow.
1087
+ equal non-zero column lengths, page-local text, and an untagged profile. Base-14 text uses the
1088
+ direct byte-patch lane; registered fonts are shaped into a command-level overlay. Bound values do
1089
+ not trigger layout or reflow.
1003
1090
 
1004
1091
  The reflow binding methods use the same exact-column contract but execute the compiled parsed-DOM
1005
1092
  program. `{{slot}}` values are literal text and may reshape, wrap, resize blocks, and change page
@@ -1,44 +1,9 @@
1
- Metadata-Version: 2.4
2
- Name: fullbleed
3
- Version: 2.2.5
4
- Classifier: Development Status :: 5 - Production/Stable
5
- Classifier: License :: OSI Approved :: MIT License
6
- Classifier: Operating System :: MacOS
7
- Classifier: Operating System :: Microsoft :: Windows
8
- Classifier: Operating System :: POSIX :: Linux
9
- Classifier: Programming Language :: Rust
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3 :: Only
12
- Classifier: Programming Language :: Python :: 3.10
13
- Classifier: Programming Language :: Python :: 3.11
14
- Classifier: Programming Language :: Python :: 3.12
15
- Classifier: Programming Language :: Python :: 3.13
16
- Classifier: Programming Language :: Python :: 3.14
17
- Classifier: Programming Language :: Python :: Implementation :: CPython
18
- Classifier: Topic :: Printing
19
- Classifier: Topic :: Text Processing :: Markup :: HTML
20
- Provides-Extra: api
21
- License-File: LICENSE
22
- License-File: COPYRIGHT
23
- License-File: LICENSING.md
24
- License-File: THIRD_PARTY_LICENSES.md
25
- License-File: FONT_LICENSE_AUDIT.md
26
- License-File: FONT_LICENSE_AUDIT.json
27
- Summary: Deterministic static HTML/CSS-to-PDF renderer built in Rust
28
- Keywords: pdf,html,css,rust,static-pdf,document-generation
29
- Home-Page: https://fullbleed.dev
30
- License-Expression: MIT
31
- Requires-Python: >=3.10
32
- Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
33
- Project-URL: Documentation, https://github.com/fullbleed-engine/fullbleed-official#readme
34
- Project-URL: Homepage, https://fullbleed.dev
35
- Project-URL: Issues, https://github.com/fullbleed-engine/fullbleed-official/issues
36
- Project-URL: Repository, https://github.com/fullbleed-engine/fullbleed-official
37
-
38
1
  <!-- SPDX-License-Identifier: MIT -->
39
- # Fullbleed
2
+ # Fullbleed PDF Engine
3
+
4
+ Fullbleed PDF Engine is a deterministic, self-contained document-generation runtime for Python and Rust. It turns structured data plus static HTML/CSS into reports, invoices, statements, letters, forms, certificates, accessible PDFs, print-ready documents, and high-volume compiled VDP output—without a browser or system PDF stack.
40
5
 
41
- Deterministic, self-contained HTML/CSS-to-PDF generation in Rust, with a Python-first CLI and Python engine bindings.
6
+ It is designed for human developers, automation, and AI agents alike: the installed runtime exposes its exact version, capabilities, commands, schemas, compliance profiles, examples, limitations, and tool-selection boundary as a generated machine contract.
42
7
 
43
8
 
44
9
  License: MIT.
@@ -47,16 +12,49 @@ License: MIT.
47
12
 
48
13
  - **Install:** `pip install fullbleed`
49
14
  - **Try:** `fullbleed init . && python report.py`
15
+ - **Discover:** `fullbleed agent-contract --format json`
50
16
  - **Outputs:** `output/report.pdf`
51
17
  - Deterministic + reproducible (`--repro-record` / `--repro-check`)
52
18
  - Agent-safe JSON schemas (`--json-only`, `--schema`)
53
19
 
54
20
  ## Positioning
55
21
 
56
- Fullbleed is a deterministic, offline-first document rendering engine for transactional/VDP pipelines (not a browser, not a hosted web-to-print SaaS).
22
+ Fullbleed is a deterministic, offline-first document rendering engine for structured print-document and transactional/VDP pipelines (not a browser, not a hosted web-to-print SaaS, and not a general editor for arbitrary existing PDF content).
57
23
 
58
24
  HTML and CSS are used as a familiar DSL for layout, styling, and data placement in transactional documents.
59
25
 
26
+ ## Agent discovery and integrations
27
+
28
+ An agent does not need release-specific Fullbleed knowledge. The installed binary generates one canonical contract containing its actual version, selection boundary, capabilities, parser-derived CLI surface, result schemas, PDF profiles, examples, limitations, Agent Skill metadata, MCP tools, and acceptance tasks:
29
+
30
+ ```bash
31
+ fullbleed agent-manifest --json
32
+ # Equivalent canonical form:
33
+ fullbleed agent-contract --format json
34
+ ```
35
+
36
+ The committed [`fullbleed-agent-contract.json`](fullbleed-agent-contract.json), [`cli_schema.md`](cli_schema.md), and [`llms.txt`](llms.txt) are generated from the built wheel. CI rejects version, command, schema, profile, or capability drift. Runtime introspection remains authoritative.
37
+
38
+ The first-party, versionless [`skills/fullbleed/SKILL.md`](skills/fullbleed/SKILL.md) teaches tool selection and the render/preview/diagnose/verify loop without duplicating the manual. It is bundled in the wheel and can be exported into any absent or empty agent-skill directory:
39
+
40
+ ```bash
41
+ fullbleed agent skill-path --json
42
+ fullbleed agent export-skill .agents/skills/fullbleed --json
43
+ ```
44
+
45
+ For tool-calling agents, install the separately versioned adapter so the core package remains dependency-free:
46
+
47
+ ```bash
48
+ python -m pip install fullbleed-mcp
49
+ fullbleed-mcp --root .
50
+ ```
51
+
52
+ The stdio server confines document paths to the selected workspace and delegates every engine operation to the installed Fullbleed runtime. It exposes semantic discovery, project creation, render/preview, inspect, verify, assets, and fixed/reflow compiled VDP tools. The dependency-free core also provides `fullbleed mcp --root .`.
53
+
54
+ Use Fullbleed when the requested artifact is a deterministic print document built from structured content. Use a browser when the requested artifact is a screenshot or interactive state of an arbitrary live website. Use a general PDF editor when existing page content itself must be rewritten.
55
+
56
+ Cold-agent testing is available through `fullbleed agent-acceptance`; compact copyable workflows live in [`examples/agent_workflows`](examples/agent_workflows), and the approach-neutral benchmark scaffold lives in [`agentdocbench`](agentdocbench).
57
+
60
58
 
61
59
  This README is the canonical usage guide for:
62
60
 
@@ -129,6 +127,11 @@ Fixed-geometry slots may remain inside immutable page-space transforms and clips
129
127
  captures that active coordinate-state program once and replays it in each compact record overlay;
130
128
  it does not rerun layout or clone the complete page display list.
131
129
 
130
+ Base-14/WinAnsi slot paint keeps the measured byte-patch linker. Registered embedded fonts use a
131
+ command-level overlay program so each bound value is shaped and included in the font subset while
132
+ the compiled layout, pagination, and static page stream remain shared. The throughput figures above
133
+ describe the Base-14 fast lane; they are not claims for registered-font shaping.
134
+
132
135
  The fixed-copy result remains scoped to identical content; the variable-data result is scoped to
133
136
  paint-only text whose geometry does not reflow. Neither is a claim that arbitrary new HTML or
134
137
  size-changing records render 200x faster. See
@@ -167,7 +170,7 @@ python -m pip install fullbleed
167
170
  From a local wheel:
168
171
 
169
172
  ```bash
170
- python -m pip install C:\path\to\fullbleed-2.2.5-cp310-abi3-win_amd64.whl
173
+ python -m pip install C:\path\to\fullbleed-2.3.1-cp310-abi3-win_amd64.whl
171
174
  ```
172
175
 
173
176
  From a source checkout with Rust installed, no Python build package is needed:
@@ -225,6 +228,9 @@ Scaffolded components now include `components/primitives.py` with reusable
225
228
  layout/content helpers (`Stack`, `Row`, `Text`, table/list helpers, key/value rows, etc.).
226
229
  Each scaffolded project also includes `SCAFFOLDING.md`, which should be your
227
230
  first read before restructuring components.
231
+ It also includes `AGENTS.md`, which preserves the installed-runtime-first
232
+ document workflow across future coding-agent sessions without making other
233
+ document tools categorically forbidden.
228
234
 
229
235
  Install additional project assets (defaults to `./vendor/...` in project context):
230
236
 
@@ -1035,8 +1041,9 @@ Module exports:
1035
1041
  The compiled lane runs parsing/layout once. `render_pdf_batch` virtualizes identical untagged page
1036
1042
  content. The fixed binding methods accept columnar `dict[str, list[str]]` data and emit distinct
1037
1043
  fixed-geometry text overlays per record while sharing static paint. They require exact slot keys,
1038
- equal non-zero column lengths, page-local WinAnsi-compatible text, and an untagged profile; bound
1039
- values do not trigger reflow.
1044
+ equal non-zero column lengths, page-local text, and an untagged profile. Base-14 text uses the
1045
+ direct byte-patch lane; registered fonts are shaped into a command-level overlay. Bound values do
1046
+ not trigger layout or reflow.
1040
1047
 
1041
1048
  The reflow binding methods use the same exact-column contract but execute the compiled parsed-DOM
1042
1049
  program. `{{slot}}` values are literal text and may reshape, wrap, resize blocks, and change page