rpr-cli 0.1.22__tar.gz → 0.1.24__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.
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/PKG-INFO +1 -1
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/instructions/domain.instructions.md +3 -3
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/nx_uv_setup.md +1 -1
- rpr_cli-0.1.24/src/rpr/__init__.py +1 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/checks/packages.py +1 -1
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/generate/domain.py +12 -3
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/generate/storybook.py +5 -5
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/generate/ui.py +5 -5
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/init.py +2 -1
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/dependencies.py +16 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/dependency_manifest_data.py +6 -11
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/manifest_refresh.py +6 -2
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/domain/container.md +0 -2
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/instructions/domain.instructions.md +3 -3
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/special_files/domain_container.md +0 -2
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/02-rpr-generate-domain.md +4 -4
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/17-rpr-map-output.md +2 -2
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_check.py +1 -1
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_generate_domain.py +8 -4
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_generate_storybook.py +17 -17
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_refresh.py +10 -4
- rpr_cli-0.1.22/src/rpr/__init__.py +0 -1
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/.github/agents/story.agent.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/.github/workflows/publish-pypi.yml +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/.gitignore +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/CLAUDE.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/GEMINI.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/LICENSE +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/README.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/instructions/all.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/instructions/api.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/instructions/frontend.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/instructions/rust-engine.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/instructions/setup-guide.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/instructions/tooling-setup.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/instructions/tooling.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/scaffolds/README.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/scaffolds/api/main.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/scaffolds/domain/base-repo.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/scaffolds/domain/base_entity.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/scaffolds/frontend/api.service.ts +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/scaffolds/frontend/useStateNavigation.ts +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/changelogs/mui_v9.txt +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/code-map.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/patch_output.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/pyproject.toml +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/Cargo.lock +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/Cargo.toml +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/pyproject.toml +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/rpr_parser.pyi +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/config/container.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/config/mod.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/config/settings.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/graph.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/lib.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/models/dtos/mod.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/models/entities/mod.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/models/entities/users.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/models/mod.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/parse.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/repos/base.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/repos/mod.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/repos/users.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/resolve.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/src/walker.rs +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/rpr-parser/uv.lock +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/special_files.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/__init__.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/approval.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/bootstrap.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/client.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/control.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/mock.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/runtime.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/session.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/tools/__init__.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/tools/base.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/tools/mutating.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/tools/readonly.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/agent/tools/registry.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/application/__init__.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/application/catalog.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/application/chat_service.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/application/checks.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/application/cli_adapter.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/application/completer.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/application/conversation_service.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/application/prompt_service.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/application/selector.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/application/shell.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/checks/__init__.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/checks/base.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/checks/instructions.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/checks/workspace.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/cli.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/__init__.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/add.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/chat.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/check.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/generate/__init__.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/generate/api.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/generate/engine.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/map.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/refresh.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/settings.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/commands/sync.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/context.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/generators/__init__.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/generators/base.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/generators/claude.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/generators/copilot.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/generators/cursor.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/generators/gemini.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/generators/github.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/__init__.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/architecture.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/chains.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/classifier.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/coverage.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/dependencies.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/extractor.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/graph.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/output.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/responsibility.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/topology.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/map/walker.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/domain/base_entity.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/domain/base_repo.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/domain/settings.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/instructions/all.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/instructions/api.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/instructions/frontend.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/instructions/rust-engine.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/instructions/setup-guide.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/instructions/tooling-setup.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/instructions/tooling.instructions.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/js_special_files/fetch.service.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/js_special_files/sticky-navigation.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/special_files/domain_settings.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/special_files/dto_util.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/special_files/encrypted_column.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/special_files/mapper_util.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/scaffolds/special_files/partial_update.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/templates/__init__.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/templates/registry.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/ui/__init__.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/ui/console.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/ui/markdown.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/ui/prompt_session.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/ui/renderers.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/ui/theme.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/src/rpr/workspace.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/README.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/00-bootstrap-cli.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/01-rpr-init.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/03-rpr-generate-api.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/04-rpr-generate-ui.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/05-rpr-generate-engine.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/06-rpr-generate-storybook.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/07-rpr-sync-rules.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/08-rpr-add-template.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/09-rpr-check.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/10-rpr-domain-config.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/18-rpr-terminal-ui-foundation.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/19-rpr-markdown-rendering.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/20-rpr-chat-repl.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/21-rpr-agent-tool-loop.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/22-rpr-chat-tui.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/23-rpr-chat-unified-command-shell.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/24-rpr-async-chat-runtime-and-services.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/25-rpr-prompt-service-and-conversation-lifecycle.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/26-rpr-shared-command-catalog.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/27-rpr-slash-command-selection-panel.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/28-rpr-chat-cancellable-and-multiline-input.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/chat/29-rpr-file-context-selection.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/11-rpr-map-command.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/12-rpr-map-file-walker.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/13-rpr-map-rust-engine.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/13a-rpr-map-gitignore.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/14-rpr-map-graph-builder.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/15-rpr-map-analysis-bridge.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/16-rpr-map-layer-classifier.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/17a-rpr-map-directory-topology.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/17b-rpr-map-architecture-assessment.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/17c-rpr-map-representative-chains.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/completed/map/17d-rpr-map-multi-resolution-output.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/map/30-rpr-map-directory-view-and-cycle-detection.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/map/31-rpr-map-coupling-hotspots-and-verdict-reasoning.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/stories/map/32-rpr-map-dependencies-responsibilities-and-test-coverage.md +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/__init__.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_add.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_architecture.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_architecture_unwrapped.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_catalog.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_chat.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_chat_service.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_completer.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_context.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_generate_api.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_generate_engine.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_generate_ui.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_init.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_map.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_map_chains.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_map_classifier.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_map_coverage.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_map_dependencies.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_map_extractor.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_map_graph.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_map_output.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_map_responsibility.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_map_topology.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_map_walker.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_packaging.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_prompt_session.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_rpr_parser_stub.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_selector.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_settings.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_sync.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/tests/test_ui.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/update_output.py +0 -0
- {rpr_cli-0.1.22 → rpr_cli-0.1.24}/uv.lock +0 -0
|
@@ -9,8 +9,8 @@ Use a DDD-style domain layer with explicit boundaries, SQLModel entities, Depend
|
|
|
9
9
|
|
|
10
10
|
## Structure
|
|
11
11
|
|
|
12
|
-
- **entities**: SQLModel-based persistence models. Use the shared base entity pattern for ids and timestamps.
|
|
13
|
-
- **dtos**: request, response, and integration models.
|
|
12
|
+
- **models/entities**: SQLModel-based persistence models. Use the shared base entity pattern for ids and timestamps.
|
|
13
|
+
- **models/dtos**: request, response, and integration models.
|
|
14
14
|
- **repos**: data-access layer. Extend the shared base repository pattern.
|
|
15
15
|
- **services**: external clients and provider integrations. Keep transport-specific logic here, not in workflows.
|
|
16
16
|
- **workflows**: business use cases and multi-step orchestration. Pub/sub handlers belong in `workflows/handlers` when the project uses them.
|
|
@@ -47,7 +47,7 @@ npx nx run domain:migrate -- downgrade -1
|
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
- Keep the Alembic CLI under the project's configured Python environment.
|
|
50
|
-
- Alembic autogeneration depends on model discovery, so make sure new entity modules are imported by the domain model registry such as `entities/__init__.py`.
|
|
50
|
+
- Alembic autogeneration depends on model discovery, so make sure new entity modules are imported by the domain model registry such as `models/entities/__init__.py`.
|
|
51
51
|
|
|
52
52
|
## Repository Pattern
|
|
53
53
|
|
|
@@ -488,7 +488,7 @@ npx nx run domain:migrate -- upgrade head # applies all pending migrations
|
|
|
488
488
|
npx nx run domain:migrate -- downgrade -1 # rolls back the most recent migration
|
|
489
489
|
```
|
|
490
490
|
|
|
491
|
-
Alembic autogeneration relies on model discovery, make sure the new entity modules are imported by the package's model registry such as `entities/__init__.py` file.
|
|
491
|
+
Alembic autogeneration relies on model discovery, make sure the new entity modules are imported by the package's model registry such as `models/entities/__init__.py` file.
|
|
492
492
|
|
|
493
493
|
## Adding other languages (e.g. Rust)
|
|
494
494
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.24"
|
|
@@ -525,7 +525,7 @@ def _check_domain_migration_scaffold(
|
|
|
525
525
|
env_ok = (
|
|
526
526
|
f"from {name_underscore}_domain.config.settings import Settings"
|
|
527
527
|
in env_content
|
|
528
|
-
and f"import {name_underscore}_domain.entities" in env_content
|
|
528
|
+
and f"import {name_underscore}_domain.models.entities" in env_content
|
|
529
529
|
)
|
|
530
530
|
|
|
531
531
|
missing: list[str] = []
|
|
@@ -51,7 +51,16 @@ def domain(
|
|
|
51
51
|
console.print(f"\n[bold]Generating domain package:[/] {pkg_name}\n")
|
|
52
52
|
|
|
53
53
|
# --- directories -------------------------------------------------------
|
|
54
|
-
dirs = [
|
|
54
|
+
dirs = [
|
|
55
|
+
"models",
|
|
56
|
+
"models/entities",
|
|
57
|
+
"models/dtos",
|
|
58
|
+
"repos",
|
|
59
|
+
"services",
|
|
60
|
+
"workflows",
|
|
61
|
+
"config",
|
|
62
|
+
"utils",
|
|
63
|
+
]
|
|
55
64
|
for d in dirs:
|
|
56
65
|
ctx.ensure_dir(src_root / d)
|
|
57
66
|
ctx.ensure_dir(tests_root)
|
|
@@ -72,7 +81,7 @@ def domain(
|
|
|
72
81
|
_write_container(ctx, src_root / "config" / "container.py", pkg_name)
|
|
73
82
|
|
|
74
83
|
# --- scaffold files ----------------------------------------------------
|
|
75
|
-
_write_base_entity(ctx, src_root / "entities" / "base.py")
|
|
84
|
+
_write_base_entity(ctx, src_root / "models" / "entities" / "base.py")
|
|
76
85
|
_write_base_repo(ctx, src_root / "repos" / "base.py", pkg_name)
|
|
77
86
|
_write_domain_test(ctx, tests_root / "test_package.py", pkg_name)
|
|
78
87
|
if migrations:
|
|
@@ -294,7 +303,7 @@ from sqlalchemy.ext.asyncio import create_async_engine
|
|
|
294
303
|
from sqlmodel import SQLModel
|
|
295
304
|
|
|
296
305
|
from {pkg_name_underscore}.config.settings import Settings
|
|
297
|
-
import {pkg_name_underscore}.entities # noqa: F401
|
|
306
|
+
import {pkg_name_underscore}.models.entities # noqa: F401
|
|
298
307
|
|
|
299
308
|
|
|
300
309
|
settings = Settings()
|
|
@@ -12,7 +12,7 @@ from rpr.context import RunContext
|
|
|
12
12
|
from rpr.dependencies import (
|
|
13
13
|
ROOT_STORYBOOK_DEV_DEPENDENCIES,
|
|
14
14
|
STORYBOOK_DEV_DEPENDENCIES,
|
|
15
|
-
|
|
15
|
+
npm_install_specs,
|
|
16
16
|
npm_package_name,
|
|
17
17
|
storybook_host_package_name,
|
|
18
18
|
storybook_package_dependencies,
|
|
@@ -199,10 +199,10 @@ def _write_sb_package_json(ctx: RunContext, sb_root: Path, ui_pkg: str) -> None:
|
|
|
199
199
|
|
|
200
200
|
|
|
201
201
|
def _install_storybook_dependencies(ctx: RunContext, ui_pkg: str) -> None:
|
|
202
|
-
runtime =
|
|
202
|
+
runtime = npm_install_specs(storybook_package_dependencies(ui_pkg))
|
|
203
203
|
dev = [
|
|
204
|
-
*
|
|
205
|
-
*
|
|
204
|
+
*npm_install_specs(ROOT_STORYBOOK_DEV_DEPENDENCIES),
|
|
205
|
+
*npm_install_specs(STORYBOOK_DEV_DEPENDENCIES),
|
|
206
206
|
]
|
|
207
207
|
if runtime:
|
|
208
208
|
ctx.run_command(["npm", "i", *sorted(set(runtime))], cwd=ctx.project_dir)
|
|
@@ -371,7 +371,7 @@ const config: StorybookConfig = {{
|
|
|
371
371
|
stories: [
|
|
372
372
|
"../../{ui_pkg}/src/**/*.stories.@(ts|tsx)",
|
|
373
373
|
],
|
|
374
|
-
|
|
374
|
+
addons: [],
|
|
375
375
|
framework: {{
|
|
376
376
|
name: "@storybook/react-vite",
|
|
377
377
|
options: {{}},
|
|
@@ -14,7 +14,7 @@ from rpr.dependencies import (
|
|
|
14
14
|
UI_LIBRARY_DEV_DEPENDENCIES,
|
|
15
15
|
WEB_APP_DEV_DEPENDENCIES,
|
|
16
16
|
node_project_name,
|
|
17
|
-
|
|
17
|
+
npm_install_specs,
|
|
18
18
|
ui_package_name,
|
|
19
19
|
web_app_dependencies,
|
|
20
20
|
web_package_name,
|
|
@@ -154,11 +154,11 @@ def _install_ui_dependencies(
|
|
|
154
154
|
runtime: list[str] = []
|
|
155
155
|
dev: list[str] = []
|
|
156
156
|
if include_library:
|
|
157
|
-
runtime.extend(
|
|
158
|
-
dev.extend(
|
|
157
|
+
runtime.extend(npm_install_specs(UI_LIBRARY_DEPENDENCIES))
|
|
158
|
+
dev.extend(npm_install_specs(UI_LIBRARY_DEV_DEPENDENCIES))
|
|
159
159
|
if include_web:
|
|
160
|
-
runtime.extend(
|
|
161
|
-
dev.extend(
|
|
160
|
+
runtime.extend(npm_install_specs(web_app_dependencies(ui_pkg_name)))
|
|
161
|
+
dev.extend(npm_install_specs(WEB_APP_DEV_DEPENDENCIES))
|
|
162
162
|
|
|
163
163
|
if runtime:
|
|
164
164
|
ctx.run_command(["npm", "i", *sorted(set(runtime))], cwd=ctx.project_dir)
|
|
@@ -16,6 +16,7 @@ from rpr.context import RunContext
|
|
|
16
16
|
from rpr.dependencies import (
|
|
17
17
|
ROOT_NODE_DEV_DEPENDENCIES,
|
|
18
18
|
node_project_name,
|
|
19
|
+
npm_install_specs,
|
|
19
20
|
npm_install_names,
|
|
20
21
|
npm_package_name,
|
|
21
22
|
python_package_name,
|
|
@@ -846,7 +847,7 @@ def init(
|
|
|
846
847
|
dev=npm_install_names(ROOT_NODE_DEV_DEPENDENCIES),
|
|
847
848
|
)
|
|
848
849
|
ctx.run_command(
|
|
849
|
-
["npm", "i", "-D", *
|
|
850
|
+
["npm", "i", "-D", *npm_install_specs(ROOT_NODE_DEV_DEPENDENCIES)],
|
|
850
851
|
cwd=project_dir,
|
|
851
852
|
)
|
|
852
853
|
|
|
@@ -132,6 +132,22 @@ def npm_install_names(dependencies: Mapping[str, str] | list[str]) -> list[str]:
|
|
|
132
132
|
return list(dependencies)
|
|
133
133
|
|
|
134
134
|
|
|
135
|
+
def npm_install_specs(dependencies: Mapping[str, str] | list[str]) -> list[str]:
|
|
136
|
+
if not isinstance(dependencies, Mapping):
|
|
137
|
+
return list(dependencies)
|
|
138
|
+
|
|
139
|
+
specs: list[str] = []
|
|
140
|
+
for name, value in dependencies.items():
|
|
141
|
+
specifier = str(value)
|
|
142
|
+
if specifier.startswith(("file:", "workspace:")):
|
|
143
|
+
continue
|
|
144
|
+
if specifier:
|
|
145
|
+
specs.append(f"{name}@{specifier}")
|
|
146
|
+
else:
|
|
147
|
+
specs.append(name)
|
|
148
|
+
return specs
|
|
149
|
+
|
|
150
|
+
|
|
135
151
|
def api_runtime_dependencies(name: str) -> list[str]:
|
|
136
152
|
return [python_project_name(name, "domain"), *API_RUNTIME_BASE_DEPENDENCIES]
|
|
137
153
|
|
|
@@ -161,20 +161,15 @@ MANIFEST = {
|
|
|
161
161
|
},
|
|
162
162
|
},
|
|
163
163
|
"storybook_dev_dependencies": {
|
|
164
|
-
"@storybook/addon-essentials": {
|
|
165
|
-
"registry": "npm",
|
|
166
|
-
"specifier": "latest",
|
|
167
|
-
"strategy": "latest",
|
|
168
|
-
},
|
|
169
164
|
"@storybook/react": {
|
|
170
165
|
"registry": "npm",
|
|
171
|
-
"specifier": "
|
|
172
|
-
"strategy": "
|
|
166
|
+
"specifier": "^10.3.6",
|
|
167
|
+
"strategy": "pinned-major",
|
|
173
168
|
},
|
|
174
169
|
"@storybook/react-vite": {
|
|
175
170
|
"registry": "npm",
|
|
176
|
-
"specifier": "
|
|
177
|
-
"strategy": "
|
|
171
|
+
"specifier": "^10.3.6",
|
|
172
|
+
"strategy": "pinned-major",
|
|
178
173
|
},
|
|
179
174
|
"@vitejs/plugin-react": {
|
|
180
175
|
"registry": "npm",
|
|
@@ -193,8 +188,8 @@ MANIFEST = {
|
|
|
193
188
|
},
|
|
194
189
|
"storybook": {
|
|
195
190
|
"registry": "npm",
|
|
196
|
-
"specifier": "
|
|
197
|
-
"strategy": "
|
|
191
|
+
"specifier": "^10.3.6",
|
|
192
|
+
"strategy": "pinned-major",
|
|
198
193
|
},
|
|
199
194
|
"typescript": {
|
|
200
195
|
"registry": "npm",
|
|
@@ -9,7 +9,9 @@ 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[
|
|
12
|
+
RefreshStrategy = Literal[
|
|
13
|
+
"caret", "minimum", "exact", "major-range", "latest", "pinned-major"
|
|
14
|
+
]
|
|
13
15
|
Manifest = dict[str, dict[str, dict[str, str]]]
|
|
14
16
|
|
|
15
17
|
_USER_AGENT = "rpr-cli/0.1.1 (+https://github.com/)"
|
|
@@ -79,6 +81,8 @@ def refresh_dependency_manifest(
|
|
|
79
81
|
continue
|
|
80
82
|
|
|
81
83
|
package = entry.get("package", dependency)
|
|
84
|
+
if strategy == "pinned-major":
|
|
85
|
+
continue
|
|
82
86
|
if strategy == "latest":
|
|
83
87
|
latest_version = "latest"
|
|
84
88
|
new_specifier = _format_specifier(
|
|
@@ -155,4 +159,4 @@ def _next_major(version: str) -> int:
|
|
|
155
159
|
match = re.match(r"^(\d+)", version)
|
|
156
160
|
if match is None:
|
|
157
161
|
raise ManifestRefreshError(f"Cannot determine next major version for {version}")
|
|
158
|
-
return int(match.group(1)) + 1
|
|
162
|
+
return int(match.group(1)) + 1
|
|
@@ -9,8 +9,8 @@ Use a DDD-style domain layer with explicit boundaries, SQLModel entities, Depend
|
|
|
9
9
|
|
|
10
10
|
## Structure
|
|
11
11
|
|
|
12
|
-
- **entities**: SQLModel-based persistence models. Use the shared base entity pattern for ids and timestamps.
|
|
13
|
-
- **dtos**: request, response, and integration models.
|
|
12
|
+
- **models/entities**: SQLModel-based persistence models. Use the shared base entity pattern for ids and timestamps.
|
|
13
|
+
- **models/dtos**: request, response, and integration models.
|
|
14
14
|
- **repos**: data-access layer. Extend the shared base repository pattern.
|
|
15
15
|
- **services**: external clients and provider integrations. Keep transport-specific logic here, not in workflows.
|
|
16
16
|
- **workflows**: business use cases and multi-step orchestration. Pub/sub handlers belong in `workflows/handlers` when the project uses them.
|
|
@@ -47,7 +47,7 @@ npx nx run {name_underscore}_domain:migrate -- downgrade -1
|
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
- Keep the Alembic CLI under the project's configured Python environment.
|
|
50
|
-
- Alembic autogeneration depends on model discovery, so make sure new entity modules are imported by the domain model registry such as `entities/__init__.py`.
|
|
50
|
+
- Alembic autogeneration depends on model discovery, so make sure new entity modules are imported by the domain model registry such as `models/entities/__init__.py`.
|
|
51
51
|
|
|
52
52
|
## Repository Pattern
|
|
53
53
|
|
|
@@ -16,7 +16,7 @@ Generate the backend domain package in the expected UV `src` layout and make it
|
|
|
16
16
|
- [ ] Creates subfolders: `entities/`, `dtos/`, `repos/`, `services/`, `workflows/`, `config/`, `utils/`.
|
|
17
17
|
- [ ] Creates `__init__.py` in each subfolder.
|
|
18
18
|
- [ ] Scaffolds `config/settings.py` (Pydantic `BaseSettings` with `.env` loading) and `config/container.py` (Dependency Injector `DeclarativeContainer` with DB engine and HTTP client providers). See **Story 10** for the exact content contract.
|
|
19
|
-
- [ ] Scaffolds a `BaseEntity` in `entities/base.py` using `Sample-dot-github/scaffolds/domain/base_entity.md` as the reference.
|
|
19
|
+
- [ ] Scaffolds a `BaseEntity` in `models/entities/base.py` using `Sample-dot-github/scaffolds/domain/base_entity.md` as the reference.
|
|
20
20
|
- [ ] Scaffolds a base repository in `repos/base.py` using `Sample-dot-github/scaffolds/domain/base-repo.md` as the reference.
|
|
21
21
|
- [ ] The `utils/` folder is created but left empty; utilities are added via `rpr add template`.
|
|
22
22
|
- [ ] Adds the package to `[tool.uv.workspace].members` in the root `pyproject.toml`.
|
|
@@ -57,9 +57,9 @@ packages/python/domain/
|
|
|
57
57
|
|
|
58
58
|
The `project.json` must define at minimum `test` and `lint` targets. Use `uv run` to invoke Python tools so they execute inside the package's managed environment:
|
|
59
59
|
|
|
60
|
-
| Target | Command
|
|
61
|
-
|
|
62
|
-
| `test` | `uv run pytest packages/python/domain`
|
|
60
|
+
| Target | Command |
|
|
61
|
+
| ------ | ---------------------------------------------- |
|
|
62
|
+
| `test` | `uv run pytest packages/python/domain` |
|
|
63
63
|
| `lint` | `uv run ruff check packages/python/domain/src` |
|
|
64
64
|
|
|
65
65
|
## Key Files
|
|
@@ -41,8 +41,8 @@ One subsection per layer (skip empty layers). Each subsection lists:
|
|
|
41
41
|
|
|
42
42
|
```
|
|
43
43
|
## Entities
|
|
44
|
-
- src/my_domain/entities/user.py — 4 dependents, 1 dependency
|
|
45
|
-
- src/my_domain/entities/base.py — 6 dependents, 0 dependencies (leaf)
|
|
44
|
+
- src/my_domain/models/entities/user.py — 4 dependents, 1 dependency
|
|
45
|
+
- src/my_domain/models/entities/base.py — 6 dependents, 0 dependencies (leaf)
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
#### 5. Dependency edges (condensed)
|
|
@@ -206,7 +206,7 @@ def _create_domain_migration_scaffold(base: Path) -> None:
|
|
|
206
206
|
(migrations / "versions").mkdir(parents=True, exist_ok=True)
|
|
207
207
|
(migrations / "env.py").write_text(
|
|
208
208
|
"from my_app_domain.config.settings import Settings\n"
|
|
209
|
-
"import my_app_domain.entities # noqa: F401\n"
|
|
209
|
+
"import my_app_domain.models.entities # noqa: F401\n"
|
|
210
210
|
)
|
|
211
211
|
(domain / "pyproject.toml").write_text(
|
|
212
212
|
"""[project]
|
|
@@ -65,15 +65,18 @@ def test_generate_domain_scaffolds_config_and_metadata(monkeypatch):
|
|
|
65
65
|
assert domain_root.exists()
|
|
66
66
|
assert (src_root / "config" / "settings.py").exists()
|
|
67
67
|
assert (src_root / "config" / "container.py").exists()
|
|
68
|
-
assert (src_root / "entities" / "base.py").exists()
|
|
68
|
+
assert (src_root / "models" / "entities" / "base.py").exists()
|
|
69
|
+
assert (src_root / "entities").exists() is False
|
|
70
|
+
assert (src_root / "dtos").exists() is False
|
|
69
71
|
assert (src_root / "repos" / "base.py").exists()
|
|
70
72
|
assert (domain_root / "tests" / "test_package.py").exists()
|
|
71
73
|
assert (domain_root / "README.md").read_text().startswith("# my-app Domain")
|
|
72
74
|
|
|
73
75
|
for package_dir in [
|
|
74
76
|
"",
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
+
"models",
|
|
78
|
+
"models/entities",
|
|
79
|
+
"models/dtos",
|
|
77
80
|
"repos",
|
|
78
81
|
"services",
|
|
79
82
|
"workflows",
|
|
@@ -104,6 +107,7 @@ def test_generate_domain_scaffolds_config_and_metadata(monkeypatch):
|
|
|
104
107
|
|
|
105
108
|
assert "from my_app_domain.config.settings import Settings" in container
|
|
106
109
|
assert "class Container(containers.DeclarativeContainer):" in container
|
|
110
|
+
assert "wiring_config = containers.WiringConfiguration" not in container
|
|
107
111
|
assert "config = providers.Singleton(Settings)" in container
|
|
108
112
|
assert "settings.database_url" in container
|
|
109
113
|
assert "pool_pre_ping=True" in container
|
|
@@ -167,7 +171,7 @@ def test_generate_domain_with_migrations_scaffolds_alembic_and_target(monkeypatc
|
|
|
167
171
|
assert (domain_root / "migrations" / "versions").is_dir()
|
|
168
172
|
assert "script_location = %(here)s/migrations" in alembic_ini
|
|
169
173
|
assert "from my_app_domain.config.settings import Settings" in env_py
|
|
170
|
-
assert "import my_app_domain.entities # noqa: F401" in env_py
|
|
174
|
+
assert "import my_app_domain.models.entities # noqa: F401" in env_py
|
|
171
175
|
assert project["name"] == "my_app_domain"
|
|
172
176
|
assert project["targets"]["migrate"]["options"]["command"] == (
|
|
173
177
|
"uv run alembic -c packages/python/my_app_domain/alembic.ini"
|
|
@@ -84,7 +84,8 @@ def test_generate_storybook_scaffolds_host_package_and_starter_story(monkeypatch
|
|
|
84
84
|
"storybook build -c packages/node/sb/.storybook -o dist/storybook"
|
|
85
85
|
)
|
|
86
86
|
assert "../../my-app-ui/src/**/*.stories.@(ts|tsx)" in sb_main
|
|
87
|
-
assert "@storybook/addon-essentials" in sb_main
|
|
87
|
+
assert "@storybook/addon-essentials" not in sb_main
|
|
88
|
+
assert "addons: []" in sb_main
|
|
88
89
|
assert "ThemeProvider" in sb_preview
|
|
89
90
|
assert 'import { appTheme } from "@my-app/ui";' in sb_preview
|
|
90
91
|
assert "createTheme" not in sb_preview
|
|
@@ -98,11 +99,11 @@ def test_generate_storybook_scaffolds_host_package_and_starter_story(monkeypatch
|
|
|
98
99
|
"cmd": [
|
|
99
100
|
"npm",
|
|
100
101
|
"i",
|
|
101
|
-
"@emotion/react",
|
|
102
|
-
"@emotion/styled",
|
|
103
|
-
"@mui/material",
|
|
104
|
-
"react",
|
|
105
|
-
"react
|
|
102
|
+
"@emotion/react@latest",
|
|
103
|
+
"@emotion/styled@latest",
|
|
104
|
+
"@mui/material@latest",
|
|
105
|
+
"react-dom@latest",
|
|
106
|
+
"react@latest",
|
|
106
107
|
],
|
|
107
108
|
"cwd": Path.cwd(),
|
|
108
109
|
"supports_dry_run": False,
|
|
@@ -112,17 +113,16 @@ def test_generate_storybook_scaffolds_host_package_and_starter_story(monkeypatch
|
|
|
112
113
|
"npm",
|
|
113
114
|
"i",
|
|
114
115
|
"-D",
|
|
115
|
-
"@nx/storybook",
|
|
116
|
-
"@storybook/
|
|
117
|
-
"@storybook/react",
|
|
118
|
-
"@
|
|
119
|
-
"@types/react",
|
|
120
|
-
"@
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
"vitest",
|
|
116
|
+
"@nx/storybook@latest",
|
|
117
|
+
"@storybook/react-vite@^10.3.6",
|
|
118
|
+
"@storybook/react@^10.3.6",
|
|
119
|
+
"@types/react-dom@latest",
|
|
120
|
+
"@types/react@latest",
|
|
121
|
+
"@vitejs/plugin-react@latest",
|
|
122
|
+
"storybook@^10.3.6",
|
|
123
|
+
"typescript@latest",
|
|
124
|
+
"vite@latest",
|
|
125
|
+
"vitest@latest",
|
|
126
126
|
],
|
|
127
127
|
"cwd": Path.cwd(),
|
|
128
128
|
"supports_dry_run": False,
|
|
@@ -18,7 +18,9 @@ def test_refresh_manifest_preserves_latest_dependency_policy(
|
|
|
18
18
|
manifest_path.write_text(original)
|
|
19
19
|
fetch_calls: list[tuple[str, str]] = []
|
|
20
20
|
|
|
21
|
-
def fake_fetch_latest_version(
|
|
21
|
+
def fake_fetch_latest_version(
|
|
22
|
+
registry: str, package: str, *, timeout: float = 10.0
|
|
23
|
+
) -> str:
|
|
22
24
|
fetch_calls.append((registry, package))
|
|
23
25
|
return "9.9.9"
|
|
24
26
|
|
|
@@ -35,12 +37,16 @@ def test_refresh_manifest_preserves_latest_dependency_policy(
|
|
|
35
37
|
assert fetch_calls == []
|
|
36
38
|
|
|
37
39
|
|
|
38
|
-
def test_refresh_manifest_dry_run_does_not_write_file(
|
|
40
|
+
def test_refresh_manifest_dry_run_does_not_write_file(
|
|
41
|
+
monkeypatch, tmp_path: Path
|
|
42
|
+
) -> None:
|
|
39
43
|
manifest_path = tmp_path / "dependency_manifest_data.py"
|
|
40
44
|
original = render_dependency_manifest_module(get_dependency_manifest())
|
|
41
45
|
manifest_path.write_text(original)
|
|
42
46
|
|
|
43
|
-
def fake_fetch_latest_version(
|
|
47
|
+
def fake_fetch_latest_version(
|
|
48
|
+
registry: str, package: str, *, timeout: float = 10.0
|
|
49
|
+
) -> str:
|
|
44
50
|
return "9.9.9"
|
|
45
51
|
|
|
46
52
|
monkeypatch.setattr("rpr.commands.refresh.MANIFEST_DATA_PATH", manifest_path)
|
|
@@ -51,4 +57,4 @@ def test_refresh_manifest_dry_run_does_not_write_file(monkeypatch, tmp_path: Pat
|
|
|
51
57
|
result = runner.invoke(app, ["refresh", "manifest", "--dry-run"])
|
|
52
58
|
|
|
53
59
|
assert result.exit_code == 0, result.stdout
|
|
54
|
-
assert manifest_path.read_text() == original
|
|
60
|
+
assert manifest_path.read_text() == original
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.22"
|
|
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
|
{rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/instructions/rust-engine.instructions.md
RENAMED
|
File without changes
|
{rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/instructions/setup-guide.instructions.md
RENAMED
|
File without changes
|
{rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/instructions/tooling-setup.instructions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rpr_cli-0.1.22 → rpr_cli-0.1.24}/Sample-dot-github/scaffolds/frontend/useStateNavigation.ts
RENAMED
|
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
|