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.
- {docpull-6.5.4/src/docpull.egg-info → docpull-6.5.5}/PKG-INFO +1 -1
- {docpull-6.5.4 → docpull-6.5.5}/pyproject.toml +1 -1
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/__init__.py +1 -1
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/mcp/server.py +32 -2
- {docpull-6.5.4 → docpull-6.5.5/src/docpull.egg-info}/PKG-INFO +1 -1
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_ci_policy.py +2 -2
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_mcp_server.py +20 -1
- {docpull-6.5.4 → docpull-6.5.5}/LICENSE +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/README.md +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/setup.cfg +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/__main__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/accounting.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/acquisition_workflows.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/agent_publish.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/auth_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/basis.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/benchmark.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/cache/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/cache/frontier.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/cache/manager.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/cache/streaming_dedup.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/change_events.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_aliases.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_ci.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/_legacy_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/brand.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/common.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/dataset.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/feed.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/openapi.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/package.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/paper.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/policy_pack.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/product.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/relationship.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/repo.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/schema_extract.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/search.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/standards.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/styleguide.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/transcript.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/typed.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/typed_models.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/visuals.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/website.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/wiki.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/context_packs/workflow_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/contracts.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/contracts_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/article_cleanup.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/chunking.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/ensemble.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/extractor.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/filings.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/markdown.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/protocols.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/special_cases.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/conversion/trafilatura_extractor.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/core/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/core/fetcher.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/_fetch.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/composite.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/contracts.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/crawler.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/filters.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/link_extractors/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/link_extractors/enhanced.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/link_extractors/protocols.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/link_extractors/static.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/protocols.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery/sitemap.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/discovery_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/doctor.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/document_parse.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/document_worker.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/eval_grade.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/evidence.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/evidence_pack.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/export_formats.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/exports.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/fixtures/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/fixtures/parallel-search-extract.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/free_core.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/free_core_smoke.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/graph.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/hosted.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/http/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/http/client.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/http/protocols.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/http/rate_limiter.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/integrations/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/integrations/_records.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/integrations/langchain.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/integrations/llamaindex.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/judge.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/llm_client.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/local_workflows.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/mcp/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/mcp/sources.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/mcp/tools.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/metadata_extractor.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/config.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/document.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/events.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/profiles.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/run.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/models/schema.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/monitor.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/native_integrations.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/output_contract.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pack_reader.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pack_tools.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/parallel_workflows.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/parity.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/parity_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/passk.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/base.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/manifest.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/chunk.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/convert.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/dedup.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/fetch.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/metadata.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/render.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/save.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/save_json.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/save_ndjson.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/save_okf.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/save_sqlite.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/screen.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/pipeline/steps/validate.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/policy.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/policy_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/project.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provenance.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provider_adapters.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provider_capabilities.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provider_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provider_keys.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/provider_probes.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/py.typed +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/redaction.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/rendering.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/artifact-manifest.v1.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/basis.v2.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/change-event.v1.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/citation-map.v1.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/document.v3.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/intelligence-bundle.v1.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/pack.v3.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/provenance.v1.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/relationship-pack.v1.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/rights.v1.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/run-identity.v1.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/website-snapshot.v1.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/workflow-request.v1.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/schemas/workflow-result.v1.schema.json +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/scraper.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/__init__.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/download_policy.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/injection.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/optout.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/robots.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/security/url_validator.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/server.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/share.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/skill_export.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/source_scoring.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/surface.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/time_utils.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/warc.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull/workflows.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull.egg-info/SOURCES.txt +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull.egg-info/dependency_links.txt +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull.egg-info/entry_points.txt +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull.egg-info/requires.txt +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/src/docpull.egg-info/top_level.txt +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_accounting.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_acquisition_workflows.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_archive_discovery.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_auth_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_basis.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_benchmark.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_cache_conditional_get.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_chunking.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_claim_audit_script.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_context_ci.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_context_packs.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_conversion.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_convert_step_new.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_discovery.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_discovery_contracts.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_doctor.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_document_parse.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_document_record.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_evidence_pack.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_exports.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_extractor_ensemble.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_feed_pack.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_free_core.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_frontier_resume.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_graph.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_hosted.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_http_efficiency.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_import_efficiency.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_injection_screen.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_integration.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_integrations.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_judge.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_link_extractors.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_live_web_smoke.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_llm_extract.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_local_pack_workflows.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_local_workflows.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_mcp_tools.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_metadata_extractor.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_monitor.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_naming.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_native_integrations.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_openapi_pack.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_optional_extras_installed.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_optout.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_output_contract.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_outputs_e2e.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_pack_server.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_pack_tools.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_parallel_workflows.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_parity_workflows.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_passk.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_pipeline.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_policy.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_policy_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_project.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_provenance.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_provider_adapters.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_provider_cli.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_provider_keys.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_provider_probes.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_public_feature_smoke.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_qa_judge.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_rate_limiter.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_real_feature_smoke_script.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_real_site_regressions.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_relationship_workflow.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_release_a_plus_check_script.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_rendering.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_reproducible_release_build.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_save_ndjson.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_save_sqlite.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_security_hardening.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_share.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_source_scoring.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_special_cases.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_surface_contract.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_time_utils.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_token_metrics.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_trafilatura_extractor.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_typed_knowledge_packs.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_warc.py +0 -0
- {docpull-6.5.4 → docpull-6.5.5}/tests/test_website_snapshot.py +0 -0
- {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.
|
|
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.
|
|
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"}
|
|
@@ -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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|