rpr-cli 0.3.8__tar.gz → 0.3.10__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 (231) hide show
  1. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/PKG-INFO +19 -4
  2. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/README.md +18 -3
  3. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/Cargo.lock +1 -1
  4. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/Cargo.toml +1 -1
  5. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/rename.rs +115 -17
  6. rpr_cli-0.3.10/src/rpr/__init__.py +1 -0
  7. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/cli.py +8 -0
  8. rpr_cli-0.3.10/src/rpr/commands/rename.py +452 -0
  9. rpr_cli-0.3.10/src/rpr/commands/version.py +198 -0
  10. rpr_cli-0.3.8/src/rpr/__init__.py +0 -1
  11. rpr_cli-0.3.8/src/rpr/commands/rename.py +0 -104
  12. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/LICENSE +0 -0
  13. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/pyproject.toml +0 -0
  14. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/config/container.rs +0 -0
  15. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/config/mod.rs +0 -0
  16. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/config/settings.rs +0 -0
  17. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/graph.rs +0 -0
  18. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/lib.rs +0 -0
  19. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/models/dtos/mod.rs +0 -0
  20. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/models/entities/mod.rs +0 -0
  21. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/models/entities/users.rs +0 -0
  22. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/models/mod.rs +0 -0
  23. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/parse.rs +0 -0
  24. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/repos/base.rs +0 -0
  25. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/repos/mod.rs +0 -0
  26. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/repos/users.rs +0 -0
  27. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/resolve.rs +0 -0
  28. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/walker.rs +0 -0
  29. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/_native.pyi +0 -0
  30. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/__init__.py +0 -0
  31. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/approval.py +0 -0
  32. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/bootstrap.py +0 -0
  33. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/client.py +0 -0
  34. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/control.py +0 -0
  35. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/mock.py +0 -0
  36. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/runtime.py +0 -0
  37. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/session.py +0 -0
  38. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/tools/__init__.py +0 -0
  39. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/tools/base.py +0 -0
  40. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/tools/mutating.py +0 -0
  41. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/tools/readonly.py +0 -0
  42. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/tools/registry.py +0 -0
  43. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/__init__.py +0 -0
  44. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/catalog.py +0 -0
  45. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/chat_service.py +0 -0
  46. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/checks.py +0 -0
  47. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/cli_adapter.py +0 -0
  48. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/completer.py +0 -0
  49. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/conversation_service.py +0 -0
  50. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/prompt_service.py +0 -0
  51. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/selector.py +0 -0
  52. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/shell.py +0 -0
  53. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/checks/__init__.py +0 -0
  54. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/checks/base.py +0 -0
  55. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/checks/instructions.py +0 -0
  56. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/checks/packages.py +0 -0
  57. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/checks/workspace.py +0 -0
  58. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/__init__.py +0 -0
  59. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/add.py +0 -0
  60. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/chat.py +0 -0
  61. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/check.py +0 -0
  62. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/__init__.py +0 -0
  63. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/api.py +0 -0
  64. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/domain.py +0 -0
  65. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/engine.py +0 -0
  66. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/storybook.py +0 -0
  67. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/ui.py +0 -0
  68. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/init.py +0 -0
  69. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/map.py +0 -0
  70. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/refresh.py +0 -0
  71. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/settings.py +0 -0
  72. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/sync.py +0 -0
  73. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/update.py +0 -0
  74. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/context.py +0 -0
  75. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/dependencies.py +0 -0
  76. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/dependency_manifest_data.py +0 -0
  77. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/__init__.py +0 -0
  78. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/base.py +0 -0
  79. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/claude.py +0 -0
  80. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/codex.py +0 -0
  81. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/copilot.py +0 -0
  82. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/cursor.py +0 -0
  83. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/gemini.py +0 -0
  84. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/github.py +0 -0
  85. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/manifest_refresh.py +0 -0
  86. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/__init__.py +0 -0
  87. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/architecture.py +0 -0
  88. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/chains.py +0 -0
  89. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/classifier.py +0 -0
  90. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/coverage.py +0 -0
  91. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/dependencies.py +0 -0
  92. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/extractor.py +0 -0
  93. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/graph.py +0 -0
  94. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/output.py +0 -0
  95. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/responsibility.py +0 -0
  96. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/topology.py +0 -0
  97. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/walker.py +0 -0
  98. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/package_updates.py +0 -0
  99. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/project_rename.py +0 -0
  100. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/domain/base_entity.md +0 -0
  101. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/domain/base_repo.md +0 -0
  102. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/domain/container.md +0 -0
  103. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/domain/settings.md +0 -0
  104. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/all.instructions.md +0 -0
  105. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/api.instructions.md +0 -0
  106. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/domain.instructions.md +0 -0
  107. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/frontend.instructions.md +0 -0
  108. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/rust-engine.instructions.md +0 -0
  109. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/setup-guide.instructions.md +0 -0
  110. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/tooling-setup.instructions.md +0 -0
  111. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/tooling.instructions.md +0 -0
  112. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/BACKEND_FLOW.md +0 -0
  113. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/README.md +0 -0
  114. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/client/content.ts +0 -0
  115. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/client/httpChatStreamClient.spec.ts +0 -0
  116. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/client/httpChatStreamClient.ts +0 -0
  117. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/client/index.ts +0 -0
  118. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/client/types.ts +0 -0
  119. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/ChatComposer.spec.tsx +0 -0
  120. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/ChatComposer.tsx +0 -0
  121. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/__screenshots__/ChatComposer.spec.tsx/ChatComposer-renders-custom-action-buttons-beside-the-attachment-control-1.png +0 -0
  122. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/fileDrop.spec.ts +0 -0
  123. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/fileDrop.ts +0 -0
  124. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/index.ts +0 -0
  125. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/ChatComposerMentionTokens.tsx +0 -0
  126. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/ChatSuggestionsPopover.tsx +0 -0
  127. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/LocalFileSuggestionAction.tsx +0 -0
  128. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/index.ts +0 -0
  129. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/localFileSuggestions.spec.ts +0 -0
  130. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/localFileSuggestions.ts +0 -0
  131. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/triggerDetection.spec.ts +0 -0
  132. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/triggerDetection.ts +0 -0
  133. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/types.ts +0 -0
  134. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/useChatSuggestions.ts +0 -0
  135. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/types.ts +0 -0
  136. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/useChatComposer.ts +0 -0
  137. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/useChatStream.spec.tsx +0 -0
  138. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/useChatStream.ts +0 -0
  139. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperience.spec.tsx +0 -0
  140. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperience.styles.tsx +0 -0
  141. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperience.tsx +0 -0
  142. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperienceComposer.styles.tsx +0 -0
  143. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperienceComposer.tsx +0 -0
  144. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperienceHeader.styles.tsx +0 -0
  145. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperienceHeader.tsx +0 -0
  146. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ThreadHistory.styles.tsx +0 -0
  147. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ThreadHistory.tsx +0 -0
  148. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/chatStorage.spec.ts +0 -0
  149. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/chatStorage.ts +0 -0
  150. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/index.ts +0 -0
  151. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/types.ts +0 -0
  152. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/useChatExperience.spec.tsx +0 -0
  153. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/useChatExperience.ts +0 -0
  154. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/index.ts +0 -0
  155. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/testing/createMockChatStreamClient.ts +0 -0
  156. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/testing/createMockSuggestionProvider.ts +0 -0
  157. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/testing/index.ts +0 -0
  158. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatMessage.tsx +0 -0
  159. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatMessageActions.tsx +0 -0
  160. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatMessageContent.spec.tsx +0 -0
  161. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatMessageContent.tsx +0 -0
  162. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatThread.spec.tsx +0 -0
  163. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatThread.tsx +0 -0
  164. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/README.md +0 -0
  165. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/contentFormat.ts +0 -0
  166. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/index.ts +0 -0
  167. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/streaming.ts +0 -0
  168. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/types.ts +0 -0
  169. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/virtual-list/VirtualComponent.spec.tsx +0 -0
  170. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/virtual-list/VirtualComponent.tsx +0 -0
  171. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/virtual-list/VirtualComponentList.spec.tsx +0 -0
  172. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/virtual-list/VirtualComponentList.tsx +0 -0
  173. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/virtual-list/index.ts +0 -0
  174. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/fetch.service.md +0 -0
  175. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/sticky-navigation.md +0 -0
  176. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/sticky-navigation.spec.md +0 -0
  177. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/vitest-browser-config.md +0 -0
  178. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/api/routes/chat_routes.py +0 -0
  179. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/api/tests/test_chat.py +0 -0
  180. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/models/dtos/chat_dtos.py +0 -0
  181. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/models/dtos/conversation_history_dtos.py +0 -0
  182. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/models/entities/conversation_history.py +0 -0
  183. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/repos/conversation_history.py +0 -0
  184. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/agent_session_codec.py +0 -0
  185. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/chat_service.py +0 -0
  186. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/conversation_history_service.py +0 -0
  187. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/conversation_operations.py +0 -0
  188. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/history_codec.py +0 -0
  189. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/in_memory_history_store.py +0 -0
  190. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/postgres_history_store.py +0 -0
  191. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/protocols/conversation_history_store.py +0 -0
  192. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/protocols/conversation_runtime.py +0 -0
  193. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/protocols/llm_provider.py +0 -0
  194. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_chat_dtos.py +0 -0
  195. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_chat_service.py +0 -0
  196. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_history_codec.py +0 -0
  197. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_history_projection.py +0 -0
  198. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_persistence_config.py +0 -0
  199. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_postgres_history_store.py +0 -0
  200. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/models/dtos/__init__.py +0 -0
  201. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/models/dtos/vllm_model_dtos.py +0 -0
  202. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/VLLM_SETUP.md +0 -0
  203. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/__init__.py +0 -0
  204. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/model_catalog.py +0 -0
  205. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/vllm_agent_factory.py +0 -0
  206. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/vllm_agent_factory_protocol.py +0 -0
  207. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/vllm_inference_coordinator.py +0 -0
  208. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/runtimes/__init__.py +0 -0
  209. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/runtimes/agents_sdk.py +0 -0
  210. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/runtimes/agents_sdk_message_mapping.py +0 -0
  211. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/tests/test_agents_sdk_runtime.py +0 -0
  212. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/tests/test_vllm_model_catalog.py +0 -0
  213. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/tests/test_vllm_provider.py +0 -0
  214. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/camel_case_model.md +0 -0
  215. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/domain_container.md +0 -0
  216. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/domain_settings.md +0 -0
  217. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/dto_util.md +0 -0
  218. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/encrypted_column.md +0 -0
  219. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/logging.md +0 -0
  220. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/mapper_util.md +0 -0
  221. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/partial_update.md +0 -0
  222. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/test_encrypted_column.md +0 -0
  223. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/templates/__init__.py +0 -0
  224. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/templates/registry.py +0 -0
  225. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/__init__.py +0 -0
  226. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/console.py +0 -0
  227. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/markdown.py +0 -0
  228. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/prompt_session.py +0 -0
  229. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/renderers.py +0 -0
  230. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/theme.py +0 -0
  231. {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/workspace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rpr-cli
3
- Version: 0.3.8
3
+ Version: 0.3.10
4
4
  Requires-Dist: typer>=0.24.1
5
5
  Requires-Dist: jinja2>=3.1.5
6
6
  Requires-Dist: pyyaml>=6.0.2
@@ -87,6 +87,19 @@ source and experiments to remain in rename scope. Binary contents, VCS data, and
87
87
  symlink targets are never changed. The outer workspace directory keeps its
88
88
  existing name.
89
89
 
90
+ After applying the rename, RPR synchronizes Node and Python dependencies and
91
+ runs uncached Nx build, Rust-engine build, and typecheck targets with the Nx
92
+ daemon disabled. This verifies the renamed project graph and commands without
93
+ deleting the existing Nx cache. Pass `--skip-verify` to omit these checks; a
94
+ dry run previews them without executing anything. If verification fails, the
95
+ rename remains applied and RPR prints the command to retry.
96
+
97
+ The success output includes a guarded command for optionally renaming the outer
98
+ workspace directory. Git remotes and hosted repository names are never changed.
99
+ When a hosted repository still matches the old project name, rename it through
100
+ the hosting provider if desired and then update its local URL with
101
+ `git remote set-url`. Local and remote branch names are unaffected.
102
+
90
103
  `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.
91
104
 
92
105
  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:
@@ -271,9 +284,11 @@ No `PYPI_API_TOKEN` secret is required when publishing through GitHub Actions OI
271
284
  Release flow:
272
285
 
273
286
  ```bash
274
- # update src/rpr/__init__.py and rpr-parser/Cargo.toml to the same version
275
- git commit -am "Release 0.3.8"
276
- git tag v0.3.8
287
+ rpr version bump patch # updates Python, Cargo.toml, and Cargo.lock
288
+ # Or repair/set an explicit version: rpr version set 0.3.9
289
+ git add src/rpr/__init__.py rpr-parser/Cargo.toml rpr-parser/Cargo.lock
290
+ git commit -m "Release 0.3.9"
291
+ git tag v0.3.9
277
292
  git push origin main --tags
278
293
  ```
279
294
 
@@ -70,6 +70,19 @@ source and experiments to remain in rename scope. Binary contents, VCS data, and
70
70
  symlink targets are never changed. The outer workspace directory keeps its
71
71
  existing name.
72
72
 
73
+ After applying the rename, RPR synchronizes Node and Python dependencies and
74
+ runs uncached Nx build, Rust-engine build, and typecheck targets with the Nx
75
+ daemon disabled. This verifies the renamed project graph and commands without
76
+ deleting the existing Nx cache. Pass `--skip-verify` to omit these checks; a
77
+ dry run previews them without executing anything. If verification fails, the
78
+ rename remains applied and RPR prints the command to retry.
79
+
80
+ The success output includes a guarded command for optionally renaming the outer
81
+ workspace directory. Git remotes and hosted repository names are never changed.
82
+ When a hosted repository still matches the old project name, rename it through
83
+ the hosting provider if desired and then update its local URL with
84
+ `git remote set-url`. Local and remote branch names are unaffected.
85
+
73
86
  `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.
74
87
 
75
88
  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:
@@ -254,9 +267,11 @@ No `PYPI_API_TOKEN` secret is required when publishing through GitHub Actions OI
254
267
  Release flow:
255
268
 
256
269
  ```bash
257
- # update src/rpr/__init__.py and rpr-parser/Cargo.toml to the same version
258
- git commit -am "Release 0.3.8"
259
- git tag v0.3.8
270
+ rpr version bump patch # updates Python, Cargo.toml, and Cargo.lock
271
+ # Or repair/set an explicit version: rpr version set 0.3.9
272
+ git add src/rpr/__init__.py rpr-parser/Cargo.toml rpr-parser/Cargo.lock
273
+ git commit -m "Release 0.3.9"
274
+ git tag v0.3.9
260
275
  git push origin main --tags
261
276
  ```
262
277
 
@@ -1981,7 +1981,7 @@ dependencies = [
1981
1981
 
1982
1982
  [[package]]
1983
1983
  name = "rpr-parser"
1984
- version = "0.3.8"
1984
+ version = "0.3.10"
1985
1985
  dependencies = [
1986
1986
  "dirs",
1987
1987
  "dotenvy",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rpr-parser"
3
- version = "0.3.8"
3
+ version = "0.3.10"
4
4
  edition = "2021"
5
5
 
6
6
  [lib]
@@ -158,16 +158,27 @@ impl Replacer {
158
158
  let mut position = 0;
159
159
  let mut replacements = 0;
160
160
  while position < text.len() {
161
- if let Some(token) = self.match_new(text, position) {
162
- output.push_str(token);
163
- position += token.len();
164
- continue;
165
- }
166
- if let Some((old, new)) = self.match_old(text, position) {
167
- output.push_str(new);
168
- position += old.len();
169
- replacements += 1;
170
- continue;
161
+ let new_match = self.match_new(text, position);
162
+ let old_match = self.match_old(text, position);
163
+ match (old_match, new_match) {
164
+ (Some((old, new)), Some(existing)) if old.len() > existing.len() => {
165
+ output.push_str(new);
166
+ position += old.len();
167
+ replacements += 1;
168
+ continue;
169
+ }
170
+ (_, Some(existing)) => {
171
+ output.push_str(existing);
172
+ position += existing.len();
173
+ continue;
174
+ }
175
+ (Some((old, new)), None) => {
176
+ output.push_str(new);
177
+ position += old.len();
178
+ replacements += 1;
179
+ continue;
180
+ }
181
+ (None, None) => {}
171
182
  }
172
183
  let ch = text[position..]
173
184
  .chars()
@@ -182,12 +193,16 @@ impl Replacer {
182
193
  fn has_stale_reference(&self, text: &str) -> bool {
183
194
  let mut position = 0;
184
195
  while position < text.len() {
185
- if let Some(token) = self.match_new(text, position) {
186
- position += token.len();
187
- continue;
188
- }
189
- if self.match_old(text, position).is_some() {
190
- return true;
196
+ let new_match = self.match_new(text, position);
197
+ let old_match = self.match_old(text, position);
198
+ match (old_match, new_match) {
199
+ (Some((old, _)), Some(existing)) if old.len() > existing.len() => return true,
200
+ (_, Some(existing)) => {
201
+ position += existing.len();
202
+ continue;
203
+ }
204
+ (Some(_), None) => return true,
205
+ (None, None) => {}
191
206
  }
192
207
  position += text[position..].chars().next().unwrap().len_utf8();
193
208
  }
@@ -288,6 +303,7 @@ pub fn plan(root: PathBuf, new_name: String) -> Result<NativeRenamePlan, String>
288
303
  validate_new_name(&old_name, &new_name)?;
289
304
  let replacer = Replacer::new(build_replacements(&old_name, &new_name, variables));
290
305
  let (entries, mut skipped) = walk_workspace(&root)?;
306
+ validate_unicode_paths(&root, &entries, &skipped)?;
291
307
  let files: Vec<_> = entries
292
308
  .iter()
293
309
  .filter(|entry| entry.is_file())
@@ -653,11 +669,37 @@ fn build_path_moves(
653
669
  fn rename_relative_path(path: &Path, replacer: &Replacer) -> PathBuf {
654
670
  let mut output = PathBuf::new();
655
671
  for component in path.components() {
656
- output.push(replacer.replace(&component.as_os_str().to_string_lossy()).0);
672
+ let component = component
673
+ .as_os_str()
674
+ .to_str()
675
+ .expect("workspace paths were validated as Unicode");
676
+ output.push(replacer.replace(component).0);
657
677
  }
658
678
  output
659
679
  }
660
680
 
681
+ fn validate_unicode_paths(
682
+ root: &Path,
683
+ entries: &[PathBuf],
684
+ skipped: &[SkippedPath],
685
+ ) -> Result<(), String> {
686
+ for entry in entries.iter().chain(skipped.iter().map(|item| &item.path)) {
687
+ let relative = entry
688
+ .strip_prefix(root)
689
+ .expect("walked path is beneath root");
690
+ if relative
691
+ .components()
692
+ .any(|component| component.as_os_str().to_str().is_none())
693
+ {
694
+ return Err(format!(
695
+ "Workspace path is not valid Unicode and cannot be renamed safely: {:?}",
696
+ entry.as_os_str()
697
+ ));
698
+ }
699
+ }
700
+ Ok(())
701
+ }
702
+
661
703
  fn update_config(text: &str, new_name: &str) -> Result<(String, usize), String> {
662
704
  let mut config: Value = serde_yaml::from_str(text)
663
705
  .map_err(|error| format!("Renamed .rpr.yaml would be invalid: {error}"))?;
@@ -1005,6 +1047,28 @@ mod tests {
1005
1047
  assert_eq!(count, 1);
1006
1048
  }
1007
1049
 
1050
+ #[test]
1051
+ fn longest_token_wins_for_shortening_and_expansion() {
1052
+ let shortening = Replacer::new(HashMap::from([
1053
+ ("foo-bar".into(), "foo".into()),
1054
+ ("foo_bar".into(), "foo".into()),
1055
+ ("FooBar".into(), "Foo".into()),
1056
+ ]));
1057
+ let (output, count) =
1058
+ shortening.replace("nx serve foo-bar-web; from foo_bar_domain import FooBarService");
1059
+ assert_eq!(
1060
+ output,
1061
+ "nx serve foo-web; from foo_domain import FooService"
1062
+ );
1063
+ assert_eq!(count, 3);
1064
+ assert!(!shortening.has_stale_reference(&output));
1065
+
1066
+ let expansion = Replacer::new(HashMap::from([("foo".into(), "foo-bar".into())]));
1067
+ let (output, count) = expansion.replace("foo foo-bar");
1068
+ assert_eq!(output, "foo-bar foo-bar");
1069
+ assert_eq!(count, 1);
1070
+ }
1071
+
1008
1072
  #[test]
1009
1073
  fn bootstrap_defaults_cover_named_virtual_environments() {
1010
1074
  let temp = tempfile::tempdir().unwrap();
@@ -1046,6 +1110,40 @@ mod tests {
1046
1110
  .contains("new_app_domain"));
1047
1111
  }
1048
1112
 
1113
+ #[test]
1114
+ fn shortening_rename_updates_nested_paths_and_references() {
1115
+ let temp = workspace();
1116
+ let plan = plan(temp.path().to_path_buf(), "my".into()).unwrap();
1117
+
1118
+ apply(&plan).unwrap();
1119
+
1120
+ let renamed = temp
1121
+ .path()
1122
+ .join("packages/python/my_domain/src/my_domain/main.py");
1123
+ assert!(renamed.is_file());
1124
+ assert!(fs::read_to_string(renamed).unwrap().contains("my_domain"));
1125
+ }
1126
+
1127
+ #[cfg(unix)]
1128
+ #[test]
1129
+ fn non_unicode_workspace_path_aborts_planning() {
1130
+ use std::ffi::OsString;
1131
+ use std::os::unix::ffi::OsStringExt;
1132
+
1133
+ let temp = workspace();
1134
+ let invalid = temp
1135
+ .path()
1136
+ .join(OsString::from_vec(b"my-app-\xff.txt".to_vec()));
1137
+ write(&invalid, b"my-app\n");
1138
+
1139
+ let error = plan(temp.path().to_path_buf(), "new-app".into())
1140
+ .err()
1141
+ .expect("non-Unicode path should fail planning");
1142
+
1143
+ assert!(error.contains("not valid Unicode"));
1144
+ assert!(temp.path().join("packages/python/my_app_domain").is_dir());
1145
+ }
1146
+
1049
1147
  #[test]
1050
1148
  fn ignored_virtual_environment_is_never_planned_or_validated() {
1051
1149
  let temp = workspace();
@@ -0,0 +1 @@
1
+ __version__ = "0.3.10"
@@ -33,6 +33,13 @@ sync_app = typer.Typer(
33
33
  )
34
34
  app.add_typer(sync_app, name="sync")
35
35
 
36
+ version_app = typer.Typer(
37
+ name="version",
38
+ help="Manage synchronized Python and Rust release versions.",
39
+ no_args_is_help=True,
40
+ )
41
+ app.add_typer(version_app, name="version")
42
+
36
43
  refresh_app = typer.Typer(
37
44
  name="refresh",
38
45
  help="Refresh repo-owned manifests from upstream registries.",
@@ -61,6 +68,7 @@ from rpr.commands.generate import ui as _ui_mod # noqa: E402, F401
61
68
  from rpr.commands.generate import engine as _engine_mod # noqa: E402, F401
62
69
  from rpr.commands.generate import storybook as _storybook_mod # noqa: E402, F401
63
70
  from rpr.commands import sync as _sync_mod # noqa: E402, F401
71
+ from rpr.commands import version as _version_mod # noqa: E402, F401
64
72
  from rpr.commands import refresh as _refresh_mod # noqa: E402, F401
65
73
  from rpr.commands import update as _update_mod # noqa: E402, F401
66
74
  from rpr.commands import add as _add_mod # noqa: E402, F401