docpull 6.5.4__tar.gz → 6.5.5__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.5.4/src/docpull.egg-info → docpull-6.5.5}/PKG-INFO +1 -1
  2. {docpull-6.5.4 → docpull-6.5.5}/pyproject.toml +1 -1
  3. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/__init__.py +1 -1
  4. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/mcp/server.py +32 -2
  5. {docpull-6.5.4 → docpull-6.5.5/src/docpull.egg-info}/PKG-INFO +1 -1
  6. {docpull-6.5.4 → docpull-6.5.5}/tests/test_ci_policy.py +2 -2
  7. {docpull-6.5.4 → docpull-6.5.5}/tests/test_mcp_server.py +20 -1
  8. {docpull-6.5.4 → docpull-6.5.5}/LICENSE +0 -0
  9. {docpull-6.5.4 → docpull-6.5.5}/README.md +0 -0
  10. {docpull-6.5.4 → docpull-6.5.5}/setup.cfg +0 -0
  11. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/__main__.py +0 -0
  12. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/accounting.py +0 -0
  13. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/acquisition_workflows.py +0 -0
  14. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/agent_publish.py +0 -0
  15. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/auth_cli.py +0 -0
  16. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/basis.py +0 -0
  17. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/benchmark.py +0 -0
  18. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/cache/__init__.py +0 -0
  19. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/cache/frontier.py +0 -0
  20. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/cache/manager.py +0 -0
  21. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/cache/streaming_dedup.py +0 -0
  22. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/change_events.py +0 -0
  23. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/cli.py +0 -0
  24. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_aliases.py +0 -0
  25. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_ci.py +0 -0
  26. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/__init__.py +0 -0
  27. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/_legacy_cli.py +0 -0
  28. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/brand.py +0 -0
  29. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/cli.py +0 -0
  30. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/common.py +0 -0
  31. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/dataset.py +0 -0
  32. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/feed.py +0 -0
  33. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/openapi.py +0 -0
  34. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/package.py +0 -0
  35. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/paper.py +0 -0
  36. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/policy_pack.py +0 -0
  37. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/product.py +0 -0
  38. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/relationship.py +0 -0
  39. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/repo.py +0 -0
  40. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/schema_extract.py +0 -0
  41. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/search.py +0 -0
  42. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/standards.py +0 -0
  43. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/styleguide.py +0 -0
  44. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/transcript.py +0 -0
  45. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/typed.py +0 -0
  46. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/typed_models.py +0 -0
  47. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/visuals.py +0 -0
  48. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/website.py +0 -0
  49. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/wiki.py +0 -0
  50. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/workflow_cli.py +0 -0
  51. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/contracts.py +0 -0
  52. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/contracts_cli.py +0 -0
  53. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/__init__.py +0 -0
  54. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/article_cleanup.py +0 -0
  55. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/chunking.py +0 -0
  56. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/ensemble.py +0 -0
  57. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/extractor.py +0 -0
  58. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/filings.py +0 -0
  59. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/markdown.py +0 -0
  60. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/protocols.py +0 -0
  61. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/special_cases.py +0 -0
  62. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/trafilatura_extractor.py +0 -0
  63. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/core/__init__.py +0 -0
  64. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/core/fetcher.py +0 -0
  65. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/__init__.py +0 -0
  66. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/_fetch.py +0 -0
  67. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/composite.py +0 -0
  68. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/contracts.py +0 -0
  69. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/crawler.py +0 -0
  70. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/filters.py +0 -0
  71. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/link_extractors/__init__.py +0 -0
  72. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/link_extractors/enhanced.py +0 -0
  73. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/link_extractors/protocols.py +0 -0
  74. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/link_extractors/static.py +0 -0
  75. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/protocols.py +0 -0
  76. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/sitemap.py +0 -0
  77. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery_cli.py +0 -0
  78. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/doctor.py +0 -0
  79. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/document_parse.py +0 -0
  80. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/document_worker.py +0 -0
  81. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/eval_grade.py +0 -0
  82. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/evidence.py +0 -0
  83. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/evidence_pack.py +0 -0
  84. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/export_formats.py +0 -0
  85. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/exports.py +0 -0
  86. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/fixtures/__init__.py +0 -0
  87. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/fixtures/parallel-search-extract.json +0 -0
  88. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/free_core.py +0 -0
  89. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/free_core_smoke.py +0 -0
  90. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/graph.py +0 -0
  91. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/hosted.py +0 -0
  92. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/http/__init__.py +0 -0
  93. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/http/client.py +0 -0
  94. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/http/protocols.py +0 -0
  95. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/http/rate_limiter.py +0 -0
  96. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/integrations/__init__.py +0 -0
  97. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/integrations/_records.py +0 -0
  98. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/integrations/langchain.py +0 -0
  99. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/integrations/llamaindex.py +0 -0
  100. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/judge.py +0 -0
  101. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/llm_client.py +0 -0
  102. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/local_workflows.py +0 -0
  103. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/mcp/__init__.py +0 -0
  104. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/mcp/sources.py +0 -0
  105. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/mcp/tools.py +0 -0
  106. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/metadata_extractor.py +0 -0
  107. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/__init__.py +0 -0
  108. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/config.py +0 -0
  109. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/document.py +0 -0
  110. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/events.py +0 -0
  111. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/profiles.py +0 -0
  112. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/run.py +0 -0
  113. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/schema.py +0 -0
  114. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/monitor.py +0 -0
  115. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/native_integrations.py +0 -0
  116. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/output_contract.py +0 -0
  117. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pack_reader.py +0 -0
  118. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pack_tools.py +0 -0
  119. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/parallel_workflows.py +0 -0
  120. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/parity.py +0 -0
  121. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/parity_cli.py +0 -0
  122. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/passk.py +0 -0
  123. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/__init__.py +0 -0
  124. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/base.py +0 -0
  125. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/manifest.py +0 -0
  126. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/__init__.py +0 -0
  127. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/chunk.py +0 -0
  128. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/convert.py +0 -0
  129. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/dedup.py +0 -0
  130. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/fetch.py +0 -0
  131. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/metadata.py +0 -0
  132. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/render.py +0 -0
  133. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/save.py +0 -0
  134. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/save_json.py +0 -0
  135. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/save_ndjson.py +0 -0
  136. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/save_okf.py +0 -0
  137. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/save_sqlite.py +0 -0
  138. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/screen.py +0 -0
  139. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/validate.py +0 -0
  140. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/policy.py +0 -0
  141. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/policy_cli.py +0 -0
  142. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/project.py +0 -0
  143. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provenance.py +0 -0
  144. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provider_adapters.py +0 -0
  145. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provider_capabilities.py +0 -0
  146. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provider_cli.py +0 -0
  147. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provider_keys.py +0 -0
  148. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provider_probes.py +0 -0
  149. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/py.typed +0 -0
  150. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/redaction.py +0 -0
  151. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/rendering.py +0 -0
  152. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/artifact-manifest.v1.schema.json +0 -0
  153. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/basis.v2.schema.json +0 -0
  154. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/change-event.v1.schema.json +0 -0
  155. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/citation-map.v1.schema.json +0 -0
  156. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/document.v3.schema.json +0 -0
  157. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/intelligence-bundle.v1.schema.json +0 -0
  158. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/pack.v3.schema.json +0 -0
  159. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/provenance.v1.schema.json +0 -0
  160. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/relationship-pack.v1.schema.json +0 -0
  161. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/rights.v1.schema.json +0 -0
  162. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/run-identity.v1.schema.json +0 -0
  163. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/website-snapshot.v1.schema.json +0 -0
  164. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/workflow-request.v1.schema.json +0 -0
  165. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/workflow-result.v1.schema.json +0 -0
  166. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/scraper.py +0 -0
  167. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/__init__.py +0 -0
  168. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/download_policy.py +0 -0
  169. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/injection.py +0 -0
  170. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/optout.py +0 -0
  171. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/robots.py +0 -0
  172. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/url_validator.py +0 -0
  173. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/server.py +0 -0
  174. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/share.py +0 -0
  175. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/skill_export.py +0 -0
  176. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/source_scoring.py +0 -0
  177. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/surface.py +0 -0
  178. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/time_utils.py +0 -0
  179. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/warc.py +0 -0
  180. {docpull-6.5.4 → docpull-6.5.5}/src/docpull/workflows.py +0 -0
  181. {docpull-6.5.4 → docpull-6.5.5}/src/docpull.egg-info/SOURCES.txt +0 -0
  182. {docpull-6.5.4 → docpull-6.5.5}/src/docpull.egg-info/dependency_links.txt +0 -0
  183. {docpull-6.5.4 → docpull-6.5.5}/src/docpull.egg-info/entry_points.txt +0 -0
  184. {docpull-6.5.4 → docpull-6.5.5}/src/docpull.egg-info/requires.txt +0 -0
  185. {docpull-6.5.4 → docpull-6.5.5}/src/docpull.egg-info/top_level.txt +0 -0
  186. {docpull-6.5.4 → docpull-6.5.5}/tests/test_accounting.py +0 -0
  187. {docpull-6.5.4 → docpull-6.5.5}/tests/test_acquisition_workflows.py +0 -0
  188. {docpull-6.5.4 → docpull-6.5.5}/tests/test_archive_discovery.py +0 -0
  189. {docpull-6.5.4 → docpull-6.5.5}/tests/test_auth_cli.py +0 -0
  190. {docpull-6.5.4 → docpull-6.5.5}/tests/test_basis.py +0 -0
  191. {docpull-6.5.4 → docpull-6.5.5}/tests/test_benchmark.py +0 -0
  192. {docpull-6.5.4 → docpull-6.5.5}/tests/test_cache_conditional_get.py +0 -0
  193. {docpull-6.5.4 → docpull-6.5.5}/tests/test_chunking.py +0 -0
  194. {docpull-6.5.4 → docpull-6.5.5}/tests/test_claim_audit_script.py +0 -0
  195. {docpull-6.5.4 → docpull-6.5.5}/tests/test_cli.py +0 -0
  196. {docpull-6.5.4 → docpull-6.5.5}/tests/test_context_ci.py +0 -0
  197. {docpull-6.5.4 → docpull-6.5.5}/tests/test_context_packs.py +0 -0
  198. {docpull-6.5.4 → docpull-6.5.5}/tests/test_conversion.py +0 -0
  199. {docpull-6.5.4 → docpull-6.5.5}/tests/test_convert_step_new.py +0 -0
  200. {docpull-6.5.4 → docpull-6.5.5}/tests/test_discovery.py +0 -0
  201. {docpull-6.5.4 → docpull-6.5.5}/tests/test_discovery_contracts.py +0 -0
  202. {docpull-6.5.4 → docpull-6.5.5}/tests/test_doctor.py +0 -0
  203. {docpull-6.5.4 → docpull-6.5.5}/tests/test_document_parse.py +0 -0
  204. {docpull-6.5.4 → docpull-6.5.5}/tests/test_document_record.py +0 -0
  205. {docpull-6.5.4 → docpull-6.5.5}/tests/test_evidence_pack.py +0 -0
  206. {docpull-6.5.4 → docpull-6.5.5}/tests/test_exports.py +0 -0
  207. {docpull-6.5.4 → docpull-6.5.5}/tests/test_extractor_ensemble.py +0 -0
  208. {docpull-6.5.4 → docpull-6.5.5}/tests/test_feed_pack.py +0 -0
  209. {docpull-6.5.4 → docpull-6.5.5}/tests/test_free_core.py +0 -0
  210. {docpull-6.5.4 → docpull-6.5.5}/tests/test_frontier_resume.py +0 -0
  211. {docpull-6.5.4 → docpull-6.5.5}/tests/test_graph.py +0 -0
  212. {docpull-6.5.4 → docpull-6.5.5}/tests/test_hosted.py +0 -0
  213. {docpull-6.5.4 → docpull-6.5.5}/tests/test_http_efficiency.py +0 -0
  214. {docpull-6.5.4 → docpull-6.5.5}/tests/test_import_efficiency.py +0 -0
  215. {docpull-6.5.4 → docpull-6.5.5}/tests/test_injection_screen.py +0 -0
  216. {docpull-6.5.4 → docpull-6.5.5}/tests/test_integration.py +0 -0
  217. {docpull-6.5.4 → docpull-6.5.5}/tests/test_integrations.py +0 -0
  218. {docpull-6.5.4 → docpull-6.5.5}/tests/test_judge.py +0 -0
  219. {docpull-6.5.4 → docpull-6.5.5}/tests/test_link_extractors.py +0 -0
  220. {docpull-6.5.4 → docpull-6.5.5}/tests/test_live_web_smoke.py +0 -0
  221. {docpull-6.5.4 → docpull-6.5.5}/tests/test_llm_extract.py +0 -0
  222. {docpull-6.5.4 → docpull-6.5.5}/tests/test_local_pack_workflows.py +0 -0
  223. {docpull-6.5.4 → docpull-6.5.5}/tests/test_local_workflows.py +0 -0
  224. {docpull-6.5.4 → docpull-6.5.5}/tests/test_mcp_tools.py +0 -0
  225. {docpull-6.5.4 → docpull-6.5.5}/tests/test_metadata_extractor.py +0 -0
  226. {docpull-6.5.4 → docpull-6.5.5}/tests/test_monitor.py +0 -0
  227. {docpull-6.5.4 → docpull-6.5.5}/tests/test_naming.py +0 -0
  228. {docpull-6.5.4 → docpull-6.5.5}/tests/test_native_integrations.py +0 -0
  229. {docpull-6.5.4 → docpull-6.5.5}/tests/test_openapi_pack.py +0 -0
  230. {docpull-6.5.4 → docpull-6.5.5}/tests/test_optional_extras_installed.py +0 -0
  231. {docpull-6.5.4 → docpull-6.5.5}/tests/test_optout.py +0 -0
  232. {docpull-6.5.4 → docpull-6.5.5}/tests/test_output_contract.py +0 -0
  233. {docpull-6.5.4 → docpull-6.5.5}/tests/test_outputs_e2e.py +0 -0
  234. {docpull-6.5.4 → docpull-6.5.5}/tests/test_pack_server.py +0 -0
  235. {docpull-6.5.4 → docpull-6.5.5}/tests/test_pack_tools.py +0 -0
  236. {docpull-6.5.4 → docpull-6.5.5}/tests/test_parallel_workflows.py +0 -0
  237. {docpull-6.5.4 → docpull-6.5.5}/tests/test_parity_workflows.py +0 -0
  238. {docpull-6.5.4 → docpull-6.5.5}/tests/test_passk.py +0 -0
  239. {docpull-6.5.4 → docpull-6.5.5}/tests/test_pipeline.py +0 -0
  240. {docpull-6.5.4 → docpull-6.5.5}/tests/test_policy.py +0 -0
  241. {docpull-6.5.4 → docpull-6.5.5}/tests/test_policy_cli.py +0 -0
  242. {docpull-6.5.4 → docpull-6.5.5}/tests/test_project.py +0 -0
  243. {docpull-6.5.4 → docpull-6.5.5}/tests/test_provenance.py +0 -0
  244. {docpull-6.5.4 → docpull-6.5.5}/tests/test_provider_adapters.py +0 -0
  245. {docpull-6.5.4 → docpull-6.5.5}/tests/test_provider_cli.py +0 -0
  246. {docpull-6.5.4 → docpull-6.5.5}/tests/test_provider_keys.py +0 -0
  247. {docpull-6.5.4 → docpull-6.5.5}/tests/test_provider_probes.py +0 -0
  248. {docpull-6.5.4 → docpull-6.5.5}/tests/test_public_feature_smoke.py +0 -0
  249. {docpull-6.5.4 → docpull-6.5.5}/tests/test_qa_judge.py +0 -0
  250. {docpull-6.5.4 → docpull-6.5.5}/tests/test_rate_limiter.py +0 -0
  251. {docpull-6.5.4 → docpull-6.5.5}/tests/test_real_feature_smoke_script.py +0 -0
  252. {docpull-6.5.4 → docpull-6.5.5}/tests/test_real_site_regressions.py +0 -0
  253. {docpull-6.5.4 → docpull-6.5.5}/tests/test_relationship_workflow.py +0 -0
  254. {docpull-6.5.4 → docpull-6.5.5}/tests/test_release_a_plus_check_script.py +0 -0
  255. {docpull-6.5.4 → docpull-6.5.5}/tests/test_rendering.py +0 -0
  256. {docpull-6.5.4 → docpull-6.5.5}/tests/test_reproducible_release_build.py +0 -0
  257. {docpull-6.5.4 → docpull-6.5.5}/tests/test_save_ndjson.py +0 -0
  258. {docpull-6.5.4 → docpull-6.5.5}/tests/test_save_sqlite.py +0 -0
  259. {docpull-6.5.4 → docpull-6.5.5}/tests/test_security_hardening.py +0 -0
  260. {docpull-6.5.4 → docpull-6.5.5}/tests/test_share.py +0 -0
  261. {docpull-6.5.4 → docpull-6.5.5}/tests/test_source_scoring.py +0 -0
  262. {docpull-6.5.4 → docpull-6.5.5}/tests/test_special_cases.py +0 -0
  263. {docpull-6.5.4 → docpull-6.5.5}/tests/test_surface_contract.py +0 -0
  264. {docpull-6.5.4 → docpull-6.5.5}/tests/test_time_utils.py +0 -0
  265. {docpull-6.5.4 → docpull-6.5.5}/tests/test_token_metrics.py +0 -0
  266. {docpull-6.5.4 → docpull-6.5.5}/tests/test_trafilatura_extractor.py +0 -0
  267. {docpull-6.5.4 → docpull-6.5.5}/tests/test_typed_knowledge_packs.py +0 -0
  268. {docpull-6.5.4 → docpull-6.5.5}/tests/test_warc.py +0 -0
  269. {docpull-6.5.4 → docpull-6.5.5}/tests/test_website_snapshot.py +0 -0
  270. {docpull-6.5.4 → docpull-6.5.5}/tests/test_workflow_contracts.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docpull
3
- Version: 6.5.4
3
+ Version: 6.5.5
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>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "docpull"
7
- version = "6.5.4"
7
+ version = "6.5.5"
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"}
@@ -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.5.4"
18
+ __version__ = "6.5.5"
19
19
 
20
20
  _LAZY_EXPORTS: dict[str, tuple[str, str]] = {
21
21
  **{
@@ -47,6 +47,7 @@ from collections.abc import Awaitable, Callable
47
47
  from pathlib import Path
48
48
  from typing import Any, Literal, cast
49
49
 
50
+ from .. import __version__
50
51
  from ..accounting import (
51
52
  RunAccounting,
52
53
  blocked_action,
@@ -89,6 +90,35 @@ SERVER_INSTRUCTIONS = (
89
90
  )
90
91
 
91
92
 
93
+ def _advertise_tool_cost(tool: Any) -> Any:
94
+ """Attach the cost contract promised by the server instructions."""
95
+ if tool.name == "render_url":
96
+ description = (
97
+ f"Cost: local, $0 by default; vercel and e2b runtimes are paid-capable. {tool.description}"
98
+ )
99
+ contract = {
100
+ "cost_class": "paid-capable",
101
+ "default_cost_class": "local",
102
+ "estimated_cost_usd": 0,
103
+ "paid_capable": True,
104
+ "paid_when": {"argument": "runtime", "values": ["vercel", "e2b"]},
105
+ "budget_argument": "budget",
106
+ }
107
+ else:
108
+ description = tool.description or ""
109
+ if not description.startswith("Cost:"):
110
+ description = f"Cost: local, $0. {description}"
111
+ contract = {
112
+ "cost_class": "local",
113
+ "estimated_cost_usd": 0,
114
+ "paid_capable": False,
115
+ }
116
+
117
+ metadata = dict(tool.meta or {})
118
+ metadata["docpull/cost"] = contract
119
+ return tool.model_copy(update={"description": description, "meta": metadata})
120
+
121
+
92
122
  # Output schemas — keep these next to the tool list so they stay in sync.
93
123
  # Tools that return free-form Markdown (fetch_url) intentionally omit a
94
124
  # schema; the rest expose structured payloads alongside the rendered text.
@@ -1391,7 +1421,7 @@ async def _run_stdio() -> int:
1391
1421
  return 1
1392
1422
 
1393
1423
  server: Server = Server( # type: ignore[no-any-unimported]
1394
- "docpull", instructions=SERVER_INSTRUCTIONS
1424
+ "docpull", version=__version__, instructions=SERVER_INSTRUCTIONS
1395
1425
  )
1396
1426
 
1397
1427
  @server.list_tools() # type: ignore[misc,no-untyped-call]
@@ -2470,7 +2500,7 @@ async def _run_stdio() -> int:
2470
2500
  outputSchema=_REMOVE_SOURCE_OUTPUT_SCHEMA,
2471
2501
  ),
2472
2502
  ]
2473
- return [tool for tool in tools if tool.name not in PRUNED_MCP_TOOLS]
2503
+ return [_advertise_tool_cost(tool) for tool in tools if tool.name not in PRUNED_MCP_TOOLS]
2474
2504
 
2475
2505
  async def _make_progress_callback() -> Any:
2476
2506
  """Return ``(pages_done, total_or_none) -> awaitable`` bound to the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docpull
3
- Version: 6.5.4
3
+ Version: 6.5.5
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>
@@ -332,7 +332,7 @@ def test_plugin_launcher_reports_actionable_setup_when_docpull_is_missing(
332
332
  )
333
333
 
334
334
  assert proc.returncode == 127
335
- assert "pipx install 'docpull[mcp]==6.5.4'" in proc.stderr
335
+ assert "pipx install 'docpull[mcp]==6.5.5'" in proc.stderr
336
336
 
337
337
  (tmp_path / "docpull").mkdir()
338
338
  proc = subprocess.run( # nosec B603
@@ -345,7 +345,7 @@ def test_plugin_launcher_reports_actionable_setup_when_docpull_is_missing(
345
345
  )
346
346
 
347
347
  assert proc.returncode == 127
348
- assert "pipx install 'docpull[mcp]==6.5.4'" in proc.stderr
348
+ assert "pipx install 'docpull[mcp]==6.5.5'" in proc.stderr
349
349
 
350
350
 
351
351
  def test_codex_plugin_default_prompt_fits_host_limit() -> None:
@@ -17,6 +17,7 @@ pytest.importorskip("mcp.client.stdio")
17
17
 
18
18
  from mcp.client.stdio import stdio_client
19
19
 
20
+ from docpull import __version__
20
21
  from docpull.mcp import server as mcp_server
21
22
  from mcp import ClientSession, StdioServerParameters
22
23
  from tests.pack_fixtures import write_context_pack
@@ -185,10 +186,28 @@ async def test_stdio_server_lists_and_calls_tools(tmp_path):
185
186
  env=env,
186
187
  )
187
188
  async with _stdio_client_with_cleanup(server) as (read, write), ClientSession(read, write) as session:
188
- await session.initialize()
189
+ initialization = await session.initialize()
190
+ assert initialization.serverInfo.version == __version__
189
191
 
190
192
  tools = await session.list_tools()
191
193
  names = {tool.name for tool in tools.tools}
194
+ for tool in tools.tools:
195
+ assert tool.description is not None
196
+ assert tool.description.startswith("Cost:")
197
+ assert tool.meta is not None
198
+ assert "docpull/cost" in tool.meta
199
+ cost = tool.meta["docpull/cost"]
200
+ assert cost["paid_capable"] is (tool.name == "render_url")
201
+ assert cost["estimated_cost_usd"] == 0
202
+ render_cost = next(
203
+ tool.meta["docpull/cost"]
204
+ for tool in tools.tools
205
+ if tool.name == "render_url" and tool.meta is not None
206
+ )
207
+ assert render_cost["paid_when"] == {
208
+ "argument": "runtime",
209
+ "values": ["vercel", "e2b"],
210
+ }
192
211
  fetch_tool = next(tool for tool in tools.tools if tool.name == "fetch_url")
193
212
  assert fetch_tool.inputSchema["properties"]["remote_document_backend"]["enum"] == [
194
213
  "auto",
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
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
File without changes
File without changes
File without changes
File without changes