doc3gpp 0.3.0__tar.gz → 0.3.2__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.
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/AGENTS.md +1 -1
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/PKG-INFO +6 -1
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/README.md +5 -0
- doc3gpp-0.3.2/docs/TODO.md +42 -0
- doc3gpp-0.3.2/docs/superpowers/plans/2026-09-27-mcp-stdio.md +923 -0
- doc3gpp-0.3.2/docs/superpowers/specs/2026-09-27-mcp-stdio-design.md +209 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/web-server.md +11 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/pyproject.toml +2 -1
- doc3gpp-0.3.2/src/doc3gpp/data/skills/doc3gpp/SKILL.md +64 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/repository/protocols.py +5 -4
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/jobs_sql.py +7 -2
- doc3gpp-0.3.2/src/doc3gpp/web/mcp_stdio.py +71 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/workers/handlers.py +3 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/workers/job_worker.py +15 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_job_worker.py +57 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_jobs_sql.py +18 -0
- doc3gpp-0.3.2/tests/unit/web/test_mcp_stdio.py +224 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.env.example +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.github/workflows/publish.yml +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.gitignore +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.superpowers/sdd/.gitignore +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.superpowers/sdd/2026-09-24-spec-doc-metadata-and-portal-fix/final-fix-report.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.superpowers/sdd/2026-09-24-spec-doc-metadata-and-portal-fix/task-2-report.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.superpowers/sdd/2026-09-24-spec-doc-web-portal/final-fix-report.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.superpowers/sdd/2026-09-24-spec-doc-web-portal/task-2-report.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.superpowers/sdd/2026-09-25-spec-parsed-output/final-fix-report.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.superpowers/sdd/2026-09-25-spec-parsed-output/task-3-report.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.superpowers/sdd/2026-09-25-spec-parsed-output/task-4-report.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/.superpowers/sdd/2026-09-25-spec-parsed-output/task-7-report.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/LICENSE +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/doc3gpp.toml.example +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/3gpp-knowledge.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/architecture.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/cli.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/code-map.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/conventions.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/known-constraints.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-07-28-compact-output.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-07-28-tdoc-size-limit.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-07-29-fts5-search.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-07-29-tdoc-cr-body-changes.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-07-30-fts5-perf.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-07-31-embedding-search.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-01-fts5-hit-rename.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-01-fts5-semantic-rerank.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-01-semantic-search-revision.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-02-all-extra.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-02-remove-mysql-postgres.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-02-web-and-mcp-server.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-03-meeting-sync-display.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-03-meetings-tdoc-filter.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-04-web-ui-enhancements.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-05-tdoc-columns-dropdown.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-05-web-parse-and-search.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-07-mcp-sse-transport.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-10-spec-sync-list-show.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-11-spec-rapporteurs-comment.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-11-spec-rapporteurs-filter.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-12-mcp-spec-sync.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-12-single-spec-sync.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-12-spec-show-version-limit.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-12-spec-sync-dynareport-fetch.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-13-idempotent-cancel.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-13-mcp-parse-tdoc-url.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-13-per-spec-skip-rule.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-13-spec-per-version-details-flag.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-13-web-job-detail-params.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-13-web-mcp-meeting-name-filter.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-14-cover-page-summary-of-change.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-14-job-progress.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-14-sync-hub-page.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-14-version-display.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-14-web-tdoc-extracted-changes.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-19-tdocs-xlsx-metadata.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-08-19-web-mcp-tdoc-show-by-url.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-11-ran5-testcases.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-12-testcase-nested-statuses.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-12-testcase-separate-db.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-13-resource-schema.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-22-remote-embedding-api.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-23-spec-doc-parse.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-24-spec-doc-fetch-command-removal.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-24-spec-doc-metadata-and-portal-fix.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-24-tdoc-search-namespace.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-25-spec-doc-chunk-context.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-25-spec-doc-pagination.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-25-spec-parsed-output.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/plans/2026-09-26-unified-search-index.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-07-28-compact-output-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-07-28-tdoc-size-limit-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-07-29-fts5-search-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-07-29-tdoc-cr-body-changes-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-07-30-fts5-perf.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-07-31-embedding-search-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-01-fts5-hit-rename-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-01-fts5-semantic-rerank-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-01-semantic-search-revision-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-02-all-extra-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-02-remove-mysql-postgres-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-02-web-and-mcp-server-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-03-meeting-sync-display-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-03-meetings-tdoc-filter-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-04-web-ui-enhancements-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-05-tdoc-columns-dropdown-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-05-web-parse-and-search-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-10-spec-sync-list-show-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-11-spec-rapporteurs-comment-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-11-spec-rapporteurs-filter-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-12-mcp-spec-sync-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-12-single-spec-sync-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-12-spec-show-version-limit-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-12-spec-sync-dynareport-fetch-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-13-docs-review-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-13-idempotent-cancel-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-13-mcp-parse-tdoc-url-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-13-spec-per-version-details-flag-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-13-web-job-detail-params-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-13-web-mcp-meeting-name-filter-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-14-cover-page-summary-of-change-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-14-sync-hub-page-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-14-version-display-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-14-web-jobs-cancel-button-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-14-web-tdoc-extracted-changes-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-19-tdocs-xlsx-metadata-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-08-19-web-mcp-tdoc-show-by-url-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-11-ran5-testcases-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-12-testcase-nested-statuses-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-12-testcase-separate-db-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-13-resource-schema-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-22-remote-embedding-api-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-23-spec-doc-parse-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-24-spec-doc-fetch-command-removal-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-24-spec-doc-metadata-and-portal-fix-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-24-spec-doc-web-portal-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-24-tdoc-search-namespace-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-25-spec-doc-chunk-context-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-25-spec-doc-pagination-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-25-spec-parsed-output-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/docs/superpowers/specs/2026-09-26-unified-search-index-design.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/scripts/dev_run.sh +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/scripts/test_sqlite.sh +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/cli_auto_sync.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/cli_filters.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/cli_server.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/cli_url_helpers.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/config.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/data/doc3gpp.toml.example +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/index.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/jobs.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/meeting.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/schema_info.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/search.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/semantic_search.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/spec.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/spec_doc.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/sync.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/tdoc.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/tdoc_cr.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/tdoc_cr_change_details.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/tdoc_file.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/tdoc_show.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/testcase.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/tsg.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/unified_search.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/models/wi.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/calendar_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/cr/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/cr/body_changes.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/cr/cover_page.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/cr/cr_parsers.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/cr/header.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/cr/helpers.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/cr/ttcn_functions.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/cr/ttcn_sections.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/cr_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/direct_extractor.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/docx_converter.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/html_parsers.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/normalizers.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/spec_doc.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/spec_doc_chunker.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/spec_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/spec_release.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/tdoc_file_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/tdoc_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/tdoc_parsers.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/testcase_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/parsers/wi_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/repository/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/cache.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/cache_keys.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/calendar_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/client.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/ftp_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/portal_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/spec_doc_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/spec_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/tdoc_zip_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/testcase_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/scraping/wi_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/_duration.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/embedding/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/embedding/chunker.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/embedding/remote_embedder.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/factory.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/meetings_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/search_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/semantic_reranker.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/semantic_search_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/spec_doc_index_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/spec_doc_search_facade.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/spec_doc_search_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/spec_doc_semantic_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/spec_doc_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/spec_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/tdoc_cr_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/tdoc_file_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/tdoc_index_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/tdoc_search_facade.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/tdoc_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/tdoc_sync_coordinator.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/testcase_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/tsg_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/services/wi_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/settings/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/settings/config_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/settings/config_writer.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/settings/loader.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/settings/schema.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/backends/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/backends/sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/cache.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/compression.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/db/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/db/base.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/db/fts5_query.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/db/migrate.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/db/migrations/README.md +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/db/models.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/db/session.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/db/specdata_base.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/db/testcase_base.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/export.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/meeting_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/rich_filters.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/search_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/spec_doc_search_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/spec_doc_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/spec_doc_vector_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/spec_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/tdoc_cr_change_details_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/tdoc_cr_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/tdoc_cr_ttcn_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/tdoc_file_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/tdoc_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/testcase_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/tsg_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/vector_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/storage/repositories/wi_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/app.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/deps.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/errors.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/filters.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/install.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/mcp_server.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/render.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/jobs.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/landing.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/meetings.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/search.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/spec_docs.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/specs.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/sync.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/tdocs.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/testcases.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/tsgs.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/routes/wis.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/state.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/static/htmx.min.js +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/static/js/job_poller.js +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/static/js/meeting_sync.js +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/static/js/search.js +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/static/js/spec_clipboard.js +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/static/js/spec_doc_parse.js +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/static/js/spec_sync.js +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/static/js/sync_hub.js +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/static/js/tdoc_columns.js +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/static/js/tdoc_parse.js +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/static/style.css +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/base.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/job_status.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/landing.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/meeting_list.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/meeting_show.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/_job_row.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/job_status.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/meeting_filters.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/meeting_results.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/pagination.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/schema_results.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/search_form.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/search_resource_tabs.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/search_results.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/search_results_table.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/spec_doc_chunks.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/spec_doc_search_form.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/spec_doc_search_results.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/spec_doc_search_results_table.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/spec_doc_show_results.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/spec_doc_toc_results.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/spec_filters.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/spec_results.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/sync_recent_jobs.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/tdoc_filters.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/tdoc_results.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/testcase_filters.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/testcase_results.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/wi_filters.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/partials/wi_results.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/schema.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/search_results.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/spec_doc_show.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/spec_doc_toc.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/spec_docs_search.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/spec_list.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/spec_show.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/sync.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/tdoc_content.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/tdoc_list.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/tdoc_show.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/testcase_list.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/testcase_show.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/tsg_list.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/tsg_show.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates/wi_list.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/templates_setup.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/src/doc3gpp/web/workers/__init__.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/conftest.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/sample_pages/3GPP-meeting-R5.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/search_corpus.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/semantic_search_corpus.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/spec_pages/R5_crs.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/spec_pages/R5_detail.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/spec_pages/R5_detail_portal.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/spec_pages/R5_etsi.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/spec_pages/R5_list.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/tdoc_cr_doc/C6-250028.zip +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/tdoc_cr_doc/R5-227476.zip +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/tdoc_cr_doc/R5-253079.zip +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/tdoc_cr_doc/R5s260009.zip +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/tdoc_cr_doc/R5s260051.zip +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/tdoc_cr_doc/R5s260135.zip +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/tdoc_cr_doc/R5s260176.zip +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/tdoc_xlsx/TDoc_List_Meeting_85434_portal.xlsx +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/tdoc_xlsx/TDoc_List_Meeting_RAN5#111.xlsx +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/fixtures/wi_pages/R5.html +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_auto_sync_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_cli_server.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_cli_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_config_init_cli_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_config_set_cli_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_db_reset_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_embed_after_parse.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_mcp_end_to_end.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_meeting_service_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_migrate_tsg_spec_last_sync_drop.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_online_3gpp_calendar.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_online_spec_doc_sync.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_online_spec_sync.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_online_tdoc_fetch_r5.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_online_tdoc_parse.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_online_testcase_sync.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_parse_tdoc_url_job_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_schema_parity.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_sdk_integration.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_search_after_parse.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_search_extras_disabled.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_search_filters.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_search_index_lifecycle.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_search_indexes.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_search_previews_per_column.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_search_query_sem_rerank.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_search_schema.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_search_sem_end_to_end.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_search_snippet_column.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_search_weighted_bm25.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_semantic_extras_disabled.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_spec_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_spec_doc_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_spec_doc_repo.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_spec_doc_search_repo.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_spec_doc_search_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_spec_doc_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_spec_doc_web.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_spec_migration.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_spec_parsed_output.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_spec_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_sqlite_backend.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_sync_hub_end_to_end.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tdoc_cr_change_details_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tdoc_cr_rename_migration.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tdoc_cr_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tdoc_cr_ttcn_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tdoc_file_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tdoc_parse_direct_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tdoc_parse_ftp_batch_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tdoc_parse_local_batch_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tdoc_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tdocs_xlsx_metadata_migration_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tdocs_xlsx_metadata_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_testcase_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_testcase_sql.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_tsg_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_vector_index_lifecycle.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_vector_repo_get_min_distance.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_vector_schema_migration.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_web_end_to_end.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_web_search_end_to_end.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/integration/test_wi_sqlite.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/_job_polling_smoke.js +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_bind_job_polling_on_terminal.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_body_changes_extractor.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_cache_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_cache_keys.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_calendar_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_calendar_parser_defensive.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_chunker.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_cli_auto_sync.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_cli_filters.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_cli_search.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_cli_search_sem.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_cli_server_start.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_cli_server_stubs.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_cli_version.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_compact_helpers.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_config_init_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_config_set_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_config_writer.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_cr_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_db_reset_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_docx_converter.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_factory_semantic.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_ftp_listing.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_fts5_query.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_index_services.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_job_row_partial.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_list_output_format.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_meeting_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_meeting_cli_filters_combined.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_meeting_cli_invalid_fields.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_meeting_cli_location_filter.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_meeting_repository_combined_filters.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_meeting_repository_filters.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_meeting_repository_location_filter.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_meeting_repository_upsert.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_meeting_sync_tsg_validation.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_packaging_semantic.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_parse_tdoc_url_route.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_parsers_utils.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_portal_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_protocols_semantic.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_remote_embedder.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_remote_embedding_settings.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_rrf.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_schema_info.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_scraper_client.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_search_query_builder.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_search_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_search_settings.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_semantic_models.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_semantic_reranker.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_semantic_search_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_semantic_settings.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_server_settings.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_services_factory.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_settings.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_settings_config_file.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_doc_blocks.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_doc_chunker.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_doc_models.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_doc_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_doc_search_facade.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_doc_service_reads.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_doc_settings.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_doc_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_doc_vector_metadata.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_model.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_orm.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_release.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_spec_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_storage_utils.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_sync_hub_page.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_cache.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_cli_fields.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_cr_change_details_model.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_cr_model.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_cr_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_cr_service_body_changes.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_cr_service_ftp_batch.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_file_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_file_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_file_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_parse_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_parse_direct.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_parse_settings.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_parse_url_batch.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_repository_crud.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_repository_filters.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_search_facade.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_service_sync.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_show_record.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_sync_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_sync_coordinator.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_url_not_found.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tdoc_zip_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_testcase_db_url.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_testcase_model.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_testcase_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_testcase_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_testcase_source.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tsg_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tsg_repository.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tsg_service.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_tsg_url_pattern.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_ttcn_functions.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_unified_search_models.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_web_app.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_web_errors.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_web_filters.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_web_install.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_web_jobs_routes.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_web_routes.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_web_template_filters.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_wi_cli.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_wi_parser.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/test_wi_repository_filters.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/web/test_landing_version.py +0 -0
- {doc3gpp-0.3.0 → doc3gpp-0.3.2}/tests/unit/web/test_mcp_server.py +0 -0
|
@@ -357,7 +357,7 @@ Workflows in one line (full prose in `docs/architecture.md`):
|
|
|
357
357
|
rebuild flag. Hybrid weighting comes from
|
|
358
358
|
`Settings.semantic_search.fts5_weight`.
|
|
359
359
|
- `doc3gpp spec doc parse --spec <id> [--release R] [--version V] [--force]` → `SpecDocService.parse_many` → resolve the numeric-newest `SpecVersion` with a non-empty `.zip` URL via `resolve_spec_doc_version` (after optional release filtering); explicit `--version` is strict and fails clearly when its ZIP link is missing. Fetch the ZIP with internal `fetch_spec_doc_zip` when absent (or use the zip cache at `{spec_doc.cache_dir}/zips/<spec_id>/<version>.zip`), and record the download. `--force` re-downloads before re-parsing, including pairs that already carry `parsed_at`.
|
|
360
|
-
- `doc3gpp spec doc parse --spec <id> [--release R] [--version V] [--force]` → per spec: immutable-skip when `(spec_id, version)` already carries `parsed_at` (unless `--force`) → `parse` = fetch-if-missing + `list_spec_docx` + `convert_document_to_blocks` + `order_spec_files` + `extract_spec_toc` + `chunk_blocks` → `upsert_toc` + `replace_chunks` + per-file markdown cache (`{spec_doc.cache_dir}/markdown/<spec_id>/<version>/`) + `record_parsed` + best-effort auto-index (`upsert_for_version`) / auto-embed (`index_for_version`). Oversized zips → skip bucket; unknown spec/version or empty (no-docx) zips → failure bucket; one spec never aborts the batch (`SpecDocBatchResult(successes/skipped/failures)`). Prints `ok/skipped/failed` buckets only (`--format/--output/--compact` accepted but ignored). Chunk/search metadata uses newline-delimited combined `sections` and `tables`; TOC entries retain `section_no` / `title`.
|
|
360
|
+
- `doc3gpp spec doc parse --spec <id> [--release R] [--version V] [--force]` → per spec: immutable-skip when `(spec_id, version)` already carries `parsed_at` (unless `--force`) → `parse` = fetch-if-missing + `list_spec_docx` + `convert_document_to_blocks` + `order_spec_files` + `extract_spec_toc` + `chunk_blocks` → `upsert_toc` + `replace_chunks` + per-file markdown cache (`{spec_doc.cache_dir}/markdown/<spec_id>/<version>/`) + `record_parsed` + best-effort auto-index (`upsert_for_version`) / auto-embed (`index_for_version`). Oversized zips → skip bucket; unknown spec/version or empty (no-docx) zips → failure bucket; one spec never aborts the batch (`SpecDocBatchResult(successes/skipped/failures)`). Prints `ok/skipped/failed` buckets only (`--format/--output/--compact` accepted but ignored). Background `parse_spec_docs` jobs log and store per-spec errors in `result.failure_details`; all-failed batches have job status `failed`, while partial successes remain `succeeded`. Chunk/search metadata uses newline-delimited combined `sections` and `tables`; TOC entries retain `section_no` / `title`.
|
|
361
361
|
- `doc3gpp spec doc toc show --spec <id> --version <v> [--fields] [--format/--output/--compact]` → `SpecDocService.get_toc` (stored `(spec_id, version)` rows; miss → `BadParameter`). Default fields `section_no, title, level, source_file` (`[output.fields] spec_doc_toc`).
|
|
362
362
|
- `doc3gpp spec doc search [--text TEXT] [--semantic TEXT] [filters]` →
|
|
363
363
|
`SpecDocSearchFacade.search` with the same four mode-selection rules and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: doc3gpp
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Provide 3GPP TDoc information with full text search capability — a Python CLI/library, a local web UI, and an MCP server for AI clients.
|
|
5
5
|
Project-URL: Homepage, https://github.com/jerrywang121/doc3gpp
|
|
6
6
|
Project-URL: Repository, https://github.com/jerrywang121/doc3gpp
|
|
@@ -377,6 +377,11 @@ doc3gpp spec doc index --rebuild
|
|
|
377
377
|
doc3gpp spec doc schema --format json
|
|
378
378
|
```
|
|
379
379
|
|
|
380
|
+
Background `parse_spec_docs` jobs retain per-spec failure reasons in the job
|
|
381
|
+
result (`failure_details`) and log. A batch where every spec fails has status
|
|
382
|
+
`failed`; a partial success retains status `succeeded` with the failed specs
|
|
383
|
+
listed in the result.
|
|
384
|
+
|
|
380
385
|
Spec-document rows live in a separate sibling database, normally
|
|
381
386
|
`<main-stem>_specdata.db`, and are cached below the dedicated
|
|
382
387
|
`~/.cache/doc3gpp/specs` root by default. The TDoc extraction cache remains
|
|
@@ -294,6 +294,11 @@ doc3gpp spec doc index --rebuild
|
|
|
294
294
|
doc3gpp spec doc schema --format json
|
|
295
295
|
```
|
|
296
296
|
|
|
297
|
+
Background `parse_spec_docs` jobs retain per-spec failure reasons in the job
|
|
298
|
+
result (`failure_details`) and log. A batch where every spec fails has status
|
|
299
|
+
`failed`; a partial success retains status `succeeded` with the failed specs
|
|
300
|
+
listed in the result.
|
|
301
|
+
|
|
297
302
|
Spec-document rows live in a separate sibling database, normally
|
|
298
303
|
`<main-stem>_specdata.db`, and are cached below the dedicated
|
|
299
304
|
`~/.cache/doc3gpp/specs` root by default. The TDoc extraction cache remains
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# TODO
|
|
2
|
+
|
|
3
|
+
Open improvement backlog from the repository review at commit `c0af0ee`.
|
|
4
|
+
The review was read-only; the findings below have not been implemented.
|
|
5
|
+
|
|
6
|
+
## Critical
|
|
7
|
+
|
|
8
|
+
- [ ] **Add HTTP and MCP authentication and authorization.** References: `src/doc3gpp/web/app.py:154-185`, `:224-235`; `src/doc3gpp/web/routes/jobs.py:157-341`, `:454-583`; `src/doc3gpp/cli_server.py:207-265`. Protect corpus reads, job inspection, sync, parse, indexing, cache purge, and cancellation. Treat host/origin checks as transport controls, not identity. Refuse non-loopback binding unless an explicit authentication mechanism is configured. Add tests for unauthenticated and authorized read/mutating requests.
|
|
9
|
+
- [ ] **Prevent stored XSS in cached TDoc content.** References: `src/doc3gpp/web/routes/tdocs.py:86`, `:439-455`; `src/doc3gpp/web/templates/tdoc_content.html:6`. Disable raw HTML in Markdown rendering or sanitize rendered HTML with a strict allowlist before using `safe`. Add a regression test with `<script>` and event-handler payloads.
|
|
10
|
+
|
|
11
|
+
## Important
|
|
12
|
+
|
|
13
|
+
- [ ] **Make queued job cancellation durable.** References: `src/doc3gpp/web/state.py:88-115`; `src/doc3gpp/web/routes/jobs.py:558-583`. Persist cancellation state or atomically transition queued jobs to `CANCELLED`, and ensure the worker claims only still-queued rows. Add restart and worker-unavailable tests.
|
|
14
|
+
- [ ] **Make job ownership and orphan recovery safe for multiple processes.** References: `src/doc3gpp/web/workers/job_worker.py:195-223`; `src/doc3gpp/cli_server.py:214-255`; `src/doc3gpp/storage/repositories/jobs_sql.py:162-225`. Add worker ownership, leases, and heartbeats with stale-only recovery, or enforce a process singleton. Require `status = 'running'` in terminal status transitions so an old worker cannot overwrite newer state.
|
|
15
|
+
- [ ] **Fix double compilation of hybrid FTS5 queries.** References: `src/doc3gpp/services/tdoc_search_facade.py:59-74`; `src/doc3gpp/services/semantic_search_service.py:172-183`; `src/doc3gpp/services/search_service.py:125-133`. Establish one explicit raw-query versus compiled-expression boundary. Add hybrid regression tests for TDoc IDs such as `R5-123456` and dotted spec IDs.
|
|
16
|
+
- [ ] **Make the MCP TDoc content tool use the authoritative cache reader.** References: `src/doc3gpp/web/mcp_server.py:443-469`; `src/doc3gpp/web/routes/tdocs.py:416-437`; `src/doc3gpp/services/tdoc_cr_service.py:153-176`. Read current ZIP Markdown sidecars, legacy gzip entries, and plain UTF-8 through the shared helper, using the persisted `tdoc_extracts.cache_file` key. Add a test for a ZIP Markdown sidecar and direct URL parsing.
|
|
17
|
+
- [ ] **Make document parse persistence atomic or recoverable.** References: `src/doc3gpp/services/spec_doc_service.py:277-306`; `src/doc3gpp/storage/repositories/spec_doc_sql.py:114-238`; `src/doc3gpp/services/tdoc_cr_service.py:675-710`. Use a per-document database transaction or unit of work, stage and atomically replace filesystem artifacts, and update search indexes only after durable relational and cache state is committed. Add failure-injection tests for partial TOC/chunk/cache writes and TDoc extraction sidecars.
|
|
18
|
+
- [ ] **Enforce the documented settings source allowlist for dotenv files.** References: `src/doc3gpp/settings/schema.py:58-70`, `:73-97`, `:924-963`. Apply the same filtering to dotenv and file-secret sources, or explicitly document the broader precedence policy. Add tests proving that TOML-only server/MCP settings cannot be injected through `.env` if that restriction remains intended.
|
|
19
|
+
- [ ] **Make vector schema initialization dimension-aware.** References: `src/doc3gpp/storage/db/migrate.py:298-350`, `:409-458`; `src/doc3gpp/services/factory.py:697-715`. Configure or discover embedding dimension before creating vector tables, record the dimension with the index, and support model/dimension changes during rebuild. Add clean-database and rebuild tests using a non-384-dimensional embedder.
|
|
20
|
+
- [ ] **Remove stale auxiliary TDoc rows after confirmed upstream listings.** References: `src/doc3gpp/services/tdoc_file_service.py:29-68`; `src/doc3gpp/storage/repositories/tdoc_file_sql.py:150-163`; `src/doc3gpp/repository/protocols.py:590-598`. Replace rows for affected TDoc IDs in one transaction after a complete successful listing. Do not delete rows after partial or failed network results.
|
|
21
|
+
- [ ] **Verify and resolve the `spec sync --tsg --force` contract.** References: `src/doc3gpp/cli.py:4639-4771`; `src/doc3gpp/services/spec_service.py:84-176`, `:299-307`. The CLI advertises `--force`, but the TSG sweep appears not to pass it to the per-spec skip logic. Confirm intended behavior, then either propagate `force` and test a recently synced spec or correct the help and documentation.
|
|
22
|
+
|
|
23
|
+
## Minor
|
|
24
|
+
|
|
25
|
+
- [ ] **Centralize cache-key validation and enforce root containment on Windows.** References: `src/doc3gpp/storage/cache.py:13-15`; `src/doc3gpp/models/tdoc_cr.py:266-285`; `src/doc3gpp/web/routes/tdocs.py:111-125`, `:416-431`. Reject both slash styles and unsafe traversal, validate persisted cache names, and verify every resolved path remains under the configured cache root.
|
|
26
|
+
- [ ] **Close the shared remote embedder during application shutdown.** References: `src/doc3gpp/web/app.py:49-58`, `:217-222`; `src/doc3gpp/services/embedding/remote_embedder.py:96-97`. Store the embedder in `WebState` or register an explicit shutdown callback that calls `close()`.
|
|
27
|
+
- [ ] **Avoid writing embedding bearer tokens into project TOML by default.** References: `src/doc3gpp/cli.py:5914-5977`; `src/doc3gpp/settings/config_writer.py:77-81`. Prefer environment or secret-file configuration, warn when writing sensitive settings, and use restrictive permissions for user configuration files.
|
|
28
|
+
- [ ] **Make `config set` writes atomic.** Reference: `src/doc3gpp/settings/config_writer.py:77-81`. Use a temporary file, flush/fsync, and `os.replace`, matching the safer `config init` implementation at `src/doc3gpp/cli.py:5841-5853`.
|
|
29
|
+
|
|
30
|
+
## Test And CI Follow-Up
|
|
31
|
+
|
|
32
|
+
- [ ] **Cap xdist workers on Windows and investigate fixture/cache isolation.** `python -m pytest -n 4 -q` passed with `2563 passed, 1 skipped`. `python -m pytest -n auto` used 16 workers and was not reliable: separate runs produced repeated `no such table: meetings` failures in `tests/unit/test_tdoc_cli_fields.py` and a Windows `WinError 1920` multiprocessing failure in `tests/unit/test_cr_parser.py`. The affected CLI test passed serially and under `-n 2`, and the complete `test_tdoc_cli_fields.py` file passed under xdist. Use a platform-aware worker cap such as `-n 4` in scripts/CI, then audit global engine/settings caches and fixture isolation for the missing-table symptom.
|
|
33
|
+
- [ ] **Install or configure Ruff in the development environment.** `ruff check .` could not be run during review because `ruff` was not installed or available on `PATH`.
|
|
34
|
+
|
|
35
|
+
## Suggested Order
|
|
36
|
+
|
|
37
|
+
1. Keep the server loopback-only until authentication, authorization, and XSS protections are in place.
|
|
38
|
+
2. Make job cancellation and worker ownership durable before supporting multiple server processes.
|
|
39
|
+
3. Fix the FTS query boundary and MCP cache reader, with regression tests.
|
|
40
|
+
4. Make document persistence and cache replacement transactional or recoverable.
|
|
41
|
+
5. Make vector schema initialization dimension-aware.
|
|
42
|
+
6. Harden cache-key validation and atomic configuration writes.
|