raise-cli 2.4.0__tar.gz → 2.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. {raise_cli-2.4.0 → raise_cli-2.4.1}/.gitignore +0 -1
  2. {raise_cli-2.4.0 → raise_cli-2.4.1}/PKG-INFO +2 -1
  3. {raise_cli-2.4.0 → raise_cli-2.4.1}/pyproject.toml +2 -2
  4. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/jira_adapter.py +2 -0
  5. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/init.py +247 -19
  6. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/journal.py +32 -11
  7. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/release.py +6 -8
  8. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/session.py +6 -0
  9. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/main.py +2 -3
  10. raise_cli-2.4.1/src/raise_cli/hooks/builtin/memory.py +38 -0
  11. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/publish/check.py +46 -45
  12. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/identity/core.yaml +1 -1
  13. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/__init__.py +10 -9
  14. raise_cli-2.4.1/src/raise_cli/skills_base/rai-architecture-review/SKILL.md +168 -0
  15. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-design/SKILL.md +41 -10
  16. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-docs/SKILL.md +1 -1
  17. raise_cli-2.4.1/src/raise_cli/skills_base/rai-quality-review/SKILL.md +206 -0
  18. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-session-diary/SKILL.md +6 -5
  19. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-design/SKILL.md +44 -12
  20. raise_cli-2.4.0/src/raise_cli/cli/commands/publish.py +0 -80
  21. raise_cli-2.4.0/src/raise_cli/hooks/builtin/memory.py +0 -116
  22. {raise_cli-2.4.0 → raise_cli-2.4.1}/README.md +0 -0
  23. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/__init__.py +0 -0
  24. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/__main__.py +0 -0
  25. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/__init__.py +0 -0
  26. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/composite_docs.py +0 -0
  27. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/confluence_adapter.py +0 -0
  28. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/confluence_client.py +0 -0
  29. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/confluence_config.py +0 -0
  30. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/confluence_config_gen.py +0 -0
  31. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/confluence_discovery.py +0 -0
  32. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/confluence_exceptions.py +0 -0
  33. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/__init__.py +0 -0
  34. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/adapter.py +0 -0
  35. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/discovery.py +0 -0
  36. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/expressions.py +0 -0
  37. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/reference/__init__.py +0 -0
  38. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/reference/github.yaml +0 -0
  39. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/schema.py +0 -0
  40. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/filesystem.py +0 -0
  41. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/filesystem_adapter.py +0 -0
  42. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/filesystem_docs.py +0 -0
  43. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/filesystem_models.py +0 -0
  44. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/jira_client.py +0 -0
  45. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/jira_config.py +0 -0
  46. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/jira_config_gen.py +0 -0
  47. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/jira_discovery.py +0 -0
  48. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/jira_exceptions.py +0 -0
  49. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/mcp_bridge.py +0 -0
  50. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/models/__init__.py +0 -0
  51. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/models/docs.py +0 -0
  52. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/models/governance.py +0 -0
  53. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/models/health.py +0 -0
  54. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/models/pm.py +0 -0
  55. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/protocols.py +0 -0
  56. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/registry.py +0 -0
  57. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/adapters/sync.py +0 -0
  58. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/agents/__init__.py +0 -0
  59. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/agents/antigravity.yaml +0 -0
  60. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/agents/claude.yaml +0 -0
  61. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/agents/copilot.yaml +0 -0
  62. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/agents/copilot_plugin.py +0 -0
  63. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/agents/cursor.yaml +0 -0
  64. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/agents/roo.yaml +0 -0
  65. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/agents/windsurf.yaml +0 -0
  66. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/artifacts/__init__.py +0 -0
  67. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/artifacts/models.py +0 -0
  68. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/artifacts/reader.py +0 -0
  69. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/artifacts/renderer.py +0 -0
  70. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/artifacts/story_design.py +0 -0
  71. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/artifacts/writer.py +0 -0
  72. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/backlog/__init__.py +0 -0
  73. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/backlog/sync.py +0 -0
  74. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/__init__.py +0 -0
  75. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/__init__.py +0 -0
  76. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/_resolve.py +0 -0
  77. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/adapters.py +0 -0
  78. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/artifact.py +0 -0
  79. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/backlog.py +0 -0
  80. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/base.py +0 -0
  81. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/discover.py +0 -0
  82. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/docs.py +0 -0
  83. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/doctor.py +0 -0
  84. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/gate.py +0 -0
  85. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/graph.py +0 -0
  86. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/info.py +0 -0
  87. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/learn.py +0 -0
  88. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/mcp.py +0 -0
  89. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/memory.py +0 -0
  90. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/pattern.py +0 -0
  91. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/profile.py +0 -0
  92. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/signal.py +0 -0
  93. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/skill.py +0 -0
  94. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/commands/skill_set.py +0 -0
  95. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/error_handler.py +0 -0
  96. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/cli/extensions.py +0 -0
  97. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/compat.py +0 -0
  98. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/compliance/__init__.py +0 -0
  99. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/compliance/controls.yaml +0 -0
  100. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/compliance/evidence.py +0 -0
  101. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/compliance/extractors/__init__.py +0 -0
  102. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/compliance/extractors/git.py +0 -0
  103. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/compliance/loader.py +0 -0
  104. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/compliance/models.py +0 -0
  105. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/config/__init__.py +0 -0
  106. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/config/agent_plugin.py +0 -0
  107. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/config/agent_registry.py +0 -0
  108. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/config/agents.py +0 -0
  109. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/config/ide.py +0 -0
  110. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/config/paths.py +0 -0
  111. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/config/settings.py +0 -0
  112. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/__init__.py +0 -0
  113. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/analyzers/__init__.py +0 -0
  114. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/analyzers/models.py +0 -0
  115. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/analyzers/protocol.py +0 -0
  116. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/analyzers/python.py +0 -0
  117. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/analyzers/signals.py +0 -0
  118. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/analyzers/typescript.py +0 -0
  119. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/builder.py +0 -0
  120. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/diff.py +0 -0
  121. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/extractors/__init__.py +0 -0
  122. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/extractors/relationships.py +0 -0
  123. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/extractors/skills.py +0 -0
  124. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/extractors/structure.py +0 -0
  125. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/loaders/__init__.py +0 -0
  126. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/loaders/architecture.py +0 -0
  127. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/loaders/artifacts.py +0 -0
  128. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/loaders/components.py +0 -0
  129. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/loaders/identity.py +0 -0
  130. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/context/loaders/memory.py +0 -0
  131. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/core/__init__.py +0 -0
  132. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/core/files.py +0 -0
  133. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/core/text.py +0 -0
  134. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/core/tools.py +0 -0
  135. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/discovery/__init__.py +0 -0
  136. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/discovery/analyzer.py +0 -0
  137. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/discovery/drift.py +0 -0
  138. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/discovery/scanner.py +0 -0
  139. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/__init__.py +0 -0
  140. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/checks/__init__.py +0 -0
  141. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/checks/adapters.py +0 -0
  142. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/checks/developer.py +0 -0
  143. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/checks/environment.py +0 -0
  144. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/checks/project.py +0 -0
  145. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/fix.py +0 -0
  146. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/models.py +0 -0
  147. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/protocol.py +0 -0
  148. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/registry.py +0 -0
  149. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/report.py +0 -0
  150. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/doctor/runner.py +0 -0
  151. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/engines/__init__.py +0 -0
  152. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/exceptions.py +0 -0
  153. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/__init__.py +0 -0
  154. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/__init__.py +0 -0
  155. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/_runner.py +0 -0
  156. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/coverage.py +0 -0
  157. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/format.py +0 -0
  158. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/lint.py +0 -0
  159. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/tests.py +0 -0
  160. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/types.py +0 -0
  161. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/hook.py +0 -0
  162. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/models.py +0 -0
  163. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/protocol.py +0 -0
  164. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/gates/registry.py +0 -0
  165. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/__init__.py +0 -0
  166. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/extractor.py +0 -0
  167. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/models.py +0 -0
  168. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/__init__.py +0 -0
  169. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/_convert.py +0 -0
  170. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/adr.py +0 -0
  171. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/backlog.py +0 -0
  172. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/constitution.py +0 -0
  173. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/epic.py +0 -0
  174. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/glossary.py +0 -0
  175. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/guardrails.py +0 -0
  176. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/prd.py +0 -0
  177. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/roadmap.py +0 -0
  178. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/vision.py +0 -0
  179. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/graph/__init__.py +0 -0
  180. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/graph/backends/__init__.py +0 -0
  181. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/graph/backends/api.py +0 -0
  182. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/graph/backends/dual.py +0 -0
  183. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/graph/backends/pending.py +0 -0
  184. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/handlers/__init__.py +0 -0
  185. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/hooks/__init__.py +0 -0
  186. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/hooks/builtin/__init__.py +0 -0
  187. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/hooks/builtin/gate_bridge.py +0 -0
  188. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/hooks/builtin/telemetry.py +0 -0
  189. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/hooks/emitter.py +0 -0
  190. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/hooks/events.py +0 -0
  191. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/hooks/protocol.py +0 -0
  192. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/hooks/registry.py +0 -0
  193. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/mcp/__init__.py +0 -0
  194. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/mcp/bridge.py +0 -0
  195. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/mcp/models.py +0 -0
  196. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/mcp/registry.py +0 -0
  197. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/mcp/schema.py +0 -0
  198. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/memory/__init__.py +0 -0
  199. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/memory/learning.py +0 -0
  200. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/memory/loader.py +0 -0
  201. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/memory/migration.py +0 -0
  202. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/memory/models.py +0 -0
  203. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/memory/push.py +0 -0
  204. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/memory/writer.py +0 -0
  205. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/__init__.py +0 -0
  206. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/bootstrap.py +0 -0
  207. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/claudemd.py +0 -0
  208. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/conventions.py +0 -0
  209. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/detection.py +0 -0
  210. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/governance.py +0 -0
  211. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/instructions.py +0 -0
  212. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/manifest.py +0 -0
  213. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/memory_md.py +0 -0
  214. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/migration.py +0 -0
  215. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/profile.py +0 -0
  216. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/profile_portability.py +0 -0
  217. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/skill_conflict.py +0 -0
  218. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/skill_manifest.py +0 -0
  219. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/skills.py +0 -0
  220. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/onboarding/workflows.py +0 -0
  221. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/output/__init__.py +0 -0
  222. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/output/console.py +0 -0
  223. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/output/formatters/__init__.py +0 -0
  224. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/output/formatters/adapters.py +0 -0
  225. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/output/formatters/discover.py +0 -0
  226. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/output/formatters/graph.py +0 -0
  227. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/output/formatters/skill.py +0 -0
  228. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/output/symbols.py +0 -0
  229. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/publish/__init__.py +0 -0
  230. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/publish/changelog.py +0 -0
  231. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/publish/version.py +0 -0
  232. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/__init__.py +0 -0
  233. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/framework/__init__.py +0 -0
  234. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/framework/methodology.yaml +0 -0
  235. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/__init__.py +0 -0
  236. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/__init__.py +0 -0
  237. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/domain-model.md +0 -0
  238. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/domain-model.yaml +0 -0
  239. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/system-context.md +0 -0
  240. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/system-context.yaml +0 -0
  241. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/system-design.md +0 -0
  242. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/system-design.yaml +0 -0
  243. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/backlog.md +0 -0
  244. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/guardrails.md +0 -0
  245. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/prd.md +0 -0
  246. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/vision.md +0 -0
  247. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/identity/__init__.py +0 -0
  248. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/identity/core.md +0 -0
  249. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/identity/perspective.md +0 -0
  250. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/memory/__init__.py +0 -0
  251. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/rai_base/memory/patterns-base.jsonl +0 -0
  252. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/schemas/__init__.py +0 -0
  253. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/schemas/journal.py +0 -0
  254. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/schemas/session_state.py +0 -0
  255. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/__init__.py +0 -0
  256. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/bundle.py +0 -0
  257. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/bundle_data.py +0 -0
  258. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/bundle_formatters.py +0 -0
  259. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/close.py +0 -0
  260. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/derive.py +0 -0
  261. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/doctor.py +0 -0
  262. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/identity.py +0 -0
  263. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/index.py +0 -0
  264. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/journal.py +0 -0
  265. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/monitor.py +0 -0
  266. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/prefix.py +0 -0
  267. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/protocols.py +0 -0
  268. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/registry.py +0 -0
  269. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/resolver.py +0 -0
  270. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/session/state.py +0 -0
  271. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills/__init__.py +0 -0
  272. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills/locator.py +0 -0
  273. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills/name_checker.py +0 -0
  274. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills/parser.py +0 -0
  275. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills/scaffold.py +0 -0
  276. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills/schema.py +0 -0
  277. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills/skillsets.py +0 -0
  278. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills/validator.py +0 -0
  279. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/contract-template.md +0 -0
  280. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/preamble.md +0 -0
  281. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-adapter-setup/SKILL.md +0 -0
  282. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-bugfix-analyse/SKILL.md +0 -0
  283. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-bugfix-close/SKILL.md +0 -0
  284. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-bugfix-fix/SKILL.md +0 -0
  285. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-bugfix-plan/SKILL.md +0 -0
  286. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-bugfix-review/SKILL.md +0 -0
  287. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-bugfix-run/SKILL.md +0 -0
  288. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-bugfix-start/SKILL.md +0 -0
  289. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-bugfix-triage/SKILL.md +0 -0
  290. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-debug/SKILL.md +0 -0
  291. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-discover/SKILL.md +0 -0
  292. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-docs-update/SKILL.md +0 -0
  293. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-doctor/SKILL.md +0 -0
  294. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-close/SKILL.md +0 -0
  295. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-close/templates/retrospective.md +0 -0
  296. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-design/templates/design.md +0 -0
  297. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-design/templates/scope.md +0 -0
  298. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-plan/SKILL.md +0 -0
  299. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-plan/_references/sequencing-strategies.md +0 -0
  300. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-plan/templates/plan-section.md +0 -0
  301. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-run/SKILL.md +0 -0
  302. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-start/SKILL.md +0 -0
  303. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-start/templates/brief.md +0 -0
  304. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-mcp-add/SKILL.md +0 -0
  305. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-mcp-remove/SKILL.md +0 -0
  306. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-mcp-status/SKILL.md +0 -0
  307. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-problem-shape/SKILL.md +0 -0
  308. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-project-create/SKILL.md +0 -0
  309. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-project-onboard/SKILL.md +0 -0
  310. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-research/SKILL.md +0 -0
  311. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-research/references/research-prompt-template.md +0 -0
  312. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-session-close/SKILL.md +0 -0
  313. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-session-start/SKILL.md +0 -0
  314. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-close/SKILL.md +0 -0
  315. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-design/references/tech-design-story-v2.md +0 -0
  316. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-implement/SKILL.md +0 -0
  317. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-plan/SKILL.md +0 -0
  318. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-review/SKILL.md +0 -0
  319. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-run/SKILL.md +0 -0
  320. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-start/SKILL.md +0 -0
  321. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-start/templates/story.md +0 -0
  322. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-welcome/SKILL.md +0 -0
  323. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/telemetry/__init__.py +0 -0
  324. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/telemetry/schemas.py +0 -0
  325. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/telemetry/writer.py +0 -0
  326. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/tier/__init__.py +0 -0
  327. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/tier/context.py +0 -0
  328. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/viz/__init__.py +0 -0
  329. {raise_cli-2.4.0 → raise_cli-2.4.1}/src/raise_cli/viz/generator.py +0 -0
@@ -6,7 +6,6 @@
6
6
 
7
7
  # Claude Code local settings (user-specific)
8
8
  .claude/settings.local.json
9
- CLAUDE.local.md
10
9
  .claude/worktrees/
11
10
  .claude/projects/
12
11
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: raise-cli
3
- Version: 2.4.0
3
+ Version: 2.4.1
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
@@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.13
18
18
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
19
19
  Classifier: Topic :: Software Development :: Quality Assurance
20
20
  Requires-Python: >=3.12
21
+ Requires-Dist: httpx>=0.27.0
21
22
  Requires-Dist: logfire-api>=4.0
22
23
  Requires-Dist: networkx>=3.6.1
23
24
  Requires-Dist: pydantic-settings>=2.2.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "raise-cli"
3
- version = "2.4.0"
3
+ version = "2.4.1"
4
4
  description = "RaiSE CLI - Reliable AI Software Engineering governance framework"
5
5
  authors = [
6
6
  {name = "Emilio Osorio", email = "emilio@humansys.ai"}
@@ -36,6 +36,7 @@ dependencies = [
36
36
  "tree-sitter-svelte>=1.0.2",
37
37
  "tree-sitter-language-pack>=0.13.0",
38
38
  "logfire-api>=4.0",
39
+ "httpx>=0.27.0",
39
40
  ]
40
41
 
41
42
  [project.optional-dependencies]
@@ -81,7 +82,6 @@ glossary = "raise_cli.governance.parsers.glossary:GlossaryParser"
81
82
  [project.entry-points."rai.hooks"]
82
83
  telemetry = "raise_cli.hooks.builtin.telemetry:TelemetryHook"
83
84
  gate-bridge = "raise_cli.hooks.builtin.gate_bridge:GateBridgeHook"
84
- memory-sync = "raise_cli.hooks.builtin.memory:MemoryMdSyncHook"
85
85
 
86
86
  [project.entry-points."rai.gates"]
87
87
  tests = "raise_cli.gates.builtin.tests:TestGate"
@@ -212,6 +212,8 @@ 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"]}
215
217
 
216
218
  result = client.create_issue(fields)
217
219
  key = result.get("key", "")
@@ -511,32 +511,67 @@ def _create_and_save_manifest(
511
511
  detection: DetectionResult,
512
512
  valid_agent_types: list[str],
513
513
  ) -> ProjectManifest:
514
- """Create project manifest from detection results and save it."""
514
+ """Create project manifest from detection results and save it.
515
+
516
+ When an existing manifest is present, preserve user-configured values
517
+ and only update detection-derived fields (RAISE-1431, RAISE-1320).
518
+
519
+ Preserved on re-init: name, ide, agents, language (if set), detected_at,
520
+ toolchain commands (if user-configured), branches, tier, backlog.
521
+ Updated on re-init: project_type, code_file_count (always re-scanned).
522
+ """
515
523
  existing_manifest = load_manifest(project_path)
524
+ ep = existing_manifest.project if existing_manifest else None
525
+
526
+ # Preserve existing name if caller got it from directory (no --name flag)
527
+ effective_name = project_name
528
+ if ep and ep.name and project_name == project_path.name:
529
+ effective_name = ep.name
530
+
531
+ # Preserve user-configured language; fall back to detection (RAISE-1320)
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
516
539
 
517
540
  project_info = ProjectInfo(
518
- name=project_name,
541
+ name=effective_name,
519
542
  project_type=detection.project_type,
520
543
  code_file_count=detection.code_file_count,
521
- language=detection.language,
522
- test_command=detection.toolchain.test_command if detection.toolchain else None,
523
- lint_command=detection.toolchain.lint_command if detection.toolchain else None,
524
- type_check_command=(
525
- detection.toolchain.type_check_command if detection.toolchain else None
526
- ),
544
+ language=effective_language,
545
+ test_command=ep.test_command if ep and ep.test_command else detected_test,
546
+ lint_command=ep.lint_command if ep and ep.lint_command else detected_lint,
547
+ type_check_command=ep.type_check_command if ep and ep.type_check_command else detected_type,
548
+ format_command=ep.format_command if ep and ep.format_command else detected_format,
549
+ # Preserve original detected_at timestamp on re-init (RAISE-1320)
550
+ **({"detected_at": ep.detected_at} if ep else {}),
527
551
  )
528
- # Sync ide.type with agents.types[0] (RAISE-218)
529
- primary = valid_agent_types[0] if valid_agent_types else "claude"
530
- try:
531
- ide_manifest = IdeManifest(type=primary) # type: ignore[arg-type]
532
- except Exception:
533
- ide_manifest = IdeManifest() # custom agents outside BuiltinAgentType
552
+
553
+ # Preserve existing agents/ide if present, merge new detections (RAISE-1431)
554
+ if existing_manifest:
555
+ existing_agents = existing_manifest.agents.types if existing_manifest.agents else []
556
+ merged_agents = list(dict.fromkeys(existing_agents + valid_agent_types))
557
+ effective_agents = merged_agents
558
+ effective_ide = existing_manifest.ide
559
+ else:
560
+ effective_agents = valid_agent_types
561
+ primary = valid_agent_types[0] if valid_agent_types else "claude"
562
+ try:
563
+ effective_ide = IdeManifest(type=primary) # type: ignore[arg-type]
564
+ except Exception:
565
+ effective_ide = IdeManifest()
566
+
534
567
  manifest = ProjectManifest(
535
568
  project=project_info,
536
- agents=AgentsManifest(types=valid_agent_types),
537
- ide=ide_manifest,
569
+ agents=AgentsManifest(types=effective_agents),
570
+ ide=effective_ide,
538
571
  branches=existing_manifest.branches if existing_manifest else BranchConfig(),
539
572
  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,
540
575
  )
541
576
  save_manifest(manifest, project_path)
542
577
  return manifest
@@ -678,6 +713,14 @@ def _detect_and_generate_guardrails(
678
713
  guardrails_dir = project_path / "governance"
679
714
  guardrails_dir.mkdir(parents=True, exist_ok=True)
680
715
  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
+
681
724
  guardrails_path.write_text(guardrails_content, encoding="utf-8")
682
725
 
683
726
  instructions_path = project_path / instructions_file
@@ -799,19 +842,32 @@ def init_command(
799
842
  ) -> None:
800
843
  """Initialize a RaiSE project in the current directory.
801
844
 
802
- Detects project type (greenfield/brownfield), creates .raise/manifest.yaml,
803
- and scaffolds skills/workflows for each target agent.
845
+ First-time setup only. If the project is already initialized (.raise/ exists),
846
+ use ``rai upgrade`` instead to update skills, framework files, and configuration.
804
847
 
805
848
  Examples:
806
849
  $ rai init # defaults to claude
807
850
  $ rai init --agent cursor # single agent
808
851
  $ rai init --agent claude --agent cursor # multi-agent
809
852
  $ rai init --detect # auto-detect agents
810
- $ rai init --ide antigravity # (deprecated) alias
853
+ $ rai init --force # re-init (destructive)
811
854
  """
812
855
  project_path = (path if path is not None else Path.cwd()).resolve()
813
856
  project_name = name if name is not None else project_path.name
814
857
 
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
+
815
871
  # Load or create developer profile
816
872
  profile, created_profile = _load_or_create_profile(project_path)
817
873
 
@@ -900,3 +956,175 @@ def init_command(
900
956
  _detect_and_generate_guardrails(
901
957
  project_path, project_name, profile, first_config.instructions_file
902
958
  )
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,12 +1,11 @@
1
- """CLI commands for session journal — incremental memory persistence.
1
+ """CLI commands for session journal — DEPRECATED.
2
2
 
3
- Provides `rai session journal add` and `rai session journal show` for
4
- persisting and retrieving session context across compaction events.
3
+ The journal system is deprecated as of v3.0.0a1 (RAISE-1433). The append-only
4
+ journal relied on Claude Code hook injection for post-compaction recovery,
5
+ which is broken (CC bugs #12671, #15174). Commands remain functional for
6
+ backward compatibility but will be removed in v3.1.
5
7
 
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
8
+ Use ``/rai-session-close`` skill for full session continuity instead.
10
9
  """
11
10
 
12
11
  from __future__ import annotations
@@ -97,11 +96,26 @@ def add(
97
96
  ) -> None:
98
97
  """Add a journal entry to the current session.
99
98
 
99
+ .. deprecated:: 3.0.0a1
100
+ Journal is deprecated (RAISE-1433). Use /rai-session-close for continuity.
101
+
100
102
  Examples:
101
103
  $ rai session journal add "Use JSONL for journal" --type decision
102
104
  $ rai session journal add "T1 complete" --type task_done
103
- $ rai session journal add "Compaction loses rationale" --type insight --tags "compaction,memory"
104
105
  """
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
+ )
105
119
  session_dir = _resolve_session_dir(project)
106
120
  tag_list = [t.strip() for t in tags.split(",") if t.strip()] if tags else []
107
121
 
@@ -143,14 +157,21 @@ def show(
143
157
  ) -> None:
144
158
  """Show journal entries for the current session.
145
159
 
146
- With --compact, outputs a token-efficient format suitable for
147
- post-compaction context injection via hooks.
160
+ .. deprecated:: 3.0.0a1
161
+ Journal is deprecated (RAISE-1433). Use /rai-session-close for continuity.
148
162
 
149
163
  Examples:
150
164
  $ rai session journal show
151
- $ rai session journal show --last 5
152
165
  $ rai session journal show --compact
153
166
  """
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
+ )
154
175
  session_dir = _resolve_session_dir(project)
155
176
  entries = read_journal(session_dir, last_n=last)
156
177
 
@@ -42,12 +42,11 @@ 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, Path]:
46
- """Find pyproject.toml, __init__.py, and CHANGELOG.md paths."""
45
+ def _find_project_paths(project: Path) -> tuple[Path, Path]:
46
+ """Find pyproject.toml and CHANGELOG.md paths."""
47
47
  pyproject_path = project / "pyproject.toml"
48
48
  changelog_path = project / "CHANGELOG.md"
49
- init_path = project / "src" / "raise_cli" / "__init__.py"
50
- return pyproject_path, init_path, changelog_path
49
+ return pyproject_path, changelog_path
51
50
 
52
51
 
53
52
  def _read_current_version(pyproject_path: Path) -> str:
@@ -180,12 +179,11 @@ def check_command(
180
179
  $ rai release check
181
180
  $ rai release check --project /path/to/project
182
181
  """
183
- pyproject_path, init_path, changelog_path = _find_project_paths(project)
182
+ pyproject_path, changelog_path = _find_project_paths(project)
184
183
 
185
184
  results = run_checks(
186
185
  project_root=project,
187
186
  pyproject_path=pyproject_path,
188
- init_path=init_path,
189
187
  changelog_path=changelog_path,
190
188
  )
191
189
 
@@ -319,13 +317,13 @@ def publish_command(
319
317
  console.print("[red]Either --bump or --version is required[/red]")
320
318
  raise typer.Exit(1)
321
319
 
322
- pyproject_path, init_path, changelog_path = _find_project_paths(project)
320
+ pyproject_path, changelog_path = _find_project_paths(project)
321
+ init_path = project / "src" / "raise_cli" / "__init__.py"
323
322
 
324
323
  if not skip_check:
325
324
  results = run_checks(
326
325
  project_root=project,
327
326
  pyproject_path=pyproject_path,
328
- init_path=init_path,
329
327
  changelog_path=changelog_path,
330
328
  )
331
329
  all_passed = _display_results(results)
@@ -627,6 +627,12 @@ 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
+ )
630
636
 
631
637
  # Coherence validation: reject if state file session_id
632
638
  # doesn't match the target session. Prevents race condition where
@@ -20,13 +20,12 @@ 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, upgrade_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
30
29
  from raise_cli.cli.commands.release import release_app
31
30
  from raise_cli.cli.commands.session import session_app
32
31
  from raise_cli.cli.commands.signal import signal_app
@@ -69,7 +68,6 @@ app.add_typer(mcp_app, name="mcp")
69
68
  app.add_typer(memory_app, name="memory")
70
69
  app.add_typer(pattern_app, name="pattern")
71
70
  app.add_typer(profile_app, name="profile")
72
- app.add_typer(publish_app, name="publish")
73
71
  app.add_typer(release_app, name="release")
74
72
  app.add_typer(session_app, name="session")
75
73
  app.add_typer(signal_app, name="signal")
@@ -78,6 +76,7 @@ app.add_typer(skill_app, name="skill")
78
76
  # Register standalone commands
79
77
  app.command("info")(info_command)
80
78
  app.command("init")(init_command)
79
+ app.command("upgrade")(upgrade_command)
81
80
 
82
81
  # Register CLI extensions from external packages
83
82
  discover_cli_extensions(app)
@@ -0,0 +1,38 @@
1
+ """Built-in MemoryMdSyncHook — DISABLED.
2
+
3
+ Previously regenerated MEMORY.md after graph build. Disabled because
4
+ MEMORY.md is owned by Claude Code's auto-memory system (see RAISE-1459).
5
+
6
+ CLAUDE.md (user-managed) is the correct place for always-on context.
7
+ MEMORY.md and memory/*.md are Claude-managed auto-memory files.
8
+
9
+ Architecture: E1132 Wave 4, CC source memoryFileDetection.ts:127-131.
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ import logging
15
+ from typing import ClassVar
16
+
17
+ from raise_cli.hooks.events import HookEvent, HookResult
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ class MemoryMdSyncHook:
23
+ """DISABLED — MEMORY.md is owned by Claude auto-memory.
24
+
25
+ Kept as a stub to avoid import errors from any code that references
26
+ this class. The entry point has been removed from pyproject.toml
27
+ so this hook is never discovered or invoked by the hook system.
28
+
29
+ See: RAISE-1459, E1132 Wave 4 (CC reverse engineering)
30
+ """
31
+
32
+ events: ClassVar[list[str]] = ["graph:build"]
33
+ priority: ClassVar[int] = 0
34
+
35
+ def handle(self, event: HookEvent) -> HookResult:
36
+ """No-op. Returns ok without writing any files."""
37
+ logger.debug("MemoryMdSyncHook disabled (RAISE-1459)")
38
+ return HookResult(status="ok", message="disabled — MEMORY.md owned by Claude auto-memory")