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.
Files changed (207) hide show
  1. {agent_wiki_cli-1.3.1/src/agent_wiki_cli.egg-info → agent_wiki_cli-1.4.0}/PKG-INFO +63 -7
  2. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/README.md +62 -6
  3. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/pyproject.toml +1 -1
  4. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0/src/agent_wiki_cli.egg-info}/PKG-INFO +63 -7
  5. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/agent_wiki_cli.egg-info/SOURCES.txt +3 -0
  6. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/cli.py +22 -35
  7. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/ci_check_cmd.py +15 -1
  8. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/context_cmd.py +32 -3
  9. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/extract_cmd.py +89 -11
  10. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/generate_prompt_cmd.py +20 -12
  11. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/lint_cmd.py +32 -4
  12. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/sync_cmd.py +14 -1
  13. agent_wiki_cli-1.4.0/src/llm_wiki_cli/services/extraction_jobs.py +109 -0
  14. agent_wiki_cli-1.4.0/src/llm_wiki_cli/services/resource_diagnostics.py +85 -0
  15. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/schema.py +39 -15
  16. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/onboarding-guide/SKILL.md +24 -3
  17. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/user-docs-author/SKILL.md +14 -2
  18. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/user-docs-author/reference.md +1 -1
  19. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-reference/SKILL.md +4 -2
  20. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-reference/reference.md +40 -4
  21. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-sync/SKILL.md +23 -3
  22. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_ci_check.py +46 -6
  23. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_cli.py +54 -0
  24. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_context.py +34 -0
  25. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_extract.py +260 -1
  26. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_generate_prompt.py +30 -6
  27. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_lint.py +42 -2
  28. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_mcp.py +5 -2
  29. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_package_metadata.py +30 -1
  30. agent_wiki_cli-1.4.0/tests/test_resource_diagnostics.py +89 -0
  31. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_schema.py +27 -6
  32. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_skills.py +15 -1
  33. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_sync.py +22 -2
  34. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_wiki_reference_skill.py +28 -2
  35. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/LICENSE +0 -0
  36. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/MANIFEST.in +0 -0
  37. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/examples/plugins/m4-documentation-hooks/detectors.py +0 -0
  38. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/examples/plugins/m4-documentation-hooks/llm-wiki-plugin.json +0 -0
  39. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/examples/plugins/m4-documentation-hooks/styles.py +0 -0
  40. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/setup.cfg +0 -0
  41. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/agent_wiki_cli.egg-info/dependency_links.txt +0 -0
  42. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/agent_wiki_cli.egg-info/entry_points.txt +0 -0
  43. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/agent_wiki_cli.egg-info/requires.txt +0 -0
  44. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/agent_wiki_cli.egg-info/top_level.txt +0 -0
  45. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/__init__.py +0 -0
  46. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/api.py +0 -0
  47. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/__init__.py +0 -0
  48. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/bootstrap_cmd.py +0 -0
  49. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/bump_cmd.py +0 -0
  50. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/hook_cmd.py +0 -0
  51. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/init_cmd.py +0 -0
  52. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/install_cmd.py +0 -0
  53. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/mcp_cmd.py +0 -0
  54. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/metrics_cmd.py +0 -0
  55. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/migrate_cmd.py +0 -0
  56. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/obsidian_cmd.py +0 -0
  57. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/plugins_cmd.py +0 -0
  58. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/prepare_extractors_cmd.py +0 -0
  59. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/release_cmd.py +0 -0
  60. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/review_cmd.py +0 -0
  61. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/site_cmd.py +0 -0
  62. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/skills_cmd.py +0 -0
  63. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/status_cmd.py +0 -0
  64. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/team_cmd.py +0 -0
  65. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/trigger_cmd.py +0 -0
  66. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/uninstall_cmd.py +0 -0
  67. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/commands/upgrade_cmd.py +0 -0
  68. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/config.py +0 -0
  69. {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
  70. {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
  71. {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
  72. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/__init__.py +0 -0
  73. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/common.py +0 -0
  74. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/fastapi_contracts.py +0 -0
  75. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/go_extractor.py +0 -0
  76. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/go_scripts/go.mod +0 -0
  77. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/go_scripts/main.go +0 -0
  78. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_extractor.py +0 -0
  79. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_scripts/Inventory.hs +0 -0
  80. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_scripts/Json.hs +0 -0
  81. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_scripts/Main.hs +0 -0
  82. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_scripts/Parser.hs +0 -0
  83. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/haskell_scripts/Paths.hs +0 -0
  84. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/python_contracts.py +0 -0
  85. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/python_extractor.py +0 -0
  86. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/rust_extractor.py +0 -0
  87. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/rust_scripts/Cargo.lock +0 -0
  88. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/rust_scripts/Cargo.toml +0 -0
  89. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/rust_scripts/src/main.rs +0 -0
  90. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/ts_extractor.py +0 -0
  91. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/ts_scripts/extract.js +0 -0
  92. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/extractors/ts_scripts/package.json +0 -0
  93. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/__init__.py +0 -0
  94. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/api_contracts.py +0 -0
  95. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/circuit_breaker.py +0 -0
  96. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/contracts.py +0 -0
  97. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/data_flow.py +0 -0
  98. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/dependencies.py +0 -0
  99. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/diagrams.py +0 -0
  100. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/documentation_queries.py +0 -0
  101. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/entrypoints.py +0 -0
  102. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/extractor_helpers.py +0 -0
  103. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/imports.py +0 -0
  104. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/infrastructure_inventory.py +0 -0
  105. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/inventory_cache.py +0 -0
  106. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/io.py +0 -0
  107. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/lockfile.py +0 -0
  108. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/mcp_server.py +0 -0
  109. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/metrics.py +0 -0
  110. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/module_maps.py +0 -0
  111. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/obsidian.py +0 -0
  112. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/packages.py +0 -0
  113. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/paths.py +0 -0
  114. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/plugin_samples.py +0 -0
  115. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/plugins.py +0 -0
  116. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/relationships.py +0 -0
  117. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/secure_file.py +0 -0
  118. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/site_export.py +0 -0
  119. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/site_html_check.py +0 -0
  120. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/skills.py +0 -0
  121. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/source_snapshot.py +0 -0
  122. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/team.py +0 -0
  123. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/versioning.py +0 -0
  124. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/wiki_media.py +0 -0
  125. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/wiki_surface.py +0 -0
  126. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/services/wiki_surface_index.py +0 -0
  127. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/attack-surface/SKILL.md +0 -0
  128. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/attack-surface/reference.md +0 -0
  129. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/dep-audit/SKILL.md +0 -0
  130. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/dep-audit/reference.md +0 -0
  131. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/dep-vuln-triage/SKILL.md +0 -0
  132. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/dep-vuln-triage/reference.md +0 -0
  133. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/doc-hub/SKILL.md +0 -0
  134. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/doc-hub/reference.md +0 -0
  135. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/doc-review/SKILL.md +0 -0
  136. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/doc-review/reference.md +0 -0
  137. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/impact-analysis/SKILL.md +0 -0
  138. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/impact-analysis/reference.md +0 -0
  139. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/infra-review/SKILL.md +0 -0
  140. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/infra-review/reference.md +0 -0
  141. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/onboarding-guide/reference.md +0 -0
  142. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/publish-docs/SKILL.md +0 -0
  143. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/publish-docs/reference.md +0 -0
  144. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/usage-examples/SKILL.md +0 -0
  145. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/usage-examples/reference.md +0 -0
  146. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-bootstrap/SKILL.md +0 -0
  147. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-bootstrap/reference.md +0 -0
  148. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/src/llm_wiki_cli/skills/wiki-sync/reference.md +0 -0
  149. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_api.py +0 -0
  150. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_api_contracts.py +0 -0
  151. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_bootstrap.py +0 -0
  152. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_bootstrap_api_contracts.py +0 -0
  153. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_bump.py +0 -0
  154. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_circuit_breaker.py +0 -0
  155. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_config.py +0 -0
  156. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_data_flow.py +0 -0
  157. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_dependencies.py +0 -0
  158. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_dependencies_external.py +0 -0
  159. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_diagrams.py +0 -0
  160. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_docker_bootstrap.py +0 -0
  161. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_docker_extract.py +0 -0
  162. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_docker_lint.py +0 -0
  163. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_documentation_queries.py +0 -0
  164. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_e2e.py +0 -0
  165. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_entrypoints.py +0 -0
  166. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_extract_api_contracts.py +0 -0
  167. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_extractor_helpers.py +0 -0
  168. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_extractor_inventory_contracts.py +0 -0
  169. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_go_extract.py +0 -0
  170. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_haskell_extract.py +0 -0
  171. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_hook.py +0 -0
  172. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_imports.py +0 -0
  173. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_infrastructure_inventory.py +0 -0
  174. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_init.py +0 -0
  175. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_install.py +0 -0
  176. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_inventory_cache.py +0 -0
  177. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_io.py +0 -0
  178. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_lockfile.py +0 -0
  179. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_m4_dogfood.py +0 -0
  180. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_m4_plugin_sample.py +0 -0
  181. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_metrics.py +0 -0
  182. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_migrate.py +0 -0
  183. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_module_maps.py +0 -0
  184. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_multilanguage_wiki.py +0 -0
  185. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_navigation_layouts.py +0 -0
  186. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_obsidian.py +0 -0
  187. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_packages.py +0 -0
  188. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_paths.py +0 -0
  189. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_phase4_quality.py +0 -0
  190. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_plugins.py +0 -0
  191. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_relationships.py +0 -0
  192. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_release.py +0 -0
  193. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_rust_extract.py +0 -0
  194. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_secure_file.py +0 -0
  195. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_site_export.py +0 -0
  196. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_source_snapshot.py +0 -0
  197. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_status.py +0 -0
  198. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_surface_initialization.py +0 -0
  199. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_sync_api_contracts.py +0 -0
  200. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_team.py +0 -0
  201. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_trigger.py +0 -0
  202. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_ts_extract.py +0 -0
  203. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_uninstall.py +0 -0
  204. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_upgrade.py +0 -0
  205. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_versioning.py +0 -0
  206. {agent_wiki_cli-1.3.1 → agent_wiki_cli-1.4.0}/tests/test_wiki_surface.py +0 -0
  207. {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.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 auto --cache-stats --src-dir . --wiki-dir docs/llm_wiki
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 into parallel extraction for built-in
402
- languages and plugin extractors whose manifests set `"parallel_safe": true`.
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 auto --wiki-dir docs/llm_wiki --src-dir .
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 is `--jobs 1`. Plugin extractors without
616
- that opt-in remain sequential.
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 auto --cache-stats --src-dir . --wiki-dir docs/llm_wiki
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 into parallel extraction for built-in
371
- languages and plugin extractors whose manifests set `"parallel_safe": true`.
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 auto --wiki-dir docs/llm_wiki --src-dir .
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 is `--jobs 1`. Plugin extractors without
585
- that opt-in remain sequential.
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agent-wiki-cli"
7
- version = "1.3.1"
7
+ version = "1.4.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"}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-wiki-cli
3
- Version: 1.3.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 auto --cache-stats --src-dir . --wiki-dir docs/llm_wiki
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 into parallel extraction for built-in
402
- languages and plugin extractors whose manifests set `"parallel_safe": true`.
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 auto --wiki-dir docs/llm_wiki --src-dir .
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 is `--jobs 1`. Plugin extractors without
616
- that opt-in remain sequential.
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.add_argument(
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.add_argument(
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.add_argument(
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 json.dumps(report_to_dict(report), indent=2, sort_keys=True) + "\n"
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(src_dir: str, *, deep: bool = False) -> dict:
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(src_dir, deep=deep)
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(str(src_root), deep=True)
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)