agent-wiki-cli 1.2.0__tar.gz → 1.3.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.
- {agent_wiki_cli-1.2.0/src/agent_wiki_cli.egg-info → agent_wiki_cli-1.3.0}/PKG-INFO +49 -4
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/README.md +47 -3
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/pyproject.toml +4 -1
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0/src/agent_wiki_cli.egg-info}/PKG-INFO +49 -4
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/agent_wiki_cli.egg-info/SOURCES.txt +12 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/agent_wiki_cli.egg-info/requires.txt +1 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/api.py +2 -1
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/cli.py +113 -3
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/bootstrap_cmd.py +531 -57
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/extract_cmd.py +32 -3
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/init_cmd.py +40 -2
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/migrate_cmd.py +10 -6
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/review_cmd.py +6 -1
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/skills_cmd.py +19 -2
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/status_cmd.py +24 -2
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/sync_cmd.py +1094 -76
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/uninstall_cmd.py +60 -1
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/upgrade_cmd.py +56 -3
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/config.py +1 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/__init__.py +9 -0
- agent_wiki_cli-1.3.0/src/llm_wiki_cli/extractors/fastapi_contracts.py +495 -0
- agent_wiki_cli-1.3.0/src/llm_wiki_cli/extractors/python_contracts.py +798 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/python_extractor.py +135 -97
- agent_wiki_cli-1.3.0/src/llm_wiki_cli/services/api_contracts.py +2110 -0
- agent_wiki_cli-1.3.0/src/llm_wiki_cli/services/contracts.py +71 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/inventory_cache.py +3 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/mcp_server.py +1 -1
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/obsidian.py +1 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/paths.py +30 -1
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/schema.py +72 -170
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/site_export.py +1 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/skills.py +91 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/team.py +101 -13
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/wiki_surface.py +9 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/wiki-bootstrap/SKILL.md +5 -1
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/wiki-bootstrap/reference.md +4 -3
- agent_wiki_cli-1.3.0/src/llm_wiki_cli/skills/wiki-reference/SKILL.md +25 -0
- agent_wiki_cli-1.3.0/src/llm_wiki_cli/skills/wiki-reference/reference.md +169 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/wiki-sync/SKILL.md +16 -1
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/wiki-sync/reference.md +9 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_api.py +24 -0
- agent_wiki_cli-1.3.0/tests/test_api_contracts.py +755 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_bootstrap.py +198 -0
- agent_wiki_cli-1.3.0/tests/test_bootstrap_api_contracts.py +271 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_extract.py +283 -2
- agent_wiki_cli-1.3.0/tests/test_extract_api_contracts.py +241 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_extractor_inventory_contracts.py +34 -1
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_init.py +45 -0
- agent_wiki_cli-1.3.0/tests/test_install.py +170 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_mcp.py +14 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_migrate.py +10 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_navigation_layouts.py +1 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_obsidian.py +13 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_package_metadata.py +1 -1
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_phase4_quality.py +1 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_schema.py +29 -50
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_site_export.py +20 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_status.py +33 -1
- agent_wiki_cli-1.3.0/tests/test_surface_initialization.py +625 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_sync.py +47 -0
- agent_wiki_cli-1.3.0/tests/test_sync_api_contracts.py +411 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_uninstall.py +40 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_upgrade.py +82 -2
- agent_wiki_cli-1.3.0/tests/test_wiki_reference_skill.py +171 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_wiki_surface.py +12 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_wiki_surface_index.py +4 -3
- agent_wiki_cli-1.2.0/src/llm_wiki_cli/services/contracts.py +0 -33
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/LICENSE +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/MANIFEST.in +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/examples/plugins/m4-documentation-hooks/detectors.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/examples/plugins/m4-documentation-hooks/llm-wiki-plugin.json +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/examples/plugins/m4-documentation-hooks/styles.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/setup.cfg +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/agent_wiki_cli.egg-info/dependency_links.txt +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/agent_wiki_cli.egg-info/entry_points.txt +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/agent_wiki_cli.egg-info/top_level.txt +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/__init__.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/__init__.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/bump_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/ci_check_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/context_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/generate_prompt_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/hook_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/install_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/lint_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/mcp_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/metrics_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/obsidian_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/plugins_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/prepare_extractors_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/release_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/site_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/team_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/commands/trigger_cmd.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/examples/plugins/m4-documentation-hooks/detectors.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/examples/plugins/m4-documentation-hooks/llm-wiki-plugin.json +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/examples/plugins/m4-documentation-hooks/styles.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/common.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/go_extractor.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/go_scripts/go.mod +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/go_scripts/main.go +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/haskell_extractor.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/haskell_scripts/Inventory.hs +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/haskell_scripts/Json.hs +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/haskell_scripts/Main.hs +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/haskell_scripts/Parser.hs +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/haskell_scripts/Paths.hs +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/rust_extractor.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/rust_scripts/Cargo.lock +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/rust_scripts/Cargo.toml +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/rust_scripts/src/main.rs +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/ts_extractor.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/ts_scripts/extract.js +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/extractors/ts_scripts/package.json +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/__init__.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/circuit_breaker.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/data_flow.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/dependencies.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/diagrams.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/documentation_queries.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/entrypoints.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/extractor_helpers.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/imports.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/infrastructure_inventory.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/io.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/lockfile.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/metrics.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/module_maps.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/packages.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/plugin_samples.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/plugins.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/relationships.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/secure_file.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/site_html_check.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/source_snapshot.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/versioning.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/wiki_media.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/services/wiki_surface_index.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/attack-surface/SKILL.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/attack-surface/reference.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/dep-audit/SKILL.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/dep-audit/reference.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/dep-vuln-triage/SKILL.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/dep-vuln-triage/reference.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/doc-hub/SKILL.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/doc-hub/reference.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/doc-review/SKILL.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/doc-review/reference.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/impact-analysis/SKILL.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/impact-analysis/reference.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/infra-review/SKILL.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/infra-review/reference.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/onboarding-guide/SKILL.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/onboarding-guide/reference.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/publish-docs/SKILL.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/publish-docs/reference.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/usage-examples/SKILL.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/usage-examples/reference.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/user-docs-author/SKILL.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/src/llm_wiki_cli/skills/user-docs-author/reference.md +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_bump.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_ci_check.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_circuit_breaker.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_cli.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_config.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_context.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_data_flow.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_dependencies.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_dependencies_external.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_diagrams.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_docker_bootstrap.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_docker_extract.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_docker_lint.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_documentation_queries.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_e2e.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_entrypoints.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_extractor_helpers.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_generate_prompt.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_go_extract.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_haskell_extract.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_hook.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_imports.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_infrastructure_inventory.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_inventory_cache.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_io.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_lint.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_lockfile.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_m4_dogfood.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_m4_plugin_sample.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_metrics.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_module_maps.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_multilanguage_wiki.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_packages.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_paths.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_plugins.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_relationships.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_release.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_rust_extract.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_secure_file.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_skills.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_source_snapshot.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_team.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_trigger.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_ts_extract.py +0 -0
- {agent_wiki_cli-1.2.0 → agent_wiki_cli-1.3.0}/tests/test_versioning.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-wiki-cli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: CLI tool to maintain hybrid LLM Wikis for multi-language projects.
|
|
5
5
|
Author-email: Denis Sivagin <denissvgn@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -17,6 +17,7 @@ Classifier: Topic :: Software Development :: Documentation
|
|
|
17
17
|
Requires-Python: >=3.10
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
20
|
+
Requires-Dist: PyYAML>=6
|
|
20
21
|
Requires-Dist: tomli>=2; python_version < "3.11"
|
|
21
22
|
Provides-Extra: dev
|
|
22
23
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
@@ -53,6 +54,7 @@ canonical wiki surface registry:
|
|
|
53
54
|
| `guides/` | semantic | Agent-authored onboarding, operator, and contributor guides. |
|
|
54
55
|
| `flows/` | mixed | User-flow pages, one per detected entry point, with bounded generated Mermaid call and data-flow diagrams. |
|
|
55
56
|
| `infrastructure/` | mixed | Dockerfile, Compose, GitHub Actions, Kubernetes, and targeted runtime/config YAML pages. |
|
|
57
|
+
| `api-contracts.md` | mixed | Optional production HTTP contract inventory generated from static FastAPI declarations or an exported OpenAPI document; `## Notes` is semantic. |
|
|
56
58
|
| `dependencies.md` | mixed | Optional internal and external dependency architecture page. |
|
|
57
59
|
| `load-order.md` | mixed | Optional load-order, cycle, and startup-caveat architecture page. |
|
|
58
60
|
|
|
@@ -88,8 +90,11 @@ plain, MkDocs-compatible, or Docusaurus-compatible Markdown output without
|
|
|
88
90
|
invoking external builders. Static-site output is a derived artifact; it must
|
|
89
91
|
not become a second editable source of truth.
|
|
90
92
|
|
|
91
|
-
The package has
|
|
92
|
-
|
|
93
|
+
The package has a small required Python runtime footprint. `PyYAML>=6` parses
|
|
94
|
+
user-supplied OpenAPI YAML, and Python versions older than 3.11 use `tomli` for
|
|
95
|
+
TOML. FastAPI, Pydantic, and the target application are not runtime
|
|
96
|
+
dependencies and are never imported for contract extraction. Optional language
|
|
97
|
+
features use external tools when they are available on `PATH`.
|
|
93
98
|
|
|
94
99
|
## Supported Inputs
|
|
95
100
|
|
|
@@ -102,6 +107,7 @@ external tools when they are available on `PATH`.
|
|
|
102
107
|
| Haskell | bundled GHC parser helper for syntax-only inventory | prepared helper binary |
|
|
103
108
|
| Docker / Compose | built-in parsers | none |
|
|
104
109
|
| Runtime/config YAML | targeted built-in parsers | none |
|
|
110
|
+
| OpenAPI 3.0/3.1 JSON / YAML | stdlib `json` / PyYAML safe loader | `PyYAML>=6` (installed with the package) |
|
|
105
111
|
| MCP server | official Python MCP SDK | `agent-wiki-cli[mcp]`, Python 3.10+ |
|
|
106
112
|
|
|
107
113
|
TypeScript/JavaScript, Go, Rust, and Haskell helper setup is explicit; prepare
|
|
@@ -310,6 +316,8 @@ llm-wiki bootstrap --skip-workflows
|
|
|
310
316
|
llm-wiki bootstrap --skip-flows
|
|
311
317
|
llm-wiki bootstrap --skip-data-flow
|
|
312
318
|
llm-wiki bootstrap --skip-dependencies
|
|
319
|
+
llm-wiki bootstrap --api-contracts
|
|
320
|
+
llm-wiki bootstrap --api-contracts --openapi-file openapi.yaml
|
|
313
321
|
llm-wiki bootstrap --include-tests go
|
|
314
322
|
llm-wiki bootstrap --helper-cache-dir .cache/llm-wiki-helpers
|
|
315
323
|
llm-wiki bootstrap --format json --source-adapter
|
|
@@ -328,6 +336,12 @@ Dependency architecture pages are generated as `dependencies.md` and
|
|
|
328
336
|
pages or lint diagnostics. Generated `index.md` is a registry-backed landing
|
|
329
337
|
page with a surface overview table, per-surface counts, grouped user-flow
|
|
330
338
|
entries, optional dependency architecture links, and a direct log link.
|
|
339
|
+
`--api-contracts` adds the optional `api-contracts.md` production HTTP
|
|
340
|
+
inventory and generated API-contract sections on matching HTTP flow pages.
|
|
341
|
+
Passing `--openapi-file` implies `--api-contracts`; the supplied OpenAPI 3.0 or
|
|
342
|
+
3.1 JSON/YAML document is authoritative for wire fields, while syntax-only
|
|
343
|
+
source analysis contributes handler, module, entity, and flow links. The target
|
|
344
|
+
application is never imported or executed.
|
|
331
345
|
`--depth full` is the default and includes
|
|
332
346
|
docstrings, imports, attributes, method signatures, generated relationship
|
|
333
347
|
sections, bounded per-module dependency mini-map summaries, and diagram data
|
|
@@ -356,6 +370,8 @@ llm-wiki sync --src-dir . --wiki-dir docs/llm_wiki
|
|
|
356
370
|
llm-wiki sync --jobs auto --cache-stats --src-dir . --wiki-dir docs/llm_wiki
|
|
357
371
|
llm-wiki sync --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
|
|
358
372
|
llm-wiki sync --include-tests go --src-dir . --wiki-dir docs/llm_wiki
|
|
373
|
+
llm-wiki sync --initialize-surfaces flows,dependencies --flow-category http --exclude-tests --dry-run
|
|
374
|
+
llm-wiki sync --initialize-surfaces api-contracts --openapi-file openapi.yaml --dry-run
|
|
359
375
|
llm-wiki sync --src-dir /path/to/repo --wiki-dir docs/llm_wiki --allow-external-src
|
|
360
376
|
```
|
|
361
377
|
|
|
@@ -371,6 +387,14 @@ languages and plugin extractors whose manifests set `"parallel_safe": true`.
|
|
|
371
387
|
Sync repairs
|
|
372
388
|
manifests with invalid source hashes without touching pages, and stops unusually
|
|
373
389
|
broad diffs unless `--force` is used.
|
|
390
|
+
`--initialize-surfaces` enters a surface-only backfill mode for `flows`,
|
|
391
|
+
`dependencies`, and/or `api-contracts`: ordinary entity/module source changes
|
|
392
|
+
are reported but deferred. `--flow-category` is repeatable, `--exclude-tests`
|
|
393
|
+
uses a cross-platform test-path classifier for the selected flow/dependency
|
|
394
|
+
analysis, and `--dry-run` previews exact page counts and safety-guard results
|
|
395
|
+
without writing the wiki, manifest, log, index, surface index, or cache.
|
|
396
|
+
Selected flow categories and test filtering are persisted in manifest v4 so a
|
|
397
|
+
later ordinary sync cannot silently expand an HTTP-only backfill to every flow.
|
|
374
398
|
Pass `--include-tests go` to include Go `_test.go` files in the synced
|
|
375
399
|
inventory and generated module pages; the default remains production Go source
|
|
376
400
|
only.
|
|
@@ -404,6 +428,13 @@ When flow pages already exist, `sync` also refreshes generated call-sequence and
|
|
|
404
428
|
`## Data flow` content from the current inventory while preserving the
|
|
405
429
|
human-authored `## Behavior` section by default.
|
|
406
430
|
|
|
431
|
+
When `api-contracts.md` exists, sync refreshes its generated operation inventory
|
|
432
|
+
and matching flow-page contract sections while preserving `## Notes` and
|
|
433
|
+
`## Behavior`. A bootstrap/sync OpenAPI input is stored as a source-relative
|
|
434
|
+
path and hash; a specification-only change refreshes contracts even when source
|
|
435
|
+
files are unchanged. Use `--clear-openapi-file` to return deliberately to
|
|
436
|
+
static contract authority.
|
|
437
|
+
|
|
407
438
|
When `sync` rebuilds `index.md`, the generated landing-page overview and
|
|
408
439
|
per-surface link sections are replaced from the live registry and inventory.
|
|
409
440
|
With semantic preservation enabled, old custom top-level index sections are
|
|
@@ -421,6 +452,7 @@ llm-wiki extract --src-dir .
|
|
|
421
452
|
llm-wiki extract --src-dir . --changed
|
|
422
453
|
llm-wiki extract --src-dir . --summary
|
|
423
454
|
llm-wiki extract --src-dir . --deep
|
|
455
|
+
llm-wiki extract --src-dir . --deep --openapi-file openapi.json
|
|
424
456
|
llm-wiki extract --src-dir . --paths src/foo.py src/bar.ts
|
|
425
457
|
llm-wiki extract --src-dir . --package llm_wiki_cli
|
|
426
458
|
llm-wiki extract --src-dir . --include-empty
|
|
@@ -473,7 +505,13 @@ With `--deep`, Python function entries may carry optional `data_effects` blocks
|
|
|
473
505
|
(inputs, selected global/attribute reads, writes, returns, and boundary effects
|
|
474
506
|
such as filesystem, environment, process, network, output, and logging calls)
|
|
475
507
|
and optional `calls` lists (in-body call targets, optionally with compact `args`
|
|
476
|
-
and `kwargs` expression summaries).
|
|
508
|
+
and `kwargs` expression summaries). Function `params` include reconstructable
|
|
509
|
+
parameter kinds for positional-only, positional-or-keyword, variadic,
|
|
510
|
+
keyword-only, and variadic-keyword declarations. Python model/type inventory
|
|
511
|
+
also carries optional required/nullable/default/factory, alias, constraint,
|
|
512
|
+
description/example, `Annotated`, validator/config, enum-member, literal, and
|
|
513
|
+
type-alias metadata without importing Pydantic or application modules.
|
|
514
|
+
The payload also gains an optional top-level
|
|
477
515
|
`entrypoints` array (detected user-reachable entry points: `{id, category, file,
|
|
478
516
|
symbol, label}`), a `data_flows` list for detected user flows, plus a top-level
|
|
479
517
|
`dependencies` object with internal `edges`, `cycles`, per-language external
|
|
@@ -489,6 +527,13 @@ keys are POSIX paths relative to `--src-dir`, never absolute paths. The v1
|
|
|
489
527
|
contract permits additive fields; incompatible shape changes require a new
|
|
490
528
|
schema version. The M3 data-flow fields are therefore optional additions under
|
|
491
529
|
`llm-wiki-extract/v1`, not a schema bump.
|
|
530
|
+
Deep Python extraction also emits optional per-file `frameworks.fastapi`
|
|
531
|
+
declarations and a top-level `api_contracts` object. Static uncertainty is
|
|
532
|
+
reported through `unknowns` and diagnostics; test-source and
|
|
533
|
+
`include_in_schema=False` operations are excluded from the production operation
|
|
534
|
+
inventory by default. With `--openapi-file`, OpenAPI defines the operation set
|
|
535
|
+
and wire contract, external references are never fetched, and unmatched or
|
|
536
|
+
conflicting static declarations remain visible as diagnostics.
|
|
492
537
|
Installed `entrypoint_detector` plugin hooks also contribute to the same
|
|
493
538
|
`entrypoints` array in deep output. Detector failures are isolated: built-in
|
|
494
539
|
entry-point detection still runs, `extract` prints a warning to stderr, and the
|
|
@@ -23,6 +23,7 @@ canonical wiki surface registry:
|
|
|
23
23
|
| `guides/` | semantic | Agent-authored onboarding, operator, and contributor guides. |
|
|
24
24
|
| `flows/` | mixed | User-flow pages, one per detected entry point, with bounded generated Mermaid call and data-flow diagrams. |
|
|
25
25
|
| `infrastructure/` | mixed | Dockerfile, Compose, GitHub Actions, Kubernetes, and targeted runtime/config YAML pages. |
|
|
26
|
+
| `api-contracts.md` | mixed | Optional production HTTP contract inventory generated from static FastAPI declarations or an exported OpenAPI document; `## Notes` is semantic. |
|
|
26
27
|
| `dependencies.md` | mixed | Optional internal and external dependency architecture page. |
|
|
27
28
|
| `load-order.md` | mixed | Optional load-order, cycle, and startup-caveat architecture page. |
|
|
28
29
|
|
|
@@ -58,8 +59,11 @@ plain, MkDocs-compatible, or Docusaurus-compatible Markdown output without
|
|
|
58
59
|
invoking external builders. Static-site output is a derived artifact; it must
|
|
59
60
|
not become a second editable source of truth.
|
|
60
61
|
|
|
61
|
-
The package has
|
|
62
|
-
|
|
62
|
+
The package has a small required Python runtime footprint. `PyYAML>=6` parses
|
|
63
|
+
user-supplied OpenAPI YAML, and Python versions older than 3.11 use `tomli` for
|
|
64
|
+
TOML. FastAPI, Pydantic, and the target application are not runtime
|
|
65
|
+
dependencies and are never imported for contract extraction. Optional language
|
|
66
|
+
features use external tools when they are available on `PATH`.
|
|
63
67
|
|
|
64
68
|
## Supported Inputs
|
|
65
69
|
|
|
@@ -72,6 +76,7 @@ external tools when they are available on `PATH`.
|
|
|
72
76
|
| Haskell | bundled GHC parser helper for syntax-only inventory | prepared helper binary |
|
|
73
77
|
| Docker / Compose | built-in parsers | none |
|
|
74
78
|
| Runtime/config YAML | targeted built-in parsers | none |
|
|
79
|
+
| OpenAPI 3.0/3.1 JSON / YAML | stdlib `json` / PyYAML safe loader | `PyYAML>=6` (installed with the package) |
|
|
75
80
|
| MCP server | official Python MCP SDK | `agent-wiki-cli[mcp]`, Python 3.10+ |
|
|
76
81
|
|
|
77
82
|
TypeScript/JavaScript, Go, Rust, and Haskell helper setup is explicit; prepare
|
|
@@ -280,6 +285,8 @@ llm-wiki bootstrap --skip-workflows
|
|
|
280
285
|
llm-wiki bootstrap --skip-flows
|
|
281
286
|
llm-wiki bootstrap --skip-data-flow
|
|
282
287
|
llm-wiki bootstrap --skip-dependencies
|
|
288
|
+
llm-wiki bootstrap --api-contracts
|
|
289
|
+
llm-wiki bootstrap --api-contracts --openapi-file openapi.yaml
|
|
283
290
|
llm-wiki bootstrap --include-tests go
|
|
284
291
|
llm-wiki bootstrap --helper-cache-dir .cache/llm-wiki-helpers
|
|
285
292
|
llm-wiki bootstrap --format json --source-adapter
|
|
@@ -298,6 +305,12 @@ Dependency architecture pages are generated as `dependencies.md` and
|
|
|
298
305
|
pages or lint diagnostics. Generated `index.md` is a registry-backed landing
|
|
299
306
|
page with a surface overview table, per-surface counts, grouped user-flow
|
|
300
307
|
entries, optional dependency architecture links, and a direct log link.
|
|
308
|
+
`--api-contracts` adds the optional `api-contracts.md` production HTTP
|
|
309
|
+
inventory and generated API-contract sections on matching HTTP flow pages.
|
|
310
|
+
Passing `--openapi-file` implies `--api-contracts`; the supplied OpenAPI 3.0 or
|
|
311
|
+
3.1 JSON/YAML document is authoritative for wire fields, while syntax-only
|
|
312
|
+
source analysis contributes handler, module, entity, and flow links. The target
|
|
313
|
+
application is never imported or executed.
|
|
301
314
|
`--depth full` is the default and includes
|
|
302
315
|
docstrings, imports, attributes, method signatures, generated relationship
|
|
303
316
|
sections, bounded per-module dependency mini-map summaries, and diagram data
|
|
@@ -326,6 +339,8 @@ llm-wiki sync --src-dir . --wiki-dir docs/llm_wiki
|
|
|
326
339
|
llm-wiki sync --jobs auto --cache-stats --src-dir . --wiki-dir docs/llm_wiki
|
|
327
340
|
llm-wiki sync --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
|
|
328
341
|
llm-wiki sync --include-tests go --src-dir . --wiki-dir docs/llm_wiki
|
|
342
|
+
llm-wiki sync --initialize-surfaces flows,dependencies --flow-category http --exclude-tests --dry-run
|
|
343
|
+
llm-wiki sync --initialize-surfaces api-contracts --openapi-file openapi.yaml --dry-run
|
|
329
344
|
llm-wiki sync --src-dir /path/to/repo --wiki-dir docs/llm_wiki --allow-external-src
|
|
330
345
|
```
|
|
331
346
|
|
|
@@ -341,6 +356,14 @@ languages and plugin extractors whose manifests set `"parallel_safe": true`.
|
|
|
341
356
|
Sync repairs
|
|
342
357
|
manifests with invalid source hashes without touching pages, and stops unusually
|
|
343
358
|
broad diffs unless `--force` is used.
|
|
359
|
+
`--initialize-surfaces` enters a surface-only backfill mode for `flows`,
|
|
360
|
+
`dependencies`, and/or `api-contracts`: ordinary entity/module source changes
|
|
361
|
+
are reported but deferred. `--flow-category` is repeatable, `--exclude-tests`
|
|
362
|
+
uses a cross-platform test-path classifier for the selected flow/dependency
|
|
363
|
+
analysis, and `--dry-run` previews exact page counts and safety-guard results
|
|
364
|
+
without writing the wiki, manifest, log, index, surface index, or cache.
|
|
365
|
+
Selected flow categories and test filtering are persisted in manifest v4 so a
|
|
366
|
+
later ordinary sync cannot silently expand an HTTP-only backfill to every flow.
|
|
344
367
|
Pass `--include-tests go` to include Go `_test.go` files in the synced
|
|
345
368
|
inventory and generated module pages; the default remains production Go source
|
|
346
369
|
only.
|
|
@@ -374,6 +397,13 @@ When flow pages already exist, `sync` also refreshes generated call-sequence and
|
|
|
374
397
|
`## Data flow` content from the current inventory while preserving the
|
|
375
398
|
human-authored `## Behavior` section by default.
|
|
376
399
|
|
|
400
|
+
When `api-contracts.md` exists, sync refreshes its generated operation inventory
|
|
401
|
+
and matching flow-page contract sections while preserving `## Notes` and
|
|
402
|
+
`## Behavior`. A bootstrap/sync OpenAPI input is stored as a source-relative
|
|
403
|
+
path and hash; a specification-only change refreshes contracts even when source
|
|
404
|
+
files are unchanged. Use `--clear-openapi-file` to return deliberately to
|
|
405
|
+
static contract authority.
|
|
406
|
+
|
|
377
407
|
When `sync` rebuilds `index.md`, the generated landing-page overview and
|
|
378
408
|
per-surface link sections are replaced from the live registry and inventory.
|
|
379
409
|
With semantic preservation enabled, old custom top-level index sections are
|
|
@@ -391,6 +421,7 @@ llm-wiki extract --src-dir .
|
|
|
391
421
|
llm-wiki extract --src-dir . --changed
|
|
392
422
|
llm-wiki extract --src-dir . --summary
|
|
393
423
|
llm-wiki extract --src-dir . --deep
|
|
424
|
+
llm-wiki extract --src-dir . --deep --openapi-file openapi.json
|
|
394
425
|
llm-wiki extract --src-dir . --paths src/foo.py src/bar.ts
|
|
395
426
|
llm-wiki extract --src-dir . --package llm_wiki_cli
|
|
396
427
|
llm-wiki extract --src-dir . --include-empty
|
|
@@ -443,7 +474,13 @@ With `--deep`, Python function entries may carry optional `data_effects` blocks
|
|
|
443
474
|
(inputs, selected global/attribute reads, writes, returns, and boundary effects
|
|
444
475
|
such as filesystem, environment, process, network, output, and logging calls)
|
|
445
476
|
and optional `calls` lists (in-body call targets, optionally with compact `args`
|
|
446
|
-
and `kwargs` expression summaries).
|
|
477
|
+
and `kwargs` expression summaries). Function `params` include reconstructable
|
|
478
|
+
parameter kinds for positional-only, positional-or-keyword, variadic,
|
|
479
|
+
keyword-only, and variadic-keyword declarations. Python model/type inventory
|
|
480
|
+
also carries optional required/nullable/default/factory, alias, constraint,
|
|
481
|
+
description/example, `Annotated`, validator/config, enum-member, literal, and
|
|
482
|
+
type-alias metadata without importing Pydantic or application modules.
|
|
483
|
+
The payload also gains an optional top-level
|
|
447
484
|
`entrypoints` array (detected user-reachable entry points: `{id, category, file,
|
|
448
485
|
symbol, label}`), a `data_flows` list for detected user flows, plus a top-level
|
|
449
486
|
`dependencies` object with internal `edges`, `cycles`, per-language external
|
|
@@ -459,6 +496,13 @@ keys are POSIX paths relative to `--src-dir`, never absolute paths. The v1
|
|
|
459
496
|
contract permits additive fields; incompatible shape changes require a new
|
|
460
497
|
schema version. The M3 data-flow fields are therefore optional additions under
|
|
461
498
|
`llm-wiki-extract/v1`, not a schema bump.
|
|
499
|
+
Deep Python extraction also emits optional per-file `frameworks.fastapi`
|
|
500
|
+
declarations and a top-level `api_contracts` object. Static uncertainty is
|
|
501
|
+
reported through `unknowns` and diagnostics; test-source and
|
|
502
|
+
`include_in_schema=False` operations are excluded from the production operation
|
|
503
|
+
inventory by default. With `--openapi-file`, OpenAPI defines the operation set
|
|
504
|
+
and wire contract, external references are never fetched, and unmatched or
|
|
505
|
+
conflicting static declarations remain visible as diagnostics.
|
|
462
506
|
Installed `entrypoint_detector` plugin hooks also contribute to the same
|
|
463
507
|
`entrypoints` array in deep output. Detector failures are isolated: built-in
|
|
464
508
|
entry-point detection still runs, `extract` prints a warning to stderr, and the
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agent-wiki-cli"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.3.0"
|
|
8
8
|
description = "CLI tool to maintain hybrid LLM Wikis for multi-language projects."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -22,6 +22,7 @@ classifiers = [
|
|
|
22
22
|
"Topic :: Software Development :: Documentation",
|
|
23
23
|
]
|
|
24
24
|
dependencies = [
|
|
25
|
+
"PyYAML>=6",
|
|
25
26
|
"tomli>=2; python_version < '3.11'",
|
|
26
27
|
]
|
|
27
28
|
|
|
@@ -89,6 +90,8 @@ where = ["src"]
|
|
|
89
90
|
"skills/user-docs-author/reference.md",
|
|
90
91
|
"skills/wiki-bootstrap/SKILL.md",
|
|
91
92
|
"skills/wiki-bootstrap/reference.md",
|
|
93
|
+
"skills/wiki-reference/SKILL.md",
|
|
94
|
+
"skills/wiki-reference/reference.md",
|
|
92
95
|
"skills/wiki-sync/SKILL.md",
|
|
93
96
|
"skills/wiki-sync/reference.md",
|
|
94
97
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-wiki-cli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: CLI tool to maintain hybrid LLM Wikis for multi-language projects.
|
|
5
5
|
Author-email: Denis Sivagin <denissvgn@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -17,6 +17,7 @@ Classifier: Topic :: Software Development :: Documentation
|
|
|
17
17
|
Requires-Python: >=3.10
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
20
|
+
Requires-Dist: PyYAML>=6
|
|
20
21
|
Requires-Dist: tomli>=2; python_version < "3.11"
|
|
21
22
|
Provides-Extra: dev
|
|
22
23
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
@@ -53,6 +54,7 @@ canonical wiki surface registry:
|
|
|
53
54
|
| `guides/` | semantic | Agent-authored onboarding, operator, and contributor guides. |
|
|
54
55
|
| `flows/` | mixed | User-flow pages, one per detected entry point, with bounded generated Mermaid call and data-flow diagrams. |
|
|
55
56
|
| `infrastructure/` | mixed | Dockerfile, Compose, GitHub Actions, Kubernetes, and targeted runtime/config YAML pages. |
|
|
57
|
+
| `api-contracts.md` | mixed | Optional production HTTP contract inventory generated from static FastAPI declarations or an exported OpenAPI document; `## Notes` is semantic. |
|
|
56
58
|
| `dependencies.md` | mixed | Optional internal and external dependency architecture page. |
|
|
57
59
|
| `load-order.md` | mixed | Optional load-order, cycle, and startup-caveat architecture page. |
|
|
58
60
|
|
|
@@ -88,8 +90,11 @@ plain, MkDocs-compatible, or Docusaurus-compatible Markdown output without
|
|
|
88
90
|
invoking external builders. Static-site output is a derived artifact; it must
|
|
89
91
|
not become a second editable source of truth.
|
|
90
92
|
|
|
91
|
-
The package has
|
|
92
|
-
|
|
93
|
+
The package has a small required Python runtime footprint. `PyYAML>=6` parses
|
|
94
|
+
user-supplied OpenAPI YAML, and Python versions older than 3.11 use `tomli` for
|
|
95
|
+
TOML. FastAPI, Pydantic, and the target application are not runtime
|
|
96
|
+
dependencies and are never imported for contract extraction. Optional language
|
|
97
|
+
features use external tools when they are available on `PATH`.
|
|
93
98
|
|
|
94
99
|
## Supported Inputs
|
|
95
100
|
|
|
@@ -102,6 +107,7 @@ external tools when they are available on `PATH`.
|
|
|
102
107
|
| Haskell | bundled GHC parser helper for syntax-only inventory | prepared helper binary |
|
|
103
108
|
| Docker / Compose | built-in parsers | none |
|
|
104
109
|
| Runtime/config YAML | targeted built-in parsers | none |
|
|
110
|
+
| OpenAPI 3.0/3.1 JSON / YAML | stdlib `json` / PyYAML safe loader | `PyYAML>=6` (installed with the package) |
|
|
105
111
|
| MCP server | official Python MCP SDK | `agent-wiki-cli[mcp]`, Python 3.10+ |
|
|
106
112
|
|
|
107
113
|
TypeScript/JavaScript, Go, Rust, and Haskell helper setup is explicit; prepare
|
|
@@ -310,6 +316,8 @@ llm-wiki bootstrap --skip-workflows
|
|
|
310
316
|
llm-wiki bootstrap --skip-flows
|
|
311
317
|
llm-wiki bootstrap --skip-data-flow
|
|
312
318
|
llm-wiki bootstrap --skip-dependencies
|
|
319
|
+
llm-wiki bootstrap --api-contracts
|
|
320
|
+
llm-wiki bootstrap --api-contracts --openapi-file openapi.yaml
|
|
313
321
|
llm-wiki bootstrap --include-tests go
|
|
314
322
|
llm-wiki bootstrap --helper-cache-dir .cache/llm-wiki-helpers
|
|
315
323
|
llm-wiki bootstrap --format json --source-adapter
|
|
@@ -328,6 +336,12 @@ Dependency architecture pages are generated as `dependencies.md` and
|
|
|
328
336
|
pages or lint diagnostics. Generated `index.md` is a registry-backed landing
|
|
329
337
|
page with a surface overview table, per-surface counts, grouped user-flow
|
|
330
338
|
entries, optional dependency architecture links, and a direct log link.
|
|
339
|
+
`--api-contracts` adds the optional `api-contracts.md` production HTTP
|
|
340
|
+
inventory and generated API-contract sections on matching HTTP flow pages.
|
|
341
|
+
Passing `--openapi-file` implies `--api-contracts`; the supplied OpenAPI 3.0 or
|
|
342
|
+
3.1 JSON/YAML document is authoritative for wire fields, while syntax-only
|
|
343
|
+
source analysis contributes handler, module, entity, and flow links. The target
|
|
344
|
+
application is never imported or executed.
|
|
331
345
|
`--depth full` is the default and includes
|
|
332
346
|
docstrings, imports, attributes, method signatures, generated relationship
|
|
333
347
|
sections, bounded per-module dependency mini-map summaries, and diagram data
|
|
@@ -356,6 +370,8 @@ llm-wiki sync --src-dir . --wiki-dir docs/llm_wiki
|
|
|
356
370
|
llm-wiki sync --jobs auto --cache-stats --src-dir . --wiki-dir docs/llm_wiki
|
|
357
371
|
llm-wiki sync --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
|
|
358
372
|
llm-wiki sync --include-tests go --src-dir . --wiki-dir docs/llm_wiki
|
|
373
|
+
llm-wiki sync --initialize-surfaces flows,dependencies --flow-category http --exclude-tests --dry-run
|
|
374
|
+
llm-wiki sync --initialize-surfaces api-contracts --openapi-file openapi.yaml --dry-run
|
|
359
375
|
llm-wiki sync --src-dir /path/to/repo --wiki-dir docs/llm_wiki --allow-external-src
|
|
360
376
|
```
|
|
361
377
|
|
|
@@ -371,6 +387,14 @@ languages and plugin extractors whose manifests set `"parallel_safe": true`.
|
|
|
371
387
|
Sync repairs
|
|
372
388
|
manifests with invalid source hashes without touching pages, and stops unusually
|
|
373
389
|
broad diffs unless `--force` is used.
|
|
390
|
+
`--initialize-surfaces` enters a surface-only backfill mode for `flows`,
|
|
391
|
+
`dependencies`, and/or `api-contracts`: ordinary entity/module source changes
|
|
392
|
+
are reported but deferred. `--flow-category` is repeatable, `--exclude-tests`
|
|
393
|
+
uses a cross-platform test-path classifier for the selected flow/dependency
|
|
394
|
+
analysis, and `--dry-run` previews exact page counts and safety-guard results
|
|
395
|
+
without writing the wiki, manifest, log, index, surface index, or cache.
|
|
396
|
+
Selected flow categories and test filtering are persisted in manifest v4 so a
|
|
397
|
+
later ordinary sync cannot silently expand an HTTP-only backfill to every flow.
|
|
374
398
|
Pass `--include-tests go` to include Go `_test.go` files in the synced
|
|
375
399
|
inventory and generated module pages; the default remains production Go source
|
|
376
400
|
only.
|
|
@@ -404,6 +428,13 @@ When flow pages already exist, `sync` also refreshes generated call-sequence and
|
|
|
404
428
|
`## Data flow` content from the current inventory while preserving the
|
|
405
429
|
human-authored `## Behavior` section by default.
|
|
406
430
|
|
|
431
|
+
When `api-contracts.md` exists, sync refreshes its generated operation inventory
|
|
432
|
+
and matching flow-page contract sections while preserving `## Notes` and
|
|
433
|
+
`## Behavior`. A bootstrap/sync OpenAPI input is stored as a source-relative
|
|
434
|
+
path and hash; a specification-only change refreshes contracts even when source
|
|
435
|
+
files are unchanged. Use `--clear-openapi-file` to return deliberately to
|
|
436
|
+
static contract authority.
|
|
437
|
+
|
|
407
438
|
When `sync` rebuilds `index.md`, the generated landing-page overview and
|
|
408
439
|
per-surface link sections are replaced from the live registry and inventory.
|
|
409
440
|
With semantic preservation enabled, old custom top-level index sections are
|
|
@@ -421,6 +452,7 @@ llm-wiki extract --src-dir .
|
|
|
421
452
|
llm-wiki extract --src-dir . --changed
|
|
422
453
|
llm-wiki extract --src-dir . --summary
|
|
423
454
|
llm-wiki extract --src-dir . --deep
|
|
455
|
+
llm-wiki extract --src-dir . --deep --openapi-file openapi.json
|
|
424
456
|
llm-wiki extract --src-dir . --paths src/foo.py src/bar.ts
|
|
425
457
|
llm-wiki extract --src-dir . --package llm_wiki_cli
|
|
426
458
|
llm-wiki extract --src-dir . --include-empty
|
|
@@ -473,7 +505,13 @@ With `--deep`, Python function entries may carry optional `data_effects` blocks
|
|
|
473
505
|
(inputs, selected global/attribute reads, writes, returns, and boundary effects
|
|
474
506
|
such as filesystem, environment, process, network, output, and logging calls)
|
|
475
507
|
and optional `calls` lists (in-body call targets, optionally with compact `args`
|
|
476
|
-
and `kwargs` expression summaries).
|
|
508
|
+
and `kwargs` expression summaries). Function `params` include reconstructable
|
|
509
|
+
parameter kinds for positional-only, positional-or-keyword, variadic,
|
|
510
|
+
keyword-only, and variadic-keyword declarations. Python model/type inventory
|
|
511
|
+
also carries optional required/nullable/default/factory, alias, constraint,
|
|
512
|
+
description/example, `Annotated`, validator/config, enum-member, literal, and
|
|
513
|
+
type-alias metadata without importing Pydantic or application modules.
|
|
514
|
+
The payload also gains an optional top-level
|
|
477
515
|
`entrypoints` array (detected user-reachable entry points: `{id, category, file,
|
|
478
516
|
symbol, label}`), a `data_flows` list for detected user flows, plus a top-level
|
|
479
517
|
`dependencies` object with internal `edges`, `cycles`, per-language external
|
|
@@ -489,6 +527,13 @@ keys are POSIX paths relative to `--src-dir`, never absolute paths. The v1
|
|
|
489
527
|
contract permits additive fields; incompatible shape changes require a new
|
|
490
528
|
schema version. The M3 data-flow fields are therefore optional additions under
|
|
491
529
|
`llm-wiki-extract/v1`, not a schema bump.
|
|
530
|
+
Deep Python extraction also emits optional per-file `frameworks.fastapi`
|
|
531
|
+
declarations and a top-level `api_contracts` object. Static uncertainty is
|
|
532
|
+
reported through `unknowns` and diagnostics; test-source and
|
|
533
|
+
`include_in_schema=False` operations are excluded from the production operation
|
|
534
|
+
inventory by default. With `--openapi-file`, OpenAPI defines the operation set
|
|
535
|
+
and wire contract, external references are never fetched, and unmatched or
|
|
536
|
+
conflicting static declarations remain visible as diagnostics.
|
|
492
537
|
Installed `entrypoint_detector` plugin hooks also contribute to the same
|
|
493
538
|
`entrypoints` array in deep output. Detector failures are isolated: built-in
|
|
494
539
|
entry-point detection still runs, `extract` prints a warning to stderr, and the
|
|
@@ -47,8 +47,10 @@ src/llm_wiki_cli/examples/plugins/m4-documentation-hooks/llm-wiki-plugin.json
|
|
|
47
47
|
src/llm_wiki_cli/examples/plugins/m4-documentation-hooks/styles.py
|
|
48
48
|
src/llm_wiki_cli/extractors/__init__.py
|
|
49
49
|
src/llm_wiki_cli/extractors/common.py
|
|
50
|
+
src/llm_wiki_cli/extractors/fastapi_contracts.py
|
|
50
51
|
src/llm_wiki_cli/extractors/go_extractor.py
|
|
51
52
|
src/llm_wiki_cli/extractors/haskell_extractor.py
|
|
53
|
+
src/llm_wiki_cli/extractors/python_contracts.py
|
|
52
54
|
src/llm_wiki_cli/extractors/python_extractor.py
|
|
53
55
|
src/llm_wiki_cli/extractors/rust_extractor.py
|
|
54
56
|
src/llm_wiki_cli/extractors/ts_extractor.py
|
|
@@ -65,6 +67,7 @@ src/llm_wiki_cli/extractors/rust_scripts/src/main.rs
|
|
|
65
67
|
src/llm_wiki_cli/extractors/ts_scripts/extract.js
|
|
66
68
|
src/llm_wiki_cli/extractors/ts_scripts/package.json
|
|
67
69
|
src/llm_wiki_cli/services/__init__.py
|
|
70
|
+
src/llm_wiki_cli/services/api_contracts.py
|
|
68
71
|
src/llm_wiki_cli/services/circuit_breaker.py
|
|
69
72
|
src/llm_wiki_cli/services/contracts.py
|
|
70
73
|
src/llm_wiki_cli/services/data_flow.py
|
|
@@ -122,10 +125,14 @@ src/llm_wiki_cli/skills/user-docs-author/SKILL.md
|
|
|
122
125
|
src/llm_wiki_cli/skills/user-docs-author/reference.md
|
|
123
126
|
src/llm_wiki_cli/skills/wiki-bootstrap/SKILL.md
|
|
124
127
|
src/llm_wiki_cli/skills/wiki-bootstrap/reference.md
|
|
128
|
+
src/llm_wiki_cli/skills/wiki-reference/SKILL.md
|
|
129
|
+
src/llm_wiki_cli/skills/wiki-reference/reference.md
|
|
125
130
|
src/llm_wiki_cli/skills/wiki-sync/SKILL.md
|
|
126
131
|
src/llm_wiki_cli/skills/wiki-sync/reference.md
|
|
127
132
|
tests/test_api.py
|
|
133
|
+
tests/test_api_contracts.py
|
|
128
134
|
tests/test_bootstrap.py
|
|
135
|
+
tests/test_bootstrap_api_contracts.py
|
|
129
136
|
tests/test_bump.py
|
|
130
137
|
tests/test_ci_check.py
|
|
131
138
|
tests/test_circuit_breaker.py
|
|
@@ -143,6 +150,7 @@ tests/test_documentation_queries.py
|
|
|
143
150
|
tests/test_e2e.py
|
|
144
151
|
tests/test_entrypoints.py
|
|
145
152
|
tests/test_extract.py
|
|
153
|
+
tests/test_extract_api_contracts.py
|
|
146
154
|
tests/test_extractor_helpers.py
|
|
147
155
|
tests/test_extractor_inventory_contracts.py
|
|
148
156
|
tests/test_generate_prompt.py
|
|
@@ -152,6 +160,7 @@ tests/test_hook.py
|
|
|
152
160
|
tests/test_imports.py
|
|
153
161
|
tests/test_infrastructure_inventory.py
|
|
154
162
|
tests/test_init.py
|
|
163
|
+
tests/test_install.py
|
|
155
164
|
tests/test_inventory_cache.py
|
|
156
165
|
tests/test_io.py
|
|
157
166
|
tests/test_lint.py
|
|
@@ -179,12 +188,15 @@ tests/test_site_export.py
|
|
|
179
188
|
tests/test_skills.py
|
|
180
189
|
tests/test_source_snapshot.py
|
|
181
190
|
tests/test_status.py
|
|
191
|
+
tests/test_surface_initialization.py
|
|
182
192
|
tests/test_sync.py
|
|
193
|
+
tests/test_sync_api_contracts.py
|
|
183
194
|
tests/test_team.py
|
|
184
195
|
tests/test_trigger.py
|
|
185
196
|
tests/test_ts_extract.py
|
|
186
197
|
tests/test_uninstall.py
|
|
187
198
|
tests/test_upgrade.py
|
|
188
199
|
tests/test_versioning.py
|
|
200
|
+
tests/test_wiki_reference_skill.py
|
|
189
201
|
tests/test_wiki_surface.py
|
|
190
202
|
tests/test_wiki_surface_index.py
|
|
@@ -383,7 +383,8 @@ def _wiki_page_counts(pages: list[dict[str, Any]]) -> dict[str, Any]:
|
|
|
383
383
|
for page in pages:
|
|
384
384
|
by_kind[str(page["kind"])] += 1
|
|
385
385
|
architecture_pages = (
|
|
386
|
-
by_kind[wiki_surface.PageKind.
|
|
386
|
+
by_kind[wiki_surface.PageKind.API_CONTRACTS.value]
|
|
387
|
+
+ by_kind[wiki_surface.PageKind.DEPENDENCIES.value]
|
|
387
388
|
+ by_kind[wiki_surface.PageKind.LOAD_ORDER.value]
|
|
388
389
|
)
|
|
389
390
|
return {
|