rpr-cli 0.1.9__tar.gz → 0.1.20__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 (221) hide show
  1. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/PKG-INFO +1 -1
  2. rpr_cli-0.1.20/src/rpr/__init__.py +1 -0
  3. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/dependency_manifest_data.py +96 -91
  4. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/manifest_refresh.py +37 -9
  5. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_generate_storybook.py +4 -1
  6. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_init.py +1 -8
  7. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_refresh.py +10 -11
  8. rpr_cli-0.1.9/src/rpr/__init__.py +0 -1
  9. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/.github/agents/story.agent.md +0 -0
  10. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/.github/workflows/publish-pypi.yml +0 -0
  11. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/.gitignore +0 -0
  12. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/CLAUDE.md +0 -0
  13. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/GEMINI.md +0 -0
  14. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/LICENSE +0 -0
  15. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/README.md +0 -0
  16. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/instructions/all.instructions.md +0 -0
  17. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/instructions/api.instructions.md +0 -0
  18. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/instructions/domain.instructions.md +0 -0
  19. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/instructions/frontend.instructions.md +0 -0
  20. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/instructions/rust-engine.instructions.md +0 -0
  21. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/instructions/setup-guide.instructions.md +0 -0
  22. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/instructions/tooling-setup.instructions.md +0 -0
  23. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/instructions/tooling.instructions.md +0 -0
  24. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/scaffolds/README.md +0 -0
  25. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/scaffolds/api/main.py +0 -0
  26. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/scaffolds/domain/base-repo.md +0 -0
  27. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/scaffolds/domain/base_entity.md +0 -0
  28. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/scaffolds/frontend/api.service.ts +0 -0
  29. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/Sample-dot-github/scaffolds/frontend/useStateNavigation.ts +0 -0
  30. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/changelogs/mui_v9.txt +0 -0
  31. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/code-map.md +0 -0
  32. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/nx_uv_setup.md +0 -0
  33. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/patch_output.py +0 -0
  34. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/pyproject.toml +0 -0
  35. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/Cargo.lock +0 -0
  36. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/Cargo.toml +0 -0
  37. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/pyproject.toml +0 -0
  38. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/rpr_parser.pyi +0 -0
  39. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/config/container.rs +0 -0
  40. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/config/mod.rs +0 -0
  41. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/config/settings.rs +0 -0
  42. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/graph.rs +0 -0
  43. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/lib.rs +0 -0
  44. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/models/dtos/mod.rs +0 -0
  45. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/models/entities/mod.rs +0 -0
  46. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/models/entities/users.rs +0 -0
  47. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/models/mod.rs +0 -0
  48. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/parse.rs +0 -0
  49. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/repos/base.rs +0 -0
  50. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/repos/mod.rs +0 -0
  51. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/repos/users.rs +0 -0
  52. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/resolve.rs +0 -0
  53. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/src/walker.rs +0 -0
  54. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/rpr-parser/uv.lock +0 -0
  55. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/special_files.md +0 -0
  56. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/__init__.py +0 -0
  57. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/approval.py +0 -0
  58. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/bootstrap.py +0 -0
  59. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/client.py +0 -0
  60. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/control.py +0 -0
  61. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/mock.py +0 -0
  62. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/runtime.py +0 -0
  63. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/session.py +0 -0
  64. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/tools/__init__.py +0 -0
  65. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/tools/base.py +0 -0
  66. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/tools/mutating.py +0 -0
  67. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/tools/readonly.py +0 -0
  68. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/agent/tools/registry.py +0 -0
  69. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/application/__init__.py +0 -0
  70. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/application/catalog.py +0 -0
  71. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/application/chat_service.py +0 -0
  72. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/application/checks.py +0 -0
  73. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/application/cli_adapter.py +0 -0
  74. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/application/completer.py +0 -0
  75. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/application/conversation_service.py +0 -0
  76. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/application/prompt_service.py +0 -0
  77. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/application/selector.py +0 -0
  78. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/application/shell.py +0 -0
  79. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/checks/__init__.py +0 -0
  80. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/checks/base.py +0 -0
  81. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/checks/instructions.py +0 -0
  82. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/checks/packages.py +0 -0
  83. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/checks/workspace.py +0 -0
  84. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/cli.py +0 -0
  85. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/__init__.py +0 -0
  86. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/add.py +0 -0
  87. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/chat.py +0 -0
  88. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/check.py +0 -0
  89. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/generate/__init__.py +0 -0
  90. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/generate/api.py +0 -0
  91. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/generate/domain.py +0 -0
  92. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/generate/engine.py +0 -0
  93. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/generate/storybook.py +0 -0
  94. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/generate/ui.py +0 -0
  95. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/init.py +0 -0
  96. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/map.py +0 -0
  97. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/refresh.py +0 -0
  98. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/settings.py +0 -0
  99. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/commands/sync.py +0 -0
  100. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/context.py +0 -0
  101. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/dependencies.py +0 -0
  102. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/generators/__init__.py +0 -0
  103. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/generators/base.py +0 -0
  104. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/generators/claude.py +0 -0
  105. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/generators/copilot.py +0 -0
  106. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/generators/cursor.py +0 -0
  107. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/generators/gemini.py +0 -0
  108. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/__init__.py +0 -0
  109. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/architecture.py +0 -0
  110. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/chains.py +0 -0
  111. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/classifier.py +0 -0
  112. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/coverage.py +0 -0
  113. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/dependencies.py +0 -0
  114. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/extractor.py +0 -0
  115. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/graph.py +0 -0
  116. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/output.py +0 -0
  117. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/responsibility.py +0 -0
  118. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/topology.py +0 -0
  119. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/map/walker.py +0 -0
  120. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/domain/base_entity.md +0 -0
  121. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/domain/base_repo.md +0 -0
  122. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/domain/container.md +0 -0
  123. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/domain/settings.md +0 -0
  124. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/instructions/all.instructions.md +0 -0
  125. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/instructions/api.instructions.md +0 -0
  126. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/instructions/domain.instructions.md +0 -0
  127. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/instructions/frontend.instructions.md +0 -0
  128. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/instructions/rust-engine.instructions.md +0 -0
  129. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/instructions/setup-guide.instructions.md +0 -0
  130. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/instructions/tooling-setup.instructions.md +0 -0
  131. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/instructions/tooling.instructions.md +0 -0
  132. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/js_special_files/fetch.service.md +0 -0
  133. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/js_special_files/sticky-navigation.md +0 -0
  134. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/special_files/domain_container.md +0 -0
  135. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/special_files/domain_settings.md +0 -0
  136. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/special_files/dto_util.md +0 -0
  137. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/special_files/encrypted_column.md +0 -0
  138. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/special_files/mapper_util.md +0 -0
  139. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/scaffolds/special_files/partial_update.md +0 -0
  140. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/templates/__init__.py +0 -0
  141. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/templates/registry.py +0 -0
  142. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/ui/__init__.py +0 -0
  143. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/ui/console.py +0 -0
  144. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/ui/markdown.py +0 -0
  145. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/ui/prompt_session.py +0 -0
  146. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/ui/renderers.py +0 -0
  147. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/ui/theme.py +0 -0
  148. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/src/rpr/workspace.py +0 -0
  149. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/README.md +0 -0
  150. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/00-bootstrap-cli.md +0 -0
  151. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/01-rpr-init.md +0 -0
  152. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/02-rpr-generate-domain.md +0 -0
  153. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/03-rpr-generate-api.md +0 -0
  154. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/04-rpr-generate-ui.md +0 -0
  155. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/05-rpr-generate-engine.md +0 -0
  156. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/06-rpr-generate-storybook.md +0 -0
  157. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/07-rpr-sync-rules.md +0 -0
  158. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/08-rpr-add-template.md +0 -0
  159. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/09-rpr-check.md +0 -0
  160. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/10-rpr-domain-config.md +0 -0
  161. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/18-rpr-terminal-ui-foundation.md +0 -0
  162. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/19-rpr-markdown-rendering.md +0 -0
  163. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/20-rpr-chat-repl.md +0 -0
  164. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/21-rpr-agent-tool-loop.md +0 -0
  165. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/22-rpr-chat-tui.md +0 -0
  166. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/23-rpr-chat-unified-command-shell.md +0 -0
  167. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/24-rpr-async-chat-runtime-and-services.md +0 -0
  168. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/25-rpr-prompt-service-and-conversation-lifecycle.md +0 -0
  169. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/26-rpr-shared-command-catalog.md +0 -0
  170. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/27-rpr-slash-command-selection-panel.md +0 -0
  171. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/28-rpr-chat-cancellable-and-multiline-input.md +0 -0
  172. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/chat/29-rpr-file-context-selection.md +0 -0
  173. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/11-rpr-map-command.md +0 -0
  174. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/12-rpr-map-file-walker.md +0 -0
  175. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/13-rpr-map-rust-engine.md +0 -0
  176. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/13a-rpr-map-gitignore.md +0 -0
  177. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/14-rpr-map-graph-builder.md +0 -0
  178. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/15-rpr-map-analysis-bridge.md +0 -0
  179. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/16-rpr-map-layer-classifier.md +0 -0
  180. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/17-rpr-map-output.md +0 -0
  181. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/17a-rpr-map-directory-topology.md +0 -0
  182. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/17b-rpr-map-architecture-assessment.md +0 -0
  183. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/17c-rpr-map-representative-chains.md +0 -0
  184. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/completed/map/17d-rpr-map-multi-resolution-output.md +0 -0
  185. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/map/30-rpr-map-directory-view-and-cycle-detection.md +0 -0
  186. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/map/31-rpr-map-coupling-hotspots-and-verdict-reasoning.md +0 -0
  187. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/stories/map/32-rpr-map-dependencies-responsibilities-and-test-coverage.md +0 -0
  188. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/__init__.py +0 -0
  189. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_add.py +0 -0
  190. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_architecture.py +0 -0
  191. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_architecture_unwrapped.py +0 -0
  192. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_catalog.py +0 -0
  193. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_chat.py +0 -0
  194. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_chat_service.py +0 -0
  195. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_check.py +0 -0
  196. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_completer.py +0 -0
  197. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_context.py +0 -0
  198. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_generate_api.py +0 -0
  199. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_generate_domain.py +0 -0
  200. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_generate_engine.py +0 -0
  201. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_generate_ui.py +0 -0
  202. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_map.py +0 -0
  203. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_map_chains.py +0 -0
  204. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_map_classifier.py +0 -0
  205. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_map_coverage.py +0 -0
  206. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_map_dependencies.py +0 -0
  207. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_map_extractor.py +0 -0
  208. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_map_graph.py +0 -0
  209. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_map_output.py +0 -0
  210. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_map_responsibility.py +0 -0
  211. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_map_topology.py +0 -0
  212. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_map_walker.py +0 -0
  213. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_packaging.py +0 -0
  214. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_prompt_session.py +0 -0
  215. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_rpr_parser_stub.py +0 -0
  216. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_selector.py +0 -0
  217. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_settings.py +0 -0
  218. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_sync.py +0 -0
  219. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/tests/test_ui.py +0 -0
  220. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/update_output.py +0 -0
  221. {rpr_cli-0.1.9 → rpr_cli-0.1.20}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rpr-cli
3
- Version: 0.1.9
3
+ Version: 0.1.20
4
4
  Summary: RPR CLI -- React Python Rust monorepo scaffolding orchestrator
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -0,0 +1 @@
1
+ __version__ = "0.1.20"
@@ -6,279 +6,284 @@ from __future__ import annotations
6
6
  MANIFEST = {
7
7
  "root_node_dev_dependencies": {
8
8
  "@eslint/js": {
9
- "specifier": "^9.39.4",
9
+ "specifier": "latest",
10
10
  },
11
11
  "@nx/eslint": {
12
- "specifier": "^22.7.1",
12
+ "specifier": "latest",
13
13
  },
14
14
  "@nx/eslint-plugin": {
15
- "specifier": "^22.7.1",
15
+ "specifier": "latest",
16
16
  },
17
17
  "eslint": {
18
- "specifier": "^9.39.4",
18
+ "specifier": "latest",
19
19
  },
20
20
  "eslint-plugin-import": {
21
- "specifier": "^2.32.0",
21
+ "specifier": "latest",
22
22
  },
23
23
  "eslint-plugin-jsx-a11y": {
24
- "specifier": "^6.10.2",
24
+ "specifier": "latest",
25
25
  },
26
26
  "eslint-plugin-react": {
27
- "specifier": "^7.37.5",
27
+ "specifier": "latest",
28
28
  },
29
29
  "eslint-plugin-react-hooks": {
30
- "specifier": "^7.1.1",
30
+ "specifier": "latest",
31
31
  },
32
32
  "globals": {
33
- "specifier": "^15.15.0",
33
+ "specifier": "latest",
34
34
  },
35
35
  "prettier": {
36
- "specifier": "^3.7.4",
36
+ "specifier": "latest",
37
37
  },
38
38
  "typescript-eslint": {
39
- "specifier": "^8.59.2",
39
+ "specifier": "latest",
40
40
  },
41
41
  },
42
42
  "root_storybook_dev_dependencies": {
43
43
  "@nx/storybook": {
44
44
  "registry": "npm",
45
45
  "specifier": "latest",
46
- "strategy": "caret",
46
+ "strategy": "latest",
47
47
  }
48
48
  },
49
49
  "ui_library_dependencies": {
50
50
  "@mui/material": {
51
51
  "registry": "npm",
52
- "specifier": "^9",
53
- "strategy": "caret",
52
+ "specifier": "latest",
53
+ "strategy": "latest",
54
54
  },
55
55
  "@emotion/react": {
56
56
  "registry": "npm",
57
- "specifier": "^11",
58
- "strategy": "caret",
57
+ "specifier": "latest",
58
+ "strategy": "latest",
59
59
  },
60
60
  "@emotion/styled": {
61
61
  "registry": "npm",
62
- "specifier": "^11",
63
- "strategy": "caret",
62
+ "specifier": "latest",
63
+ "strategy": "latest",
64
64
  },
65
65
  "@tanstack/react-query": {
66
66
  "registry": "npm",
67
- "specifier": "^5",
68
- "strategy": "caret",
67
+ "specifier": "latest",
68
+ "strategy": "latest",
69
69
  },
70
70
  "@tanstack/react-router": {
71
71
  "registry": "npm",
72
- "specifier": "^1",
73
- "strategy": "caret",
72
+ "specifier": "latest",
73
+ "strategy": "latest",
74
74
  },
75
75
  "react": {
76
76
  "registry": "npm",
77
- "specifier": "^19",
78
- "strategy": "caret",
77
+ "specifier": "latest",
78
+ "strategy": "latest",
79
79
  },
80
80
  "react-dom": {
81
81
  "registry": "npm",
82
- "specifier": "^19",
83
- "strategy": "caret",
82
+ "specifier": "latest",
83
+ "strategy": "latest",
84
84
  },
85
85
  },
86
86
  "ui_library_dev_dependencies": {
87
87
  "@types/react": {
88
88
  "registry": "npm",
89
- "specifier": "^19",
90
- "strategy": "caret",
89
+ "specifier": "latest",
90
+ "strategy": "latest",
91
91
  },
92
92
  "@types/react-dom": {
93
93
  "registry": "npm",
94
- "specifier": "^19",
95
- "strategy": "caret",
94
+ "specifier": "latest",
95
+ "strategy": "latest",
96
96
  },
97
97
  "typescript": {
98
98
  "registry": "npm",
99
- "specifier": "^5",
100
- "strategy": "caret",
99
+ "specifier": "latest",
100
+ "strategy": "latest",
101
101
  },
102
102
  "vite": {
103
103
  "registry": "npm",
104
- "specifier": "^8",
105
- "strategy": "caret",
104
+ "specifier": "latest",
105
+ "strategy": "latest",
106
106
  },
107
107
  "vitest": {
108
108
  "registry": "npm",
109
- "specifier": "^4",
110
- "strategy": "caret",
109
+ "specifier": "latest",
110
+ "strategy": "latest",
111
111
  },
112
112
  },
113
113
  "web_app_dev_dependencies": {
114
114
  "@types/react": {
115
115
  "registry": "npm",
116
- "specifier": "^19",
117
- "strategy": "caret",
116
+ "specifier": "latest",
117
+ "strategy": "latest",
118
118
  },
119
119
  "@types/react-dom": {
120
120
  "registry": "npm",
121
- "specifier": "^19",
122
- "strategy": "caret",
121
+ "specifier": "latest",
122
+ "strategy": "latest",
123
123
  },
124
124
  "@vitejs/plugin-react": {
125
125
  "registry": "npm",
126
126
  "specifier": "latest",
127
- "strategy": "caret",
127
+ "strategy": "latest",
128
128
  },
129
129
  "typescript": {
130
130
  "registry": "npm",
131
- "specifier": "^5",
132
- "strategy": "caret",
131
+ "specifier": "latest",
132
+ "strategy": "latest",
133
133
  },
134
134
  "vite": {
135
135
  "registry": "npm",
136
- "specifier": "^8",
137
- "strategy": "caret",
136
+ "specifier": "latest",
137
+ "strategy": "latest",
138
138
  },
139
139
  "vitest": {
140
140
  "registry": "npm",
141
- "specifier": "^4",
142
- "strategy": "caret",
141
+ "specifier": "latest",
142
+ "strategy": "latest",
143
143
  },
144
144
  },
145
145
  "storybook_dependencies": {
146
146
  "@emotion/react": {
147
147
  "registry": "npm",
148
- "specifier": "^11",
149
- "strategy": "caret",
148
+ "specifier": "latest",
149
+ "strategy": "latest",
150
150
  },
151
151
  "@emotion/styled": {
152
152
  "registry": "npm",
153
- "specifier": "^11",
154
- "strategy": "caret",
153
+ "specifier": "latest",
154
+ "strategy": "latest",
155
155
  },
156
156
  "@mui/material": {
157
157
  "registry": "npm",
158
- "specifier": "^9",
159
- "strategy": "caret",
158
+ "specifier": "latest",
159
+ "strategy": "latest",
160
160
  },
161
161
  "react": {
162
162
  "registry": "npm",
163
- "specifier": "^19",
164
- "strategy": "caret",
163
+ "specifier": "latest",
164
+ "strategy": "latest",
165
165
  },
166
166
  "react-dom": {
167
167
  "registry": "npm",
168
- "specifier": "^19",
169
- "strategy": "caret",
168
+ "specifier": "latest",
169
+ "strategy": "latest",
170
170
  },
171
171
  },
172
172
  "storybook_dev_dependencies": {
173
173
  "@storybook/addon-essentials": {
174
174
  "registry": "npm",
175
- "specifier": "^8",
176
- "strategy": "caret",
175
+ "specifier": "latest",
176
+ "strategy": "latest",
177
177
  },
178
178
  "@storybook/react": {
179
179
  "registry": "npm",
180
- "specifier": "^8",
181
- "strategy": "caret",
180
+ "specifier": "latest",
181
+ "strategy": "latest",
182
182
  },
183
183
  "@storybook/react-vite": {
184
184
  "registry": "npm",
185
- "specifier": "^8",
186
- "strategy": "caret",
185
+ "specifier": "latest",
186
+ "strategy": "latest",
187
+ },
188
+ "@vitejs/plugin-react": {
189
+ "registry": "npm",
190
+ "specifier": "latest",
191
+ "strategy": "latest",
187
192
  },
188
193
  "@types/react": {
189
194
  "registry": "npm",
190
- "specifier": "^19",
191
- "strategy": "caret",
195
+ "specifier": "latest",
196
+ "strategy": "latest",
192
197
  },
193
198
  "@types/react-dom": {
194
199
  "registry": "npm",
195
- "specifier": "^19",
196
- "strategy": "caret",
200
+ "specifier": "latest",
201
+ "strategy": "latest",
197
202
  },
198
203
  "storybook": {
199
204
  "registry": "npm",
200
- "specifier": "^8",
201
- "strategy": "caret",
205
+ "specifier": "latest",
206
+ "strategy": "latest",
202
207
  },
203
208
  "typescript": {
204
209
  "registry": "npm",
205
- "specifier": "^5",
206
- "strategy": "caret",
210
+ "specifier": "latest",
211
+ "strategy": "latest",
207
212
  },
208
213
  "vite": {
209
214
  "registry": "npm",
210
- "specifier": "^8",
211
- "strategy": "caret",
215
+ "specifier": "latest",
216
+ "strategy": "latest",
212
217
  },
213
218
  "vitest": {
214
219
  "registry": "npm",
215
- "specifier": "^4",
216
- "strategy": "caret",
220
+ "specifier": "latest",
221
+ "strategy": "latest",
217
222
  },
218
223
  },
219
224
  "domain_runtime_dependencies": {
220
225
  "sqlmodel": {
221
226
  "registry": "pypi",
222
227
  "specifier": "sqlmodel",
223
- "strategy": "minimum",
228
+ "strategy": "latest",
224
229
  },
225
230
  "httpx": {
226
231
  "registry": "pypi",
227
232
  "specifier": "httpx",
228
- "strategy": "minimum",
233
+ "strategy": "latest",
229
234
  },
230
235
  "dependency-injector": {
231
236
  "registry": "pypi",
232
237
  "specifier": "dependency-injector",
233
- "strategy": "minimum",
238
+ "strategy": "latest",
234
239
  },
235
240
  "pydantic": {
236
241
  "registry": "pypi",
237
242
  "specifier": "pydantic",
238
- "strategy": "minimum",
243
+ "strategy": "latest",
239
244
  },
240
245
  "pydantic-settings": {
241
246
  "registry": "pypi",
242
247
  "specifier": "pydantic-settings",
243
- "strategy": "minimum",
248
+ "strategy": "latest",
244
249
  },
245
250
  "asyncpg": {
246
251
  "registry": "pypi",
247
252
  "specifier": "asyncpg",
248
- "strategy": "minimum",
253
+ "strategy": "latest",
249
254
  },
250
255
  },
251
256
  "domain_migration_dependencies": {
252
257
  "alembic": {
253
258
  "registry": "pypi",
254
259
  "specifier": "alembic",
255
- "strategy": "minimum",
260
+ "strategy": "latest",
256
261
  }
257
262
  },
258
263
  "api_runtime_base_dependencies": {
259
264
  "fastapi": {
260
265
  "registry": "pypi",
261
- "specifier": "fastapi>=0.115",
262
- "strategy": "minimum",
266
+ "specifier": "fastapi",
267
+ "strategy": "latest",
263
268
  "package": "fastapi",
264
269
  },
265
270
  "uvicorn[standard]": {
266
271
  "registry": "pypi",
267
- "specifier": "uvicorn[standard]>=0.34",
268
- "strategy": "minimum",
272
+ "specifier": "uvicorn[standard]",
273
+ "strategy": "latest",
269
274
  "package": "uvicorn",
270
275
  },
271
276
  },
272
277
  "engine": {
273
278
  "pyo3": {
274
279
  "registry": "cratesio",
275
- "specifier": "0.28",
276
- "strategy": "exact",
280
+ "specifier": "*",
281
+ "strategy": "latest",
277
282
  },
278
283
  "maturin": {
279
284
  "registry": "pypi",
280
- "specifier": "maturin>=1.8.2,<2.0",
281
- "strategy": "major-range",
285
+ "specifier": "maturin",
286
+ "strategy": "latest",
282
287
  },
283
288
  },
284
- }
289
+ }
@@ -9,7 +9,7 @@ from urllib.parse import quote
9
9
  from urllib.request import Request, urlopen
10
10
 
11
11
  RegistryName = Literal["npm", "pypi", "cratesio"]
12
- RefreshStrategy = Literal["caret", "minimum", "exact", "major-range"]
12
+ RefreshStrategy = Literal["caret", "minimum", "exact", "major-range", "latest"]
13
13
  Manifest = dict[str, dict[str, dict[str, str]]]
14
14
 
15
15
  _USER_AGENT = "rpr-cli/0.1.1 (+https://github.com/)"
@@ -79,13 +79,31 @@ def refresh_dependency_manifest(
79
79
  continue
80
80
 
81
81
  package = entry.get("package", dependency)
82
- cache_key = (registry, package)
83
- latest_version = latest_version_cache.get(cache_key)
84
- if latest_version is None:
85
- latest_version = fetch_latest_version(registry, package, timeout=timeout)
86
- latest_version_cache[cache_key] = latest_version
87
-
88
- new_specifier = _format_specifier(strategy, dependency, package, latest_version)
82
+ if strategy == "latest":
83
+ latest_version = "latest"
84
+ new_specifier = _format_specifier(
85
+ strategy,
86
+ dependency,
87
+ package,
88
+ latest_version,
89
+ registry,
90
+ )
91
+ else:
92
+ cache_key = (registry, package)
93
+ latest_version = latest_version_cache.get(cache_key)
94
+ if latest_version is None:
95
+ latest_version = fetch_latest_version(
96
+ registry, package, timeout=timeout
97
+ )
98
+ latest_version_cache[cache_key] = latest_version
99
+
100
+ new_specifier = _format_specifier(
101
+ strategy,
102
+ dependency,
103
+ package,
104
+ latest_version,
105
+ registry,
106
+ )
89
107
  old_specifier = entry["specifier"]
90
108
  if new_specifier == old_specifier:
91
109
  continue
@@ -107,8 +125,18 @@ def refresh_dependency_manifest(
107
125
 
108
126
 
109
127
  def _format_specifier(
110
- strategy: str, dependency: str, package: str, latest_version: str
128
+ strategy: str,
129
+ dependency: str,
130
+ package: str,
131
+ latest_version: str,
132
+ registry: str,
111
133
  ) -> str:
134
+ if strategy == "latest":
135
+ if registry == "npm":
136
+ return "latest"
137
+ if registry == "cratesio":
138
+ return "*"
139
+ return dependency
112
140
  if strategy == "caret":
113
141
  return f"^{latest_version}"
114
142
  if strategy == "minimum":
@@ -89,6 +89,8 @@ def test_generate_storybook_scaffolds_host_package_and_starter_story(monkeypatch
89
89
  sb_package["dependencies"]["@mui/material"]
90
90
  == storybook_package_dependencies("my-app-ui")["@mui/material"]
91
91
  )
92
+ assert sb_package["devDependencies"]["@vitejs/plugin-react"] == "latest"
93
+ assert sb_package["devDependencies"]["vite"] == "latest"
92
94
  assert sb_project["targets"]["storybook"]["options"]["command"] == (
93
95
  "storybook dev -p 6006 -c packages/node/sb/.storybook"
94
96
  )
@@ -208,7 +210,8 @@ def test_generate_storybook_dry_run_previews_files_and_forwards_nx_dry_run(
208
210
  assert not Path(
209
211
  "packages/node/my-app-ui/src/stories/Example.stories.tsx"
210
212
  ).exists()
211
- assert STORYBOOK_DEV_DEPENDENCIES["vite"] == "^8"
213
+ assert STORYBOOK_DEV_DEPENDENCIES["@vitejs/plugin-react"] == "latest"
214
+ assert STORYBOOK_DEV_DEPENDENCIES["vite"] == "latest"
212
215
  assert recorded_calls == [
213
216
  {
214
217
  "cmd": [
@@ -77,14 +77,7 @@ def test_init_new_workspace_disables_nx_cloud(monkeypatch):
77
77
  dev_dependencies = package_json["devDependencies"]
78
78
  assert "eslint" in dev_dependencies
79
79
  assert "prettier" in dev_dependencies
80
- assert dev_dependencies["eslint"] == "^9.39.4"
81
- assert dev_dependencies["@eslint/js"] == "^9.39.4"
82
- assert dev_dependencies["eslint-plugin-import"] == "^2.32.0"
83
- assert dev_dependencies["eslint-plugin-jsx-a11y"] == "^6.10.2"
84
- assert dev_dependencies["eslint-plugin-react"] == "^7.37.5"
85
- assert not any(
86
- version == "latest" for version in dev_dependencies.values()
87
- )
80
+ assert all(version == "latest" for version in dev_dependencies.values())
88
81
 
89
82
  assert (project_dir / "eslint.config.mjs").exists()
90
83
  assert (project_dir / ".prettierrc").exists()
@@ -10,11 +10,16 @@ from rpr.dependencies import get_dependency_manifest, render_dependency_manifest
10
10
  runner = CliRunner()
11
11
 
12
12
 
13
- def test_refresh_manifest_updates_manifest_data_file(monkeypatch, tmp_path: Path) -> None:
13
+ def test_refresh_manifest_preserves_latest_dependency_policy(
14
+ monkeypatch, tmp_path: Path
15
+ ) -> None:
14
16
  manifest_path = tmp_path / "dependency_manifest_data.py"
15
- manifest_path.write_text(render_dependency_manifest_module(get_dependency_manifest()))
17
+ original = render_dependency_manifest_module(get_dependency_manifest())
18
+ manifest_path.write_text(original)
19
+ fetch_calls: list[tuple[str, str]] = []
16
20
 
17
21
  def fake_fetch_latest_version(registry: str, package: str, *, timeout: float = 10.0) -> str:
22
+ fetch_calls.append((registry, package))
18
23
  return "9.9.9"
19
24
 
20
25
  monkeypatch.setattr("rpr.commands.refresh.MANIFEST_DATA_PATH", manifest_path)
@@ -25,15 +30,9 @@ def test_refresh_manifest_updates_manifest_data_file(monkeypatch, tmp_path: Path
25
30
  result = runner.invoke(app, ["refresh", "manifest"])
26
31
 
27
32
  assert result.exit_code == 0, result.stdout
28
- assert "uvicorn[standard]: uvicorn[standard]>=0.34 -> uvicorn[standard]>=9.9.9" in result.stdout
29
- updated = manifest_path.read_text()
30
- assert "'eslint': {'specifier': '^9.39.4'}" in updated
31
- assert "'eslint-plugin-import': {'specifier': '^2.32.0'}" in updated
32
- assert "'specifier': '^9.9.9'" in updated
33
- assert "'specifier': 'fastapi>=9.9.9'" in updated
34
- assert "'specifier': 'uvicorn[standard]>=9.9.9'" in updated
35
- assert "'specifier': '9.9.9'" in updated
36
- assert "'specifier': 'maturin>=9.9.9,<10.0'" in updated
33
+ assert "Dependency manifest is already up to date" in result.stdout
34
+ assert manifest_path.read_text() == original
35
+ assert fetch_calls == []
37
36
 
38
37
 
39
38
  def test_refresh_manifest_dry_run_does_not_write_file(monkeypatch, tmp_path: Path) -> None:
@@ -1 +0,0 @@
1
- __version__ = "0.1.9"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes