rpr-cli 0.1.5__tar.gz → 0.1.6__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.5 → rpr_cli-0.1.6}/PKG-INFO +3 -2
  2. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/README.md +2 -1
  3. rpr_cli-0.1.6/src/rpr/__init__.py +1 -0
  4. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/init.py +25 -4
  5. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_init.py +77 -0
  6. rpr_cli-0.1.5/src/rpr/__init__.py +0 -1
  7. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/.github/agents/story.agent.md +0 -0
  8. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/.github/workflows/publish-pypi.yml +0 -0
  9. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/.gitignore +0 -0
  10. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/CLAUDE.md +0 -0
  11. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/GEMINI.md +0 -0
  12. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/LICENSE +0 -0
  13. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/all.instructions.md +0 -0
  14. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/api.instructions.md +0 -0
  15. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/domain.instructions.md +0 -0
  16. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/frontend.instructions.md +0 -0
  17. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/rust-engine.instructions.md +0 -0
  18. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/setup-guide.instructions.md +0 -0
  19. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/tooling-setup.instructions.md +0 -0
  20. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/tooling.instructions.md +0 -0
  21. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/README.md +0 -0
  22. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/api/main.py +0 -0
  23. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/domain/base-repo.md +0 -0
  24. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/domain/base_entity.md +0 -0
  25. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/frontend/api.service.ts +0 -0
  26. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/frontend/useStateNavigation.ts +0 -0
  27. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/changelogs/mui_v9.txt +0 -0
  28. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/code-map.md +0 -0
  29. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/nx_uv_setup.md +0 -0
  30. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/patch_output.py +0 -0
  31. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/pyproject.toml +0 -0
  32. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/Cargo.lock +0 -0
  33. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/Cargo.toml +0 -0
  34. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/pyproject.toml +0 -0
  35. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/rpr_parser.pyi +0 -0
  36. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/config/container.rs +0 -0
  37. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/config/mod.rs +0 -0
  38. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/config/settings.rs +0 -0
  39. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/graph.rs +0 -0
  40. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/lib.rs +0 -0
  41. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/models/dtos/mod.rs +0 -0
  42. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/models/entities/mod.rs +0 -0
  43. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/models/entities/users.rs +0 -0
  44. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/models/mod.rs +0 -0
  45. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/parse.rs +0 -0
  46. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/repos/base.rs +0 -0
  47. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/repos/mod.rs +0 -0
  48. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/repos/users.rs +0 -0
  49. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/resolve.rs +0 -0
  50. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/walker.rs +0 -0
  51. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/uv.lock +0 -0
  52. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/special_files.md +0 -0
  53. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/__init__.py +0 -0
  54. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/approval.py +0 -0
  55. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/bootstrap.py +0 -0
  56. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/client.py +0 -0
  57. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/control.py +0 -0
  58. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/mock.py +0 -0
  59. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/runtime.py +0 -0
  60. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/session.py +0 -0
  61. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/tools/__init__.py +0 -0
  62. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/tools/base.py +0 -0
  63. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/tools/mutating.py +0 -0
  64. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/tools/readonly.py +0 -0
  65. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/tools/registry.py +0 -0
  66. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/__init__.py +0 -0
  67. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/catalog.py +0 -0
  68. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/chat_service.py +0 -0
  69. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/checks.py +0 -0
  70. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/cli_adapter.py +0 -0
  71. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/completer.py +0 -0
  72. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/conversation_service.py +0 -0
  73. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/prompt_service.py +0 -0
  74. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/selector.py +0 -0
  75. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/shell.py +0 -0
  76. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/checks/__init__.py +0 -0
  77. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/checks/base.py +0 -0
  78. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/checks/instructions.py +0 -0
  79. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/checks/packages.py +0 -0
  80. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/checks/workspace.py +0 -0
  81. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/cli.py +0 -0
  82. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/__init__.py +0 -0
  83. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/add.py +0 -0
  84. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/chat.py +0 -0
  85. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/check.py +0 -0
  86. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/__init__.py +0 -0
  87. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/api.py +0 -0
  88. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/domain.py +0 -0
  89. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/engine.py +0 -0
  90. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/storybook.py +0 -0
  91. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/ui.py +0 -0
  92. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/map.py +0 -0
  93. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/refresh.py +0 -0
  94. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/settings.py +0 -0
  95. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/sync.py +0 -0
  96. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/context.py +0 -0
  97. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/dependencies.py +0 -0
  98. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/dependency_manifest_data.py +0 -0
  99. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/__init__.py +0 -0
  100. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/base.py +0 -0
  101. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/claude.py +0 -0
  102. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/copilot.py +0 -0
  103. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/cursor.py +0 -0
  104. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/gemini.py +0 -0
  105. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/manifest_refresh.py +0 -0
  106. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/__init__.py +0 -0
  107. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/architecture.py +0 -0
  108. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/chains.py +0 -0
  109. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/classifier.py +0 -0
  110. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/coverage.py +0 -0
  111. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/dependencies.py +0 -0
  112. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/extractor.py +0 -0
  113. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/graph.py +0 -0
  114. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/output.py +0 -0
  115. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/responsibility.py +0 -0
  116. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/topology.py +0 -0
  117. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/walker.py +0 -0
  118. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/domain/base_entity.md +0 -0
  119. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/domain/base_repo.md +0 -0
  120. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/domain/container.md +0 -0
  121. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/domain/settings.md +0 -0
  122. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/all.instructions.md +0 -0
  123. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/api.instructions.md +0 -0
  124. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/domain.instructions.md +0 -0
  125. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/frontend.instructions.md +0 -0
  126. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/rust-engine.instructions.md +0 -0
  127. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/setup-guide.instructions.md +0 -0
  128. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/tooling-setup.instructions.md +0 -0
  129. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/tooling.instructions.md +0 -0
  130. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/js_special_files/fetch.service.md +0 -0
  131. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/js_special_files/sticky-navigation.md +0 -0
  132. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/domain_container.md +0 -0
  133. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/domain_settings.md +0 -0
  134. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/dto_util.md +0 -0
  135. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/encrypted_column.md +0 -0
  136. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/mapper_util.md +0 -0
  137. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/partial_update.md +0 -0
  138. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/templates/__init__.py +0 -0
  139. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/templates/registry.py +0 -0
  140. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/__init__.py +0 -0
  141. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/console.py +0 -0
  142. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/markdown.py +0 -0
  143. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/prompt_session.py +0 -0
  144. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/renderers.py +0 -0
  145. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/theme.py +0 -0
  146. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/workspace.py +0 -0
  147. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/README.md +0 -0
  148. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/00-bootstrap-cli.md +0 -0
  149. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/01-rpr-init.md +0 -0
  150. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/02-rpr-generate-domain.md +0 -0
  151. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/03-rpr-generate-api.md +0 -0
  152. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/04-rpr-generate-ui.md +0 -0
  153. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/05-rpr-generate-engine.md +0 -0
  154. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/06-rpr-generate-storybook.md +0 -0
  155. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/07-rpr-sync-rules.md +0 -0
  156. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/08-rpr-add-template.md +0 -0
  157. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/09-rpr-check.md +0 -0
  158. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/10-rpr-domain-config.md +0 -0
  159. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/18-rpr-terminal-ui-foundation.md +0 -0
  160. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/19-rpr-markdown-rendering.md +0 -0
  161. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/20-rpr-chat-repl.md +0 -0
  162. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/21-rpr-agent-tool-loop.md +0 -0
  163. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/22-rpr-chat-tui.md +0 -0
  164. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/23-rpr-chat-unified-command-shell.md +0 -0
  165. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/24-rpr-async-chat-runtime-and-services.md +0 -0
  166. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/25-rpr-prompt-service-and-conversation-lifecycle.md +0 -0
  167. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/26-rpr-shared-command-catalog.md +0 -0
  168. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/27-rpr-slash-command-selection-panel.md +0 -0
  169. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/28-rpr-chat-cancellable-and-multiline-input.md +0 -0
  170. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/29-rpr-file-context-selection.md +0 -0
  171. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/11-rpr-map-command.md +0 -0
  172. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/12-rpr-map-file-walker.md +0 -0
  173. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/13-rpr-map-rust-engine.md +0 -0
  174. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/13a-rpr-map-gitignore.md +0 -0
  175. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/14-rpr-map-graph-builder.md +0 -0
  176. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/15-rpr-map-analysis-bridge.md +0 -0
  177. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/16-rpr-map-layer-classifier.md +0 -0
  178. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17-rpr-map-output.md +0 -0
  179. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17a-rpr-map-directory-topology.md +0 -0
  180. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17b-rpr-map-architecture-assessment.md +0 -0
  181. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17c-rpr-map-representative-chains.md +0 -0
  182. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17d-rpr-map-multi-resolution-output.md +0 -0
  183. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/map/30-rpr-map-directory-view-and-cycle-detection.md +0 -0
  184. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/map/31-rpr-map-coupling-hotspots-and-verdict-reasoning.md +0 -0
  185. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/map/32-rpr-map-dependencies-responsibilities-and-test-coverage.md +0 -0
  186. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/__init__.py +0 -0
  187. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_add.py +0 -0
  188. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_architecture.py +0 -0
  189. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_architecture_unwrapped.py +0 -0
  190. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_catalog.py +0 -0
  191. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_chat.py +0 -0
  192. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_chat_service.py +0 -0
  193. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_check.py +0 -0
  194. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_completer.py +0 -0
  195. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_context.py +0 -0
  196. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_generate_api.py +0 -0
  197. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_generate_domain.py +0 -0
  198. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_generate_engine.py +0 -0
  199. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_generate_storybook.py +0 -0
  200. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_generate_ui.py +0 -0
  201. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map.py +0 -0
  202. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_chains.py +0 -0
  203. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_classifier.py +0 -0
  204. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_coverage.py +0 -0
  205. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_dependencies.py +0 -0
  206. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_extractor.py +0 -0
  207. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_graph.py +0 -0
  208. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_output.py +0 -0
  209. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_responsibility.py +0 -0
  210. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_topology.py +0 -0
  211. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_walker.py +0 -0
  212. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_packaging.py +0 -0
  213. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_prompt_session.py +0 -0
  214. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_refresh.py +0 -0
  215. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_rpr_parser_stub.py +0 -0
  216. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_selector.py +0 -0
  217. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_settings.py +0 -0
  218. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_sync.py +0 -0
  219. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_ui.py +0 -0
  220. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/update_output.py +0 -0
  221. {rpr_cli-0.1.5 → rpr_cli-0.1.6}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rpr-cli
3
- Version: 0.1.5
3
+ Version: 0.1.6
4
4
  Summary: RPR CLI -- React Python Rust monorepo scaffolding orchestrator
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -69,12 +69,13 @@ rpr generate storybook # Add Storybook for UI component development
69
69
 
70
70
  `rpr init <project-name>` creates the project directory when it does not exist. If the directory already exists and is not an NX workspace, RPR initializes Git and runs `nx init` inside that directory.
71
71
 
72
- By default, `rpr init` scaffolds the root workspace and AI instructions only. To create project components during initialization, repeat `--scaffold`:
72
+ By default, `rpr init` scaffolds the root workspace and AI instructions only. To create project components during initialization, repeat `--scaffold` or pass a comma-separated list:
73
73
 
74
74
  ```bash
75
75
  rpr init todo-list --scaffold domain
76
76
  rpr init todo-list --scaffold api --domain-migrations
77
77
  rpr init todo-list --scaffold api --scaffold web --domain-migrations
78
+ rpr init todo-list --scaffold instructions, domain, api, ui, web, storybook
78
79
  ```
79
80
 
80
81
  Available scaffolds are:
@@ -54,12 +54,13 @@ rpr generate storybook # Add Storybook for UI component development
54
54
 
55
55
  `rpr init <project-name>` creates the project directory when it does not exist. If the directory already exists and is not an NX workspace, RPR initializes Git and runs `nx init` inside that directory.
56
56
 
57
- By default, `rpr init` scaffolds the root workspace and AI instructions only. To create project components during initialization, repeat `--scaffold`:
57
+ By default, `rpr init` scaffolds the root workspace and AI instructions only. To create project components during initialization, repeat `--scaffold` or pass a comma-separated list:
58
58
 
59
59
  ```bash
60
60
  rpr init todo-list --scaffold domain
61
61
  rpr init todo-list --scaffold api --domain-migrations
62
62
  rpr init todo-list --scaffold api --scaffold web --domain-migrations
63
+ rpr init todo-list --scaffold instructions, domain, api, ui, web, storybook
63
64
  ```
64
65
 
65
66
  Available scaffolds are:
@@ -0,0 +1 @@
1
+ __version__ = "0.1.6"
@@ -106,6 +106,25 @@ def _normalize_scaffold_name(value: str) -> ScaffoldName:
106
106
  return normalized # type: ignore[return-value]
107
107
 
108
108
 
109
+ def _parse_scaffold_values(
110
+ values: list[str] | None,
111
+ extra_args: list[str],
112
+ ) -> list[ScaffoldName]:
113
+ raw_values = values or []
114
+ if extra_args and not raw_values:
115
+ raise typer.BadParameter(
116
+ "Unexpected extra arguments. Use --scaffold to select components."
117
+ )
118
+
119
+ scaffolds: list[ScaffoldName] = []
120
+ for raw_value in [*raw_values, *extra_args]:
121
+ for value in raw_value.split(","):
122
+ value = value.strip()
123
+ if value:
124
+ scaffolds.append(_normalize_scaffold_name(value))
125
+ return scaffolds
126
+
127
+
109
128
  def _resolve_scaffolds(scaffolds: list[ScaffoldName] | None) -> list[ScaffoldName]:
110
129
  requested = scaffolds or ["instructions"]
111
130
  resolved: list[ScaffoldName] = []
@@ -675,8 +694,9 @@ API_BASE_URL=http://localhost:8000
675
694
  # ---------------------------------------------------------------------------
676
695
 
677
696
 
678
- @app.command()
697
+ @app.command(context_settings={"allow_extra_args": True})
679
698
  def init(
699
+ ctx: typer.Context,
680
700
  project_name: Annotated[
681
701
  str | None, typer.Argument(help="Name of the project to create.")
682
702
  ] = None,
@@ -691,8 +711,9 @@ def init(
691
711
  typer.Option(
692
712
  "--scaffold",
693
713
  help=(
694
- "Repeat to scaffold additional components: instructions, domain, "
695
- "api, ui, web, storybook, engine. Defaults to instructions only."
714
+ "Repeat or pass a comma-separated list to scaffold additional "
715
+ "components: instructions, domain, api, ui, web, storybook, "
716
+ "engine. Defaults to instructions only."
696
717
  ),
697
718
  ),
698
719
  ] = None,
@@ -712,7 +733,7 @@ def init(
712
733
  project_name = typer.prompt("Project name")
713
734
 
714
735
  selected_scaffolds = _resolve_scaffolds(
715
- [_normalize_scaffold_name(value) for value in scaffold or []]
736
+ _parse_scaffold_values(scaffold, list(ctx.args))
716
737
  )
717
738
  if domain_migrations and "domain" not in selected_scaffolds:
718
739
  raise typer.BadParameter(
@@ -219,6 +219,83 @@ def test_init_scaffold_selection_runs_requested_generators_in_dependency_order(
219
219
  ]
220
220
 
221
221
 
222
+ def test_init_accepts_comma_separated_scaffold_values(monkeypatch):
223
+ scaffold_calls: list[str] = []
224
+ instructions_calls: list[dict[str, object]] = []
225
+
226
+ def fake_run_command(
227
+ self, cmd, *, cwd=None, env=None, capture=False, supports_dry_run=False
228
+ ):
229
+ return _completed(cmd)
230
+
231
+ def fake_domain(*, name, dry_run, migrations=False):
232
+ scaffold_calls.append(f"domain:{name}:{dry_run}:{migrations}")
233
+
234
+ def fake_api(*, name, dry_run):
235
+ scaffold_calls.append(f"api:{name}:{dry_run}")
236
+
237
+ def fake_ui(*, name, dry_run, include_library=True, include_web=True):
238
+ scaffold_calls.append(
239
+ f"ui:{name}:{dry_run}:{include_library}:{include_web}"
240
+ )
241
+
242
+ def fake_storybook(*, ui_package=None, dry_run):
243
+ scaffold_calls.append(f"storybook:{ui_package}:{dry_run}")
244
+
245
+ monkeypatch.setattr("rpr.context.RunContext.run_command", fake_run_command)
246
+ monkeypatch.setattr(
247
+ "rpr.commands.init._scaffold_ai_instructions",
248
+ lambda *args, **kwargs: instructions_calls.append({"args": args, "kwargs": kwargs}),
249
+ )
250
+ monkeypatch.setattr("rpr.commands.generate.domain.domain", fake_domain)
251
+ monkeypatch.setattr("rpr.commands.generate.api.api", fake_api)
252
+ monkeypatch.setattr("rpr.commands.generate.ui.ui", fake_ui)
253
+ monkeypatch.setattr("rpr.commands.generate.storybook.storybook", fake_storybook)
254
+
255
+ commands = [
256
+ [
257
+ "init",
258
+ "comma-space",
259
+ "--scaffold",
260
+ "instructions,",
261
+ "domain,",
262
+ "api,",
263
+ "ui,",
264
+ "web,",
265
+ "storybook",
266
+ ],
267
+ [
268
+ "init",
269
+ "comma-tight",
270
+ "--scaffold",
271
+ "instructions,domain,api,ui,web,storybook",
272
+ ],
273
+ [
274
+ "init",
275
+ "comma-quoted",
276
+ "--scaffold",
277
+ "instructions, domain, api, ui, web, storybook",
278
+ ],
279
+ ]
280
+
281
+ with runner.isolated_filesystem():
282
+ for command in commands:
283
+ scaffold_calls.clear()
284
+ instructions_calls.clear()
285
+
286
+ result = runner.invoke(app, command)
287
+
288
+ project_name = command[1]
289
+ assert result.exit_code == 0, result.stdout
290
+ assert len(instructions_calls) == 1
291
+ assert scaffold_calls == [
292
+ f"domain:{project_name}:False:False",
293
+ f"api:{project_name}:False",
294
+ f"ui:{project_name}:False:True:True",
295
+ f"storybook:{project_name}-ui:False",
296
+ ]
297
+
298
+
222
299
  def test_init_forwards_domain_migrations(monkeypatch):
223
300
  recorded_calls: list[dict[str, object]] = []
224
301
  scaffold_calls: list[str] = []
@@ -1 +0,0 @@
1
- __version__ = "0.1.5"
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
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
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
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
File without changes
File without changes
File without changes