raise-cli 2.4.1__tar.gz → 3.0.0a1__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.
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/.gitignore +13 -2
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/PKG-INFO +3 -1
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/pyproject.toml +4 -1
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/jira_adapter.py +0 -2
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/init.py +18 -222
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/journal.py +11 -32
- raise_cli-3.0.0a1/src/raise_cli/cli/commands/publish.py +80 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/release.py +27 -8
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/session.py +0 -6
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/main.py +5 -2
- raise_cli-3.0.0a1/src/raise_cli/hooks/builtin/memory.py +116 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/__init__.py +32 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/_telemetry.py +61 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/cli.py +352 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/dispatch.py +307 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/engine.py +372 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/executor.py +237 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/gates.py +178 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/loader.py +143 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/mcp_server.py +1132 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/pipelines_base/bugfix.yaml +48 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/pipelines_base/epic.yaml +42 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/pipelines_base/hotfix.yaml +29 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/pipelines_base/story.yaml +121 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/prompt.py +193 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/state.py +131 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/templates/adversarial-ar.md +35 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/templates/adversarial-qr.md +44 -0
- raise_cli-3.0.0a1/src/raise_cli/pipeline/worktree.py +118 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/publish/check.py +45 -46
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/identity/core.yaml +1 -1
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/__init__.py +15 -12
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-docs/SKILL.md +1 -1
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-session-diary/SKILL.md +5 -6
- raise_cli-2.4.1/src/raise_cli/hooks/builtin/memory.py +0 -38
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/README.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/__main__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/composite_docs.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/confluence_adapter.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/confluence_client.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/confluence_config.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/confluence_config_gen.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/confluence_discovery.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/confluence_exceptions.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/declarative/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/declarative/adapter.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/declarative/discovery.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/declarative/expressions.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/declarative/reference/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/declarative/reference/github.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/declarative/schema.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/filesystem.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/filesystem_adapter.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/filesystem_docs.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/filesystem_models.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/jira_client.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/jira_config.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/jira_config_gen.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/jira_discovery.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/jira_exceptions.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/mcp_bridge.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/models/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/models/docs.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/models/governance.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/models/health.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/models/pm.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/protocols.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/registry.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/adapters/sync.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/agents/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/agents/antigravity.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/agents/claude.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/agents/copilot.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/agents/copilot_plugin.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/agents/cursor.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/agents/roo.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/agents/windsurf.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/artifacts/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/artifacts/models.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/artifacts/reader.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/artifacts/renderer.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/artifacts/story_design.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/artifacts/writer.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/backlog/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/backlog/sync.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/_resolve.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/adapters.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/artifact.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/backlog.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/base.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/discover.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/docs.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/doctor.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/gate.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/graph.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/info.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/learn.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/mcp.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/memory.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/pattern.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/profile.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/signal.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/skill.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/commands/skill_set.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/error_handler.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/cli/extensions.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/compat.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/compliance/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/compliance/controls.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/compliance/evidence.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/compliance/extractors/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/compliance/extractors/git.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/compliance/loader.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/compliance/models.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/config/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/config/agent_plugin.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/config/agent_registry.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/config/agents.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/config/ide.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/config/paths.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/config/settings.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/analyzers/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/analyzers/models.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/analyzers/protocol.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/analyzers/python.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/analyzers/signals.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/analyzers/typescript.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/builder.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/diff.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/extractors/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/extractors/relationships.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/extractors/skills.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/extractors/structure.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/loaders/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/loaders/architecture.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/loaders/artifacts.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/loaders/components.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/loaders/identity.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/context/loaders/memory.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/core/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/core/files.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/core/text.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/core/tools.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/discovery/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/discovery/analyzer.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/discovery/drift.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/discovery/scanner.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/checks/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/checks/adapters.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/checks/developer.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/checks/environment.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/checks/project.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/fix.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/models.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/protocol.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/registry.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/report.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/doctor/runner.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/engines/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/exceptions.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/builtin/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/builtin/_runner.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/builtin/coverage.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/builtin/format.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/builtin/lint.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/builtin/tests.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/builtin/types.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/hook.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/models.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/protocol.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/gates/registry.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/extractor.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/models.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/parsers/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/parsers/_convert.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/parsers/adr.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/parsers/backlog.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/parsers/constitution.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/parsers/epic.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/parsers/glossary.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/parsers/guardrails.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/parsers/prd.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/parsers/roadmap.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/governance/parsers/vision.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/graph/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/graph/backends/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/graph/backends/api.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/graph/backends/dual.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/graph/backends/pending.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/handlers/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/hooks/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/hooks/builtin/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/hooks/builtin/gate_bridge.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/hooks/builtin/telemetry.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/hooks/emitter.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/hooks/events.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/hooks/protocol.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/hooks/registry.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/mcp/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/mcp/bridge.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/mcp/models.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/mcp/registry.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/mcp/schema.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/memory/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/memory/learning.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/memory/loader.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/memory/migration.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/memory/models.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/memory/push.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/memory/writer.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/bootstrap.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/claudemd.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/conventions.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/detection.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/governance.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/instructions.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/manifest.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/memory_md.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/migration.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/profile.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/profile_portability.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/skill_conflict.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/skill_manifest.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/skills.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/onboarding/workflows.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/output/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/output/console.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/output/formatters/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/output/formatters/adapters.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/output/formatters/discover.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/output/formatters/graph.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/output/formatters/skill.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/output/symbols.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/publish/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/publish/changelog.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/publish/version.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/framework/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/framework/methodology.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/architecture/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/architecture/domain-model.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/architecture/domain-model.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/architecture/system-context.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/architecture/system-context.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/architecture/system-design.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/architecture/system-design.yaml +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/backlog.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/guardrails.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/prd.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/governance/vision.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/identity/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/identity/core.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/identity/perspective.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/memory/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/rai_base/memory/patterns-base.jsonl +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/schemas/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/schemas/journal.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/schemas/session_state.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/bundle.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/bundle_data.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/bundle_formatters.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/close.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/derive.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/doctor.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/identity.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/index.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/journal.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/monitor.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/prefix.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/protocols.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/registry.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/resolver.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/session/state.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills/locator.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills/name_checker.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills/parser.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills/scaffold.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills/schema.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills/skillsets.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills/validator.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/contract-template.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/preamble.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-adapter-setup/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-architecture-review/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-bugfix-analyse/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-bugfix-close/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-bugfix-fix/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-bugfix-plan/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-bugfix-review/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-bugfix-run/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-bugfix-start/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-bugfix-triage/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-debug/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-discover/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-docs-update/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-doctor/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-close/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-close/templates/retrospective.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-design/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-design/templates/design.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-design/templates/scope.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-plan/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-plan/_references/sequencing-strategies.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-plan/templates/plan-section.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-run/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-start/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-epic-start/templates/brief.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-mcp-add/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-mcp-remove/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-mcp-status/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-problem-shape/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-project-create/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-project-onboard/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-quality-review/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-research/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-research/references/research-prompt-template.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-session-close/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-session-start/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-story-close/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-story-design/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-story-design/references/tech-design-story-v2.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-story-implement/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-story-plan/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-story-review/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-story-run/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-story-start/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-story-start/templates/story.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/skills_base/rai-welcome/SKILL.md +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/telemetry/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/telemetry/schemas.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/telemetry/writer.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/tier/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/tier/context.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/viz/__init__.py +0 -0
- {raise_cli-2.4.1 → raise_cli-3.0.0a1}/src/raise_cli/viz/generator.py +0 -0
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# Claude Code local settings (user-specific)
|
|
8
8
|
.claude/settings.local.json
|
|
9
|
+
CLAUDE.local.md
|
|
9
10
|
.claude/worktrees/
|
|
10
11
|
.claude/projects/
|
|
11
12
|
|
|
@@ -14,10 +15,19 @@
|
|
|
14
15
|
.claude/RAI-naming.md
|
|
15
16
|
.claude/rai.archive/
|
|
16
17
|
|
|
18
|
+
# Daemon config (contains secrets — template committed as .example)
|
|
19
|
+
daemon-team.yaml
|
|
20
|
+
daemon.yaml
|
|
21
|
+
.env.fly
|
|
22
|
+
|
|
17
23
|
# RaiSE generated/cache files
|
|
18
24
|
.raise/cache/
|
|
19
25
|
.raise/confluence-pages.yaml
|
|
20
26
|
.raise/backlog/
|
|
27
|
+
.raise/artifacts/
|
|
28
|
+
|
|
29
|
+
# Pipeline state (environment-specific, PAT-E-594)
|
|
30
|
+
.rai-state/
|
|
21
31
|
|
|
22
32
|
# RaiSE adapter configs (declarative, PII-free — identity in env vars)
|
|
23
33
|
# .raise/jira.yaml and .raise/confluence.yaml are tracked (shared config)
|
|
@@ -27,8 +37,8 @@
|
|
|
27
37
|
# Dossier output (generated, not committed)
|
|
28
38
|
dev/output/
|
|
29
39
|
|
|
30
|
-
# RaiSE
|
|
31
|
-
|
|
40
|
+
# RaiSE graph index — tracked (essential for skill PRIME/JIT queries in worktrees)
|
|
41
|
+
# Rebuild with: rai graph build
|
|
32
42
|
|
|
33
43
|
# RaiSE personal directory (per-developer, not shared)
|
|
34
44
|
.raise/rai/personal/
|
|
@@ -119,6 +129,7 @@ credentials.json
|
|
|
119
129
|
|
|
120
130
|
# MkDocs build output
|
|
121
131
|
_site/
|
|
132
|
+
.docs-build/
|
|
122
133
|
|
|
123
134
|
# Issue analysis artifacts (PDFs, images — binary, no git value)
|
|
124
135
|
dev/issues/**/*.pdf
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: raise-cli
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.0a1
|
|
4
4
|
Summary: RaiSE CLI - Reliable AI Software Engineering governance framework
|
|
5
5
|
Project-URL: Homepage, https://raiseframework.ai
|
|
6
6
|
Project-URL: Documentation, https://docs.raiseframework.ai
|
|
@@ -46,6 +46,8 @@ Provides-Extra: mcp
|
|
|
46
46
|
Requires-Dist: mcp<2,>=1.26; extra == 'mcp'
|
|
47
47
|
Provides-Extra: observability
|
|
48
48
|
Requires-Dist: logfire>=4.0; extra == 'observability'
|
|
49
|
+
Requires-Dist: opentelemetry-api>=1.20; extra == 'observability'
|
|
50
|
+
Requires-Dist: opentelemetry-sdk>=1.20; extra == 'observability'
|
|
49
51
|
Description-Content-Type: text/markdown
|
|
50
52
|
|
|
51
53
|
# RaiSE CLI
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "raise-cli"
|
|
3
|
-
version = "
|
|
3
|
+
version = "3.0.0a1"
|
|
4
4
|
description = "RaiSE CLI - Reliable AI Software Engineering governance framework"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "Emilio Osorio", email = "emilio@humansys.ai"}
|
|
@@ -45,6 +45,8 @@ mcp = [
|
|
|
45
45
|
]
|
|
46
46
|
observability = [
|
|
47
47
|
"logfire>=4.0",
|
|
48
|
+
"opentelemetry-api>=1.20",
|
|
49
|
+
"opentelemetry-sdk>=1.20",
|
|
48
50
|
]
|
|
49
51
|
csharp = [
|
|
50
52
|
"tree-sitter-c-sharp>=0.23.1",
|
|
@@ -82,6 +84,7 @@ glossary = "raise_cli.governance.parsers.glossary:GlossaryParser"
|
|
|
82
84
|
[project.entry-points."rai.hooks"]
|
|
83
85
|
telemetry = "raise_cli.hooks.builtin.telemetry:TelemetryHook"
|
|
84
86
|
gate-bridge = "raise_cli.hooks.builtin.gate_bridge:GateBridgeHook"
|
|
87
|
+
memory-sync = "raise_cli.hooks.builtin.memory:MemoryMdSyncHook"
|
|
85
88
|
|
|
86
89
|
[project.entry-points."rai.gates"]
|
|
87
90
|
tests = "raise_cli.gates.builtin.tests:TestGate"
|
|
@@ -212,8 +212,6 @@ class PythonApiJiraAdapter:
|
|
|
212
212
|
fields["description"] = issue.description
|
|
213
213
|
if issue.labels:
|
|
214
214
|
fields["labels"] = issue.labels
|
|
215
|
-
if issue.metadata.get("parent"):
|
|
216
|
-
fields["parent"] = {"key": issue.metadata["parent"]}
|
|
217
215
|
|
|
218
216
|
result = client.create_issue(fields)
|
|
219
217
|
key = result.get("key", "")
|
|
@@ -514,50 +514,41 @@ def _create_and_save_manifest(
|
|
|
514
514
|
"""Create project manifest from detection results and save it.
|
|
515
515
|
|
|
516
516
|
When an existing manifest is present, preserve user-configured values
|
|
517
|
-
and only
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
toolchain commands (if user-configured), branches, tier, backlog.
|
|
521
|
-
Updated on re-init: project_type, code_file_count (always re-scanned).
|
|
517
|
+
(name, ide, agents) and only fill gaps with detected values (RAISE-1431).
|
|
518
|
+
Detection updates toolchain/language/code_file_count unconditionally
|
|
519
|
+
since those are always re-scanned.
|
|
522
520
|
"""
|
|
523
521
|
existing_manifest = load_manifest(project_path)
|
|
524
|
-
ep = existing_manifest.project if existing_manifest else None
|
|
525
522
|
|
|
526
523
|
# Preserve existing name if caller got it from directory (no --name flag)
|
|
527
524
|
effective_name = project_name
|
|
528
|
-
if
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
effective_language = ep.language if ep and ep.language else detection.language
|
|
533
|
-
|
|
534
|
-
# Preserve user-configured toolchain commands; fall back to detection
|
|
535
|
-
detected_test = detection.toolchain.test_command if detection.toolchain else None
|
|
536
|
-
detected_lint = detection.toolchain.lint_command if detection.toolchain else None
|
|
537
|
-
detected_type = detection.toolchain.type_check_command if detection.toolchain else None
|
|
538
|
-
detected_format = detection.toolchain.format_command if detection.toolchain else None
|
|
525
|
+
if existing_manifest and existing_manifest.project.name:
|
|
526
|
+
# Only override if --name was explicitly passed (not directory default)
|
|
527
|
+
if project_name == project_path.name:
|
|
528
|
+
effective_name = existing_manifest.project.name
|
|
539
529
|
|
|
540
530
|
project_info = ProjectInfo(
|
|
541
531
|
name=effective_name,
|
|
542
532
|
project_type=detection.project_type,
|
|
543
533
|
code_file_count=detection.code_file_count,
|
|
544
|
-
language=
|
|
545
|
-
test_command=
|
|
546
|
-
lint_command=
|
|
547
|
-
type_check_command=
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
**({"detected_at": ep.detected_at} if ep else {}),
|
|
534
|
+
language=detection.language,
|
|
535
|
+
test_command=detection.toolchain.test_command if detection.toolchain else None,
|
|
536
|
+
lint_command=detection.toolchain.lint_command if detection.toolchain else None,
|
|
537
|
+
type_check_command=(
|
|
538
|
+
detection.toolchain.type_check_command if detection.toolchain else None
|
|
539
|
+
),
|
|
551
540
|
)
|
|
552
541
|
|
|
553
542
|
# Preserve existing agents/ide if present, merge new detections (RAISE-1431)
|
|
554
543
|
if existing_manifest:
|
|
555
544
|
existing_agents = existing_manifest.agents.types if existing_manifest.agents else []
|
|
545
|
+
# Merge: keep existing + add newly detected (no duplicates)
|
|
556
546
|
merged_agents = list(dict.fromkeys(existing_agents + valid_agent_types))
|
|
557
547
|
effective_agents = merged_agents
|
|
558
548
|
effective_ide = existing_manifest.ide
|
|
559
549
|
else:
|
|
560
550
|
effective_agents = valid_agent_types
|
|
551
|
+
# Sync ide.type with agents.types[0] (RAISE-218)
|
|
561
552
|
primary = valid_agent_types[0] if valid_agent_types else "claude"
|
|
562
553
|
try:
|
|
563
554
|
effective_ide = IdeManifest(type=primary) # type: ignore[arg-type]
|
|
@@ -570,8 +561,6 @@ def _create_and_save_manifest(
|
|
|
570
561
|
ide=effective_ide,
|
|
571
562
|
branches=existing_manifest.branches if existing_manifest else BranchConfig(),
|
|
572
563
|
tier=existing_manifest.tier if existing_manifest else None,
|
|
573
|
-
# Preserve backlog config on re-init (RAISE-1320)
|
|
574
|
-
backlog=existing_manifest.backlog if existing_manifest else None,
|
|
575
564
|
)
|
|
576
565
|
save_manifest(manifest, project_path)
|
|
577
566
|
return manifest
|
|
@@ -713,14 +702,6 @@ def _detect_and_generate_guardrails(
|
|
|
713
702
|
guardrails_dir = project_path / "governance"
|
|
714
703
|
guardrails_dir.mkdir(parents=True, exist_ok=True)
|
|
715
704
|
guardrails_path = guardrails_dir / "guardrails.md"
|
|
716
|
-
|
|
717
|
-
# Never overwrite user-customized guardrails on re-init (RAISE-1320/Gustavo).
|
|
718
|
-
# Allow overwrite of empty scaffold templates (contain "fill with" marker).
|
|
719
|
-
if guardrails_path.exists():
|
|
720
|
-
existing = guardrails_path.read_text(encoding="utf-8")
|
|
721
|
-
if "fill with /rai-project-create" not in existing:
|
|
722
|
-
return
|
|
723
|
-
|
|
724
705
|
guardrails_path.write_text(guardrails_content, encoding="utf-8")
|
|
725
706
|
|
|
726
707
|
instructions_path = project_path / instructions_file
|
|
@@ -842,32 +823,19 @@ def init_command(
|
|
|
842
823
|
) -> None:
|
|
843
824
|
"""Initialize a RaiSE project in the current directory.
|
|
844
825
|
|
|
845
|
-
|
|
846
|
-
|
|
826
|
+
Detects project type (greenfield/brownfield), creates .raise/manifest.yaml,
|
|
827
|
+
and scaffolds skills/workflows for each target agent.
|
|
847
828
|
|
|
848
829
|
Examples:
|
|
849
830
|
$ rai init # defaults to claude
|
|
850
831
|
$ rai init --agent cursor # single agent
|
|
851
832
|
$ rai init --agent claude --agent cursor # multi-agent
|
|
852
833
|
$ rai init --detect # auto-detect agents
|
|
853
|
-
$ rai init --
|
|
834
|
+
$ rai init --ide antigravity # (deprecated) alias
|
|
854
835
|
"""
|
|
855
836
|
project_path = (path if path is not None else Path.cwd()).resolve()
|
|
856
837
|
project_name = name if name is not None else project_path.name
|
|
857
838
|
|
|
858
|
-
# Guard: already initialized? Suggest rai upgrade (RAISE-1462)
|
|
859
|
-
raise_dir = project_path / ".raise"
|
|
860
|
-
if raise_dir.is_dir() and not force:
|
|
861
|
-
console.print(
|
|
862
|
-
"[yellow]Project already initialized[/yellow] "
|
|
863
|
-
f"(.raise/ exists at {project_path}).\n\n"
|
|
864
|
-
"To update skills and framework files, run:\n"
|
|
865
|
-
" [bold]rai upgrade[/bold]\n\n"
|
|
866
|
-
"To re-initialize from scratch, run:\n"
|
|
867
|
-
" [bold]rai init --force[/bold]"
|
|
868
|
-
)
|
|
869
|
-
raise typer.Exit(code=1)
|
|
870
|
-
|
|
871
839
|
# Load or create developer profile
|
|
872
840
|
profile, created_profile = _load_or_create_profile(project_path)
|
|
873
841
|
|
|
@@ -956,175 +924,3 @@ def init_command(
|
|
|
956
924
|
_detect_and_generate_guardrails(
|
|
957
925
|
project_path, project_name, profile, first_config.instructions_file
|
|
958
926
|
)
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
# =============================================================================
|
|
962
|
-
# rai upgrade — re-init with merge strategy (RAISE-1462)
|
|
963
|
-
# =============================================================================
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
def upgrade_command(
|
|
967
|
-
path: Annotated[
|
|
968
|
-
Path | None,
|
|
969
|
-
typer.Option(
|
|
970
|
-
"--path",
|
|
971
|
-
"-p",
|
|
972
|
-
help="Project root directory (defaults to current directory).",
|
|
973
|
-
),
|
|
974
|
-
] = None,
|
|
975
|
-
detect: Annotated[
|
|
976
|
-
bool,
|
|
977
|
-
typer.Option(
|
|
978
|
-
"--detect",
|
|
979
|
-
"-d",
|
|
980
|
-
help="Re-detect installed agents and update AGENTS.md.",
|
|
981
|
-
),
|
|
982
|
-
] = False,
|
|
983
|
-
dry_run: Annotated[
|
|
984
|
-
bool,
|
|
985
|
-
typer.Option(
|
|
986
|
-
"--dry-run",
|
|
987
|
-
help="Preview skill updates without writing files.",
|
|
988
|
-
),
|
|
989
|
-
] = False,
|
|
990
|
-
force: Annotated[
|
|
991
|
-
bool,
|
|
992
|
-
typer.Option(
|
|
993
|
-
"--force",
|
|
994
|
-
help="Overwrite all skill files without prompting.",
|
|
995
|
-
),
|
|
996
|
-
] = False,
|
|
997
|
-
skip_updates: Annotated[
|
|
998
|
-
bool,
|
|
999
|
-
typer.Option(
|
|
1000
|
-
"--skip-updates",
|
|
1001
|
-
help="Keep all existing skills, only install new ones.",
|
|
1002
|
-
),
|
|
1003
|
-
] = False,
|
|
1004
|
-
skill_set: Annotated[
|
|
1005
|
-
str | None,
|
|
1006
|
-
typer.Option(
|
|
1007
|
-
"--skill-set",
|
|
1008
|
-
help="Overlay a skill set from .raise/skills/{name}/ on top of builtins.",
|
|
1009
|
-
),
|
|
1010
|
-
] = None,
|
|
1011
|
-
) -> None:
|
|
1012
|
-
"""Update an existing RaiSE project to the latest version.
|
|
1013
|
-
|
|
1014
|
-
Updates skills, framework files, and regenerates CLAUDE.md while preserving
|
|
1015
|
-
user-configured values (manifest fields, governance docs, custom skills).
|
|
1016
|
-
|
|
1017
|
-
Use ``rai init`` for first-time project setup.
|
|
1018
|
-
|
|
1019
|
-
Examples:
|
|
1020
|
-
$ rai upgrade # update skills + framework
|
|
1021
|
-
$ rai upgrade --detect # also re-detect agents
|
|
1022
|
-
$ rai upgrade --dry-run # preview changes
|
|
1023
|
-
$ rai upgrade --skip-updates # only install new skills
|
|
1024
|
-
"""
|
|
1025
|
-
project_path = (path if path is not None else Path.cwd()).resolve()
|
|
1026
|
-
|
|
1027
|
-
# Guard: must be initialized
|
|
1028
|
-
raise_dir = project_path / ".raise"
|
|
1029
|
-
if not raise_dir.is_dir():
|
|
1030
|
-
console.print(
|
|
1031
|
-
"[red]Project not initialized[/red] "
|
|
1032
|
-
f"(no .raise/ at {project_path}).\n\n"
|
|
1033
|
-
"Run [bold]rai init[/bold] first to set up the project."
|
|
1034
|
-
)
|
|
1035
|
-
raise typer.Exit(code=1)
|
|
1036
|
-
|
|
1037
|
-
# Load existing manifest for project name
|
|
1038
|
-
existing_manifest = load_manifest(project_path)
|
|
1039
|
-
project_name = (
|
|
1040
|
-
existing_manifest.project.name if existing_manifest else project_path.name
|
|
1041
|
-
)
|
|
1042
|
-
|
|
1043
|
-
# Load developer profile (never create on upgrade)
|
|
1044
|
-
_profile, _created = _load_or_create_profile(project_path)
|
|
1045
|
-
|
|
1046
|
-
# Detect project type
|
|
1047
|
-
detection = detect_project_type(project_path)
|
|
1048
|
-
|
|
1049
|
-
# Load agent registry and resolve agent types
|
|
1050
|
-
registry = load_registry(project_root=project_path)
|
|
1051
|
-
if detect:
|
|
1052
|
-
agent_types = _resolve_agent_types(None, None, True, project_path, registry)
|
|
1053
|
-
elif existing_manifest:
|
|
1054
|
-
agent_types = existing_manifest.agents.types if existing_manifest.agents else ["claude"]
|
|
1055
|
-
else:
|
|
1056
|
-
agent_types = ["claude"]
|
|
1057
|
-
|
|
1058
|
-
valid_agent_types = _validate_agent_types(agent_types, registry)
|
|
1059
|
-
|
|
1060
|
-
# Update manifest with merge strategy (preserves user config)
|
|
1061
|
-
manifest = _create_and_save_manifest(
|
|
1062
|
-
project_path, project_name, detection, valid_agent_types
|
|
1063
|
-
)
|
|
1064
|
-
|
|
1065
|
-
# Bootstrap (idempotent — skips existing files)
|
|
1066
|
-
_bootstrap_result, _governance_result, memory_content = _bootstrap_project_assets(
|
|
1067
|
-
project_path, project_name, manifest
|
|
1068
|
-
)
|
|
1069
|
-
|
|
1070
|
-
# Update skills (diff/merge UX)
|
|
1071
|
-
first_config = registry.get_config(valid_agent_types[0])
|
|
1072
|
-
first_skills_result = _scaffold_per_agent(
|
|
1073
|
-
project_path,
|
|
1074
|
-
valid_agent_types,
|
|
1075
|
-
registry,
|
|
1076
|
-
memory_content,
|
|
1077
|
-
force=force,
|
|
1078
|
-
skip_updates=skip_updates,
|
|
1079
|
-
dry_run=dry_run,
|
|
1080
|
-
skill_set=skill_set,
|
|
1081
|
-
)
|
|
1082
|
-
|
|
1083
|
-
# Dry-run: show summary and exit
|
|
1084
|
-
if dry_run and first_skills_result is not None:
|
|
1085
|
-
_print_skill_sync_summary(first_skills_result)
|
|
1086
|
-
has_updates = bool(
|
|
1087
|
-
first_skills_result.skills_updated
|
|
1088
|
-
or first_skills_result.skills_installed
|
|
1089
|
-
or first_skills_result.skills_conflicted
|
|
1090
|
-
)
|
|
1091
|
-
raise typer.Exit(code=0 if not has_updates else 1)
|
|
1092
|
-
|
|
1093
|
-
# Regenerate CLAUDE.md (it's generated, safe to overwrite)
|
|
1094
|
-
if raise_dir.is_dir():
|
|
1095
|
-
instructions_content = generate_instructions(
|
|
1096
|
-
project_name=project_name,
|
|
1097
|
-
detection=detection,
|
|
1098
|
-
project_path=project_path,
|
|
1099
|
-
)
|
|
1100
|
-
instructions_path = project_path / first_config.instructions_file
|
|
1101
|
-
instructions_path.parent.mkdir(parents=True, exist_ok=True)
|
|
1102
|
-
instructions_path.write_text(instructions_content, encoding="utf-8")
|
|
1103
|
-
|
|
1104
|
-
# Emit event
|
|
1105
|
-
emitter = create_emitter()
|
|
1106
|
-
emitter.emit(
|
|
1107
|
-
InitCompleteEvent(
|
|
1108
|
-
project_path=project_path,
|
|
1109
|
-
project_name=project_name,
|
|
1110
|
-
)
|
|
1111
|
-
)
|
|
1112
|
-
|
|
1113
|
-
# AGENTS.md on --detect
|
|
1114
|
-
if detect:
|
|
1115
|
-
_generate_agents_md(project_path, valid_agent_types, project_name)
|
|
1116
|
-
|
|
1117
|
-
# Output
|
|
1118
|
-
console.print(
|
|
1119
|
-
f"\n[bold green]Upgrade complete[/bold green] — {project_name}\n"
|
|
1120
|
-
)
|
|
1121
|
-
if first_skills_result:
|
|
1122
|
-
installed = len(first_skills_result.skills_installed)
|
|
1123
|
-
updated = len(first_skills_result.skills_updated)
|
|
1124
|
-
kept = len(first_skills_result.skills_kept)
|
|
1125
|
-
if installed or updated:
|
|
1126
|
-
console.print(
|
|
1127
|
-
f" Skills: {installed} new, {updated} updated, {kept} unchanged"
|
|
1128
|
-
)
|
|
1129
|
-
else:
|
|
1130
|
-
console.print(" Skills: all up to date")
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
"""CLI commands for session journal —
|
|
1
|
+
"""CLI commands for session journal — incremental memory persistence.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
which is broken (CC bugs #12671, #15174). Commands remain functional for
|
|
6
|
-
backward compatibility but will be removed in v3.1.
|
|
3
|
+
Provides `rai session journal add` and `rai session journal show` for
|
|
4
|
+
persisting and retrieving session context across compaction events.
|
|
7
5
|
|
|
8
|
-
|
|
6
|
+
Example:
|
|
7
|
+
$ rai session journal add "Use JSONL for persistence" --type decision
|
|
8
|
+
$ rai session journal show --last 5
|
|
9
|
+
$ rai session journal show --compact
|
|
9
10
|
"""
|
|
10
11
|
|
|
11
12
|
from __future__ import annotations
|
|
@@ -96,26 +97,11 @@ def add(
|
|
|
96
97
|
) -> None:
|
|
97
98
|
"""Add a journal entry to the current session.
|
|
98
99
|
|
|
99
|
-
.. deprecated:: 3.0.0a1
|
|
100
|
-
Journal is deprecated (RAISE-1433). Use /rai-session-close for continuity.
|
|
101
|
-
|
|
102
100
|
Examples:
|
|
103
101
|
$ rai session journal add "Use JSONL for journal" --type decision
|
|
104
102
|
$ rai session journal add "T1 complete" --type task_done
|
|
103
|
+
$ rai session journal add "Compaction loses rationale" --type insight --tags "compaction,memory"
|
|
105
104
|
"""
|
|
106
|
-
import warnings
|
|
107
|
-
|
|
108
|
-
warnings.warn(
|
|
109
|
-
"rai session journal is deprecated (RAISE-1433). "
|
|
110
|
-
"Use /rai-session-close skill for session continuity.",
|
|
111
|
-
DeprecationWarning,
|
|
112
|
-
stacklevel=1,
|
|
113
|
-
)
|
|
114
|
-
typer.echo(
|
|
115
|
-
"Warning: journal is deprecated (RAISE-1433). "
|
|
116
|
-
"Use /rai-session-close for session continuity.",
|
|
117
|
-
err=True,
|
|
118
|
-
)
|
|
119
105
|
session_dir = _resolve_session_dir(project)
|
|
120
106
|
tag_list = [t.strip() for t in tags.split(",") if t.strip()] if tags else []
|
|
121
107
|
|
|
@@ -157,21 +143,14 @@ def show(
|
|
|
157
143
|
) -> None:
|
|
158
144
|
"""Show journal entries for the current session.
|
|
159
145
|
|
|
160
|
-
|
|
161
|
-
|
|
146
|
+
With --compact, outputs a token-efficient format suitable for
|
|
147
|
+
post-compaction context injection via hooks.
|
|
162
148
|
|
|
163
149
|
Examples:
|
|
164
150
|
$ rai session journal show
|
|
151
|
+
$ rai session journal show --last 5
|
|
165
152
|
$ rai session journal show --compact
|
|
166
153
|
"""
|
|
167
|
-
import warnings
|
|
168
|
-
|
|
169
|
-
warnings.warn(
|
|
170
|
-
"rai session journal is deprecated (RAISE-1433). "
|
|
171
|
-
"Use /rai-session-close skill for session continuity.",
|
|
172
|
-
DeprecationWarning,
|
|
173
|
-
stacklevel=1,
|
|
174
|
-
)
|
|
175
154
|
session_dir = _resolve_session_dir(project)
|
|
176
155
|
entries = read_journal(session_dir, last_n=last)
|
|
177
156
|
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""Backward-compatible aliases for commands moved to the release group.
|
|
2
|
+
|
|
3
|
+
All active commands have been moved to the `release` group (CLI restructuring):
|
|
4
|
+
- publish check → release check
|
|
5
|
+
- publish release → release publish
|
|
6
|
+
|
|
7
|
+
These aliases print deprecation warnings and delegate to the canonical commands.
|
|
8
|
+
They will be removed in a future release (v3.0).
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
from typing import Annotated
|
|
15
|
+
|
|
16
|
+
import typer
|
|
17
|
+
from rich.console import Console
|
|
18
|
+
|
|
19
|
+
from raise_cli.publish.version import BumpType
|
|
20
|
+
|
|
21
|
+
publish_app = typer.Typer(help="Publish and release management commands")
|
|
22
|
+
|
|
23
|
+
_stderr_console = Console(stderr=True)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _deprecation_warning(old_cmd: str, new_cmd: str) -> None:
|
|
27
|
+
"""Print deprecation warning to stderr."""
|
|
28
|
+
_stderr_console.print(
|
|
29
|
+
f"[yellow]DEPRECATED:[/yellow] 'rai {old_cmd}' → use 'rai {new_cmd}' instead",
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@publish_app.command("check")
|
|
34
|
+
def check_shim(
|
|
35
|
+
project: Annotated[
|
|
36
|
+
Path,
|
|
37
|
+
typer.Option("--project", "-p", help="Project root path"),
|
|
38
|
+
] = Path("."),
|
|
39
|
+
) -> None:
|
|
40
|
+
"""Deprecated: use 'rai release check'."""
|
|
41
|
+
_deprecation_warning("publish check", "release check")
|
|
42
|
+
from raise_cli.cli.commands.release import check_command
|
|
43
|
+
|
|
44
|
+
check_command(project=project)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@publish_app.command("release")
|
|
48
|
+
def release_shim(
|
|
49
|
+
bump: Annotated[
|
|
50
|
+
BumpType | None,
|
|
51
|
+
typer.Option("--bump", "-b", help="Version bump type"),
|
|
52
|
+
] = None,
|
|
53
|
+
version: Annotated[
|
|
54
|
+
str | None,
|
|
55
|
+
typer.Option("--version", "-v", help="Explicit version (overrides --bump)"),
|
|
56
|
+
] = None,
|
|
57
|
+
dry_run: Annotated[
|
|
58
|
+
bool,
|
|
59
|
+
typer.Option("--dry-run", help="Show what would happen without executing"),
|
|
60
|
+
] = False,
|
|
61
|
+
skip_check: Annotated[
|
|
62
|
+
bool,
|
|
63
|
+
typer.Option("--skip-check", help="Skip quality gates (dangerous)"),
|
|
64
|
+
] = False,
|
|
65
|
+
project: Annotated[
|
|
66
|
+
Path,
|
|
67
|
+
typer.Option("--project", "-p", help="Project root path"),
|
|
68
|
+
] = Path("."),
|
|
69
|
+
) -> None:
|
|
70
|
+
"""Deprecated: use 'rai release publish'."""
|
|
71
|
+
_deprecation_warning("publish release", "release publish")
|
|
72
|
+
from raise_cli.cli.commands.release import publish_command
|
|
73
|
+
|
|
74
|
+
publish_command(
|
|
75
|
+
bump=bump,
|
|
76
|
+
version=version,
|
|
77
|
+
dry_run=dry_run,
|
|
78
|
+
skip_check=skip_check,
|
|
79
|
+
project=project,
|
|
80
|
+
)
|
|
@@ -42,11 +42,26 @@ GRAPH_REL_PATH = Path(".raise") / "rai" / "memory" / "index.json"
|
|
|
42
42
|
# =============================================================================
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
def _find_project_paths(project: Path) -> tuple[Path, Path]:
|
|
46
|
-
"""Find pyproject.toml and CHANGELOG.md paths.
|
|
45
|
+
def _find_project_paths(project: Path) -> tuple[Path, Path, Path]:
|
|
46
|
+
"""Find pyproject.toml, __init__.py, and CHANGELOG.md paths.
|
|
47
|
+
|
|
48
|
+
If project is a workspace root (has [tool.uv.workspace] in pyproject.toml),
|
|
49
|
+
auto-detect the publishable package at packages/raise-cli/.
|
|
50
|
+
"""
|
|
47
51
|
pyproject_path = project / "pyproject.toml"
|
|
52
|
+
|
|
53
|
+
# Auto-detect monorepo: if pyproject.toml has workspace config, look for raise-cli
|
|
54
|
+
if pyproject_path.exists():
|
|
55
|
+
content = pyproject_path.read_text(encoding="utf-8")
|
|
56
|
+
if "[tool.uv.workspace]" in content:
|
|
57
|
+
cli_pkg = project / "packages" / "raise-cli"
|
|
58
|
+
if cli_pkg.exists():
|
|
59
|
+
project = cli_pkg
|
|
60
|
+
pyproject_path = project / "pyproject.toml"
|
|
61
|
+
|
|
48
62
|
changelog_path = project / "CHANGELOG.md"
|
|
49
|
-
|
|
63
|
+
init_path = project / "src" / "raise_cli" / "__init__.py"
|
|
64
|
+
return pyproject_path, init_path, changelog_path
|
|
50
65
|
|
|
51
66
|
|
|
52
67
|
def _read_current_version(pyproject_path: Path) -> str:
|
|
@@ -179,11 +194,14 @@ def check_command(
|
|
|
179
194
|
$ rai release check
|
|
180
195
|
$ rai release check --project /path/to/project
|
|
181
196
|
"""
|
|
182
|
-
pyproject_path, changelog_path = _find_project_paths(project)
|
|
197
|
+
pyproject_path, init_path, changelog_path = _find_project_paths(project)
|
|
198
|
+
# Use the resolved project root (may differ from input in monorepos)
|
|
199
|
+
resolved_root = pyproject_path.parent
|
|
183
200
|
|
|
184
201
|
results = run_checks(
|
|
185
|
-
project_root=
|
|
202
|
+
project_root=resolved_root,
|
|
186
203
|
pyproject_path=pyproject_path,
|
|
204
|
+
init_path=init_path,
|
|
187
205
|
changelog_path=changelog_path,
|
|
188
206
|
)
|
|
189
207
|
|
|
@@ -317,13 +335,14 @@ def publish_command(
|
|
|
317
335
|
console.print("[red]Either --bump or --version is required[/red]")
|
|
318
336
|
raise typer.Exit(1)
|
|
319
337
|
|
|
320
|
-
pyproject_path, changelog_path = _find_project_paths(project)
|
|
321
|
-
|
|
338
|
+
pyproject_path, init_path, changelog_path = _find_project_paths(project)
|
|
339
|
+
resolved_root = pyproject_path.parent
|
|
322
340
|
|
|
323
341
|
if not skip_check:
|
|
324
342
|
results = run_checks(
|
|
325
|
-
project_root=
|
|
343
|
+
project_root=resolved_root,
|
|
326
344
|
pyproject_path=pyproject_path,
|
|
345
|
+
init_path=init_path,
|
|
327
346
|
changelog_path=changelog_path,
|
|
328
347
|
)
|
|
329
348
|
all_passed = _display_results(results)
|
|
@@ -627,12 +627,6 @@ def close( # noqa: C901
|
|
|
627
627
|
summary=summary or "",
|
|
628
628
|
session_type=session_type or "feature",
|
|
629
629
|
)
|
|
630
|
-
typer.echo(
|
|
631
|
-
"Warning: --summary close captures only a summary. "
|
|
632
|
-
"For full session continuity (narrative, patterns, next-session prompt), "
|
|
633
|
-
"use the /rai-session-close skill instead.",
|
|
634
|
-
err=True,
|
|
635
|
-
)
|
|
636
630
|
|
|
637
631
|
# Coherence validation: reject if state file session_id
|
|
638
632
|
# doesn't match the target session. Prevents race condition where
|
|
@@ -20,17 +20,19 @@ from raise_cli.cli.commands.doctor import doctor_app
|
|
|
20
20
|
from raise_cli.cli.commands.gate import gate_app
|
|
21
21
|
from raise_cli.cli.commands.graph import graph_app
|
|
22
22
|
from raise_cli.cli.commands.info import info_command
|
|
23
|
-
from raise_cli.cli.commands.init import init_command
|
|
23
|
+
from raise_cli.cli.commands.init import init_command
|
|
24
24
|
from raise_cli.cli.commands.learn import learn_app
|
|
25
25
|
from raise_cli.cli.commands.mcp import mcp_app
|
|
26
26
|
from raise_cli.cli.commands.memory import memory_app
|
|
27
27
|
from raise_cli.cli.commands.pattern import pattern_app
|
|
28
28
|
from raise_cli.cli.commands.profile import profile_app
|
|
29
|
+
from raise_cli.cli.commands.publish import publish_app
|
|
29
30
|
from raise_cli.cli.commands.release import release_app
|
|
30
31
|
from raise_cli.cli.commands.session import session_app
|
|
31
32
|
from raise_cli.cli.commands.signal import signal_app
|
|
32
33
|
from raise_cli.cli.commands.skill import skill_app
|
|
33
34
|
from raise_cli.cli.extensions import discover_cli_extensions
|
|
35
|
+
from raise_cli.pipeline.cli import app as pipeline_app
|
|
34
36
|
from raise_cli.config import RaiSettings
|
|
35
37
|
|
|
36
38
|
# Module-level state for error handling
|
|
@@ -68,15 +70,16 @@ app.add_typer(mcp_app, name="mcp")
|
|
|
68
70
|
app.add_typer(memory_app, name="memory")
|
|
69
71
|
app.add_typer(pattern_app, name="pattern")
|
|
70
72
|
app.add_typer(profile_app, name="profile")
|
|
73
|
+
app.add_typer(publish_app, name="publish")
|
|
71
74
|
app.add_typer(release_app, name="release")
|
|
72
75
|
app.add_typer(session_app, name="session")
|
|
73
76
|
app.add_typer(signal_app, name="signal")
|
|
74
77
|
app.add_typer(skill_app, name="skill")
|
|
78
|
+
app.add_typer(pipeline_app, name="pipeline")
|
|
75
79
|
|
|
76
80
|
# Register standalone commands
|
|
77
81
|
app.command("info")(info_command)
|
|
78
82
|
app.command("init")(init_command)
|
|
79
|
-
app.command("upgrade")(upgrade_command)
|
|
80
83
|
|
|
81
84
|
# Register CLI extensions from external packages
|
|
82
85
|
discover_cli_extensions(app)
|