agent-wiki-cli 1.2.0__tar.gz → 1.3.0__tar.gz

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