ai-docs-toolkit 0.4.2__tar.gz → 0.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ai_docs_toolkit-0.4.2/src/ai_docs_toolkit.egg-info → ai_docs_toolkit-0.5.0}/PKG-INFO +36 -6
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/README.md +10 -6
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/packaging/pypi/README.md +35 -5
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/pyproject.toml +2 -1
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/__init__.py +1 -1
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/cli/__init__.py +6 -0
- ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/cli/workspace.py +58 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/changed_files.py +8 -1
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/init.py +30 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/docs/agent-installation.md +91 -1
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/mcp/server.py +24 -3
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/init-command-contract.md +16 -0
- ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/templates/project/.ai-docs/reference/workspace-analysis.md +90 -0
- ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/workspace/manifest-v1.schema.yaml +35 -0
- ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/workspace/repository-v1.schema.yaml +102 -0
- ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/workspace/request-v1.schema.yaml +90 -0
- ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/workspace/result-v1.schema.yaml +586 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/ai-docs.config.yaml +3 -0
- ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/workspace/__init__.py +6 -0
- ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/workspace/analysis.py +277 -0
- ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/workspace/config.py +261 -0
- ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/workspace/result.py +44 -0
- ai_docs_toolkit-0.5.0/src/ai_docs_toolkit/workspace/schemas.py +32 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0/src/ai_docs_toolkit.egg-info}/PKG-INFO +36 -6
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit.egg-info/SOURCES.txt +19 -1
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_bootstrap_templates.py +5 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_cli_baseline.py +2 -2
- ai_docs_toolkit-0.5.0/tests/test_ham_workspace_evaluation.py +83 -0
- ai_docs_toolkit-0.5.0/tests/test_ham_workspace_reverification.py +180 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_init_cli.py +5 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_mcp_server.py +2 -2
- ai_docs_toolkit-0.5.0/tests/test_multi_repository_pilot.py +297 -0
- ai_docs_toolkit-0.5.0/tests/test_workspace.py +303 -0
- ai_docs_toolkit-0.5.0/tests/test_workspace_adapters.py +179 -0
- ai_docs_toolkit-0.5.0/tests/test_workspace_bootstrap.py +72 -0
- ai_docs_toolkit-0.5.0/tests/test_workspace_schemas.py +120 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/LICENSE +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/setup.cfg +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/__main__.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/context/__init__.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/context/markdown_output.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/__init__.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/azure_devops_provider.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/code_links.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/config.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/context.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/doctor.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/file_lookup.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/frontmatter.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/graph.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/impact.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/planning_operations.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/planning_scaffold.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/registry.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/requirement_capture.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/scanner.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/schema_validation.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/section_fix.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/structure_validation.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/core/task_export.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/graph/__init__.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/graph/json_output.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/impact/__init__.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/impact/json_output.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/mcp/__init__.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/mcp/__main__.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/mcp/setup.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/review/__init__.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/review/check.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/review/record.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/examples/skills/release-publication/SKILL.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/documentation-cascade-authoring-skill.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/documentation-change-review-skill.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/incoming-request-model.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/incoming-request-triage-skill.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/planning-document-model.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/reference/toolkit-maintenance-context-routing.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/acceptance.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/architecture-decision.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/asset.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/business-rule.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/contract.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/guide.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/implementation-task.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/index.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/inventory.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/module.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/operation.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/plan-stage.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/plan.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/runbook.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/scenario.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/standalone-task.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/task-registry.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/document-types/test-case.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/schemas/frontmatter.schema.yaml +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/documentation-cascade-authoring/SKILL.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/documentation-change-review/SKILL.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/incoming-request-triage/SKILL.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/index.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/planning-record-generation/SKILL.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/planning-task-execution/SKILL.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/toolkit-consumer-policy/SKILL.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/skills/update-ai-docs-toolkit/SKILL.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/agent-context-architecture-beta-18.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/archive-validation-beta-12.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/cascade-impact-beta-14.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/consumer-migration-hardening.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/decision-visibility-beta-13.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/doctor-filesystem-traversal-beta-19.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/doctor-json-provenance-beta-20.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/documentation-cascade-authoring-beta-23.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/documentation-change-review-beta-21.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/incoming-request-storage-beta-17.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/incoming-request-triage-beta-22.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/migration-note.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/post-publication-checks.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/release-task.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/routing-restoration-beta-15.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/task-retirement-beta-16.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/validation-evidence.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/templates/release/version-change-checklist.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/workflows/documentation-cascade-adoption.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/workflows/plan-stage-workflow.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/.ai-docs/workflows/toolkit-migration-workflow.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/AGENTS.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/templates/project/ai-docs-index.md +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/validation/__init__.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/validation/human.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit.egg-info/dependency_links.txt +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit.egg-info/entry_points.txt +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit.egg-info/requires.txt +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit.egg-info/top_level.txt +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_azure_devops_provider.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_code_links.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_config_loader_and_scanner.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_consumer_matrix.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_context_cli_json.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_context_cli_markdown.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_context_depth.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_context_policy.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_context_selector.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_document_graph.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_document_registry.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_execution_evals.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_frontmatter_parser.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_graph_cli_json.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_impact_analysis.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_impact_cli_human.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_impact_cli_json.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_review_check.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_schema_validation.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_skill_eval_harness.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_structure_validation.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_task_export.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_validate_cli_human.py +0 -0
- {ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/tests/test_validate_cli_json.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ai-docs-toolkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: AI-oriented documentation toolkit.
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Requires-Python: >=3.14
|
|
@@ -33,7 +33,7 @@ The core idea is that documentation should not be a secondary artifact created a
|
|
|
33
33
|
|
|
34
34
|
## Current Status
|
|
35
35
|
|
|
36
|
-
Version 0.
|
|
36
|
+
Version 0.5.0 includes:
|
|
37
37
|
|
|
38
38
|
- schema and structure validation for Markdown documents with YAML front matter;
|
|
39
39
|
- document graph output;
|
|
@@ -45,32 +45,62 @@ Version 0.4.2 includes:
|
|
|
45
45
|
- context bundle output;
|
|
46
46
|
- an executable `ai-docs` CLI;
|
|
47
47
|
- optional local MCP runtime entrypoint.
|
|
48
|
+
- opt-in workspace impact analysis through CLI and MCP, with explicit manifests,
|
|
49
|
+
repository-scoped IDs, public event interfaces and visible partial results.
|
|
48
50
|
|
|
49
51
|
## Installation
|
|
50
52
|
|
|
51
|
-
Install version 0.
|
|
53
|
+
Install version 0.5.0 with Python 3.14 or newer:
|
|
52
54
|
|
|
53
55
|
```bash
|
|
54
|
-
python -m pip install ai-docs-toolkit==0.
|
|
56
|
+
python -m pip install ai-docs-toolkit==0.5.0
|
|
55
57
|
ai-docs --version
|
|
56
58
|
```
|
|
57
59
|
|
|
58
60
|
For ephemeral execution with `uvx`:
|
|
59
61
|
|
|
60
62
|
```bash
|
|
61
|
-
uvx --python 3.14 --from ai-docs-toolkit==0.
|
|
63
|
+
uvx --python 3.14 --from ai-docs-toolkit==0.5.0 ai-docs --version
|
|
62
64
|
```
|
|
63
65
|
|
|
64
66
|
For the optional local MCP runtime:
|
|
65
67
|
|
|
66
68
|
```bash
|
|
67
|
-
python -m pip install "ai-docs-toolkit[mcp]==0.
|
|
69
|
+
python -m pip install "ai-docs-toolkit[mcp]==0.5.0"
|
|
68
70
|
ai-docs-mcp --project-root .
|
|
69
71
|
```
|
|
70
72
|
|
|
71
73
|
For the latest stable release, use `python -m pip install --upgrade ai-docs-toolkit`
|
|
72
74
|
without an exact version pin.
|
|
73
75
|
|
|
76
|
+
## Release 0.5.0
|
|
77
|
+
|
|
78
|
+
`ai-docs workspace impact --workspace ./ai-docs.workspace.yaml --input ./change.yaml --format json`
|
|
79
|
+
analyzes explicitly connected independent repositories. Stable repository IDs
|
|
80
|
+
namespace document IDs; a system repository owns public event contracts and
|
|
81
|
+
producer/consumer roles, while local bindings select implementation modules.
|
|
82
|
+
Modules may be nested within a repository. Cross-repository `related.*` links
|
|
83
|
+
and inferred dependency discovery are not required.
|
|
84
|
+
|
|
85
|
+
The MCP tool is registered only when the server starts with `--workspace`;
|
|
86
|
+
ordinary local commands retain their scope. JSON v1 preserves candidates,
|
|
87
|
+
provenance and diagnostics when a checkout, binding or interface version is
|
|
88
|
+
missing. A partial result is not a clean review, and resolved routing does not
|
|
89
|
+
prove sufficient context or implementation compatibility.
|
|
90
|
+
|
|
91
|
+
Upgrading from 0.4.2 refreshes four managed workspace schemas and the consumer
|
|
92
|
+
reference in both `minimal` and `agent` profiles. Review `init --dry-run` and
|
|
93
|
+
`init --check` with the existing profile, reconcile local modifications, then
|
|
94
|
+
run ordinary `init` without blanket `--force`. Project documents, IDs, local
|
|
95
|
+
policy and configuration remain project-owned. Repository IDs, manifests and
|
|
96
|
+
bindings require manual opt-in; init does not discover neighboring repositories.
|
|
97
|
+
Exact commands and rollback are in “Migration 0.4.2 To 0.5.0” in the packaged
|
|
98
|
+
`ai_docs_toolkit/docs/agent-installation.md`.
|
|
99
|
+
|
|
100
|
+
Verification includes installed CLI/MCP and upgrade matrices plus a bounded
|
|
101
|
+
HAM documentation evaluation. Its accepted result retains native-format
|
|
102
|
+
validation findings; it is not a full HAM migration or service runtime check.
|
|
103
|
+
|
|
74
104
|
## Release 0.4.2
|
|
75
105
|
|
|
76
106
|
The package now declares the MIT license in its metadata and includes the full
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
AI Docs Toolkit is a documentation toolkit for AI-assisted software development.
|
|
4
4
|
|
|
5
|
-
It treats documentation as an engineering interface between humans, AI agents, code, tests and change management.
|
|
5
|
+
It treats documentation as an engineering interface between humans, AI agents, code, tests and change management. Version 0.5.0 adds opt-in workspace impact analysis across independent repositories through CLI and MCP. The package uses the MIT license and requires Python 3.14 or newer.
|
|
6
6
|
|
|
7
7
|
## Purpose
|
|
8
8
|
|
|
@@ -34,6 +34,7 @@ The stable package provides:
|
|
|
34
34
|
- impact analysis;
|
|
35
35
|
- context selection with history filtering, optional body budgets and configurable depth;
|
|
36
36
|
- proportionate agent workflows and optional MCP integration;
|
|
37
|
+
- explicit workspace manifests, repository-scoped document IDs and public event interface routing;
|
|
37
38
|
- CI, pre-commit and agent workflow examples.
|
|
38
39
|
|
|
39
40
|
At this stage the repository contains:
|
|
@@ -83,10 +84,13 @@ pipx install ai-docs-toolkit
|
|
|
83
84
|
uvx --from ai-docs-toolkit ai-docs validate
|
|
84
85
|
```
|
|
85
86
|
|
|
86
|
-
[
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
[Release 0.5.0](ai-docs/reference/releases/0-5-0.md) adds `ai-docs workspace impact`
|
|
88
|
+
and the explicitly enabled MCP workspace tool. Existing repository-local commands
|
|
89
|
+
keep their scope. See the [0.4.2 → 0.5.0 migration guide](src/ai_docs_toolkit/docs/agent-installation.md#migration-042-to-050)
|
|
90
|
+
for the managed schema/reference refresh in both init profiles and manual opt-in.
|
|
91
|
+
Registry availability is shown on [Public PyPI](https://pypi.org/project/ai-docs-toolkit/).
|
|
92
|
+
If upgrading from 0.4.1, also read the
|
|
93
|
+
[0.4.1 → 0.4.2 upgrade note](src/ai_docs_toolkit/docs/agent-installation.md#migration-041-to-042).
|
|
90
94
|
If upgrading from 0.4.0, also follow the
|
|
91
95
|
[0.4.0 → 0.4.1 migration guide](src/ai_docs_toolkit/docs/agent-installation.md#migration-040-to-041).
|
|
92
96
|
That patch required no schema, configuration or managed-template content migration;
|
|
@@ -270,7 +274,7 @@ The MVP does not aim to provide:
|
|
|
270
274
|
- full IDE plugins;
|
|
271
275
|
- hosted services;
|
|
272
276
|
- database-backed graph storage;
|
|
273
|
-
- cross-repository dependency graphs.
|
|
277
|
+
- inferred or transitive cross-repository dependency graphs beyond explicit public interface bindings.
|
|
274
278
|
|
|
275
279
|
## License
|
|
276
280
|
|
|
@@ -16,7 +16,7 @@ The core idea is that documentation should not be a secondary artifact created a
|
|
|
16
16
|
|
|
17
17
|
## Current Status
|
|
18
18
|
|
|
19
|
-
Version 0.
|
|
19
|
+
Version 0.5.0 includes:
|
|
20
20
|
|
|
21
21
|
- schema and structure validation for Markdown documents with YAML front matter;
|
|
22
22
|
- document graph output;
|
|
@@ -28,32 +28,62 @@ Version 0.4.2 includes:
|
|
|
28
28
|
- context bundle output;
|
|
29
29
|
- an executable `ai-docs` CLI;
|
|
30
30
|
- optional local MCP runtime entrypoint.
|
|
31
|
+
- opt-in workspace impact analysis through CLI and MCP, with explicit manifests,
|
|
32
|
+
repository-scoped IDs, public event interfaces and visible partial results.
|
|
31
33
|
|
|
32
34
|
## Installation
|
|
33
35
|
|
|
34
|
-
Install version 0.
|
|
36
|
+
Install version 0.5.0 with Python 3.14 or newer:
|
|
35
37
|
|
|
36
38
|
```bash
|
|
37
|
-
python -m pip install ai-docs-toolkit==0.
|
|
39
|
+
python -m pip install ai-docs-toolkit==0.5.0
|
|
38
40
|
ai-docs --version
|
|
39
41
|
```
|
|
40
42
|
|
|
41
43
|
For ephemeral execution with `uvx`:
|
|
42
44
|
|
|
43
45
|
```bash
|
|
44
|
-
uvx --python 3.14 --from ai-docs-toolkit==0.
|
|
46
|
+
uvx --python 3.14 --from ai-docs-toolkit==0.5.0 ai-docs --version
|
|
45
47
|
```
|
|
46
48
|
|
|
47
49
|
For the optional local MCP runtime:
|
|
48
50
|
|
|
49
51
|
```bash
|
|
50
|
-
python -m pip install "ai-docs-toolkit[mcp]==0.
|
|
52
|
+
python -m pip install "ai-docs-toolkit[mcp]==0.5.0"
|
|
51
53
|
ai-docs-mcp --project-root .
|
|
52
54
|
```
|
|
53
55
|
|
|
54
56
|
For the latest stable release, use `python -m pip install --upgrade ai-docs-toolkit`
|
|
55
57
|
without an exact version pin.
|
|
56
58
|
|
|
59
|
+
## Release 0.5.0
|
|
60
|
+
|
|
61
|
+
`ai-docs workspace impact --workspace ./ai-docs.workspace.yaml --input ./change.yaml --format json`
|
|
62
|
+
analyzes explicitly connected independent repositories. Stable repository IDs
|
|
63
|
+
namespace document IDs; a system repository owns public event contracts and
|
|
64
|
+
producer/consumer roles, while local bindings select implementation modules.
|
|
65
|
+
Modules may be nested within a repository. Cross-repository `related.*` links
|
|
66
|
+
and inferred dependency discovery are not required.
|
|
67
|
+
|
|
68
|
+
The MCP tool is registered only when the server starts with `--workspace`;
|
|
69
|
+
ordinary local commands retain their scope. JSON v1 preserves candidates,
|
|
70
|
+
provenance and diagnostics when a checkout, binding or interface version is
|
|
71
|
+
missing. A partial result is not a clean review, and resolved routing does not
|
|
72
|
+
prove sufficient context or implementation compatibility.
|
|
73
|
+
|
|
74
|
+
Upgrading from 0.4.2 refreshes four managed workspace schemas and the consumer
|
|
75
|
+
reference in both `minimal` and `agent` profiles. Review `init --dry-run` and
|
|
76
|
+
`init --check` with the existing profile, reconcile local modifications, then
|
|
77
|
+
run ordinary `init` without blanket `--force`. Project documents, IDs, local
|
|
78
|
+
policy and configuration remain project-owned. Repository IDs, manifests and
|
|
79
|
+
bindings require manual opt-in; init does not discover neighboring repositories.
|
|
80
|
+
Exact commands and rollback are in “Migration 0.4.2 To 0.5.0” in the packaged
|
|
81
|
+
`ai_docs_toolkit/docs/agent-installation.md`.
|
|
82
|
+
|
|
83
|
+
Verification includes installed CLI/MCP and upgrade matrices plus a bounded
|
|
84
|
+
HAM documentation evaluation. Its accepted result retains native-format
|
|
85
|
+
validation findings; it is not a full HAM migration or service runtime check.
|
|
86
|
+
|
|
57
87
|
## Release 0.4.2
|
|
58
88
|
|
|
59
89
|
The package now declares the MIT license in its metadata and includes the full
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ai-docs-toolkit"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.5.0"
|
|
8
8
|
description = "AI-oriented documentation toolkit."
|
|
9
9
|
readme = "packaging/pypi/README.md"
|
|
10
10
|
requires-python = ">=3.14"
|
|
@@ -41,6 +41,7 @@ ai_docs_toolkit = [
|
|
|
41
41
|
"templates/project/.ai-docs/reference/*.md",
|
|
42
42
|
"templates/project/.ai-docs/schemas/*.schema.yaml",
|
|
43
43
|
"templates/project/.ai-docs/schemas/document-types/*.schema.yaml",
|
|
44
|
+
"templates/project/.ai-docs/schemas/workspace/*-v1.schema.yaml",
|
|
44
45
|
"templates/project/.ai-docs/templates/release/*.md",
|
|
45
46
|
"templates/project/.ai-docs/workflows/*.md",
|
|
46
47
|
]
|
|
@@ -91,6 +91,7 @@ def _help_text() -> str:
|
|
|
91
91
|
" ai-docs tasks push --provider azure-devops (--task TASK-ID | --stage STAGE-ID | --plan PLAN-ID) --organization ORG --project PROJECT [--dry-run] [--write-back] [--format json]",
|
|
92
92
|
" ai-docs graph --format json [--type TYPE] [--module MODULE] [--id ID]",
|
|
93
93
|
" ai-docs impact (--id ID | --changed [--base REF]) [--format json]",
|
|
94
|
+
" ai-docs workspace impact --workspace FILE --input FILE [--format human|json]",
|
|
94
95
|
" ai-docs code-links-check FILE... [--format human|json|--json]",
|
|
95
96
|
" ai-docs review-check RECORD [--record N] [--format json|--json]",
|
|
96
97
|
" ai-docs context (--id ID | --module MODULE | --feature FEATURE | --changed) [--format json] [--history exclude|include|legacy] [--body-budget-bytes N] [--depth N]",
|
|
@@ -110,6 +111,11 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
110
111
|
|
|
111
112
|
args = sys.argv[1:]
|
|
112
113
|
|
|
114
|
+
if args and args[0] == "workspace":
|
|
115
|
+
from .workspace import main as workspace_main
|
|
116
|
+
|
|
117
|
+
return workspace_main(args[1:])
|
|
118
|
+
|
|
113
119
|
if not args or "--help" in args or "-h" in args:
|
|
114
120
|
print(_help_text())
|
|
115
121
|
return 0
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""Explicit workspace CLI adapter; domain results come from the shared service."""
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import sys
|
|
5
|
+
|
|
6
|
+
from ai_docs_toolkit.workspace import analyze_workspace_file, format_workspace_json
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class UsageError(ValueError):
|
|
10
|
+
pass
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class WorkspaceParser(argparse.ArgumentParser):
|
|
14
|
+
def error(self, message):
|
|
15
|
+
raise UsageError(message)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def main(argv: list[str]) -> int:
|
|
19
|
+
parser = WorkspaceParser(prog="ai-docs workspace impact", allow_abbrev=False)
|
|
20
|
+
parser.add_argument("--workspace", required=True, help="Explicit workspace manifest path.")
|
|
21
|
+
parser.add_argument("--input", required=True, help="Saved JSON/YAML request v1 path.")
|
|
22
|
+
parser.add_argument("--format", choices=("human", "json"), default="human")
|
|
23
|
+
try:
|
|
24
|
+
if not argv or argv[0] != "impact":
|
|
25
|
+
raise UsageError("expected 'workspace impact'")
|
|
26
|
+
# Duplicate selectors are ambiguous even if argparse would accept the last value.
|
|
27
|
+
options = [arg.split("=", 1)[0] for arg in argv[1:] if arg.startswith("--")]
|
|
28
|
+
if len(options) != len(set(options)):
|
|
29
|
+
raise UsageError("duplicate option")
|
|
30
|
+
args = parser.parse_args(argv[1:])
|
|
31
|
+
except UsageError as exc:
|
|
32
|
+
parser.print_usage(sys.stderr)
|
|
33
|
+
print(f"{parser.prog}: error: {exc}", file=sys.stderr)
|
|
34
|
+
return 3
|
|
35
|
+
except SystemExit as exc:
|
|
36
|
+
return int(exc.code)
|
|
37
|
+
result = analyze_workspace_file(args.workspace, args.input)
|
|
38
|
+
print(format_workspace_json(result) if args.format == "json" else format_human(result), end="")
|
|
39
|
+
return result["exit_code"]
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def format_human(result: dict) -> str:
|
|
43
|
+
lines = [f"Workspace routing: {result['routing_status']} (exit {result['exit_code']})",
|
|
44
|
+
f"Sources: {len(result['sources'])}; candidates: {len(result['candidates'])}"]
|
|
45
|
+
for kind in ("sources", "candidates"):
|
|
46
|
+
for document in result[kind]:
|
|
47
|
+
lines.append(f"{kind}: {document['repository_id']}:{document['document_id']}")
|
|
48
|
+
for gap in result["gaps"]:
|
|
49
|
+
lines.append(f"Gap {gap['code']} [{gap['repository_id']}]: {gap['message']}")
|
|
50
|
+
for review in result["reviews"]:
|
|
51
|
+
if review["system_review_required"]:
|
|
52
|
+
lines.append(f"System review required: {review['repository_id']} ({review['interface_impact']})")
|
|
53
|
+
for context in result["context"]:
|
|
54
|
+
for field in ("warnings", "gaps", "excluded", "historical"):
|
|
55
|
+
if context.get(field):
|
|
56
|
+
lines.append(f"Context {context['repository_id']} {field}: {len(context[field])}")
|
|
57
|
+
lines.append("Routing completion does not mean review completion or sufficient context. Use --format json for evidence.")
|
|
58
|
+
return "\n".join(lines) + "\n"
|
|
@@ -49,9 +49,15 @@ def read_git_changed_files(
|
|
|
49
49
|
*,
|
|
50
50
|
unavailable_rule_id: str,
|
|
51
51
|
base_ref: str | None = None,
|
|
52
|
+
git_config: tuple[str, ...] = (),
|
|
52
53
|
) -> GitChangedFilesResult:
|
|
54
|
+
"""Discover local paths; optional process config lets isolated callers disable hooks.
|
|
55
|
+
|
|
56
|
+
Workspace analysis passes `-c core.fsmonitor=false` so reading a checkout
|
|
57
|
+
cannot execute its monitor program. Existing callers retain their defaults.
|
|
58
|
+
"""
|
|
53
59
|
process = subprocess.run(
|
|
54
|
-
["git", "status", "--porcelain", "-z", "--untracked-files=all"],
|
|
60
|
+
["git", *git_config, "status", "--porcelain", "-z", "--untracked-files=all"],
|
|
55
61
|
cwd=root,
|
|
56
62
|
capture_output=True,
|
|
57
63
|
text=True,
|
|
@@ -76,6 +82,7 @@ def read_git_changed_files(
|
|
|
76
82
|
diff_process = subprocess.run(
|
|
77
83
|
[
|
|
78
84
|
"git",
|
|
85
|
+
*git_config,
|
|
79
86
|
"diff",
|
|
80
87
|
"--name-only",
|
|
81
88
|
"-z",
|
|
@@ -440,6 +440,36 @@ BOOTSTRAP_TEMPLATES = (
|
|
|
440
440
|
profiles=frozenset({"agent"}),
|
|
441
441
|
overwrite_existing=True,
|
|
442
442
|
),
|
|
443
|
+
BootstrapTemplate(
|
|
444
|
+
source_name=".ai-docs/schemas/workspace/manifest-v1.schema.yaml",
|
|
445
|
+
target_path=".ai-docs/schemas/workspace/manifest-v1.schema.yaml",
|
|
446
|
+
profiles=frozenset({"minimal", "agent"}),
|
|
447
|
+
overwrite_existing=True,
|
|
448
|
+
),
|
|
449
|
+
BootstrapTemplate(
|
|
450
|
+
source_name=".ai-docs/schemas/workspace/request-v1.schema.yaml",
|
|
451
|
+
target_path=".ai-docs/schemas/workspace/request-v1.schema.yaml",
|
|
452
|
+
profiles=frozenset({"minimal", "agent"}),
|
|
453
|
+
overwrite_existing=True,
|
|
454
|
+
),
|
|
455
|
+
BootstrapTemplate(
|
|
456
|
+
source_name=".ai-docs/schemas/workspace/repository-v1.schema.yaml",
|
|
457
|
+
target_path=".ai-docs/schemas/workspace/repository-v1.schema.yaml",
|
|
458
|
+
profiles=frozenset({"minimal", "agent"}),
|
|
459
|
+
overwrite_existing=True,
|
|
460
|
+
),
|
|
461
|
+
BootstrapTemplate(
|
|
462
|
+
source_name=".ai-docs/schemas/workspace/result-v1.schema.yaml",
|
|
463
|
+
target_path=".ai-docs/schemas/workspace/result-v1.schema.yaml",
|
|
464
|
+
profiles=frozenset({"minimal", "agent"}),
|
|
465
|
+
overwrite_existing=True,
|
|
466
|
+
),
|
|
467
|
+
BootstrapTemplate(
|
|
468
|
+
source_name=".ai-docs/reference/workspace-analysis.md",
|
|
469
|
+
target_path=".ai-docs/reference/workspace-analysis.md",
|
|
470
|
+
profiles=frozenset({"minimal", "agent"}),
|
|
471
|
+
overwrite_existing=True,
|
|
472
|
+
),
|
|
443
473
|
)
|
|
444
474
|
|
|
445
475
|
|
{ai_docs_toolkit-0.4.2 → ai_docs_toolkit-0.5.0}/src/ai_docs_toolkit/docs/agent-installation.md
RENAMED
|
@@ -47,7 +47,7 @@ ai-docs --version
|
|
|
47
47
|
Pinned install:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
python -m pip install "ai-docs-toolkit==0.
|
|
50
|
+
python -m pip install "ai-docs-toolkit==0.5.0"
|
|
51
51
|
ai-docs --version
|
|
52
52
|
```
|
|
53
53
|
|
|
@@ -89,6 +89,96 @@ bulk task deletion is required. Detailed migration and rollback guidance is in
|
|
|
89
89
|
the installed `.ai-docs/reference/planning-document-model.md`, under
|
|
90
90
|
“Consumer Migration: Proportionate Workflow”.
|
|
91
91
|
|
|
92
|
+
## Migration 0.4.2 To 0.5.0
|
|
93
|
+
|
|
94
|
+
From: `0.4.2`. To: `0.5.0`. Python 3.14+ remains required. This minor release
|
|
95
|
+
adds opt-in workspace impact analysis through CLI/MCP and four workspace v1
|
|
96
|
+
schemas. Ordinary local graph, impact and context commands keep their scope.
|
|
97
|
+
No product-document or service-runtime migration is performed by the package.
|
|
98
|
+
|
|
99
|
+
Before upgrading, record the package version, Git state, hashes of project-owned
|
|
100
|
+
files and the results of independent project checks. Preserve saved review rounds:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
ai-docs --version
|
|
104
|
+
ai-docs validate --json
|
|
105
|
+
ai-docs doctor --format json
|
|
106
|
+
# Use the project's existing profile, either agent or minimal:
|
|
107
|
+
ai-docs init --profile agent --dry-run
|
|
108
|
+
ai-docs init --profile agent --check
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
After the version is available on Public PyPI, upgrade in the approved environment
|
|
112
|
+
and update the project's version pin. Choose the applicable installation method:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
python -m pip install --upgrade "ai-docs-toolkit==0.5.0"
|
|
116
|
+
# MCP users install the complete extra instead:
|
|
117
|
+
python -m pip install --upgrade "ai-docs-toolkit[mcp]==0.5.0"
|
|
118
|
+
pipx install --force --python python3.14 "ai-docs-toolkit==0.5.0"
|
|
119
|
+
uvx --python 3.14 --from ai-docs-toolkit==0.5.0 ai-docs --version
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Reconnect long-lived MCP clients. Inspect `init --dry-run` and `--check` again
|
|
123
|
+
using the same profile. Both profiles add `.ai-docs/schemas/workspace/` with
|
|
124
|
+
`repository-v1.schema.yaml`, `manifest-v1.schema.yaml`, `request-v1.schema.yaml`
|
|
125
|
+
and `result-v1.schema.yaml`, plus `.ai-docs/reference/workspace-analysis.md`.
|
|
126
|
+
Known unchanged managed files can be refreshed by ordinary init:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
ai-docs init --profile agent --dry-run
|
|
130
|
+
ai-docs init --profile agent --check
|
|
131
|
+
# After reviewing the proposed managed-file changes:
|
|
132
|
+
ai-docs init --profile agent
|
|
133
|
+
ai-docs init --profile agent --check
|
|
134
|
+
ai-docs --version
|
|
135
|
+
ai-docs validate --json
|
|
136
|
+
ai-docs doctor --format json
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Substitute `--profile minimal` throughout for an existing minimal project.
|
|
140
|
+
`locally_modified` or `provenance_missing` blocks ordinary init before any
|
|
141
|
+
upgrade writes. Reconcile those files and their provenance manually before
|
|
142
|
+
retrying; do not use blanket `--force` as a migration shortcut. An initial
|
|
143
|
+
nonzero `init --check` can describe the expected pending refresh; after applying
|
|
144
|
+
reviewed updates it must be clean and a repeat init must be idempotent.
|
|
145
|
+
|
|
146
|
+
Preserve `ai-docs.config.yaml`, existing AGENTS.md and index documents,
|
|
147
|
+
`.ai-docs/local/**`, product documents, IDs, aliases, links, task/review history
|
|
148
|
+
and project-owned workspace manifests. Managed provenance is recorded in
|
|
149
|
+
`.ai-docs/managed-files.json`. Compare project-owned hashes after the upgrade;
|
|
150
|
+
stop for unexpected rewrites or new unexplained validation/doctor findings.
|
|
151
|
+
Keep all independent project checks. A toolkit update does not make an
|
|
152
|
+
unconfigured or partially adapted documentation corpus valid automatically.
|
|
153
|
+
|
|
154
|
+
Workspace use is optional. To enable it, follow the installed
|
|
155
|
+
`.ai-docs/reference/workspace-analysis.md`: manually assign stable repository
|
|
156
|
+
IDs, configure the system public event interfaces and local module bindings,
|
|
157
|
+
then create a project-owned manifest and request. Init does not create them.
|
|
158
|
+
Use explicit CLI paths, or add startup `--workspace` to the MCP server:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
ai-docs workspace impact --workspace ./ai-docs.workspace.yaml --input ./change.yaml --format json
|
|
162
|
+
ai-docs-mcp --project-root . --workspace ./ai-docs.workspace.yaml
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Verify the selected candidates and review context against the intended change.
|
|
166
|
+
Exit 1/`partial` retains available candidates and reports gaps; it is not zero
|
|
167
|
+
impact. Exit 0/`resolved` does not complete semantic review or run service tests.
|
|
168
|
+
MCP exposes the workspace tool only after explicit server startup opt-in;
|
|
169
|
+
clients cannot override the manifest path per call. Separate local commands
|
|
170
|
+
remain usable without neighboring checkouts.
|
|
171
|
+
|
|
172
|
+
To disable workspace analysis, remove the workspace invocation from automation
|
|
173
|
+
and its startup argument from MCP, then restart the server. For rollback,
|
|
174
|
+
preserve the current evidence, restore the previous approved pin and reinstall
|
|
175
|
+
`ai-docs-toolkit==0.4.2` (or the complete MCP extra) in the supported environment.
|
|
176
|
+
Restore only this upgrade's reviewed managed-file/provenance changes from Git,
|
|
177
|
+
preserving unrelated project work, and repeat local checks. Version 0.4.2 has
|
|
178
|
+
no workspace command. Package rollback does not rewrite project files or undo
|
|
179
|
+
manual opt-in metadata; retain that metadata and history unless separately
|
|
180
|
+
authorized to change them.
|
|
181
|
+
|
|
92
182
|
## Migration 0.4.1 To 0.4.2
|
|
93
183
|
|
|
94
184
|
From: `0.4.1`. To: `0.4.2`. Install the target after it appears on Public
|
|
@@ -30,6 +30,7 @@ SERVER_NAME = "AI Docs Toolkit"
|
|
|
30
30
|
class McpRuntimeArgs:
|
|
31
31
|
project_root: Path
|
|
32
32
|
config_file: str
|
|
33
|
+
workspace: str | None = None
|
|
33
34
|
|
|
34
35
|
|
|
35
36
|
def parse_args(argv: list[str] | None = None) -> McpRuntimeArgs:
|
|
@@ -47,10 +48,12 @@ def parse_args(argv: list[str] | None = None) -> McpRuntimeArgs:
|
|
|
47
48
|
default=DEFAULT_CONFIG_FILE,
|
|
48
49
|
help=f"Project config file relative to the project root. Defaults to {DEFAULT_CONFIG_FILE}.",
|
|
49
50
|
)
|
|
51
|
+
parser.add_argument("--workspace", help="Opt in to a workspace manifest, relative to project root.")
|
|
50
52
|
parsed = parser.parse_args(argv)
|
|
51
53
|
return McpRuntimeArgs(
|
|
52
54
|
project_root=Path(parsed.project_root),
|
|
53
55
|
config_file=parsed.config,
|
|
56
|
+
workspace=parsed.workspace,
|
|
54
57
|
)
|
|
55
58
|
|
|
56
59
|
|
|
@@ -186,15 +189,33 @@ def build_server(
|
|
|
186
189
|
*,
|
|
187
190
|
project_root: str | Path = ".",
|
|
188
191
|
config_file: str = DEFAULT_CONFIG_FILE,
|
|
192
|
+
workspace: str | Path | None = None,
|
|
189
193
|
mcp_server_factory: Callable[..., Any] | None = None,
|
|
190
194
|
) -> Any:
|
|
191
195
|
server_factory = mcp_server_factory or _load_mcp_server()
|
|
192
196
|
server = server_factory(SERVER_NAME, version=__version__)
|
|
193
197
|
default_project_root = project_root
|
|
198
|
+
# Capture an absolute startup choice; calls cannot override it or change it via cwd.
|
|
199
|
+
workspace_path = (Path(project_root) / workspace).resolve() if workspace is not None else None
|
|
200
|
+
|
|
201
|
+
def runtime_info() -> dict[str, Any]:
|
|
202
|
+
info = server_info(project_root=project_root, config_file=config_file)
|
|
203
|
+
if workspace_path is not None:
|
|
204
|
+
info["workspace"] = {"path": str(workspace_path),
|
|
205
|
+
"request_schema_versions": [1], "result_schema_versions": [1]}
|
|
206
|
+
return info
|
|
194
207
|
|
|
195
208
|
@server.tool(name="ai_docs_server_info")
|
|
196
209
|
def ai_docs_server_info() -> dict[str, Any]:
|
|
197
|
-
return
|
|
210
|
+
return runtime_info()
|
|
211
|
+
|
|
212
|
+
if workspace_path is not None:
|
|
213
|
+
from ai_docs_toolkit.workspace import analyze_workspace
|
|
214
|
+
|
|
215
|
+
@server.tool(name="ai_docs_workspace_impact")
|
|
216
|
+
def ai_docs_workspace_impact(request: dict[str, Any]) -> dict[str, Any]:
|
|
217
|
+
"""Analyze request v1 against the manifest selected at server startup."""
|
|
218
|
+
return analyze_workspace(workspace_path, request)
|
|
198
219
|
|
|
199
220
|
@server.tool(name="ai_docs_validate")
|
|
200
221
|
def ai_docs_validate(project_root: str | None = None) -> dict[str, Any]:
|
|
@@ -248,7 +269,7 @@ def build_server(
|
|
|
248
269
|
|
|
249
270
|
@server.resource("ai-docs://config")
|
|
250
271
|
def ai_docs_config() -> dict[str, Any]:
|
|
251
|
-
return
|
|
272
|
+
return runtime_info()
|
|
252
273
|
|
|
253
274
|
@server.resource("ai-docs://graph")
|
|
254
275
|
def ai_docs_graph_resource() -> dict[str, Any]:
|
|
@@ -283,7 +304,7 @@ def build_server(
|
|
|
283
304
|
|
|
284
305
|
def main(argv: list[str] | None = None) -> int:
|
|
285
306
|
args = parse_args(argv)
|
|
286
|
-
server = build_server(project_root=args.project_root, config_file=args.config_file)
|
|
307
|
+
server = build_server(project_root=args.project_root, config_file=args.config_file, workspace=args.workspace)
|
|
287
308
|
server.run()
|
|
288
309
|
return 0
|
|
289
310
|
|
|
@@ -114,6 +114,11 @@ MVP target paths are repository-root relative:
|
|
|
114
114
|
| `.ai-docs/schemas/document-types/runbook.schema.yaml` | `minimal`, `agent` | Create or overwrite from toolkit distribution. |
|
|
115
115
|
| `.ai-docs/schemas/document-types/scenario.schema.yaml` | `minimal`, `agent` | Create or overwrite from toolkit distribution. |
|
|
116
116
|
| `.ai-docs/schemas/document-types/test-case.schema.yaml` | `minimal`, `agent` | Create or overwrite from toolkit distribution. |
|
|
117
|
+
| `.ai-docs/schemas/workspace/manifest-v1.schema.yaml` | `minimal`, `agent` | Managed schema v1; existing provenance/preflight rules apply. |
|
|
118
|
+
| `.ai-docs/schemas/workspace/request-v1.schema.yaml` | `minimal`, `agent` | Managed schema v1; existing provenance/preflight rules apply. |
|
|
119
|
+
| `.ai-docs/schemas/workspace/repository-v1.schema.yaml` | `minimal`, `agent` | Managed schema v1; existing provenance/preflight rules apply. |
|
|
120
|
+
| `.ai-docs/schemas/workspace/result-v1.schema.yaml` | `minimal`, `agent` | Managed schema v1; existing provenance/preflight rules apply. |
|
|
121
|
+
| `.ai-docs/reference/workspace-analysis.md` | `minimal`, `agent` | Managed opt-in and upgrade guidance; never creates a manifest. |
|
|
117
122
|
| `.ai-docs/skills/index.md` | `agent` | Create or overwrite from toolkit distribution during planning workflow migration. |
|
|
118
123
|
| `.ai-docs/skills/planning-task-execution/SKILL.md` | `agent` | Create or overwrite from toolkit distribution during planning workflow migration. |
|
|
119
124
|
| `.ai-docs/skills/planning-record-generation/SKILL.md` | `agent` | Create or overwrite from toolkit distribution during planning workflow migration. |
|
|
@@ -242,6 +247,17 @@ Required assets must be available from the installed distribution.
|
|
|
242
247
|
|
|
243
248
|
## Validation Contract
|
|
244
249
|
|
|
250
|
+
### Workspace opt-in в source
|
|
251
|
+
|
|
252
|
+
[Opt-in contract and upgrade guidance](workspace-analysis.md) describe the optional extension. Существующие профили `minimal`/`agent` сохраняются. `init`
|
|
253
|
+
не назначает repository ID, не ищет соседей и не создаёт workspace manifest.
|
|
254
|
+
Project-owned config, workspace, AGENTS/index/local policy и docs сохраняются;
|
|
255
|
+
managed-file preflight/provenance не ослабляются. Четыре schemas v1 и
|
|
256
|
+
[opt-in/migration guidance](workspace-analysis.md) включены в оба профиля
|
|
257
|
+
как managed artifacts. Manifest не является managed target. Runtime берёт
|
|
258
|
+
схемы из пакета, а не из изменяемой consumer-копии. Опубликованный 0.4.2
|
|
259
|
+
этого расширения не содержит.
|
|
260
|
+
|
|
245
261
|
Downstream implementation and test tasks must verify:
|
|
246
262
|
- empty repository bootstrap for `minimal`;
|
|
247
263
|
- empty repository bootstrap for `agent`;
|