docpull 6.3.0__tar.gz → 6.5.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 (270) hide show
  1. {docpull-6.3.0/src/docpull.egg-info → docpull-6.5.0}/PKG-INFO +24 -6
  2. {docpull-6.3.0 → docpull-6.5.0}/README.md +19 -3
  3. {docpull-6.3.0 → docpull-6.5.0}/pyproject.toml +6 -3
  4. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/__init__.py +9 -1
  5. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/accounting.py +5 -0
  6. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/benchmark.py +393 -5
  7. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/cli.py +59 -0
  8. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_ci.py +11 -3
  9. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/__init__.py +3 -0
  10. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/brand.py +23 -9
  11. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/common.py +74 -1
  12. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/policy_pack.py +16 -7
  13. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/product.py +165 -37
  14. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/schema_extract.py +198 -4
  15. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/styleguide.py +14 -7
  16. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/visuals.py +6 -2
  17. docpull-6.5.0/src/docpull/context_packs/website.py +1238 -0
  18. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/workflow_cli.py +44 -0
  19. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/contracts.py +141 -0
  20. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/core/fetcher.py +23 -0
  21. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/contracts.py +215 -5
  22. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/eval_grade.py +139 -16
  23. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/free_core.py +27 -2
  24. docpull-6.5.0/src/docpull/integrations/__init__.py +31 -0
  25. docpull-6.5.0/src/docpull/integrations/_records.py +114 -0
  26. docpull-6.5.0/src/docpull/integrations/langchain.py +42 -0
  27. docpull-6.5.0/src/docpull/integrations/llamaindex.py +42 -0
  28. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/judge.py +189 -1
  29. docpull-6.5.0/src/docpull/llm_client.py +97 -0
  30. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/local_workflows.py +143 -2
  31. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/mcp/server.py +111 -2
  32. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/mcp/tools.py +157 -11
  33. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/models/config.py +52 -0
  34. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/models/events.py +1 -0
  35. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pack_tools.py +101 -1
  36. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/base.py +7 -0
  37. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/manifest.py +43 -0
  38. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/convert.py +70 -0
  39. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/fetch.py +51 -0
  40. docpull-6.5.0/src/docpull/pipeline/steps/screen.py +47 -0
  41. docpull-6.5.0/src/docpull/provenance.py +402 -0
  42. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/rendering.py +230 -45
  43. docpull-6.5.0/src/docpull/schemas/website-snapshot.v1.schema.json +567 -0
  44. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/security/__init__.py +14 -0
  45. docpull-6.5.0/src/docpull/security/injection.py +208 -0
  46. docpull-6.5.0/src/docpull/security/optout.py +147 -0
  47. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/source_scoring.py +6 -0
  48. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/surface.py +12 -0
  49. docpull-6.5.0/src/docpull/warc.py +220 -0
  50. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/workflows.py +36 -1
  51. {docpull-6.3.0 → docpull-6.5.0/src/docpull.egg-info}/PKG-INFO +24 -6
  52. {docpull-6.3.0 → docpull-6.5.0}/src/docpull.egg-info/SOURCES.txt +23 -0
  53. {docpull-6.3.0 → docpull-6.5.0}/src/docpull.egg-info/requires.txt +5 -2
  54. {docpull-6.3.0 → docpull-6.5.0}/tests/test_accounting.py +12 -1
  55. docpull-6.5.0/tests/test_archive_discovery.py +204 -0
  56. {docpull-6.3.0 → docpull-6.5.0}/tests/test_benchmark.py +251 -0
  57. {docpull-6.3.0 → docpull-6.5.0}/tests/test_ci_policy.py +3 -5
  58. {docpull-6.3.0 → docpull-6.5.0}/tests/test_free_core.py +1 -1
  59. docpull-6.5.0/tests/test_injection_screen.py +298 -0
  60. docpull-6.5.0/tests/test_integrations.py +209 -0
  61. docpull-6.5.0/tests/test_llm_extract.py +221 -0
  62. docpull-6.5.0/tests/test_local_pack_workflows.py +151 -0
  63. {docpull-6.3.0 → docpull-6.5.0}/tests/test_local_workflows.py +113 -0
  64. {docpull-6.3.0 → docpull-6.5.0}/tests/test_mcp_tools.py +35 -0
  65. docpull-6.5.0/tests/test_optout.py +414 -0
  66. {docpull-6.3.0 → docpull-6.5.0}/tests/test_pack_tools.py +20 -0
  67. docpull-6.5.0/tests/test_provenance.py +329 -0
  68. docpull-6.5.0/tests/test_qa_judge.py +345 -0
  69. {docpull-6.3.0 → docpull-6.5.0}/tests/test_release_a_plus_check_script.py +6 -14
  70. {docpull-6.3.0 → docpull-6.5.0}/tests/test_rendering.py +239 -0
  71. {docpull-6.3.0 → docpull-6.5.0}/tests/test_source_scoring.py +11 -0
  72. {docpull-6.3.0 → docpull-6.5.0}/tests/test_surface_contract.py +0 -32
  73. docpull-6.5.0/tests/test_token_metrics.py +74 -0
  74. docpull-6.5.0/tests/test_warc.py +315 -0
  75. docpull-6.5.0/tests/test_website_snapshot.py +352 -0
  76. {docpull-6.3.0 → docpull-6.5.0}/LICENSE +0 -0
  77. {docpull-6.3.0 → docpull-6.5.0}/setup.cfg +0 -0
  78. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/__main__.py +0 -0
  79. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/acquisition_workflows.py +0 -0
  80. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/agent_publish.py +0 -0
  81. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/auth_cli.py +0 -0
  82. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/basis.py +0 -0
  83. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/cache/__init__.py +0 -0
  84. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/cache/frontier.py +0 -0
  85. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/cache/manager.py +0 -0
  86. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/cache/streaming_dedup.py +0 -0
  87. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/change_events.py +0 -0
  88. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_aliases.py +0 -0
  89. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/_legacy_cli.py +0 -0
  90. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/cli.py +0 -0
  91. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/dataset.py +0 -0
  92. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/feed.py +0 -0
  93. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/openapi.py +0 -0
  94. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/package.py +0 -0
  95. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/paper.py +0 -0
  96. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/relationship.py +0 -0
  97. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/repo.py +0 -0
  98. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/search.py +0 -0
  99. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/standards.py +0 -0
  100. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/transcript.py +0 -0
  101. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/typed.py +0 -0
  102. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/typed_models.py +0 -0
  103. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/context_packs/wiki.py +0 -0
  104. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/contracts_cli.py +0 -0
  105. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/conversion/__init__.py +0 -0
  106. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/conversion/article_cleanup.py +0 -0
  107. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/conversion/chunking.py +0 -0
  108. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/conversion/ensemble.py +0 -0
  109. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/conversion/extractor.py +0 -0
  110. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/conversion/filings.py +0 -0
  111. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/conversion/markdown.py +0 -0
  112. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/conversion/protocols.py +0 -0
  113. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/conversion/special_cases.py +0 -0
  114. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/conversion/trafilatura_extractor.py +0 -0
  115. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/core/__init__.py +0 -0
  116. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/__init__.py +0 -0
  117. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/_fetch.py +0 -0
  118. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/composite.py +0 -0
  119. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/crawler.py +0 -0
  120. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/filters.py +0 -0
  121. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/link_extractors/__init__.py +0 -0
  122. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/link_extractors/enhanced.py +0 -0
  123. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/link_extractors/protocols.py +0 -0
  124. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/link_extractors/static.py +0 -0
  125. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/protocols.py +0 -0
  126. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery/sitemap.py +0 -0
  127. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/discovery_cli.py +0 -0
  128. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/doctor.py +0 -0
  129. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/document_parse.py +0 -0
  130. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/document_worker.py +0 -0
  131. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/evidence.py +0 -0
  132. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/evidence_pack.py +0 -0
  133. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/export_formats.py +0 -0
  134. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/exports.py +0 -0
  135. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/fixtures/__init__.py +0 -0
  136. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/fixtures/parallel-search-extract.json +0 -0
  137. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/free_core_smoke.py +0 -0
  138. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/graph.py +0 -0
  139. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/hosted.py +0 -0
  140. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/http/__init__.py +0 -0
  141. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/http/client.py +0 -0
  142. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/http/protocols.py +0 -0
  143. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/http/rate_limiter.py +0 -0
  144. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/mcp/__init__.py +0 -0
  145. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/mcp/sources.py +0 -0
  146. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/metadata_extractor.py +0 -0
  147. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/models/__init__.py +0 -0
  148. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/models/document.py +0 -0
  149. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/models/profiles.py +0 -0
  150. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/models/run.py +0 -0
  151. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/models/schema.py +0 -0
  152. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/monitor.py +0 -0
  153. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/native_integrations.py +0 -0
  154. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/output_contract.py +0 -0
  155. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pack_reader.py +0 -0
  156. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/parallel_workflows.py +0 -0
  157. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/parity.py +0 -0
  158. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/parity_cli.py +0 -0
  159. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/passk.py +0 -0
  160. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/__init__.py +0 -0
  161. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/__init__.py +0 -0
  162. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/chunk.py +0 -0
  163. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/dedup.py +0 -0
  164. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/metadata.py +0 -0
  165. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/render.py +0 -0
  166. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/save.py +0 -0
  167. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/save_json.py +0 -0
  168. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/save_ndjson.py +0 -0
  169. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/save_okf.py +0 -0
  170. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/save_sqlite.py +0 -0
  171. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/pipeline/steps/validate.py +0 -0
  172. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/policy.py +0 -0
  173. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/policy_cli.py +0 -0
  174. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/project.py +0 -0
  175. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/provider_adapters.py +0 -0
  176. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/provider_capabilities.py +0 -0
  177. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/provider_cli.py +0 -0
  178. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/provider_keys.py +0 -0
  179. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/provider_probes.py +0 -0
  180. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/py.typed +0 -0
  181. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/redaction.py +0 -0
  182. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/artifact-manifest.v1.schema.json +0 -0
  183. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/basis.v2.schema.json +0 -0
  184. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/change-event.v1.schema.json +0 -0
  185. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/citation-map.v1.schema.json +0 -0
  186. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/document.v3.schema.json +0 -0
  187. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/intelligence-bundle.v1.schema.json +0 -0
  188. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/pack.v3.schema.json +0 -0
  189. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/provenance.v1.schema.json +0 -0
  190. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/relationship-pack.v1.schema.json +0 -0
  191. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/rights.v1.schema.json +0 -0
  192. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/run-identity.v1.schema.json +0 -0
  193. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/workflow-request.v1.schema.json +0 -0
  194. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/schemas/workflow-result.v1.schema.json +0 -0
  195. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/scraper.py +0 -0
  196. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/security/download_policy.py +0 -0
  197. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/security/robots.py +0 -0
  198. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/security/url_validator.py +0 -0
  199. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/server.py +0 -0
  200. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/share.py +0 -0
  201. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/skill_export.py +0 -0
  202. {docpull-6.3.0 → docpull-6.5.0}/src/docpull/time_utils.py +0 -0
  203. {docpull-6.3.0 → docpull-6.5.0}/src/docpull.egg-info/dependency_links.txt +0 -0
  204. {docpull-6.3.0 → docpull-6.5.0}/src/docpull.egg-info/entry_points.txt +0 -0
  205. {docpull-6.3.0 → docpull-6.5.0}/src/docpull.egg-info/top_level.txt +0 -0
  206. {docpull-6.3.0 → docpull-6.5.0}/tests/test_acquisition_workflows.py +0 -0
  207. {docpull-6.3.0 → docpull-6.5.0}/tests/test_auth_cli.py +0 -0
  208. {docpull-6.3.0 → docpull-6.5.0}/tests/test_basis.py +0 -0
  209. {docpull-6.3.0 → docpull-6.5.0}/tests/test_cache_conditional_get.py +0 -0
  210. {docpull-6.3.0 → docpull-6.5.0}/tests/test_chunking.py +0 -0
  211. {docpull-6.3.0 → docpull-6.5.0}/tests/test_claim_audit_script.py +0 -0
  212. {docpull-6.3.0 → docpull-6.5.0}/tests/test_cli.py +0 -0
  213. {docpull-6.3.0 → docpull-6.5.0}/tests/test_context_ci.py +0 -0
  214. {docpull-6.3.0 → docpull-6.5.0}/tests/test_context_packs.py +0 -0
  215. {docpull-6.3.0 → docpull-6.5.0}/tests/test_conversion.py +0 -0
  216. {docpull-6.3.0 → docpull-6.5.0}/tests/test_convert_step_new.py +0 -0
  217. {docpull-6.3.0 → docpull-6.5.0}/tests/test_discovery.py +0 -0
  218. {docpull-6.3.0 → docpull-6.5.0}/tests/test_discovery_contracts.py +0 -0
  219. {docpull-6.3.0 → docpull-6.5.0}/tests/test_doctor.py +0 -0
  220. {docpull-6.3.0 → docpull-6.5.0}/tests/test_document_parse.py +0 -0
  221. {docpull-6.3.0 → docpull-6.5.0}/tests/test_document_record.py +0 -0
  222. {docpull-6.3.0 → docpull-6.5.0}/tests/test_evidence_pack.py +0 -0
  223. {docpull-6.3.0 → docpull-6.5.0}/tests/test_exports.py +0 -0
  224. {docpull-6.3.0 → docpull-6.5.0}/tests/test_extractor_ensemble.py +0 -0
  225. {docpull-6.3.0 → docpull-6.5.0}/tests/test_feed_pack.py +0 -0
  226. {docpull-6.3.0 → docpull-6.5.0}/tests/test_frontier_resume.py +0 -0
  227. {docpull-6.3.0 → docpull-6.5.0}/tests/test_graph.py +0 -0
  228. {docpull-6.3.0 → docpull-6.5.0}/tests/test_hosted.py +0 -0
  229. {docpull-6.3.0 → docpull-6.5.0}/tests/test_http_efficiency.py +0 -0
  230. {docpull-6.3.0 → docpull-6.5.0}/tests/test_import_efficiency.py +0 -0
  231. {docpull-6.3.0 → docpull-6.5.0}/tests/test_integration.py +0 -0
  232. {docpull-6.3.0 → docpull-6.5.0}/tests/test_judge.py +0 -0
  233. {docpull-6.3.0 → docpull-6.5.0}/tests/test_link_extractors.py +0 -0
  234. {docpull-6.3.0 → docpull-6.5.0}/tests/test_live_web_smoke.py +0 -0
  235. {docpull-6.3.0 → docpull-6.5.0}/tests/test_mcp_server.py +0 -0
  236. {docpull-6.3.0 → docpull-6.5.0}/tests/test_metadata_extractor.py +0 -0
  237. {docpull-6.3.0 → docpull-6.5.0}/tests/test_monitor.py +0 -0
  238. {docpull-6.3.0 → docpull-6.5.0}/tests/test_naming.py +0 -0
  239. {docpull-6.3.0 → docpull-6.5.0}/tests/test_native_integrations.py +0 -0
  240. {docpull-6.3.0 → docpull-6.5.0}/tests/test_openapi_pack.py +0 -0
  241. {docpull-6.3.0 → docpull-6.5.0}/tests/test_optional_extras_installed.py +0 -0
  242. {docpull-6.3.0 → docpull-6.5.0}/tests/test_output_contract.py +0 -0
  243. {docpull-6.3.0 → docpull-6.5.0}/tests/test_outputs_e2e.py +0 -0
  244. {docpull-6.3.0 → docpull-6.5.0}/tests/test_pack_server.py +0 -0
  245. {docpull-6.3.0 → docpull-6.5.0}/tests/test_parallel_workflows.py +0 -0
  246. {docpull-6.3.0 → docpull-6.5.0}/tests/test_parity_workflows.py +0 -0
  247. {docpull-6.3.0 → docpull-6.5.0}/tests/test_passk.py +0 -0
  248. {docpull-6.3.0 → docpull-6.5.0}/tests/test_pipeline.py +0 -0
  249. {docpull-6.3.0 → docpull-6.5.0}/tests/test_policy.py +0 -0
  250. {docpull-6.3.0 → docpull-6.5.0}/tests/test_policy_cli.py +0 -0
  251. {docpull-6.3.0 → docpull-6.5.0}/tests/test_project.py +0 -0
  252. {docpull-6.3.0 → docpull-6.5.0}/tests/test_provider_adapters.py +0 -0
  253. {docpull-6.3.0 → docpull-6.5.0}/tests/test_provider_cli.py +0 -0
  254. {docpull-6.3.0 → docpull-6.5.0}/tests/test_provider_keys.py +0 -0
  255. {docpull-6.3.0 → docpull-6.5.0}/tests/test_provider_probes.py +0 -0
  256. {docpull-6.3.0 → docpull-6.5.0}/tests/test_public_feature_smoke.py +0 -0
  257. {docpull-6.3.0 → docpull-6.5.0}/tests/test_rate_limiter.py +0 -0
  258. {docpull-6.3.0 → docpull-6.5.0}/tests/test_real_feature_smoke_script.py +0 -0
  259. {docpull-6.3.0 → docpull-6.5.0}/tests/test_real_site_regressions.py +0 -0
  260. {docpull-6.3.0 → docpull-6.5.0}/tests/test_relationship_workflow.py +0 -0
  261. {docpull-6.3.0 → docpull-6.5.0}/tests/test_reproducible_release_build.py +0 -0
  262. {docpull-6.3.0 → docpull-6.5.0}/tests/test_save_ndjson.py +0 -0
  263. {docpull-6.3.0 → docpull-6.5.0}/tests/test_save_sqlite.py +0 -0
  264. {docpull-6.3.0 → docpull-6.5.0}/tests/test_security_hardening.py +0 -0
  265. {docpull-6.3.0 → docpull-6.5.0}/tests/test_share.py +0 -0
  266. {docpull-6.3.0 → docpull-6.5.0}/tests/test_special_cases.py +0 -0
  267. {docpull-6.3.0 → docpull-6.5.0}/tests/test_time_utils.py +0 -0
  268. {docpull-6.3.0 → docpull-6.5.0}/tests/test_trafilatura_extractor.py +0 -0
  269. {docpull-6.3.0 → docpull-6.5.0}/tests/test_typed_knowledge_packs.py +0 -0
  270. {docpull-6.3.0 → docpull-6.5.0}/tests/test_workflow_contracts.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docpull
3
- Version: 6.3.0
3
+ Version: 6.5.0
4
4
  Summary: Declare, sync, diff, and lock context dependencies for AI agents
5
5
  Author-email: Zachary Roth <support@raintree.technology>
6
6
  Maintainer-email: Raintree Technology <support@raintree.technology>
@@ -61,7 +61,7 @@ Provides-Extra: tokens
61
61
  Requires-Dist: tiktoken>=0.7.0; extra == "tokens"
62
62
  Provides-Extra: mcp
63
63
  Requires-Dist: cryptography>=48.0.1; extra == "mcp"
64
- Requires-Dist: mcp>=1.0.0; extra == "mcp"
64
+ Requires-Dist: mcp>=1.28.1; extra == "mcp"
65
65
  Requires-Dist: pydantic-settings>=2.14.2; extra == "mcp"
66
66
  Requires-Dist: pyjwt>=2.13.0; extra == "mcp"
67
67
  Requires-Dist: python-multipart>=0.0.27; extra == "mcp"
@@ -84,6 +84,8 @@ Requires-Dist: markitdown[docx,pdf]>=0.1.0; extra == "parse"
84
84
  Requires-Dist: unstructured[all-docs]>=0.16.0; extra == "parse"
85
85
  Provides-Extra: presidio
86
86
  Requires-Dist: presidio-analyzer>=2.2.0; extra == "presidio"
87
+ Provides-Extra: provenance
88
+ Requires-Dist: cryptography>=48.0.1; extra == "provenance"
87
89
  Provides-Extra: e2b
88
90
  Requires-Dist: e2b>=2.0.0; extra == "e2b"
89
91
  Provides-Extra: llm
@@ -94,7 +96,7 @@ Requires-Dist: url-normalize>=1.4.0; extra == "all"
94
96
  Requires-Dist: trafilatura>=1.12.0; extra == "all"
95
97
  Requires-Dist: tiktoken>=0.7.0; extra == "all"
96
98
  Requires-Dist: cryptography>=48.0.1; extra == "all"
97
- Requires-Dist: mcp>=1.0.0; extra == "all"
99
+ Requires-Dist: mcp>=1.28.1; extra == "all"
98
100
  Requires-Dist: pydantic-settings>=2.14.2; extra == "all"
99
101
  Requires-Dist: pyjwt>=2.13.0; extra == "all"
100
102
  Requires-Dist: python-multipart>=0.0.27; extra == "all"
@@ -180,8 +182,10 @@ through their typed lanes and do not use discovery.
180
182
 
181
183
  The original `docpull URL ...` workflow still works: fetch public or explicitly
182
184
  authorized static/server-rendered web pages and write clean Markdown, NDJSON,
183
- SQLite, or OKF outputs. Project mode adds the persistent evidence lifecycle on
184
- top: sources, runs, diffs, exports, evals, accounting, and local auditability.
185
+ SQLite, or Open Knowledge Format (OKF) outputs. OKF is a portable bundle format
186
+ that keeps content, indexes, and manifests together for reuse across tools.
187
+ Project mode adds the persistent evidence lifecycle on top: sources, runs,
188
+ diffs, exports, evals, accounting, and local auditability.
185
189
 
186
190
  DocPull is local-first: direct fetching, sitemap/link discovery, extraction,
187
191
  indexing, pack intelligence, and opt-in `agent-browser` rendering can run with
@@ -307,6 +311,7 @@ docpull standards-pack rfc:9110 -o packs/standard
307
311
  docpull dataset-pack ./metrics.csv -o packs/dataset
308
312
  docpull dataset-pack 'https://data.example.org/rows.json?$limit=100' -o packs/dataset
309
313
  docpull relationship-pack example.com --subject "Example Brand" -o packs/relationships
314
+ docpull website-pack example.com -o packs/website
310
315
  docpull transcript-pack ./meeting.vtt -o packs/transcript
311
316
  docpull wiki-pack wiki:Web_scraping -o packs/wiki
312
317
  docpull brand-pack example.com -o packs/brand
@@ -320,6 +325,9 @@ docpull export packs/docs --format openai-vector-jsonl -o exports/openai.jsonl
320
325
  docpull export packs/docs --format cursor-rules -o .cursor/rules --skill-name docs
321
326
  ```
322
327
 
328
+ The canonical baseline-aware website acquisition contract is documented in
329
+ [Website snapshots](docs/website-snapshot.md).
330
+
323
331
  Use `docpull ci --prepare` to validate a project or standalone pack in CI.
324
332
 
325
333
  Install optional extras as needed:
@@ -700,6 +708,13 @@ installed.
700
708
  | Hosted extraction APIs | Managed extraction at scale | External dependency and cost |
701
709
  | docpull | Local public web-source extraction and context packs | No JavaScript rendering by default |
702
710
 
711
+ For a tool-by-tool comparison, including self-hosted browser crawlers and
712
+ hosted extraction services, see [Alternatives](docs/alternatives.md). Measured
713
+ extraction-quality, tokens-per-page, and cost comparisons on a fixed corpus —
714
+ plus local extractor baselines — live in the evaluation lab under
715
+ [`bench/`](bench/README.md), which is an internal, reproducible harness rather
716
+ than a public leaderboard.
717
+
703
718
  ## Python SDK
704
719
 
705
720
  ```python
@@ -772,7 +787,7 @@ part of the package release contract.
772
787
  `docpull parse`, `docpull openapi-pack`, `docpull feed-pack`,
773
788
  `docpull paper-pack`, `docpull repo-pack`, `docpull package-pack`,
774
789
  `docpull standards-pack`, `docpull dataset-pack`, `docpull transcript-pack`,
775
- `docpull wiki-pack`, `docpull brand-pack`, `docpull product-pack`,
790
+ `docpull wiki-pack`, `docpull website-pack`, `docpull brand-pack`, `docpull product-pack`,
776
791
  `docpull styleguide-pack`, `docpull image-pack`, `docpull policy-pack`,
777
792
  `docpull pack validate`,
778
793
  `docpull pack audit`, `docpull export`,
@@ -794,6 +809,9 @@ part of the package release contract.
794
809
  When running with `--proxy`, DNS pinning is delegated to the proxy. Pass
795
810
  `--require-pinned-dns` to refuse that configuration.
796
811
 
812
+ See [Compliance Posture](docs/compliance.md) for the full identity, robots.txt,
813
+ rate-limit, and AI/TDM opt-out behavior.
814
+
797
815
  ## Troubleshooting
798
816
 
799
817
  ```bash
@@ -56,8 +56,10 @@ through their typed lanes and do not use discovery.
56
56
 
57
57
  The original `docpull URL ...` workflow still works: fetch public or explicitly
58
58
  authorized static/server-rendered web pages and write clean Markdown, NDJSON,
59
- SQLite, or OKF outputs. Project mode adds the persistent evidence lifecycle on
60
- top: sources, runs, diffs, exports, evals, accounting, and local auditability.
59
+ SQLite, or Open Knowledge Format (OKF) outputs. OKF is a portable bundle format
60
+ that keeps content, indexes, and manifests together for reuse across tools.
61
+ Project mode adds the persistent evidence lifecycle on top: sources, runs,
62
+ diffs, exports, evals, accounting, and local auditability.
61
63
 
62
64
  DocPull is local-first: direct fetching, sitemap/link discovery, extraction,
63
65
  indexing, pack intelligence, and opt-in `agent-browser` rendering can run with
@@ -183,6 +185,7 @@ docpull standards-pack rfc:9110 -o packs/standard
183
185
  docpull dataset-pack ./metrics.csv -o packs/dataset
184
186
  docpull dataset-pack 'https://data.example.org/rows.json?$limit=100' -o packs/dataset
185
187
  docpull relationship-pack example.com --subject "Example Brand" -o packs/relationships
188
+ docpull website-pack example.com -o packs/website
186
189
  docpull transcript-pack ./meeting.vtt -o packs/transcript
187
190
  docpull wiki-pack wiki:Web_scraping -o packs/wiki
188
191
  docpull brand-pack example.com -o packs/brand
@@ -196,6 +199,9 @@ docpull export packs/docs --format openai-vector-jsonl -o exports/openai.jsonl
196
199
  docpull export packs/docs --format cursor-rules -o .cursor/rules --skill-name docs
197
200
  ```
198
201
 
202
+ The canonical baseline-aware website acquisition contract is documented in
203
+ [Website snapshots](docs/website-snapshot.md).
204
+
199
205
  Use `docpull ci --prepare` to validate a project or standalone pack in CI.
200
206
 
201
207
  Install optional extras as needed:
@@ -576,6 +582,13 @@ installed.
576
582
  | Hosted extraction APIs | Managed extraction at scale | External dependency and cost |
577
583
  | docpull | Local public web-source extraction and context packs | No JavaScript rendering by default |
578
584
 
585
+ For a tool-by-tool comparison, including self-hosted browser crawlers and
586
+ hosted extraction services, see [Alternatives](docs/alternatives.md). Measured
587
+ extraction-quality, tokens-per-page, and cost comparisons on a fixed corpus —
588
+ plus local extractor baselines — live in the evaluation lab under
589
+ [`bench/`](bench/README.md), which is an internal, reproducible harness rather
590
+ than a public leaderboard.
591
+
579
592
  ## Python SDK
580
593
 
581
594
  ```python
@@ -648,7 +661,7 @@ part of the package release contract.
648
661
  `docpull parse`, `docpull openapi-pack`, `docpull feed-pack`,
649
662
  `docpull paper-pack`, `docpull repo-pack`, `docpull package-pack`,
650
663
  `docpull standards-pack`, `docpull dataset-pack`, `docpull transcript-pack`,
651
- `docpull wiki-pack`, `docpull brand-pack`, `docpull product-pack`,
664
+ `docpull wiki-pack`, `docpull website-pack`, `docpull brand-pack`, `docpull product-pack`,
652
665
  `docpull styleguide-pack`, `docpull image-pack`, `docpull policy-pack`,
653
666
  `docpull pack validate`,
654
667
  `docpull pack audit`, `docpull export`,
@@ -670,6 +683,9 @@ part of the package release contract.
670
683
  When running with `--proxy`, DNS pinning is delegated to the proxy. Pass
671
684
  `--require-pinned-dns` to refuse that configuration.
672
685
 
686
+ See [Compliance Posture](docs/compliance.md) for the full identity, robots.txt,
687
+ rate-limit, and AI/TDM opt-out behavior.
688
+
673
689
  ## Troubleshooting
674
690
 
675
691
  ```bash
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "docpull"
7
- version = "6.3.0"
7
+ version = "6.5.0"
8
8
  dynamic = []
9
9
  description = "Declare, sync, diff, and lock context dependencies for AI agents"
10
10
  readme = {file = "README.md", content-type = "text/markdown"}
@@ -110,7 +110,7 @@ tokens = [
110
110
  ]
111
111
  mcp = [
112
112
  "cryptography>=48.0.1",
113
- "mcp>=1.0.0",
113
+ "mcp>=1.28.1",
114
114
  "pydantic-settings>=2.14.2",
115
115
  "pyjwt>=2.13.0",
116
116
  "python-multipart>=0.0.27",
@@ -141,6 +141,9 @@ parse = [
141
141
  presidio = [
142
142
  "presidio-analyzer>=2.2.0",
143
143
  ]
144
+ provenance = [
145
+ "cryptography>=48.0.1",
146
+ ]
144
147
  e2b = [
145
148
  "e2b>=2.0.0",
146
149
  ]
@@ -153,7 +156,7 @@ all = [
153
156
  "trafilatura>=1.12.0",
154
157
  "tiktoken>=0.7.0",
155
158
  "cryptography>=48.0.1",
156
- "mcp>=1.0.0",
159
+ "mcp>=1.28.1",
157
160
  "pydantic-settings>=2.14.2",
158
161
  "pyjwt>=2.13.0",
159
162
  "python-multipart>=0.0.27",
@@ -15,7 +15,7 @@ from typing import TYPE_CHECKING, Any
15
15
 
16
16
  from .surface import PUBLIC_SDK_EXPORTS
17
17
 
18
- __version__ = "6.3.0"
18
+ __version__ = "6.5.0"
19
19
 
20
20
  _LAZY_EXPORTS: dict[str, tuple[str, str]] = {
21
21
  **{
@@ -41,9 +41,11 @@ _LAZY_EXPORTS: dict[str, tuple[str, str]] = {
41
41
  "build_repo_pack",
42
42
  "build_standards_pack",
43
43
  "build_styleguide_pack",
44
+ "build_website_pack",
44
45
  "build_transcript_pack",
45
46
  "build_wiki_pack",
46
47
  "capture_screenshot_pack",
48
+ "validate_website_snapshot_pack",
47
49
  )
48
50
  },
49
51
  **{
@@ -59,6 +61,8 @@ _LAZY_EXPORTS: dict[str, tuple[str, str]] = {
59
61
  "SourceAuthority",
60
62
  "WorkflowRequest",
61
63
  "WorkflowResult",
64
+ "WebsiteSnapshot",
65
+ "WebsiteSnapshotDocument",
62
66
  "bundled_schema_path",
63
67
  "write_contract_schemas",
64
68
  )
@@ -198,8 +202,10 @@ if TYPE_CHECKING:
198
202
  build_standards_pack,
199
203
  build_styleguide_pack,
200
204
  build_transcript_pack,
205
+ build_website_pack,
201
206
  build_wiki_pack,
202
207
  capture_screenshot_pack,
208
+ validate_website_snapshot_pack,
203
209
  )
204
210
  from .contracts import (
205
211
  ArtifactManifest,
@@ -210,6 +216,8 @@ if TYPE_CHECKING:
210
216
  RelationshipCandidate,
211
217
  RelationshipPack,
212
218
  SourceAuthority,
219
+ WebsiteSnapshot,
220
+ WebsiteSnapshotDocument,
213
221
  WorkflowRequest,
214
222
  WorkflowResult,
215
223
  bundled_schema_path,
@@ -232,6 +232,11 @@ def default_route_steps(
232
232
  RouteStep("direct_http", "available", detail="fetch public HTTPS source directly"),
233
233
  RouteStep("sitemap_link_discovery", "available", detail="use sitemap and static links"),
234
234
  RouteStep("embedded_data_extraction", "available", detail="use framework/static page data"),
235
+ RouteStep(
236
+ "archive_fallback",
237
+ "available",
238
+ detail="replay Wayback CDX and Common Crawl index snapshots at zero cost",
239
+ ),
235
240
  ]
236
241
  steps.append(
237
242
  RouteStep(