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