rpr-cli 0.1.5__tar.gz → 0.1.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/PKG-INFO +3 -2
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/README.md +2 -1
- rpr_cli-0.1.6/src/rpr/__init__.py +1 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/init.py +25 -4
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_init.py +77 -0
- rpr_cli-0.1.5/src/rpr/__init__.py +0 -1
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/.github/agents/story.agent.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/.github/workflows/publish-pypi.yml +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/.gitignore +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/CLAUDE.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/GEMINI.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/LICENSE +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/all.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/api.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/domain.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/frontend.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/rust-engine.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/setup-guide.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/tooling-setup.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/instructions/tooling.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/README.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/api/main.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/domain/base-repo.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/domain/base_entity.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/frontend/api.service.ts +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/Sample-dot-github/scaffolds/frontend/useStateNavigation.ts +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/changelogs/mui_v9.txt +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/code-map.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/nx_uv_setup.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/patch_output.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/pyproject.toml +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/Cargo.lock +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/Cargo.toml +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/pyproject.toml +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/rpr_parser.pyi +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/config/container.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/config/mod.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/config/settings.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/graph.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/lib.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/models/dtos/mod.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/models/entities/mod.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/models/entities/users.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/models/mod.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/parse.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/repos/base.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/repos/mod.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/repos/users.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/resolve.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/src/walker.rs +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/rpr-parser/uv.lock +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/special_files.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/__init__.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/approval.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/bootstrap.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/client.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/control.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/mock.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/runtime.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/session.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/tools/__init__.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/tools/base.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/tools/mutating.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/tools/readonly.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/agent/tools/registry.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/__init__.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/catalog.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/chat_service.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/checks.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/cli_adapter.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/completer.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/conversation_service.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/prompt_service.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/selector.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/application/shell.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/checks/__init__.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/checks/base.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/checks/instructions.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/checks/packages.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/checks/workspace.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/cli.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/__init__.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/add.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/chat.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/check.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/__init__.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/api.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/domain.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/engine.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/storybook.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/generate/ui.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/map.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/refresh.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/settings.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/commands/sync.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/context.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/dependencies.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/dependency_manifest_data.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/__init__.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/base.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/claude.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/copilot.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/cursor.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/generators/gemini.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/manifest_refresh.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/__init__.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/architecture.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/chains.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/classifier.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/coverage.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/dependencies.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/extractor.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/graph.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/output.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/responsibility.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/topology.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/map/walker.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/domain/base_entity.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/domain/base_repo.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/domain/container.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/domain/settings.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/all.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/api.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/domain.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/frontend.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/rust-engine.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/setup-guide.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/tooling-setup.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/instructions/tooling.instructions.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/js_special_files/fetch.service.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/js_special_files/sticky-navigation.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/domain_container.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/domain_settings.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/dto_util.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/encrypted_column.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/mapper_util.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/special_files/partial_update.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/templates/__init__.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/templates/registry.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/__init__.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/console.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/markdown.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/prompt_session.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/renderers.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/ui/theme.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/workspace.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/README.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/00-bootstrap-cli.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/01-rpr-init.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/02-rpr-generate-domain.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/03-rpr-generate-api.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/04-rpr-generate-ui.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/05-rpr-generate-engine.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/06-rpr-generate-storybook.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/07-rpr-sync-rules.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/08-rpr-add-template.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/09-rpr-check.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/10-rpr-domain-config.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/18-rpr-terminal-ui-foundation.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/19-rpr-markdown-rendering.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/20-rpr-chat-repl.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/21-rpr-agent-tool-loop.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/22-rpr-chat-tui.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/23-rpr-chat-unified-command-shell.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/24-rpr-async-chat-runtime-and-services.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/25-rpr-prompt-service-and-conversation-lifecycle.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/26-rpr-shared-command-catalog.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/27-rpr-slash-command-selection-panel.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/28-rpr-chat-cancellable-and-multiline-input.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/29-rpr-file-context-selection.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/11-rpr-map-command.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/12-rpr-map-file-walker.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/13-rpr-map-rust-engine.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/13a-rpr-map-gitignore.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/14-rpr-map-graph-builder.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/15-rpr-map-analysis-bridge.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/16-rpr-map-layer-classifier.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17-rpr-map-output.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17a-rpr-map-directory-topology.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17b-rpr-map-architecture-assessment.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17c-rpr-map-representative-chains.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17d-rpr-map-multi-resolution-output.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/map/30-rpr-map-directory-view-and-cycle-detection.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/map/31-rpr-map-coupling-hotspots-and-verdict-reasoning.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/map/32-rpr-map-dependencies-responsibilities-and-test-coverage.md +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/__init__.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_add.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_architecture.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_architecture_unwrapped.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_catalog.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_chat.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_chat_service.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_check.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_completer.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_context.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_generate_api.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_generate_domain.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_generate_engine.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_generate_storybook.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_generate_ui.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_chains.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_classifier.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_coverage.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_dependencies.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_extractor.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_graph.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_output.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_responsibility.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_topology.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_map_walker.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_packaging.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_prompt_session.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_refresh.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_rpr_parser_stub.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_selector.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_settings.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_sync.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/tests/test_ui.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/update_output.py +0 -0
- {rpr_cli-0.1.5 → rpr_cli-0.1.6}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rpr-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.6
|
|
4
4
|
Summary: RPR CLI -- React Python Rust monorepo scaffolding orchestrator
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -69,12 +69,13 @@ rpr generate storybook # Add Storybook for UI component development
|
|
|
69
69
|
|
|
70
70
|
`rpr init <project-name>` creates the project directory when it does not exist. If the directory already exists and is not an NX workspace, RPR initializes Git and runs `nx init` inside that directory.
|
|
71
71
|
|
|
72
|
-
By default, `rpr init` scaffolds the root workspace and AI instructions only. To create project components during initialization, repeat `--scaffold
|
|
72
|
+
By default, `rpr init` scaffolds the root workspace and AI instructions only. To create project components during initialization, repeat `--scaffold` or pass a comma-separated list:
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
75
|
rpr init todo-list --scaffold domain
|
|
76
76
|
rpr init todo-list --scaffold api --domain-migrations
|
|
77
77
|
rpr init todo-list --scaffold api --scaffold web --domain-migrations
|
|
78
|
+
rpr init todo-list --scaffold instructions, domain, api, ui, web, storybook
|
|
78
79
|
```
|
|
79
80
|
|
|
80
81
|
Available scaffolds are:
|
|
@@ -54,12 +54,13 @@ rpr generate storybook # Add Storybook for UI component development
|
|
|
54
54
|
|
|
55
55
|
`rpr init <project-name>` creates the project directory when it does not exist. If the directory already exists and is not an NX workspace, RPR initializes Git and runs `nx init` inside that directory.
|
|
56
56
|
|
|
57
|
-
By default, `rpr init` scaffolds the root workspace and AI instructions only. To create project components during initialization, repeat `--scaffold
|
|
57
|
+
By default, `rpr init` scaffolds the root workspace and AI instructions only. To create project components during initialization, repeat `--scaffold` or pass a comma-separated list:
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
60
|
rpr init todo-list --scaffold domain
|
|
61
61
|
rpr init todo-list --scaffold api --domain-migrations
|
|
62
62
|
rpr init todo-list --scaffold api --scaffold web --domain-migrations
|
|
63
|
+
rpr init todo-list --scaffold instructions, domain, api, ui, web, storybook
|
|
63
64
|
```
|
|
64
65
|
|
|
65
66
|
Available scaffolds are:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.6"
|
|
@@ -106,6 +106,25 @@ def _normalize_scaffold_name(value: str) -> ScaffoldName:
|
|
|
106
106
|
return normalized # type: ignore[return-value]
|
|
107
107
|
|
|
108
108
|
|
|
109
|
+
def _parse_scaffold_values(
|
|
110
|
+
values: list[str] | None,
|
|
111
|
+
extra_args: list[str],
|
|
112
|
+
) -> list[ScaffoldName]:
|
|
113
|
+
raw_values = values or []
|
|
114
|
+
if extra_args and not raw_values:
|
|
115
|
+
raise typer.BadParameter(
|
|
116
|
+
"Unexpected extra arguments. Use --scaffold to select components."
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
scaffolds: list[ScaffoldName] = []
|
|
120
|
+
for raw_value in [*raw_values, *extra_args]:
|
|
121
|
+
for value in raw_value.split(","):
|
|
122
|
+
value = value.strip()
|
|
123
|
+
if value:
|
|
124
|
+
scaffolds.append(_normalize_scaffold_name(value))
|
|
125
|
+
return scaffolds
|
|
126
|
+
|
|
127
|
+
|
|
109
128
|
def _resolve_scaffolds(scaffolds: list[ScaffoldName] | None) -> list[ScaffoldName]:
|
|
110
129
|
requested = scaffolds or ["instructions"]
|
|
111
130
|
resolved: list[ScaffoldName] = []
|
|
@@ -675,8 +694,9 @@ API_BASE_URL=http://localhost:8000
|
|
|
675
694
|
# ---------------------------------------------------------------------------
|
|
676
695
|
|
|
677
696
|
|
|
678
|
-
@app.command()
|
|
697
|
+
@app.command(context_settings={"allow_extra_args": True})
|
|
679
698
|
def init(
|
|
699
|
+
ctx: typer.Context,
|
|
680
700
|
project_name: Annotated[
|
|
681
701
|
str | None, typer.Argument(help="Name of the project to create.")
|
|
682
702
|
] = None,
|
|
@@ -691,8 +711,9 @@ def init(
|
|
|
691
711
|
typer.Option(
|
|
692
712
|
"--scaffold",
|
|
693
713
|
help=(
|
|
694
|
-
"Repeat to scaffold additional
|
|
695
|
-
"api, ui, web, storybook,
|
|
714
|
+
"Repeat or pass a comma-separated list to scaffold additional "
|
|
715
|
+
"components: instructions, domain, api, ui, web, storybook, "
|
|
716
|
+
"engine. Defaults to instructions only."
|
|
696
717
|
),
|
|
697
718
|
),
|
|
698
719
|
] = None,
|
|
@@ -712,7 +733,7 @@ def init(
|
|
|
712
733
|
project_name = typer.prompt("Project name")
|
|
713
734
|
|
|
714
735
|
selected_scaffolds = _resolve_scaffolds(
|
|
715
|
-
|
|
736
|
+
_parse_scaffold_values(scaffold, list(ctx.args))
|
|
716
737
|
)
|
|
717
738
|
if domain_migrations and "domain" not in selected_scaffolds:
|
|
718
739
|
raise typer.BadParameter(
|
|
@@ -219,6 +219,83 @@ def test_init_scaffold_selection_runs_requested_generators_in_dependency_order(
|
|
|
219
219
|
]
|
|
220
220
|
|
|
221
221
|
|
|
222
|
+
def test_init_accepts_comma_separated_scaffold_values(monkeypatch):
|
|
223
|
+
scaffold_calls: list[str] = []
|
|
224
|
+
instructions_calls: list[dict[str, object]] = []
|
|
225
|
+
|
|
226
|
+
def fake_run_command(
|
|
227
|
+
self, cmd, *, cwd=None, env=None, capture=False, supports_dry_run=False
|
|
228
|
+
):
|
|
229
|
+
return _completed(cmd)
|
|
230
|
+
|
|
231
|
+
def fake_domain(*, name, dry_run, migrations=False):
|
|
232
|
+
scaffold_calls.append(f"domain:{name}:{dry_run}:{migrations}")
|
|
233
|
+
|
|
234
|
+
def fake_api(*, name, dry_run):
|
|
235
|
+
scaffold_calls.append(f"api:{name}:{dry_run}")
|
|
236
|
+
|
|
237
|
+
def fake_ui(*, name, dry_run, include_library=True, include_web=True):
|
|
238
|
+
scaffold_calls.append(
|
|
239
|
+
f"ui:{name}:{dry_run}:{include_library}:{include_web}"
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
def fake_storybook(*, ui_package=None, dry_run):
|
|
243
|
+
scaffold_calls.append(f"storybook:{ui_package}:{dry_run}")
|
|
244
|
+
|
|
245
|
+
monkeypatch.setattr("rpr.context.RunContext.run_command", fake_run_command)
|
|
246
|
+
monkeypatch.setattr(
|
|
247
|
+
"rpr.commands.init._scaffold_ai_instructions",
|
|
248
|
+
lambda *args, **kwargs: instructions_calls.append({"args": args, "kwargs": kwargs}),
|
|
249
|
+
)
|
|
250
|
+
monkeypatch.setattr("rpr.commands.generate.domain.domain", fake_domain)
|
|
251
|
+
monkeypatch.setattr("rpr.commands.generate.api.api", fake_api)
|
|
252
|
+
monkeypatch.setattr("rpr.commands.generate.ui.ui", fake_ui)
|
|
253
|
+
monkeypatch.setattr("rpr.commands.generate.storybook.storybook", fake_storybook)
|
|
254
|
+
|
|
255
|
+
commands = [
|
|
256
|
+
[
|
|
257
|
+
"init",
|
|
258
|
+
"comma-space",
|
|
259
|
+
"--scaffold",
|
|
260
|
+
"instructions,",
|
|
261
|
+
"domain,",
|
|
262
|
+
"api,",
|
|
263
|
+
"ui,",
|
|
264
|
+
"web,",
|
|
265
|
+
"storybook",
|
|
266
|
+
],
|
|
267
|
+
[
|
|
268
|
+
"init",
|
|
269
|
+
"comma-tight",
|
|
270
|
+
"--scaffold",
|
|
271
|
+
"instructions,domain,api,ui,web,storybook",
|
|
272
|
+
],
|
|
273
|
+
[
|
|
274
|
+
"init",
|
|
275
|
+
"comma-quoted",
|
|
276
|
+
"--scaffold",
|
|
277
|
+
"instructions, domain, api, ui, web, storybook",
|
|
278
|
+
],
|
|
279
|
+
]
|
|
280
|
+
|
|
281
|
+
with runner.isolated_filesystem():
|
|
282
|
+
for command in commands:
|
|
283
|
+
scaffold_calls.clear()
|
|
284
|
+
instructions_calls.clear()
|
|
285
|
+
|
|
286
|
+
result = runner.invoke(app, command)
|
|
287
|
+
|
|
288
|
+
project_name = command[1]
|
|
289
|
+
assert result.exit_code == 0, result.stdout
|
|
290
|
+
assert len(instructions_calls) == 1
|
|
291
|
+
assert scaffold_calls == [
|
|
292
|
+
f"domain:{project_name}:False:False",
|
|
293
|
+
f"api:{project_name}:False",
|
|
294
|
+
f"ui:{project_name}:False:True:True",
|
|
295
|
+
f"storybook:{project_name}-ui:False",
|
|
296
|
+
]
|
|
297
|
+
|
|
298
|
+
|
|
222
299
|
def test_init_forwards_domain_migrations(monkeypatch):
|
|
223
300
|
recorded_calls: list[dict[str, object]] = []
|
|
224
301
|
scaffold_calls: list[str] = []
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.5"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rpr_cli-0.1.5 → rpr_cli-0.1.6}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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
|
{rpr_cli-0.1.5 → rpr_cli-0.1.6}/src/rpr/scaffolds/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
|
|
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
|
{rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/24-rpr-async-chat-runtime-and-services.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/chat/27-rpr-slash-command-selection-panel.md
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
|
{rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17b-rpr-map-architecture-assessment.md
RENAMED
|
File without changes
|
|
File without changes
|
{rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/completed/map/17d-rpr-map-multi-resolution-output.md
RENAMED
|
File without changes
|
{rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/map/30-rpr-map-directory-view-and-cycle-detection.md
RENAMED
|
File without changes
|
{rpr_cli-0.1.5 → rpr_cli-0.1.6}/stories/map/31-rpr-map-coupling-hotspots-and-verdict-reasoning.md
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
|