agent-wiki-cli 1.3.1__tar.gz → 1.4.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.3.1/src/agent_wiki_cli.egg-info → agent_wiki_cli-1.4.0}/PKG-INFO +63 -7
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/README.md +62 -6
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/pyproject.toml +1 -1
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0/src/agent_wiki_cli.egg-info}/PKG-INFO +63 -7
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/agent_wiki_cli.egg-info/SOURCES.txt +3 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/cli.py +22 -35
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/ci_check_cmd.py +15 -1
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/context_cmd.py +32 -3
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/extract_cmd.py +89 -11
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/generate_prompt_cmd.py +20 -12
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/lint_cmd.py +32 -4
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/sync_cmd.py +14 -1
- agent_wiki_cli-1.4.0/src/llm_wiki_cli/services/extraction_jobs.py +109 -0
- agent_wiki_cli-1.4.0/src/llm_wiki_cli/services/resource_diagnostics.py +85 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/schema.py +39 -15
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/onboarding-guide/SKILL.md +24 -3
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/user-docs-author/SKILL.md +14 -2
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/user-docs-author/reference.md +1 -1
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-reference/SKILL.md +4 -2
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-reference/reference.md +40 -4
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-sync/SKILL.md +23 -3
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_ci_check.py +46 -6
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_cli.py +54 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_context.py +34 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_extract.py +260 -1
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_generate_prompt.py +30 -6
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_lint.py +42 -2
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_mcp.py +5 -2
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_package_metadata.py +30 -1
- agent_wiki_cli-1.4.0/tests/test_resource_diagnostics.py +89 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_schema.py +27 -6
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_skills.py +15 -1
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_sync.py +22 -2
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_wiki_reference_skill.py +28 -2
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/LICENSE +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/MANIFEST.in +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/examples/plugins/m4-documentation-hooks/detectors.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/examples/plugins/m4-documentation-hooks/llm-wiki-plugin.json +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/examples/plugins/m4-documentation-hooks/styles.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/setup.cfg +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/agent_wiki_cli.egg-info/dependency_links.txt +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/agent_wiki_cli.egg-info/entry_points.txt +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/agent_wiki_cli.egg-info/requires.txt +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/agent_wiki_cli.egg-info/top_level.txt +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/__init__.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/api.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/__init__.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/bootstrap_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/bump_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/hook_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/init_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/install_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/mcp_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/metrics_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/migrate_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/obsidian_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/plugins_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/prepare_extractors_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/release_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/review_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/site_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/skills_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/status_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/team_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/trigger_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/uninstall_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/upgrade_cmd.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/config.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/examples/plugins/m4-documentation-hooks/detectors.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/examples/plugins/m4-documentation-hooks/llm-wiki-plugin.json +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/examples/plugins/m4-documentation-hooks/styles.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/__init__.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/common.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/fastapi_contracts.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/go_extractor.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/go_scripts/go.mod +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/go_scripts/main.go +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_extractor.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_scripts/Inventory.hs +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_scripts/Json.hs +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_scripts/Main.hs +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_scripts/Parser.hs +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_scripts/Paths.hs +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/python_contracts.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/python_extractor.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/rust_extractor.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/rust_scripts/Cargo.lock +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/rust_scripts/Cargo.toml +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/rust_scripts/src/main.rs +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/ts_extractor.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/ts_scripts/extract.js +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/ts_scripts/package.json +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/__init__.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/api_contracts.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/circuit_breaker.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/contracts.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/data_flow.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/dependencies.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/diagrams.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/documentation_queries.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/entrypoints.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/extractor_helpers.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/imports.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/infrastructure_inventory.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/inventory_cache.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/io.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/lockfile.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/mcp_server.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/metrics.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/module_maps.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/obsidian.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/packages.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/paths.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/plugin_samples.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/plugins.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/relationships.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/secure_file.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/site_export.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/site_html_check.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/skills.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/source_snapshot.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/team.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/versioning.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/wiki_media.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/wiki_surface.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/wiki_surface_index.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/attack-surface/SKILL.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/attack-surface/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/dep-audit/SKILL.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/dep-audit/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/dep-vuln-triage/SKILL.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/dep-vuln-triage/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/doc-hub/SKILL.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/doc-hub/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/doc-review/SKILL.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/doc-review/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/impact-analysis/SKILL.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/impact-analysis/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/infra-review/SKILL.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/infra-review/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/onboarding-guide/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/publish-docs/SKILL.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/publish-docs/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/usage-examples/SKILL.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/usage-examples/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-bootstrap/SKILL.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-bootstrap/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-sync/reference.md +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_api.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_api_contracts.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_bootstrap.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_bootstrap_api_contracts.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_bump.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_circuit_breaker.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_config.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_data_flow.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_dependencies.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_dependencies_external.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_diagrams.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_docker_bootstrap.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_docker_extract.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_docker_lint.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_documentation_queries.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_e2e.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_entrypoints.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_extract_api_contracts.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_extractor_helpers.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_extractor_inventory_contracts.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_go_extract.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_haskell_extract.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_hook.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_imports.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_infrastructure_inventory.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_init.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_install.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_inventory_cache.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_io.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_lockfile.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_m4_dogfood.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_m4_plugin_sample.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_metrics.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_migrate.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_module_maps.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_multilanguage_wiki.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_navigation_layouts.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_obsidian.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_packages.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_paths.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_phase4_quality.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_plugins.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_relationships.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_release.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_rust_extract.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_secure_file.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_site_export.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_source_snapshot.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_status.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_surface_initialization.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_sync_api_contracts.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_team.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_trigger.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_ts_extract.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_uninstall.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_upgrade.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_versioning.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_wiki_surface.py +0 -0
- {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_wiki_surface_index.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.4.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
|
|
@@ -301,6 +301,30 @@ llm-wiki install-hook --force
|
|
|
301
301
|
|
|
302
302
|
## Command Reference
|
|
303
303
|
|
|
304
|
+
### Resource-aware execution
|
|
305
|
+
|
|
306
|
+
In an interactive IDE or whenever host capacity is unknown, run one heavy gate
|
|
307
|
+
at a time. Heavy gates include `context`, full tests, coverage, builds, browser
|
|
308
|
+
suites, `sync`, `lint`, and `ci-check`. The supervising agent owns that
|
|
309
|
+
schedule; subagents may inspect bounded files and diffs, but should not launch
|
|
310
|
+
heavy gates unless explicitly assigned.
|
|
311
|
+
|
|
312
|
+
Use `--jobs 1` for interactive source scans. `--jobs auto` remains an uncapped
|
|
313
|
+
opt-in for an isolated terminal or a controlled CI runner with reserved
|
|
314
|
+
capacity; do not combine it with nested heavy-gate fan-out. If ENOSPC, inotify,
|
|
315
|
+
file-descriptor, severe swapping, or editor-responsiveness failures occur, stop
|
|
316
|
+
launching work and do not retry the same burst. Recover capacity first, then
|
|
317
|
+
attempt at most one manual retry with `--jobs 1`; unfinished gates remain
|
|
318
|
+
inconclusive. Watcher-limit symptoms are host/IDE resource evidence, not proof
|
|
319
|
+
that `llm-wiki` leaked a watcher.
|
|
320
|
+
|
|
321
|
+
Before extraction, `sync`, `lint`, `ci-check`, and `context` write one flushed
|
|
322
|
+
plan line to stderr without contaminating stdout, for example:
|
|
323
|
+
|
|
324
|
+
```text
|
|
325
|
+
Extractor plan: requested=auto resolved=20 eligible_parallel=2 effective_workers=2 parallel=python,typescript sequential=- cache_elided=-
|
|
326
|
+
```
|
|
327
|
+
|
|
304
328
|
### `init`
|
|
305
329
|
|
|
306
330
|
Scaffold the wiki structure and agent constraint file.
|
|
@@ -383,7 +407,7 @@ manifest.
|
|
|
383
407
|
|
|
384
408
|
```bash
|
|
385
409
|
llm-wiki sync --src-dir . --wiki-dir docs/llm_wiki
|
|
386
|
-
llm-wiki sync --jobs
|
|
410
|
+
llm-wiki sync --jobs 1 --cache-stats --src-dir . --wiki-dir docs/llm_wiki
|
|
387
411
|
llm-wiki sync --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
|
|
388
412
|
llm-wiki sync --include-tests go --src-dir . --wiki-dir docs/llm_wiki
|
|
389
413
|
llm-wiki sync --initialize-surfaces flows,dependencies --flow-category http --exclude-tests --dry-run
|
|
@@ -398,8 +422,10 @@ persistent inventory cache as lint when a git directory is available. Use
|
|
|
398
422
|
`--no-cache`, `--rebuild-cache`, `--cache-dir PATH`, and `--cache-stats` to
|
|
399
423
|
control or inspect inventory cache behavior. Use `--helper-cache-dir PATH` to
|
|
400
424
|
point Go/Rust/Haskell extraction at prepared helpers in a separate cache. Use
|
|
401
|
-
`--jobs N` or `--jobs auto` to opt
|
|
402
|
-
languages and plugin extractors whose
|
|
425
|
+
The interactive default is `--jobs 1`. Use `--jobs N` or `--jobs auto` to opt
|
|
426
|
+
into parallel extraction for built-in languages and plugin extractors whose
|
|
427
|
+
manifests set `"parallel_safe": true`; reserve `auto` for an isolated terminal
|
|
428
|
+
or controlled CI runner with known capacity.
|
|
403
429
|
Sync repairs
|
|
404
430
|
manifests with invalid source hashes without touching pages, and stops unusually
|
|
405
431
|
broad diffs unless `--force` is used.
|
|
@@ -592,7 +618,7 @@ llm-wiki lint --profile --wiki-dir docs/llm_wiki --src-dir .
|
|
|
592
618
|
llm-wiki lint --cache-stats --wiki-dir docs/llm_wiki --src-dir .
|
|
593
619
|
llm-wiki lint --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
|
|
594
620
|
llm-wiki lint --include-tests go --wiki-dir docs/llm_wiki --src-dir .
|
|
595
|
-
llm-wiki lint --jobs
|
|
621
|
+
llm-wiki lint --jobs 1 --wiki-dir docs/llm_wiki --src-dir .
|
|
596
622
|
llm-wiki lint --wiki-dir docs/llm_wiki --src-dir /path/to/repo --allow-external-src
|
|
597
623
|
```
|
|
598
624
|
|
|
@@ -601,6 +627,27 @@ Strict mode also requires the core wiki structure and a fresh sync manifest.
|
|
|
601
627
|
to stdout containing the normal lint report, diagnostics, and phase timings.
|
|
602
628
|
The JSON contract is preserved for extractor failures as well; lint still exits
|
|
603
629
|
nonzero, but stdout remains machine-readable.
|
|
630
|
+
`lint --profile` and `ci-check --format json` additionally include this shape:
|
|
631
|
+
|
|
632
|
+
```json
|
|
633
|
+
{
|
|
634
|
+
"execution": {
|
|
635
|
+
"extractor_jobs": {
|
|
636
|
+
"requested_jobs": "auto",
|
|
637
|
+
"resolved_jobs": 20,
|
|
638
|
+
"eligible_parallel_plans": 2,
|
|
639
|
+
"effective_workers": 2,
|
|
640
|
+
"parallel_plan_ids": ["python", "typescript"],
|
|
641
|
+
"sequential_plan_ids": [],
|
|
642
|
+
"cache_elided_plan_ids": []
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
This metadata is additive only in those two JSON modes. Default lint report
|
|
649
|
+
serialization, MCP lint responses, CI text/Markdown output, sync state and
|
|
650
|
+
manifests, and the `llm-wiki-context/v1` protocol stay unchanged.
|
|
604
651
|
Lint uses a persistent deep-inventory cache by default when a git directory is
|
|
605
652
|
available, storing `.git/llm-wiki-inventory-cache.json`. Override the cache
|
|
606
653
|
directory with `LLM_WIKI_CACHE_DIR` or `--cache-dir PATH`; the CLI flag wins for
|
|
@@ -612,8 +659,9 @@ Cache corruption or invalid fingerprints fall back to a full extraction without
|
|
|
612
659
|
reducing lint coverage. With `--profile --cache-stats`, the JSON payload includes a top-level
|
|
613
660
|
`cache` object. Use `--jobs N` or `--jobs auto` to opt into parallel extraction
|
|
614
661
|
for built-in languages and plugin extractors whose manifests set
|
|
615
|
-
`"parallel_safe": true`; the default
|
|
616
|
-
|
|
662
|
+
`"parallel_safe": true`; the default and recommended interactive setting is
|
|
663
|
+
`--jobs 1`. Reserve `auto` for an isolated terminal or controlled CI runner
|
|
664
|
+
with known capacity. Plugin extractors without that opt-in remain sequential.
|
|
617
665
|
Use `--include-tests go` when a wiki intentionally documents Go `_test.go`
|
|
618
666
|
files; omit it to lint against the default production-source inventory.
|
|
619
667
|
For trusted source trees outside the runner workspace, pass
|
|
@@ -677,6 +725,7 @@ For CI:
|
|
|
677
725
|
|
|
678
726
|
```bash
|
|
679
727
|
llm-wiki ci-check --src-dir . --wiki-dir docs/llm_wiki
|
|
728
|
+
# Capacity-reserved CI only; shared or unknown-capacity runners should use jobs 1.
|
|
680
729
|
llm-wiki ci-check --jobs auto --src-dir . --wiki-dir docs/llm_wiki
|
|
681
730
|
llm-wiki ci-check --helper-cache-dir .cache/llm-wiki-helpers --src-dir . --wiki-dir docs/llm_wiki
|
|
682
731
|
llm-wiki ci-check --include-tests go --src-dir . --wiki-dir docs/llm_wiki
|
|
@@ -710,6 +759,13 @@ llm-wiki context --budget 12000 --format json --focus all --output context.json
|
|
|
710
759
|
`--focus changed` is the default. Changed files get full detail, one-hop import
|
|
711
760
|
neighbors get slim detail, and remaining files get names only.
|
|
712
761
|
|
|
762
|
+
For broad repository-wide work, run one serialized
|
|
763
|
+
`llm-wiki context --budget 8000 --focus changed --read-only`, then read only the
|
|
764
|
+
source and wiki pages it selects. For a narrow task with supplied files or a
|
|
765
|
+
supplied diff, skip the full context scan and use the wiki index only for
|
|
766
|
+
navigation. The budget and focus bound emitted output after a full deep
|
|
767
|
+
inventory; they do not make the scan computationally cheap.
|
|
768
|
+
|
|
713
769
|
External tools can use the `llm-wiki-context/v1` JSON request protocol:
|
|
714
770
|
|
|
715
771
|
```bash
|
|
@@ -270,6 +270,30 @@ llm-wiki install-hook --force
|
|
|
270
270
|
|
|
271
271
|
## Command Reference
|
|
272
272
|
|
|
273
|
+
### Resource-aware execution
|
|
274
|
+
|
|
275
|
+
In an interactive IDE or whenever host capacity is unknown, run one heavy gate
|
|
276
|
+
at a time. Heavy gates include `context`, full tests, coverage, builds, browser
|
|
277
|
+
suites, `sync`, `lint`, and `ci-check`. The supervising agent owns that
|
|
278
|
+
schedule; subagents may inspect bounded files and diffs, but should not launch
|
|
279
|
+
heavy gates unless explicitly assigned.
|
|
280
|
+
|
|
281
|
+
Use `--jobs 1` for interactive source scans. `--jobs auto` remains an uncapped
|
|
282
|
+
opt-in for an isolated terminal or a controlled CI runner with reserved
|
|
283
|
+
capacity; do not combine it with nested heavy-gate fan-out. If ENOSPC, inotify,
|
|
284
|
+
file-descriptor, severe swapping, or editor-responsiveness failures occur, stop
|
|
285
|
+
launching work and do not retry the same burst. Recover capacity first, then
|
|
286
|
+
attempt at most one manual retry with `--jobs 1`; unfinished gates remain
|
|
287
|
+
inconclusive. Watcher-limit symptoms are host/IDE resource evidence, not proof
|
|
288
|
+
that `llm-wiki` leaked a watcher.
|
|
289
|
+
|
|
290
|
+
Before extraction, `sync`, `lint`, `ci-check`, and `context` write one flushed
|
|
291
|
+
plan line to stderr without contaminating stdout, for example:
|
|
292
|
+
|
|
293
|
+
```text
|
|
294
|
+
Extractor plan: requested=auto resolved=20 eligible_parallel=2 effective_workers=2 parallel=python,typescript sequential=- cache_elided=-
|
|
295
|
+
```
|
|
296
|
+
|
|
273
297
|
### `init`
|
|
274
298
|
|
|
275
299
|
Scaffold the wiki structure and agent constraint file.
|
|
@@ -352,7 +376,7 @@ manifest.
|
|
|
352
376
|
|
|
353
377
|
```bash
|
|
354
378
|
llm-wiki sync --src-dir . --wiki-dir docs/llm_wiki
|
|
355
|
-
llm-wiki sync --jobs
|
|
379
|
+
llm-wiki sync --jobs 1 --cache-stats --src-dir . --wiki-dir docs/llm_wiki
|
|
356
380
|
llm-wiki sync --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
|
|
357
381
|
llm-wiki sync --include-tests go --src-dir . --wiki-dir docs/llm_wiki
|
|
358
382
|
llm-wiki sync --initialize-surfaces flows,dependencies --flow-category http --exclude-tests --dry-run
|
|
@@ -367,8 +391,10 @@ persistent inventory cache as lint when a git directory is available. Use
|
|
|
367
391
|
`--no-cache`, `--rebuild-cache`, `--cache-dir PATH`, and `--cache-stats` to
|
|
368
392
|
control or inspect inventory cache behavior. Use `--helper-cache-dir PATH` to
|
|
369
393
|
point Go/Rust/Haskell extraction at prepared helpers in a separate cache. Use
|
|
370
|
-
`--jobs N` or `--jobs auto` to opt
|
|
371
|
-
languages and plugin extractors whose
|
|
394
|
+
The interactive default is `--jobs 1`. Use `--jobs N` or `--jobs auto` to opt
|
|
395
|
+
into parallel extraction for built-in languages and plugin extractors whose
|
|
396
|
+
manifests set `"parallel_safe": true`; reserve `auto` for an isolated terminal
|
|
397
|
+
or controlled CI runner with known capacity.
|
|
372
398
|
Sync repairs
|
|
373
399
|
manifests with invalid source hashes without touching pages, and stops unusually
|
|
374
400
|
broad diffs unless `--force` is used.
|
|
@@ -561,7 +587,7 @@ llm-wiki lint --profile --wiki-dir docs/llm_wiki --src-dir .
|
|
|
561
587
|
llm-wiki lint --cache-stats --wiki-dir docs/llm_wiki --src-dir .
|
|
562
588
|
llm-wiki lint --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
|
|
563
589
|
llm-wiki lint --include-tests go --wiki-dir docs/llm_wiki --src-dir .
|
|
564
|
-
llm-wiki lint --jobs
|
|
590
|
+
llm-wiki lint --jobs 1 --wiki-dir docs/llm_wiki --src-dir .
|
|
565
591
|
llm-wiki lint --wiki-dir docs/llm_wiki --src-dir /path/to/repo --allow-external-src
|
|
566
592
|
```
|
|
567
593
|
|
|
@@ -570,6 +596,27 @@ Strict mode also requires the core wiki structure and a fresh sync manifest.
|
|
|
570
596
|
to stdout containing the normal lint report, diagnostics, and phase timings.
|
|
571
597
|
The JSON contract is preserved for extractor failures as well; lint still exits
|
|
572
598
|
nonzero, but stdout remains machine-readable.
|
|
599
|
+
`lint --profile` and `ci-check --format json` additionally include this shape:
|
|
600
|
+
|
|
601
|
+
```json
|
|
602
|
+
{
|
|
603
|
+
"execution": {
|
|
604
|
+
"extractor_jobs": {
|
|
605
|
+
"requested_jobs": "auto",
|
|
606
|
+
"resolved_jobs": 20,
|
|
607
|
+
"eligible_parallel_plans": 2,
|
|
608
|
+
"effective_workers": 2,
|
|
609
|
+
"parallel_plan_ids": ["python", "typescript"],
|
|
610
|
+
"sequential_plan_ids": [],
|
|
611
|
+
"cache_elided_plan_ids": []
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
This metadata is additive only in those two JSON modes. Default lint report
|
|
618
|
+
serialization, MCP lint responses, CI text/Markdown output, sync state and
|
|
619
|
+
manifests, and the `llm-wiki-context/v1` protocol stay unchanged.
|
|
573
620
|
Lint uses a persistent deep-inventory cache by default when a git directory is
|
|
574
621
|
available, storing `.git/llm-wiki-inventory-cache.json`. Override the cache
|
|
575
622
|
directory with `LLM_WIKI_CACHE_DIR` or `--cache-dir PATH`; the CLI flag wins for
|
|
@@ -581,8 +628,9 @@ Cache corruption or invalid fingerprints fall back to a full extraction without
|
|
|
581
628
|
reducing lint coverage. With `--profile --cache-stats`, the JSON payload includes a top-level
|
|
582
629
|
`cache` object. Use `--jobs N` or `--jobs auto` to opt into parallel extraction
|
|
583
630
|
for built-in languages and plugin extractors whose manifests set
|
|
584
|
-
`"parallel_safe": true`; the default
|
|
585
|
-
|
|
631
|
+
`"parallel_safe": true`; the default and recommended interactive setting is
|
|
632
|
+
`--jobs 1`. Reserve `auto` for an isolated terminal or controlled CI runner
|
|
633
|
+
with known capacity. Plugin extractors without that opt-in remain sequential.
|
|
586
634
|
Use `--include-tests go` when a wiki intentionally documents Go `_test.go`
|
|
587
635
|
files; omit it to lint against the default production-source inventory.
|
|
588
636
|
For trusted source trees outside the runner workspace, pass
|
|
@@ -646,6 +694,7 @@ For CI:
|
|
|
646
694
|
|
|
647
695
|
```bash
|
|
648
696
|
llm-wiki ci-check --src-dir . --wiki-dir docs/llm_wiki
|
|
697
|
+
# Capacity-reserved CI only; shared or unknown-capacity runners should use jobs 1.
|
|
649
698
|
llm-wiki ci-check --jobs auto --src-dir . --wiki-dir docs/llm_wiki
|
|
650
699
|
llm-wiki ci-check --helper-cache-dir .cache/llm-wiki-helpers --src-dir . --wiki-dir docs/llm_wiki
|
|
651
700
|
llm-wiki ci-check --include-tests go --src-dir . --wiki-dir docs/llm_wiki
|
|
@@ -679,6 +728,13 @@ llm-wiki context --budget 12000 --format json --focus all --output context.json
|
|
|
679
728
|
`--focus changed` is the default. Changed files get full detail, one-hop import
|
|
680
729
|
neighbors get slim detail, and remaining files get names only.
|
|
681
730
|
|
|
731
|
+
For broad repository-wide work, run one serialized
|
|
732
|
+
`llm-wiki context --budget 8000 --focus changed --read-only`, then read only the
|
|
733
|
+
source and wiki pages it selects. For a narrow task with supplied files or a
|
|
734
|
+
supplied diff, skip the full context scan and use the wiki index only for
|
|
735
|
+
navigation. The budget and focus bound emitted output after a full deep
|
|
736
|
+
inventory; they do not make the scan computationally cheap.
|
|
737
|
+
|
|
682
738
|
External tools can use the `llm-wiki-context/v1` JSON request protocol:
|
|
683
739
|
|
|
684
740
|
```bash
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-wiki-cli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.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
|
|
@@ -301,6 +301,30 @@ llm-wiki install-hook --force
|
|
|
301
301
|
|
|
302
302
|
## Command Reference
|
|
303
303
|
|
|
304
|
+
### Resource-aware execution
|
|
305
|
+
|
|
306
|
+
In an interactive IDE or whenever host capacity is unknown, run one heavy gate
|
|
307
|
+
at a time. Heavy gates include `context`, full tests, coverage, builds, browser
|
|
308
|
+
suites, `sync`, `lint`, and `ci-check`. The supervising agent owns that
|
|
309
|
+
schedule; subagents may inspect bounded files and diffs, but should not launch
|
|
310
|
+
heavy gates unless explicitly assigned.
|
|
311
|
+
|
|
312
|
+
Use `--jobs 1` for interactive source scans. `--jobs auto` remains an uncapped
|
|
313
|
+
opt-in for an isolated terminal or a controlled CI runner with reserved
|
|
314
|
+
capacity; do not combine it with nested heavy-gate fan-out. If ENOSPC, inotify,
|
|
315
|
+
file-descriptor, severe swapping, or editor-responsiveness failures occur, stop
|
|
316
|
+
launching work and do not retry the same burst. Recover capacity first, then
|
|
317
|
+
attempt at most one manual retry with `--jobs 1`; unfinished gates remain
|
|
318
|
+
inconclusive. Watcher-limit symptoms are host/IDE resource evidence, not proof
|
|
319
|
+
that `llm-wiki` leaked a watcher.
|
|
320
|
+
|
|
321
|
+
Before extraction, `sync`, `lint`, `ci-check`, and `context` write one flushed
|
|
322
|
+
plan line to stderr without contaminating stdout, for example:
|
|
323
|
+
|
|
324
|
+
```text
|
|
325
|
+
Extractor plan: requested=auto resolved=20 eligible_parallel=2 effective_workers=2 parallel=python,typescript sequential=- cache_elided=-
|
|
326
|
+
```
|
|
327
|
+
|
|
304
328
|
### `init`
|
|
305
329
|
|
|
306
330
|
Scaffold the wiki structure and agent constraint file.
|
|
@@ -383,7 +407,7 @@ manifest.
|
|
|
383
407
|
|
|
384
408
|
```bash
|
|
385
409
|
llm-wiki sync --src-dir . --wiki-dir docs/llm_wiki
|
|
386
|
-
llm-wiki sync --jobs
|
|
410
|
+
llm-wiki sync --jobs 1 --cache-stats --src-dir . --wiki-dir docs/llm_wiki
|
|
387
411
|
llm-wiki sync --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
|
|
388
412
|
llm-wiki sync --include-tests go --src-dir . --wiki-dir docs/llm_wiki
|
|
389
413
|
llm-wiki sync --initialize-surfaces flows,dependencies --flow-category http --exclude-tests --dry-run
|
|
@@ -398,8 +422,10 @@ persistent inventory cache as lint when a git directory is available. Use
|
|
|
398
422
|
`--no-cache`, `--rebuild-cache`, `--cache-dir PATH`, and `--cache-stats` to
|
|
399
423
|
control or inspect inventory cache behavior. Use `--helper-cache-dir PATH` to
|
|
400
424
|
point Go/Rust/Haskell extraction at prepared helpers in a separate cache. Use
|
|
401
|
-
`--jobs N` or `--jobs auto` to opt
|
|
402
|
-
languages and plugin extractors whose
|
|
425
|
+
The interactive default is `--jobs 1`. Use `--jobs N` or `--jobs auto` to opt
|
|
426
|
+
into parallel extraction for built-in languages and plugin extractors whose
|
|
427
|
+
manifests set `"parallel_safe": true`; reserve `auto` for an isolated terminal
|
|
428
|
+
or controlled CI runner with known capacity.
|
|
403
429
|
Sync repairs
|
|
404
430
|
manifests with invalid source hashes without touching pages, and stops unusually
|
|
405
431
|
broad diffs unless `--force` is used.
|
|
@@ -592,7 +618,7 @@ llm-wiki lint --profile --wiki-dir docs/llm_wiki --src-dir .
|
|
|
592
618
|
llm-wiki lint --cache-stats --wiki-dir docs/llm_wiki --src-dir .
|
|
593
619
|
llm-wiki lint --cache-dir .cache/llm-wiki-inventory --helper-cache-dir .cache/llm-wiki-helpers
|
|
594
620
|
llm-wiki lint --include-tests go --wiki-dir docs/llm_wiki --src-dir .
|
|
595
|
-
llm-wiki lint --jobs
|
|
621
|
+
llm-wiki lint --jobs 1 --wiki-dir docs/llm_wiki --src-dir .
|
|
596
622
|
llm-wiki lint --wiki-dir docs/llm_wiki --src-dir /path/to/repo --allow-external-src
|
|
597
623
|
```
|
|
598
624
|
|
|
@@ -601,6 +627,27 @@ Strict mode also requires the core wiki structure and a fresh sync manifest.
|
|
|
601
627
|
to stdout containing the normal lint report, diagnostics, and phase timings.
|
|
602
628
|
The JSON contract is preserved for extractor failures as well; lint still exits
|
|
603
629
|
nonzero, but stdout remains machine-readable.
|
|
630
|
+
`lint --profile` and `ci-check --format json` additionally include this shape:
|
|
631
|
+
|
|
632
|
+
```json
|
|
633
|
+
{
|
|
634
|
+
"execution": {
|
|
635
|
+
"extractor_jobs": {
|
|
636
|
+
"requested_jobs": "auto",
|
|
637
|
+
"resolved_jobs": 20,
|
|
638
|
+
"eligible_parallel_plans": 2,
|
|
639
|
+
"effective_workers": 2,
|
|
640
|
+
"parallel_plan_ids": ["python", "typescript"],
|
|
641
|
+
"sequential_plan_ids": [],
|
|
642
|
+
"cache_elided_plan_ids": []
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
This metadata is additive only in those two JSON modes. Default lint report
|
|
649
|
+
serialization, MCP lint responses, CI text/Markdown output, sync state and
|
|
650
|
+
manifests, and the `llm-wiki-context/v1` protocol stay unchanged.
|
|
604
651
|
Lint uses a persistent deep-inventory cache by default when a git directory is
|
|
605
652
|
available, storing `.git/llm-wiki-inventory-cache.json`. Override the cache
|
|
606
653
|
directory with `LLM_WIKI_CACHE_DIR` or `--cache-dir PATH`; the CLI flag wins for
|
|
@@ -612,8 +659,9 @@ Cache corruption or invalid fingerprints fall back to a full extraction without
|
|
|
612
659
|
reducing lint coverage. With `--profile --cache-stats`, the JSON payload includes a top-level
|
|
613
660
|
`cache` object. Use `--jobs N` or `--jobs auto` to opt into parallel extraction
|
|
614
661
|
for built-in languages and plugin extractors whose manifests set
|
|
615
|
-
`"parallel_safe": true`; the default
|
|
616
|
-
|
|
662
|
+
`"parallel_safe": true`; the default and recommended interactive setting is
|
|
663
|
+
`--jobs 1`. Reserve `auto` for an isolated terminal or controlled CI runner
|
|
664
|
+
with known capacity. Plugin extractors without that opt-in remain sequential.
|
|
617
665
|
Use `--include-tests go` when a wiki intentionally documents Go `_test.go`
|
|
618
666
|
files; omit it to lint against the default production-source inventory.
|
|
619
667
|
For trusted source trees outside the runner workspace, pass
|
|
@@ -677,6 +725,7 @@ For CI:
|
|
|
677
725
|
|
|
678
726
|
```bash
|
|
679
727
|
llm-wiki ci-check --src-dir . --wiki-dir docs/llm_wiki
|
|
728
|
+
# Capacity-reserved CI only; shared or unknown-capacity runners should use jobs 1.
|
|
680
729
|
llm-wiki ci-check --jobs auto --src-dir . --wiki-dir docs/llm_wiki
|
|
681
730
|
llm-wiki ci-check --helper-cache-dir .cache/llm-wiki-helpers --src-dir . --wiki-dir docs/llm_wiki
|
|
682
731
|
llm-wiki ci-check --include-tests go --src-dir . --wiki-dir docs/llm_wiki
|
|
@@ -710,6 +759,13 @@ llm-wiki context --budget 12000 --format json --focus all --output context.json
|
|
|
710
759
|
`--focus changed` is the default. Changed files get full detail, one-hop import
|
|
711
760
|
neighbors get slim detail, and remaining files get names only.
|
|
712
761
|
|
|
762
|
+
For broad repository-wide work, run one serialized
|
|
763
|
+
`llm-wiki context --budget 8000 --focus changed --read-only`, then read only the
|
|
764
|
+
source and wiki pages it selects. For a narrow task with supplied files or a
|
|
765
|
+
supplied diff, skip the full context scan and use the wiki index only for
|
|
766
|
+
navigation. The budget and focus bound emitted output after a full deep
|
|
767
|
+
inventory; they do not make the scan computationally cheap.
|
|
768
|
+
|
|
713
769
|
External tools can use the `llm-wiki-context/v1` JSON request protocol:
|
|
714
770
|
|
|
715
771
|
```bash
|
|
@@ -75,6 +75,7 @@ src/llm_wiki_cli/services/dependencies.py
|
|
|
75
75
|
src/llm_wiki_cli/services/diagrams.py
|
|
76
76
|
src/llm_wiki_cli/services/documentation_queries.py
|
|
77
77
|
src/llm_wiki_cli/services/entrypoints.py
|
|
78
|
+
src/llm_wiki_cli/services/extraction_jobs.py
|
|
78
79
|
src/llm_wiki_cli/services/extractor_helpers.py
|
|
79
80
|
src/llm_wiki_cli/services/imports.py
|
|
80
81
|
src/llm_wiki_cli/services/infrastructure_inventory.py
|
|
@@ -90,6 +91,7 @@ src/llm_wiki_cli/services/paths.py
|
|
|
90
91
|
src/llm_wiki_cli/services/plugin_samples.py
|
|
91
92
|
src/llm_wiki_cli/services/plugins.py
|
|
92
93
|
src/llm_wiki_cli/services/relationships.py
|
|
94
|
+
src/llm_wiki_cli/services/resource_diagnostics.py
|
|
93
95
|
src/llm_wiki_cli/services/schema.py
|
|
94
96
|
src/llm_wiki_cli/services/secure_file.py
|
|
95
97
|
src/llm_wiki_cli/services/site_export.py
|
|
@@ -181,6 +183,7 @@ tests/test_phase4_quality.py
|
|
|
181
183
|
tests/test_plugins.py
|
|
182
184
|
tests/test_relationships.py
|
|
183
185
|
tests/test_release.py
|
|
186
|
+
tests/test_resource_diagnostics.py
|
|
184
187
|
tests/test_rust_extract.py
|
|
185
188
|
tests/test_schema.py
|
|
186
189
|
tests/test_secure_file.py
|
|
@@ -31,6 +31,8 @@ from .commands import (
|
|
|
31
31
|
)
|
|
32
32
|
from .config import AGENT_CHOICES, DEFAULT_WIKI_DIR, PathValidationError
|
|
33
33
|
from .services.contracts import BOOTSTRAP_SKIP_DATA_FLOW_FLAG
|
|
34
|
+
from .services.extraction_jobs import ExtractionJobsAction
|
|
35
|
+
from .services.resource_diagnostics import resource_failure_hint
|
|
34
36
|
from . import __version__
|
|
35
37
|
|
|
36
38
|
|
|
@@ -41,20 +43,6 @@ def _positive_int(value: str) -> int:
|
|
|
41
43
|
return parsed
|
|
42
44
|
|
|
43
45
|
|
|
44
|
-
def _jobs_value(value: str) -> int:
|
|
45
|
-
if value == "auto":
|
|
46
|
-
return max(1, os.cpu_count() or 1)
|
|
47
|
-
try:
|
|
48
|
-
parsed = int(value)
|
|
49
|
-
except ValueError as exc:
|
|
50
|
-
raise argparse.ArgumentTypeError(
|
|
51
|
-
"must be a positive integer or 'auto'"
|
|
52
|
-
) from exc
|
|
53
|
-
if parsed < 1:
|
|
54
|
-
raise argparse.ArgumentTypeError("must be greater than zero")
|
|
55
|
-
return parsed
|
|
56
|
-
|
|
57
|
-
|
|
58
46
|
def _surface_values(value: str) -> tuple[str, ...]:
|
|
59
47
|
values = tuple(part.strip().lower() for part in value.split(",") if part.strip())
|
|
60
48
|
if not values:
|
|
@@ -91,6 +79,20 @@ def _add_include_tests_argument(parser):
|
|
|
91
79
|
)
|
|
92
80
|
|
|
93
81
|
|
|
82
|
+
def _add_jobs_argument(parser):
|
|
83
|
+
parser.set_defaults(requested_jobs=1)
|
|
84
|
+
parser.add_argument(
|
|
85
|
+
"--jobs",
|
|
86
|
+
action=ExtractionJobsAction,
|
|
87
|
+
default=1,
|
|
88
|
+
metavar="JOBS",
|
|
89
|
+
help=(
|
|
90
|
+
"Parallel extractor jobs for built-ins and opted-in plugins: "
|
|
91
|
+
"positive integer or 'auto' (default: 1)"
|
|
92
|
+
),
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
|
|
94
96
|
_COMMAND_MODULES = {
|
|
95
97
|
"init": init_cmd,
|
|
96
98
|
"extract": extract_cmd,
|
|
@@ -328,13 +330,7 @@ def _add_lint_command(subparsers):
|
|
|
328
330
|
)
|
|
329
331
|
_add_helper_cache_argument(lint_parser)
|
|
330
332
|
_add_include_tests_argument(lint_parser)
|
|
331
|
-
lint_parser
|
|
332
|
-
"--jobs",
|
|
333
|
-
type=_jobs_value,
|
|
334
|
-
default=1,
|
|
335
|
-
metavar="JOBS",
|
|
336
|
-
help="Parallel extractor jobs for built-ins and opted-in plugins: positive integer or 'auto' (default: 1)",
|
|
337
|
-
)
|
|
333
|
+
_add_jobs_argument(lint_parser)
|
|
338
334
|
|
|
339
335
|
|
|
340
336
|
def _add_prepare_extractors_command(subparsers):
|
|
@@ -392,13 +388,7 @@ def _add_ci_check_command(subparsers):
|
|
|
392
388
|
)
|
|
393
389
|
_add_helper_cache_argument(ci_parser)
|
|
394
390
|
_add_include_tests_argument(ci_parser)
|
|
395
|
-
ci_parser
|
|
396
|
-
"--jobs",
|
|
397
|
-
type=_jobs_value,
|
|
398
|
-
default=1,
|
|
399
|
-
metavar="JOBS",
|
|
400
|
-
help="Parallel extractor jobs for built-ins and opted-in plugins: positive integer or 'auto' (default: 1)",
|
|
401
|
-
)
|
|
391
|
+
_add_jobs_argument(ci_parser)
|
|
402
392
|
|
|
403
393
|
|
|
404
394
|
def _add_install_hook_command(subparsers):
|
|
@@ -1220,13 +1210,7 @@ def _add_sync_command(subparsers):
|
|
|
1220
1210
|
)
|
|
1221
1211
|
_add_helper_cache_argument(sync_parser)
|
|
1222
1212
|
_add_include_tests_argument(sync_parser)
|
|
1223
|
-
sync_parser
|
|
1224
|
-
"--jobs",
|
|
1225
|
-
type=_jobs_value,
|
|
1226
|
-
default=1,
|
|
1227
|
-
metavar="JOBS",
|
|
1228
|
-
help="Parallel extractor jobs for built-ins and opted-in plugins: positive integer or 'auto' (default: 1)",
|
|
1229
|
-
)
|
|
1213
|
+
_add_jobs_argument(sync_parser)
|
|
1230
1214
|
sync_parser.add_argument(
|
|
1231
1215
|
"--force",
|
|
1232
1216
|
action="store_true",
|
|
@@ -1394,6 +1378,9 @@ def main():
|
|
|
1394
1378
|
if os.environ.get("LLM_WIKI_DEBUG"):
|
|
1395
1379
|
raise
|
|
1396
1380
|
print(f"Error: {exc}", file=sys.stderr)
|
|
1381
|
+
hint = resource_failure_hint(exc)
|
|
1382
|
+
if hint is not None:
|
|
1383
|
+
print(f"Resource guidance: {hint}", file=sys.stderr)
|
|
1397
1384
|
sys.exit(1)
|
|
1398
1385
|
|
|
1399
1386
|
|
|
@@ -7,6 +7,10 @@ from pathlib import Path
|
|
|
7
7
|
|
|
8
8
|
from ..config import DEFAULT_WIKI_DIR, validate_path, validate_source_root
|
|
9
9
|
from ..services.inventory_cache import InventoryCacheOptions
|
|
10
|
+
from ..services.extraction_jobs import (
|
|
11
|
+
extraction_job_request_from_args,
|
|
12
|
+
print_extraction_job_plan,
|
|
13
|
+
)
|
|
10
14
|
from ..services.metrics import record_validation_event
|
|
11
15
|
from .lint_cmd import build_report, render_markdown, render_text, report_to_dict
|
|
12
16
|
|
|
@@ -15,7 +19,14 @@ DEFAULT_REPORT = ".git/llm-wiki-ci-report.md"
|
|
|
15
19
|
|
|
16
20
|
def _render_console(report, output_format: str) -> str:
|
|
17
21
|
if output_format == "json":
|
|
18
|
-
return
|
|
22
|
+
return (
|
|
23
|
+
json.dumps(
|
|
24
|
+
report_to_dict(report, include_execution=True),
|
|
25
|
+
indent=2,
|
|
26
|
+
sort_keys=True,
|
|
27
|
+
)
|
|
28
|
+
+ "\n"
|
|
29
|
+
)
|
|
19
30
|
if output_format == "markdown":
|
|
20
31
|
return render_markdown(report)
|
|
21
32
|
return render_text(report)
|
|
@@ -38,6 +49,7 @@ def run(args) -> None:
|
|
|
38
49
|
validate_path(wiki_dir, "--wiki-dir")
|
|
39
50
|
|
|
40
51
|
started = time.monotonic()
|
|
52
|
+
job_request = extraction_job_request_from_args(args)
|
|
41
53
|
report = build_report(
|
|
42
54
|
wiki_dir,
|
|
43
55
|
src_dir,
|
|
@@ -46,6 +58,8 @@ def run(args) -> None:
|
|
|
46
58
|
parallel_jobs=getattr(args, "jobs", 1),
|
|
47
59
|
helper_cache_dir=helper_cache_dir,
|
|
48
60
|
include_tests=include_tests,
|
|
61
|
+
job_request=job_request,
|
|
62
|
+
plan_reporter=print_extraction_job_plan,
|
|
49
63
|
)
|
|
50
64
|
duration_ms = int((time.monotonic() - started) * 1000)
|
|
51
65
|
|
|
@@ -16,6 +16,7 @@ Usage::
|
|
|
16
16
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
|
+
from collections.abc import Callable
|
|
19
20
|
from fnmatch import fnmatch
|
|
20
21
|
import json
|
|
21
22
|
import sys
|
|
@@ -43,6 +44,11 @@ from ..services.documentation_queries import (
|
|
|
43
44
|
DocumentationGraphQueryService,
|
|
44
45
|
DocumentationQueryError,
|
|
45
46
|
)
|
|
47
|
+
from ..services.extraction_jobs import (
|
|
48
|
+
ExtractionJobPlan,
|
|
49
|
+
ExtractionJobRequest,
|
|
50
|
+
print_extraction_job_plan,
|
|
51
|
+
)
|
|
46
52
|
from ..services.io import write_text_output
|
|
47
53
|
from ..services.wiki_surface_index import build_surface_index
|
|
48
54
|
|
|
@@ -73,9 +79,21 @@ def _extractor_failure_message(inventory_result) -> str:
|
|
|
73
79
|
return "; ".join(details) or "Source extraction failed."
|
|
74
80
|
|
|
75
81
|
|
|
76
|
-
def get_inventory(
|
|
82
|
+
def get_inventory(
|
|
83
|
+
src_dir: str,
|
|
84
|
+
*,
|
|
85
|
+
deep: bool = False,
|
|
86
|
+
job_request: ExtractionJobRequest | None = None,
|
|
87
|
+
plan_reporter: Callable[[ExtractionJobPlan], None] | None = None,
|
|
88
|
+
) -> dict:
|
|
77
89
|
"""Context-local inventory helper kept patchable for protocol tests."""
|
|
78
|
-
inventory_result = get_inventory_result(
|
|
90
|
+
inventory_result = get_inventory_result(
|
|
91
|
+
src_dir,
|
|
92
|
+
deep=deep,
|
|
93
|
+
parallel_jobs=job_request.resolved_jobs if job_request is not None else 1,
|
|
94
|
+
job_request=job_request,
|
|
95
|
+
plan_reporter=plan_reporter,
|
|
96
|
+
)
|
|
79
97
|
if inventory_result.failed:
|
|
80
98
|
raise ProtocolRequestError(
|
|
81
99
|
_extractor_failure_message(inventory_result), "src_dir"
|
|
@@ -790,6 +808,8 @@ def _build_context(
|
|
|
790
808
|
allow_external_src: bool = False,
|
|
791
809
|
read_only: bool = False,
|
|
792
810
|
wiki_dir: str = DEFAULT_WIKI_DIR,
|
|
811
|
+
job_request: ExtractionJobRequest | None = None,
|
|
812
|
+
plan_reporter: Callable[[ExtractionJobPlan], None] | None = None,
|
|
793
813
|
) -> tuple[dict, list[str]]:
|
|
794
814
|
"""Build a context payload and return ``(payload, warnings)``."""
|
|
795
815
|
src_root = validate_source_root(
|
|
@@ -798,7 +818,12 @@ def _build_context(
|
|
|
798
818
|
allow_external=allow_external_src,
|
|
799
819
|
)
|
|
800
820
|
|
|
801
|
-
raw_inventory = get_inventory(
|
|
821
|
+
raw_inventory = get_inventory(
|
|
822
|
+
str(src_root),
|
|
823
|
+
deep=True,
|
|
824
|
+
job_request=job_request,
|
|
825
|
+
plan_reporter=plan_reporter,
|
|
826
|
+
)
|
|
802
827
|
filters = filters or {}
|
|
803
828
|
inventory = _apply_protocol_filters(raw_inventory, filters)
|
|
804
829
|
warnings: list[str] = []
|
|
@@ -899,6 +924,8 @@ def _run_protocol(args) -> None:
|
|
|
899
924
|
allow_external_src=getattr(args, "allow_external_src", False),
|
|
900
925
|
read_only=getattr(args, "read_only", False),
|
|
901
926
|
wiki_dir=getattr(args, "wiki_dir", DEFAULT_WIKI_DIR),
|
|
927
|
+
job_request=ExtractionJobRequest.resolved(1),
|
|
928
|
+
plan_reporter=print_extraction_job_plan,
|
|
902
929
|
)
|
|
903
930
|
except ProtocolRequestError as exc:
|
|
904
931
|
_emit_protocol_error(exc)
|
|
@@ -947,6 +974,8 @@ def run(args) -> None:
|
|
|
947
974
|
emit_warnings=True,
|
|
948
975
|
allow_external_src=allow_external_src,
|
|
949
976
|
read_only=read_only,
|
|
977
|
+
job_request=ExtractionJobRequest.resolved(1),
|
|
978
|
+
plan_reporter=print_extraction_job_plan,
|
|
950
979
|
)
|
|
951
980
|
except ProtocolRequestError as exc:
|
|
952
981
|
print(f"Error: {exc}", file=sys.stderr)
|