rpr-cli 0.1.2__tar.gz → 0.1.5__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.2 → rpr_cli-0.1.5}/.github/workflows/publish-pypi.yml +10 -5
  2. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/PKG-INFO +6 -2
  3. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/README.md +5 -1
  4. rpr_cli-0.1.5/src/rpr/__init__.py +1 -0
  5. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/application/catalog.py +0 -3
  6. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/application/shell.py +0 -2
  7. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/init.py +0 -7
  8. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/dependency_manifest_data.py +11 -33
  9. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_catalog.py +1 -0
  10. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_init.py +13 -2
  11. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_refresh.py +2 -0
  12. rpr_cli-0.1.2/src/rpr/__init__.py +0 -1
  13. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/.github/agents/story.agent.md +0 -0
  14. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/.gitignore +0 -0
  15. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/CLAUDE.md +0 -0
  16. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/GEMINI.md +0 -0
  17. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/LICENSE +0 -0
  18. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/instructions/all.instructions.md +0 -0
  19. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/instructions/api.instructions.md +0 -0
  20. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/instructions/domain.instructions.md +0 -0
  21. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/instructions/frontend.instructions.md +0 -0
  22. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/instructions/rust-engine.instructions.md +0 -0
  23. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/instructions/setup-guide.instructions.md +0 -0
  24. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/instructions/tooling-setup.instructions.md +0 -0
  25. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/instructions/tooling.instructions.md +0 -0
  26. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/scaffolds/README.md +0 -0
  27. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/scaffolds/api/main.py +0 -0
  28. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/scaffolds/domain/base-repo.md +0 -0
  29. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/scaffolds/domain/base_entity.md +0 -0
  30. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/scaffolds/frontend/api.service.ts +0 -0
  31. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/Sample-dot-github/scaffolds/frontend/useStateNavigation.ts +0 -0
  32. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/changelogs/mui_v9.txt +0 -0
  33. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/code-map.md +0 -0
  34. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/nx_uv_setup.md +0 -0
  35. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/patch_output.py +0 -0
  36. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/pyproject.toml +0 -0
  37. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/Cargo.lock +0 -0
  38. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/Cargo.toml +0 -0
  39. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/pyproject.toml +0 -0
  40. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/rpr_parser.pyi +0 -0
  41. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/config/container.rs +0 -0
  42. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/config/mod.rs +0 -0
  43. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/config/settings.rs +0 -0
  44. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/graph.rs +0 -0
  45. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/lib.rs +0 -0
  46. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/models/dtos/mod.rs +0 -0
  47. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/models/entities/mod.rs +0 -0
  48. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/models/entities/users.rs +0 -0
  49. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/models/mod.rs +0 -0
  50. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/parse.rs +0 -0
  51. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/repos/base.rs +0 -0
  52. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/repos/mod.rs +0 -0
  53. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/repos/users.rs +0 -0
  54. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/resolve.rs +0 -0
  55. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/src/walker.rs +0 -0
  56. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/rpr-parser/uv.lock +0 -0
  57. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/special_files.md +0 -0
  58. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/__init__.py +0 -0
  59. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/approval.py +0 -0
  60. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/bootstrap.py +0 -0
  61. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/client.py +0 -0
  62. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/control.py +0 -0
  63. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/mock.py +0 -0
  64. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/runtime.py +0 -0
  65. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/session.py +0 -0
  66. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/tools/__init__.py +0 -0
  67. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/tools/base.py +0 -0
  68. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/tools/mutating.py +0 -0
  69. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/tools/readonly.py +0 -0
  70. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/agent/tools/registry.py +0 -0
  71. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/application/__init__.py +0 -0
  72. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/application/chat_service.py +0 -0
  73. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/application/checks.py +0 -0
  74. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/application/cli_adapter.py +0 -0
  75. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/application/completer.py +0 -0
  76. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/application/conversation_service.py +0 -0
  77. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/application/prompt_service.py +0 -0
  78. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/application/selector.py +0 -0
  79. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/checks/__init__.py +0 -0
  80. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/checks/base.py +0 -0
  81. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/checks/instructions.py +0 -0
  82. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/checks/packages.py +0 -0
  83. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/checks/workspace.py +0 -0
  84. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/cli.py +0 -0
  85. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/__init__.py +0 -0
  86. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/add.py +0 -0
  87. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/chat.py +0 -0
  88. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/check.py +0 -0
  89. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/generate/__init__.py +0 -0
  90. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/generate/api.py +0 -0
  91. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/generate/domain.py +0 -0
  92. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/generate/engine.py +0 -0
  93. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/generate/storybook.py +0 -0
  94. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/generate/ui.py +0 -0
  95. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/map.py +0 -0
  96. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/refresh.py +0 -0
  97. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/settings.py +0 -0
  98. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/commands/sync.py +0 -0
  99. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/context.py +0 -0
  100. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/dependencies.py +0 -0
  101. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/generators/__init__.py +0 -0
  102. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/generators/base.py +0 -0
  103. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/generators/claude.py +0 -0
  104. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/generators/copilot.py +0 -0
  105. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/generators/cursor.py +0 -0
  106. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/generators/gemini.py +0 -0
  107. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/manifest_refresh.py +0 -0
  108. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/__init__.py +0 -0
  109. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/architecture.py +0 -0
  110. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/chains.py +0 -0
  111. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/classifier.py +0 -0
  112. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/coverage.py +0 -0
  113. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/dependencies.py +0 -0
  114. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/extractor.py +0 -0
  115. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/graph.py +0 -0
  116. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/output.py +0 -0
  117. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/responsibility.py +0 -0
  118. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/topology.py +0 -0
  119. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/map/walker.py +0 -0
  120. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/domain/base_entity.md +0 -0
  121. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/domain/base_repo.md +0 -0
  122. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/domain/container.md +0 -0
  123. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/domain/settings.md +0 -0
  124. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/instructions/all.instructions.md +0 -0
  125. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/instructions/api.instructions.md +0 -0
  126. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/instructions/domain.instructions.md +0 -0
  127. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/instructions/frontend.instructions.md +0 -0
  128. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/instructions/rust-engine.instructions.md +0 -0
  129. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/instructions/setup-guide.instructions.md +0 -0
  130. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/instructions/tooling-setup.instructions.md +0 -0
  131. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/instructions/tooling.instructions.md +0 -0
  132. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/js_special_files/fetch.service.md +0 -0
  133. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/js_special_files/sticky-navigation.md +0 -0
  134. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/special_files/domain_container.md +0 -0
  135. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/special_files/domain_settings.md +0 -0
  136. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/special_files/dto_util.md +0 -0
  137. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/special_files/encrypted_column.md +0 -0
  138. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/special_files/mapper_util.md +0 -0
  139. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/scaffolds/special_files/partial_update.md +0 -0
  140. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/templates/__init__.py +0 -0
  141. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/templates/registry.py +0 -0
  142. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/ui/__init__.py +0 -0
  143. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/ui/console.py +0 -0
  144. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/ui/markdown.py +0 -0
  145. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/ui/prompt_session.py +0 -0
  146. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/ui/renderers.py +0 -0
  147. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/ui/theme.py +0 -0
  148. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/src/rpr/workspace.py +0 -0
  149. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/README.md +0 -0
  150. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/00-bootstrap-cli.md +0 -0
  151. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/01-rpr-init.md +0 -0
  152. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/02-rpr-generate-domain.md +0 -0
  153. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/03-rpr-generate-api.md +0 -0
  154. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/04-rpr-generate-ui.md +0 -0
  155. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/05-rpr-generate-engine.md +0 -0
  156. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/06-rpr-generate-storybook.md +0 -0
  157. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/07-rpr-sync-rules.md +0 -0
  158. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/08-rpr-add-template.md +0 -0
  159. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/09-rpr-check.md +0 -0
  160. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/10-rpr-domain-config.md +0 -0
  161. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/18-rpr-terminal-ui-foundation.md +0 -0
  162. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/19-rpr-markdown-rendering.md +0 -0
  163. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/20-rpr-chat-repl.md +0 -0
  164. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/21-rpr-agent-tool-loop.md +0 -0
  165. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/22-rpr-chat-tui.md +0 -0
  166. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/23-rpr-chat-unified-command-shell.md +0 -0
  167. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/24-rpr-async-chat-runtime-and-services.md +0 -0
  168. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/25-rpr-prompt-service-and-conversation-lifecycle.md +0 -0
  169. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/26-rpr-shared-command-catalog.md +0 -0
  170. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/27-rpr-slash-command-selection-panel.md +0 -0
  171. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/28-rpr-chat-cancellable-and-multiline-input.md +0 -0
  172. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/chat/29-rpr-file-context-selection.md +0 -0
  173. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/11-rpr-map-command.md +0 -0
  174. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/12-rpr-map-file-walker.md +0 -0
  175. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/13-rpr-map-rust-engine.md +0 -0
  176. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/13a-rpr-map-gitignore.md +0 -0
  177. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/14-rpr-map-graph-builder.md +0 -0
  178. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/15-rpr-map-analysis-bridge.md +0 -0
  179. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/16-rpr-map-layer-classifier.md +0 -0
  180. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/17-rpr-map-output.md +0 -0
  181. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/17a-rpr-map-directory-topology.md +0 -0
  182. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/17b-rpr-map-architecture-assessment.md +0 -0
  183. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/17c-rpr-map-representative-chains.md +0 -0
  184. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/completed/map/17d-rpr-map-multi-resolution-output.md +0 -0
  185. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/map/30-rpr-map-directory-view-and-cycle-detection.md +0 -0
  186. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/map/31-rpr-map-coupling-hotspots-and-verdict-reasoning.md +0 -0
  187. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/stories/map/32-rpr-map-dependencies-responsibilities-and-test-coverage.md +0 -0
  188. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/__init__.py +0 -0
  189. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_add.py +0 -0
  190. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_architecture.py +0 -0
  191. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_architecture_unwrapped.py +0 -0
  192. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_chat.py +0 -0
  193. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_chat_service.py +0 -0
  194. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_check.py +0 -0
  195. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_completer.py +0 -0
  196. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_context.py +0 -0
  197. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_generate_api.py +0 -0
  198. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_generate_domain.py +0 -0
  199. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_generate_engine.py +0 -0
  200. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_generate_storybook.py +0 -0
  201. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_generate_ui.py +0 -0
  202. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_map.py +0 -0
  203. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_map_chains.py +0 -0
  204. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_map_classifier.py +0 -0
  205. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_map_coverage.py +0 -0
  206. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_map_dependencies.py +0 -0
  207. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_map_extractor.py +0 -0
  208. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_map_graph.py +0 -0
  209. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_map_output.py +0 -0
  210. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_map_responsibility.py +0 -0
  211. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_map_topology.py +0 -0
  212. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_map_walker.py +0 -0
  213. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_packaging.py +0 -0
  214. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_prompt_session.py +0 -0
  215. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_rpr_parser_stub.py +0 -0
  216. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_selector.py +0 -0
  217. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_settings.py +0 -0
  218. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_sync.py +0 -0
  219. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/tests/test_ui.py +0 -0
  220. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/update_output.py +0 -0
  221. {rpr_cli-0.1.2 → rpr_cli-0.1.5}/uv.lock +0 -0
@@ -9,20 +9,26 @@ on:
9
9
  jobs:
10
10
  publish:
11
11
  runs-on: ubuntu-latest
12
+ env:
13
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
14
+ environment:
15
+ name: pypi
16
+ url: https://pypi.org/p/rpr-cli
12
17
  permissions:
13
18
  contents: read
19
+ id-token: write
14
20
 
15
21
  steps:
16
22
  - name: Check out repository
17
- uses: actions/checkout@v4
23
+ uses: actions/checkout@v6
18
24
 
19
25
  - name: Set up Python
20
- uses: actions/setup-python@v5
26
+ uses: actions/setup-python@v6
21
27
  with:
22
28
  python-version: "3.14"
23
29
 
24
30
  - name: Set up uv
25
- uses: astral-sh/setup-uv@v5
31
+ uses: astral-sh/setup-uv@v8.1.0
26
32
 
27
33
  - name: Validate tag matches package version
28
34
  run: |
@@ -50,5 +56,4 @@ jobs:
50
56
  - name: Publish to PyPI
51
57
  uses: pypa/gh-action-pypi-publish@release/v1
52
58
  with:
53
- user: __token__
54
- password: ${{ secrets.PYPI_API_TOKEN }}
59
+ attestations: true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rpr-cli
3
- Version: 0.1.2
3
+ Version: 0.1.5
4
4
  Summary: RPR CLI -- React Python Rust monorepo scaffolding orchestrator
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -55,6 +55,8 @@ uv add ../project-getting-started/dist/rpr_cli-*.whl
55
55
 
56
56
  Create a new NX + UV monorepo, then add apps and packages as needed.
57
57
 
58
+ > NX monorepo uses integrated mode.
59
+
58
60
  ```bash
59
61
  rpr init my-app # Create/init my-app with root NX + UV tooling and AI instructions
60
62
  cd my-app
@@ -227,7 +229,9 @@ This repo is set up to publish the package `rpr-cli` to PyPI from GitHub Actions
227
229
  One-time setup:
228
230
 
229
231
  1. Create the PyPI project `rpr-cli`.
230
- 2. Add a repository secret named `PYPI_API_TOKEN` with an API token that can upload that project.
232
+ 2. Create a PyPI Trusted Publisher for this repository using workflow `.github/workflows/publish-pypi.yml` and environment `pypi`.
233
+
234
+ No `PYPI_API_TOKEN` secret is required when publishing through GitHub Actions OIDC.
231
235
 
232
236
  Release flow:
233
237
 
@@ -40,6 +40,8 @@ uv add ../project-getting-started/dist/rpr_cli-*.whl
40
40
 
41
41
  Create a new NX + UV monorepo, then add apps and packages as needed.
42
42
 
43
+ > NX monorepo uses integrated mode.
44
+
43
45
  ```bash
44
46
  rpr init my-app # Create/init my-app with root NX + UV tooling and AI instructions
45
47
  cd my-app
@@ -212,7 +214,9 @@ This repo is set up to publish the package `rpr-cli` to PyPI from GitHub Actions
212
214
  One-time setup:
213
215
 
214
216
  1. Create the PyPI project `rpr-cli`.
215
- 2. Add a repository secret named `PYPI_API_TOKEN` with an API token that can upload that project.
217
+ 2. Create a PyPI Trusted Publisher for this repository using workflow `.github/workflows/publish-pypi.yml` and environment `pypi`.
218
+
219
+ No `PYPI_API_TOKEN` secret is required when publishing through GitHub Actions OIDC.
216
220
 
217
221
  Release flow:
218
222
 
@@ -0,0 +1 @@
1
+ __version__ = "0.1.5"
@@ -148,9 +148,6 @@ COMMAND_CATALOG: tuple[CommandDefinition, ...] = (
148
148
  "--python", "Python version to use.", kind="value", value_name="VERSION"
149
149
  ),
150
150
  CommandOption("--dry-run", "Preview changes without writing.", kind="flag"),
151
- CommandOption(
152
- "--integrated", "Use integrated NX workspace style.", kind="flag"
153
- ),
154
151
  ),
155
152
  ),
156
153
  CommandDefinition(
@@ -273,7 +273,6 @@ class CommandShellService:
273
273
  parser.add_argument("project_name", nargs="?")
274
274
  parser.add_argument("--dry-run", action="store_true")
275
275
  parser.add_argument("--python", default="3.14")
276
- parser.add_argument("--integrated", action="store_true")
277
276
  namespace = self._parse_args(parser, parsed.args)
278
277
  if namespace is None:
279
278
  return True
@@ -291,7 +290,6 @@ class CommandShellService:
291
290
  project_name=project_name,
292
291
  dry_run=namespace.dry_run,
293
292
  python_version=namespace.python,
294
- integrated=namespace.integrated,
295
293
  )
296
294
  if exit_code:
297
295
  self._active_presenter.error(f"/init finished with exit code {exit_code}.")
@@ -686,9 +686,6 @@ def init(
686
686
  python_version: Annotated[
687
687
  str, typer.Option("--python", help="Python version to use.")
688
688
  ] = "3.14",
689
- integrated: Annotated[
690
- bool, typer.Option("--integrated", help="Use NX integrated monorepo layout.")
691
- ] = False,
692
689
  scaffold: Annotated[
693
690
  list[str] | None,
694
691
  typer.Option(
@@ -742,8 +739,6 @@ def init(
742
739
  "--nxCloud=never",
743
740
  "--interactive=false",
744
741
  ]
745
- if integrated:
746
- nx_args.append("--integrated")
747
742
  ctx.run_command(
748
743
  ["npx", "--yes", "create-nx-workspace@latest"] + nx_args,
749
744
  cwd=Path.cwd(),
@@ -765,8 +760,6 @@ def init(
765
760
  "--interactive=false",
766
761
  "--nxCloud=false",
767
762
  ]
768
- if integrated:
769
- nx_cmd.append("--integrated")
770
763
  ctx.run_command(nx_cmd, cwd=project_dir, env=_NX_BOOTSTRAP_ENV)
771
764
 
772
765
  # ------------------------------------------------------------------
@@ -6,59 +6,37 @@ from __future__ import annotations
6
6
  MANIFEST = {
7
7
  "root_node_dev_dependencies": {
8
8
  "@eslint/js": {
9
- "registry": "npm",
10
- "specifier": "latest",
11
- "strategy": "caret",
9
+ "specifier": "^9.39.4",
12
10
  },
13
11
  "@nx/eslint": {
14
- "registry": "npm",
15
- "specifier": "latest",
16
- "strategy": "caret",
12
+ "specifier": "^22.7.1",
17
13
  },
18
14
  "@nx/eslint-plugin": {
19
- "registry": "npm",
20
- "specifier": "latest",
21
- "strategy": "caret",
15
+ "specifier": "^22.7.1",
22
16
  },
23
17
  "eslint": {
24
- "registry": "npm",
25
- "specifier": "latest",
26
- "strategy": "caret",
18
+ "specifier": "^9.39.4",
27
19
  },
28
20
  "eslint-plugin-import": {
29
- "registry": "npm",
30
- "specifier": "latest",
31
- "strategy": "caret",
21
+ "specifier": "^2.32.0",
32
22
  },
33
23
  "eslint-plugin-jsx-a11y": {
34
- "registry": "npm",
35
- "specifier": "latest",
36
- "strategy": "caret",
24
+ "specifier": "^6.10.2",
37
25
  },
38
26
  "eslint-plugin-react": {
39
- "registry": "npm",
40
- "specifier": "latest",
41
- "strategy": "caret",
27
+ "specifier": "^7.37.5",
42
28
  },
43
29
  "eslint-plugin-react-hooks": {
44
- "registry": "npm",
45
- "specifier": "latest",
46
- "strategy": "caret",
30
+ "specifier": "^7.1.1",
47
31
  },
48
32
  "globals": {
49
- "registry": "npm",
50
- "specifier": "latest",
51
- "strategy": "caret",
33
+ "specifier": "^15.15.0",
52
34
  },
53
35
  "prettier": {
54
- "registry": "npm",
55
- "specifier": "latest",
56
- "strategy": "caret",
36
+ "specifier": "^3.7.4",
57
37
  },
58
38
  "typescript-eslint": {
59
- "registry": "npm",
60
- "specifier": "latest",
61
- "strategy": "caret",
39
+ "specifier": "^8.59.2",
62
40
  },
63
41
  },
64
42
  "root_storybook_dev_dependencies": {
@@ -182,6 +182,7 @@ def test_usage_string_leaf_includes_args_and_options():
182
182
  assert usage.startswith("/init")
183
183
  assert "[project-name]" in usage
184
184
  assert "--dry-run" in usage
185
+ assert "--integrated" not in usage
185
186
 
186
187
 
187
188
  def test_usage_string_group_uses_pipe_separated_children():
@@ -46,6 +46,7 @@ def test_init_new_workspace_disables_nx_cloud(monkeypatch):
46
46
  if "create-nx-workspace@latest" in call["cmd"]
47
47
  )
48
48
  assert "--nxCloud=never" in create_call["cmd"]
49
+ assert "--integrated" not in create_call["cmd"]
49
50
  assert create_call["env"] == {"NX_NO_CLOUD": "true"}
50
51
  nx_json = (project_dir / "nx.json").read_text()
51
52
  pyproject = (project_dir / "pyproject.toml").read_text()
@@ -73,8 +74,17 @@ def test_init_new_workspace_disables_nx_cloud(monkeypatch):
73
74
  package_json = json.loads((project_dir / "package.json").read_text())
74
75
  assert package_json["scripts"]["lint"] == "npx nx run-many --target=lint --all"
75
76
  assert package_json["workspaces"] == ["apps/*", "packages/node/*"]
76
- assert "eslint" in package_json["devDependencies"]
77
- assert "prettier" in package_json["devDependencies"]
77
+ dev_dependencies = package_json["devDependencies"]
78
+ assert "eslint" in dev_dependencies
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
+ )
78
88
 
79
89
  assert (project_dir / "eslint.config.mjs").exists()
80
90
  assert (project_dir / ".prettierrc").exists()
@@ -114,6 +124,7 @@ def test_init_existing_workspace_disables_nx_cloud(monkeypatch):
114
124
  if call["cmd"][:4] == ["npx", "--yes", "nx", "init"]
115
125
  )
116
126
  assert "--nxCloud=false" in init_call["cmd"]
127
+ assert "--integrated" not in init_call["cmd"]
117
128
  assert init_call["env"] == {"NX_NO_CLOUD": "true"}
118
129
  nx_json = (project_dir / "nx.json").read_text()
119
130
  pyproject = (project_dir / "pyproject.toml").read_text()
@@ -27,6 +27,8 @@ def test_refresh_manifest_updates_manifest_data_file(monkeypatch, tmp_path: Path
27
27
  assert result.exit_code == 0, result.stdout
28
28
  assert "uvicorn[standard]: uvicorn[standard]>=0.34 -> uvicorn[standard]>=9.9.9" in result.stdout
29
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
30
32
  assert "'specifier': '^9.9.9'" in updated
31
33
  assert "'specifier': 'fastapi>=9.9.9'" in updated
32
34
  assert "'specifier': 'uvicorn[standard]>=9.9.9'" in updated
@@ -1 +0,0 @@
1
- __version__ = "0.1.2"
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