raise-cli 2.4.0a2__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 (330) hide show
  1. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/.gitignore +4 -1
  2. raise_cli-2.4.1/PKG-INFO +191 -0
  3. raise_cli-2.4.1/README.md +141 -0
  4. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/pyproject.toml +13 -4
  5. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/confluence_adapter.py +30 -21
  6. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/confluence_client.py +50 -9
  7. raise_cli-2.4.1/src/raise_cli/adapters/confluence_config_gen.py +165 -0
  8. raise_cli-2.4.1/src/raise_cli/adapters/confluence_discovery.py +258 -0
  9. raise_cli-2.4.1/src/raise_cli/adapters/filesystem_adapter.py +98 -0
  10. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/filesystem_docs.py +55 -0
  11. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/jira_adapter.py +10 -1
  12. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/jira_client.py +111 -7
  13. raise_cli-2.4.1/src/raise_cli/adapters/jira_config_gen.py +90 -0
  14. raise_cli-2.4.1/src/raise_cli/adapters/jira_discovery.py +103 -0
  15. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/models/pm.py +51 -1
  16. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/registry.py +23 -0
  17. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/backlog/sync.py +3 -14
  18. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/_resolve.py +9 -0
  19. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/discover.py +18 -18
  20. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/docs.py +18 -4
  21. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/graph.py +18 -1
  22. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/info.py +1 -1
  23. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/init.py +261 -33
  24. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/journal.py +32 -11
  25. raise_cli-2.4.1/src/raise_cli/cli/commands/learn.py +266 -0
  26. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/mcp.py +16 -7
  27. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/pattern.py +2 -2
  28. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/profile.py +1 -1
  29. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/release.py +6 -8
  30. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/session.py +161 -19
  31. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/signal.py +25 -20
  32. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/main.py +4 -3
  33. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/analyzers/__init__.py +2 -1
  34. raise_cli-2.4.1/src/raise_cli/context/analyzers/signals.py +165 -0
  35. raise_cli-2.4.1/src/raise_cli/context/analyzers/typescript.py +469 -0
  36. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/builder.py +24 -6
  37. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/extractors/relationships.py +12 -3
  38. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/core/files.py +19 -0
  39. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/discovery/analyzer.py +1 -1
  40. raise_cli-2.4.1/src/raise_cli/doctor/checks/adapters.py +404 -0
  41. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/epic.py +2 -2
  42. raise_cli-2.4.1/src/raise_cli/hooks/builtin/memory.py +38 -0
  43. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/memory/__init__.py +1 -1
  44. raise_cli-2.4.1/src/raise_cli/memory/learning.py +122 -0
  45. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/memory/models.py +4 -0
  46. raise_cli-2.4.1/src/raise_cli/memory/push.py +101 -0
  47. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/memory/writer.py +9 -10
  48. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/bootstrap.py +1 -1
  49. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/governance.py +1 -1
  50. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/profile.py +7 -5
  51. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/output/formatters/skill.py +1 -1
  52. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/publish/check.py +51 -39
  53. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/__init__.py +1 -1
  54. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/identity/core.yaml +1 -1
  55. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/schemas/session_state.py +61 -1
  56. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/session/bundle.py +38 -6
  57. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/session/bundle_formatters.py +19 -6
  58. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/session/close.py +28 -8
  59. raise_cli-2.4.1/src/raise_cli/session/derive.py +235 -0
  60. raise_cli-2.4.1/src/raise_cli/session/doctor.py +364 -0
  61. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/session/index.py +9 -5
  62. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/session/journal.py +3 -3
  63. raise_cli-2.4.1/src/raise_cli/session/monitor.py +162 -0
  64. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/session/prefix.py +4 -3
  65. raise_cli-2.4.1/src/raise_cli/session/protocols.py +70 -0
  66. raise_cli-2.4.1/src/raise_cli/session/registry.py +197 -0
  67. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/session/state.py +41 -5
  68. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/__init__.py +24 -5
  69. raise_cli-2.4.1/src/raise_cli/skills_base/rai-adapter-setup/SKILL.md +221 -0
  70. raise_cli-2.4.1/src/raise_cli/skills_base/rai-architecture-review/SKILL.md +168 -0
  71. raise_cli-2.4.1/src/raise_cli/skills_base/rai-bugfix-analyse/SKILL.md +136 -0
  72. raise_cli-2.4.1/src/raise_cli/skills_base/rai-bugfix-close/SKILL.md +143 -0
  73. raise_cli-2.4.1/src/raise_cli/skills_base/rai-bugfix-fix/SKILL.md +114 -0
  74. raise_cli-2.4.1/src/raise_cli/skills_base/rai-bugfix-plan/SKILL.md +119 -0
  75. raise_cli-2.4.1/src/raise_cli/skills_base/rai-bugfix-review/SKILL.md +150 -0
  76. raise_cli-2.4.1/src/raise_cli/skills_base/rai-bugfix-run/SKILL.md +304 -0
  77. raise_cli-2.4.1/src/raise_cli/skills_base/rai-bugfix-start/SKILL.md +121 -0
  78. raise_cli-2.4.1/src/raise_cli/skills_base/rai-bugfix-triage/SKILL.md +138 -0
  79. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-debug/SKILL.md +9 -4
  80. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-discover/SKILL.md +9 -3
  81. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-docs-update/SKILL.md +9 -5
  82. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-doctor/SKILL.md +6 -4
  83. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-close/SKILL.md +36 -13
  84. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-design/SKILL.md +82 -16
  85. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-docs/SKILL.md +10 -6
  86. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-plan/SKILL.md +33 -5
  87. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-run/SKILL.md +10 -6
  88. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-start/SKILL.md +31 -12
  89. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-mcp-add/SKILL.md +9 -4
  90. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-mcp-remove/SKILL.md +9 -3
  91. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-mcp-status/SKILL.md +6 -5
  92. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-problem-shape/SKILL.md +6 -4
  93. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-project-create/SKILL.md +9 -4
  94. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-project-onboard/SKILL.md +9 -5
  95. raise_cli-2.4.1/src/raise_cli/skills_base/rai-quality-review/SKILL.md +206 -0
  96. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-research/SKILL.md +9 -5
  97. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-session-close/SKILL.md +7 -3
  98. raise_cli-2.4.1/src/raise_cli/skills_base/rai-session-diary/SKILL.md +230 -0
  99. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-session-start/SKILL.md +6 -3
  100. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-close/SKILL.md +34 -8
  101. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-design/SKILL.md +85 -17
  102. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-implement/SKILL.md +49 -19
  103. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-plan/SKILL.md +33 -5
  104. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-review/SKILL.md +59 -22
  105. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-run/SKILL.md +27 -7
  106. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-start/SKILL.md +10 -5
  107. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-welcome/SKILL.md +14 -8
  108. raise_cli-2.4.0a2/PKG-INFO +0 -47
  109. raise_cli-2.4.0a2/src/raise_cli/cli/commands/publish.py +0 -80
  110. raise_cli-2.4.0a2/src/raise_cli/hooks/builtin/memory.py +0 -116
  111. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/__init__.py +2 -2
  112. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/__main__.py +0 -0
  113. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/__init__.py +0 -0
  114. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/composite_docs.py +0 -0
  115. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/confluence_config.py +0 -0
  116. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/confluence_exceptions.py +0 -0
  117. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/__init__.py +0 -0
  118. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/adapter.py +0 -0
  119. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/discovery.py +0 -0
  120. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/expressions.py +0 -0
  121. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/reference/__init__.py +0 -0
  122. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/reference/github.yaml +0 -0
  123. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/declarative/schema.py +0 -0
  124. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/filesystem.py +0 -0
  125. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/filesystem_models.py +0 -0
  126. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/jira_config.py +0 -0
  127. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/jira_exceptions.py +0 -0
  128. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/mcp_bridge.py +0 -0
  129. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/models/__init__.py +0 -0
  130. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/models/docs.py +0 -0
  131. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/models/governance.py +0 -0
  132. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/models/health.py +0 -0
  133. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/protocols.py +0 -0
  134. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/adapters/sync.py +0 -0
  135. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/agents/__init__.py +0 -0
  136. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/agents/antigravity.yaml +0 -0
  137. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/agents/claude.yaml +0 -0
  138. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/agents/copilot.yaml +0 -0
  139. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/agents/copilot_plugin.py +0 -0
  140. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/agents/cursor.yaml +0 -0
  141. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/agents/roo.yaml +0 -0
  142. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/agents/windsurf.yaml +0 -0
  143. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/artifacts/__init__.py +0 -0
  144. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/artifacts/models.py +0 -0
  145. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/artifacts/reader.py +0 -0
  146. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/artifacts/renderer.py +0 -0
  147. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/artifacts/story_design.py +0 -0
  148. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/artifacts/writer.py +0 -0
  149. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/backlog/__init__.py +0 -0
  150. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/__init__.py +0 -0
  151. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/__init__.py +0 -0
  152. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/adapters.py +0 -0
  153. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/artifact.py +0 -0
  154. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/backlog.py +0 -0
  155. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/base.py +0 -0
  156. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/doctor.py +0 -0
  157. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/gate.py +0 -0
  158. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/memory.py +0 -0
  159. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/skill.py +0 -0
  160. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/commands/skill_set.py +0 -0
  161. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/error_handler.py +0 -0
  162. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/cli/extensions.py +0 -0
  163. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/compat.py +0 -0
  164. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/compliance/__init__.py +0 -0
  165. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/compliance/controls.yaml +0 -0
  166. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/compliance/evidence.py +0 -0
  167. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/compliance/extractors/__init__.py +0 -0
  168. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/compliance/extractors/git.py +0 -0
  169. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/compliance/loader.py +0 -0
  170. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/compliance/models.py +0 -0
  171. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/config/__init__.py +0 -0
  172. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/config/agent_plugin.py +0 -0
  173. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/config/agent_registry.py +0 -0
  174. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/config/agents.py +0 -0
  175. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/config/ide.py +0 -0
  176. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/config/paths.py +0 -0
  177. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/config/settings.py +0 -0
  178. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/__init__.py +0 -0
  179. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/analyzers/models.py +0 -0
  180. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/analyzers/protocol.py +0 -0
  181. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/analyzers/python.py +0 -0
  182. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/diff.py +0 -0
  183. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/extractors/__init__.py +0 -0
  184. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/extractors/skills.py +0 -0
  185. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/extractors/structure.py +0 -0
  186. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/loaders/__init__.py +0 -0
  187. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/loaders/architecture.py +0 -0
  188. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/loaders/artifacts.py +0 -0
  189. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/loaders/components.py +0 -0
  190. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/loaders/identity.py +0 -0
  191. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/context/loaders/memory.py +0 -0
  192. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/core/__init__.py +0 -0
  193. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/core/text.py +0 -0
  194. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/core/tools.py +0 -0
  195. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/discovery/__init__.py +0 -0
  196. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/discovery/drift.py +0 -0
  197. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/discovery/scanner.py +0 -0
  198. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/doctor/__init__.py +0 -0
  199. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/doctor/checks/__init__.py +0 -0
  200. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/doctor/checks/developer.py +0 -0
  201. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/doctor/checks/environment.py +0 -0
  202. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/doctor/checks/project.py +0 -0
  203. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/doctor/fix.py +0 -0
  204. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/doctor/models.py +0 -0
  205. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/doctor/protocol.py +0 -0
  206. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/doctor/registry.py +0 -0
  207. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/doctor/report.py +0 -0
  208. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/doctor/runner.py +0 -0
  209. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/engines/__init__.py +0 -0
  210. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/exceptions.py +0 -0
  211. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/__init__.py +0 -0
  212. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/__init__.py +0 -0
  213. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/_runner.py +0 -0
  214. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/coverage.py +0 -0
  215. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/format.py +0 -0
  216. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/lint.py +0 -0
  217. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/tests.py +0 -0
  218. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/builtin/types.py +0 -0
  219. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/hook.py +0 -0
  220. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/models.py +0 -0
  221. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/protocol.py +0 -0
  222. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/gates/registry.py +0 -0
  223. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/__init__.py +0 -0
  224. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/extractor.py +0 -0
  225. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/models.py +0 -0
  226. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/__init__.py +0 -0
  227. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/_convert.py +0 -0
  228. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/adr.py +0 -0
  229. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/backlog.py +0 -0
  230. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/constitution.py +0 -0
  231. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/glossary.py +0 -0
  232. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/guardrails.py +0 -0
  233. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/prd.py +0 -0
  234. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/roadmap.py +0 -0
  235. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/governance/parsers/vision.py +0 -0
  236. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/graph/__init__.py +0 -0
  237. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/graph/backends/__init__.py +0 -0
  238. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/graph/backends/api.py +0 -0
  239. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/graph/backends/dual.py +0 -0
  240. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/graph/backends/pending.py +0 -0
  241. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/handlers/__init__.py +0 -0
  242. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/hooks/__init__.py +0 -0
  243. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/hooks/builtin/__init__.py +0 -0
  244. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/hooks/builtin/gate_bridge.py +0 -0
  245. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/hooks/builtin/telemetry.py +0 -0
  246. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/hooks/emitter.py +0 -0
  247. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/hooks/events.py +0 -0
  248. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/hooks/protocol.py +0 -0
  249. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/hooks/registry.py +0 -0
  250. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/mcp/__init__.py +0 -0
  251. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/mcp/bridge.py +0 -0
  252. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/mcp/models.py +0 -0
  253. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/mcp/registry.py +0 -0
  254. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/mcp/schema.py +0 -0
  255. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/memory/loader.py +0 -0
  256. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/memory/migration.py +0 -0
  257. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/__init__.py +0 -0
  258. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/claudemd.py +0 -0
  259. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/conventions.py +0 -0
  260. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/detection.py +0 -0
  261. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/instructions.py +0 -0
  262. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/manifest.py +0 -0
  263. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/memory_md.py +0 -0
  264. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/migration.py +0 -0
  265. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/profile_portability.py +0 -0
  266. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/skill_conflict.py +0 -0
  267. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/skill_manifest.py +0 -0
  268. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/skills.py +0 -0
  269. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/onboarding/workflows.py +0 -0
  270. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/output/__init__.py +0 -0
  271. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/output/console.py +0 -0
  272. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/output/formatters/__init__.py +0 -0
  273. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/output/formatters/adapters.py +0 -0
  274. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/output/formatters/discover.py +0 -0
  275. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/output/formatters/graph.py +0 -0
  276. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/output/symbols.py +0 -0
  277. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/publish/__init__.py +0 -0
  278. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/publish/changelog.py +0 -0
  279. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/publish/version.py +0 -0
  280. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/framework/__init__.py +0 -0
  281. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/framework/methodology.yaml +0 -0
  282. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/__init__.py +0 -0
  283. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/__init__.py +0 -0
  284. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/domain-model.md +0 -0
  285. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/domain-model.yaml +0 -0
  286. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/system-context.md +0 -0
  287. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/system-context.yaml +0 -0
  288. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/system-design.md +0 -0
  289. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/architecture/system-design.yaml +0 -0
  290. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/backlog.md +0 -0
  291. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/guardrails.md +0 -0
  292. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/prd.md +0 -0
  293. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/governance/vision.md +0 -0
  294. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/identity/__init__.py +0 -0
  295. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/identity/core.md +0 -0
  296. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/identity/perspective.md +0 -0
  297. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/memory/__init__.py +0 -0
  298. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/rai_base/memory/patterns-base.jsonl +0 -0
  299. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/schemas/__init__.py +0 -0
  300. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/schemas/journal.py +0 -0
  301. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/session/__init__.py +0 -0
  302. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/session/bundle_data.py +0 -0
  303. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/session/identity.py +0 -0
  304. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/session/resolver.py +0 -0
  305. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills/__init__.py +0 -0
  306. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills/locator.py +0 -0
  307. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills/name_checker.py +0 -0
  308. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills/parser.py +0 -0
  309. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills/scaffold.py +0 -0
  310. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills/schema.py +0 -0
  311. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills/skillsets.py +0 -0
  312. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills/validator.py +0 -0
  313. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/contract-template.md +0 -0
  314. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/preamble.md +0 -0
  315. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-close/templates/retrospective.md +0 -0
  316. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-design/templates/design.md +0 -0
  317. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-design/templates/scope.md +0 -0
  318. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-plan/_references/sequencing-strategies.md +0 -0
  319. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-plan/templates/plan-section.md +0 -0
  320. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-epic-start/templates/brief.md +0 -0
  321. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-research/references/research-prompt-template.md +0 -0
  322. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-design/references/tech-design-story-v2.md +0 -0
  323. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/skills_base/rai-story-start/templates/story.md +0 -0
  324. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/telemetry/__init__.py +0 -0
  325. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/telemetry/schemas.py +0 -0
  326. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/telemetry/writer.py +0 -0
  327. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/tier/__init__.py +0 -0
  328. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/tier/context.py +0 -0
  329. {raise_cli-2.4.0a2 → raise_cli-2.4.1}/src/raise_cli/viz/__init__.py +0 -0
  330. {raise_cli-2.4.0a2 → 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
 
@@ -99,6 +98,9 @@ dmypy.json
99
98
  # Legacy telemetry (should be in personal/, will migrate)
100
99
  .raise/rai/telemetry/
101
100
 
101
+ # Push tracking markers (per-environment, not shared)
102
+ .raise/rai/learnings/**/.pushed
103
+
102
104
  # MCP server config (contains API tokens)
103
105
  .mcp.json
104
106
 
@@ -127,3 +129,4 @@ dev/transcripts/
127
129
 
128
130
  # Prevent symlink artifacts from being tracked at root
129
131
  /es/
132
+ work/research/
@@ -0,0 +1,191 @@
1
+ Metadata-Version: 2.4
2
+ Name: raise-cli
3
+ Version: 2.4.1
4
+ Summary: RaiSE CLI - Reliable AI Software Engineering governance framework
5
+ Project-URL: Homepage, https://raiseframework.ai
6
+ Project-URL: Documentation, https://docs.raiseframework.ai
7
+ Project-URL: Repository, https://github.com/humansys/raise
8
+ Project-URL: Changelog, https://github.com/humansys/raise/blob/main/CHANGELOG.md
9
+ Author-email: Emilio Osorio <emilio@humansys.ai>
10
+ License: Apache-2.0
11
+ Keywords: ai,cli,governance,methodology,software-engineering
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
19
+ Classifier: Topic :: Software Development :: Quality Assurance
20
+ Requires-Python: >=3.12
21
+ Requires-Dist: httpx>=0.27.0
22
+ Requires-Dist: logfire-api>=4.0
23
+ Requires-Dist: networkx>=3.6.1
24
+ Requires-Dist: pydantic-settings>=2.2.0
25
+ Requires-Dist: pydantic>=2.6.0
26
+ Requires-Dist: python-dotenv>=1.0.0
27
+ Requires-Dist: pyyaml>=6.0.1
28
+ Requires-Dist: raise-core
29
+ Requires-Dist: rich>=13.7.0
30
+ Requires-Dist: tree-sitter-javascript>=0.25.0
31
+ Requires-Dist: tree-sitter-language-pack>=0.13.0
32
+ Requires-Dist: tree-sitter-php>=0.24.1
33
+ Requires-Dist: tree-sitter-svelte>=1.0.2
34
+ Requires-Dist: tree-sitter-typescript>=0.23.2
35
+ Requires-Dist: tree-sitter>=0.25.2
36
+ Requires-Dist: typer>=0.12.0
37
+ Provides-Extra: atlassian
38
+ Requires-Dist: atlassian-python-api>=3.41.0; extra == 'atlassian'
39
+ Provides-Extra: confluence
40
+ Requires-Dist: atlassian-python-api>=3.41.0; extra == 'confluence'
41
+ Provides-Extra: csharp
42
+ Requires-Dist: tree-sitter-c-sharp>=0.23.1; extra == 'csharp'
43
+ Provides-Extra: jira
44
+ Requires-Dist: atlassian-python-api>=3.41.0; extra == 'jira'
45
+ Provides-Extra: mcp
46
+ Requires-Dist: mcp<2,>=1.26; extra == 'mcp'
47
+ Provides-Extra: observability
48
+ Requires-Dist: logfire>=4.0; extra == 'observability'
49
+ Description-Content-Type: text/markdown
50
+
51
+ # RaiSE CLI
52
+
53
+ **Reliable AI Software Engineering** — a lean methodology and deterministic CLI toolkit that turns AI coding assistants into disciplined collaborators.
54
+
55
+ [![PyPI](https://img.shields.io/pypi/v/raise-cli)](https://pypi.org/project/raise-cli/)
56
+ [![Python](https://img.shields.io/pypi/pyversions/raise-cli)](https://pypi.org/project/raise-cli/)
57
+ [![License](https://img.shields.io/pypi/l/raise-cli)](https://github.com/humansys/raise/blob/main/LICENSE)
58
+
59
+ ## What is RaiSE?
60
+
61
+ RaiSE provides **governance, memory, and structured workflows** for AI-assisted software engineering. You decide *what* to build. Rai (your AI partner) executes with accumulated memory and calibrated judgment. RaiSE provides the discipline that makes the collaboration reliable.
62
+
63
+ The result: AI that learns from your project, follows your rules, and compounds knowledge across sessions instead of starting fresh every time.
64
+
65
+ ## Install
66
+
67
+ ```bash
68
+ pip install raise-cli
69
+ ```
70
+
71
+ Optional integrations:
72
+
73
+ ```bash
74
+ # Jira + Confluence adapters
75
+ pip install "raise-cli[jira,confluence]"
76
+
77
+ # MCP server support
78
+ pip install "raise-cli[mcp]"
79
+
80
+ # All extras
81
+ pip install "raise-cli[jira,confluence,mcp,csharp,observability]"
82
+ ```
83
+
84
+ Requires Python 3.12 or 3.13.
85
+
86
+ ## Quick start
87
+
88
+ ```bash
89
+ # Initialize a project
90
+ rai init
91
+
92
+ # Start a session (loads context, memory, proposes work)
93
+ rai session start --project . --context
94
+
95
+ # Build the knowledge graph
96
+ rai graph build
97
+ ```
98
+
99
+ Then work through skills in your AI assistant (Claude Code, Cursor, Windsurf):
100
+
101
+ ```
102
+ /rai-session-start → Load context, propose focused work
103
+ /rai-story-start → Scope a piece of work
104
+ /rai-story-plan → Decompose into tasks
105
+ /rai-story-implement → TDD: test, code, verify, commit
106
+ /rai-story-review → Extract learnings
107
+ /rai-story-close → Merge and clean up
108
+ /rai-session-close → Capture session outcomes
109
+ ```
110
+
111
+ ## Key features
112
+
113
+ ### Structured workflows
114
+ 44 skills covering the full SDLC — epic, story, bugfix, discovery, session management, documentation, and release.
115
+
116
+ ### Knowledge graph
117
+ Project context, patterns, and cross-session memory — queryable and persistent.
118
+
119
+ ```bash
120
+ rai graph query "testing patterns" --types pattern --limit 5
121
+ ```
122
+
123
+ ### Backlog management
124
+ Built-in adapters for Jira and filesystem-backed backlogs.
125
+
126
+ ```bash
127
+ rai backlog search "project = MYPROJECT AND status = 'In Progress'"
128
+ rai backlog create "Fix pagination bug" -p MYPROJECT -t Bug
129
+ rai backlog transition MYPROJECT-123 done
130
+ ```
131
+
132
+ ### Documentation publishing
133
+ Publish to Confluence, local filesystem, or both (dual-write).
134
+
135
+ ```bash
136
+ rai docs publish adr --title "ADR-045: Auth Architecture"
137
+ ```
138
+
139
+ ### Quality gates
140
+ Automated checks before commits and releases.
141
+
142
+ ```bash
143
+ rai gate check --all # Run all gates
144
+ rai release check # 10-point release checklist
145
+ ```
146
+
147
+ ### Session continuity
148
+ Memory that compounds across sessions — patterns, calibration, coaching corrections.
149
+
150
+ ```bash
151
+ rai session start --context # Loads everything from prior sessions
152
+ rai pattern add "Always validate frontmatter before writing"
153
+ ```
154
+
155
+ ### Multi-language discovery
156
+ Scan codebases and build knowledge graphs from: Python, TypeScript, JavaScript, C#, PHP, Dart, Svelte.
157
+
158
+ ```bash
159
+ rai discover scan src/ --language python --output summary
160
+ ```
161
+
162
+ ## CLI commands
163
+
164
+ 72 subcommands across 17 groups:
165
+
166
+ | Group | Commands |
167
+ |-------|----------|
168
+ | `init` | Initialize project governance |
169
+ | `session` | start, close, context, journal, doctor |
170
+ | `graph` | build, query, context |
171
+ | `pattern` | add, query |
172
+ | `backlog` | create, get, search, transition, update, link, comment |
173
+ | `docs` | publish, get, search |
174
+ | `skill` | list, validate, check-name, scaffold |
175
+ | `discover` | scan |
176
+ | `adapter` | list, check, validate, status |
177
+ | `mcp` | list, health, tools, call, install, scaffold |
178
+ | `gate` | list, check |
179
+ | `doctor` | diagnostics with --fix auto-remediation |
180
+ | `release` | check, publish |
181
+
182
+ ## Documentation
183
+
184
+ - **[Getting Started](https://docs.raiseframework.ai/)** — Install and run your first session
185
+ - **[Guides](https://docs.raiseframework.ai/guides/first-story/)** — Your First Story, Configuring Integrations, Bugfix Lifecycle
186
+ - **[CLI Reference](https://docs.raiseframework.ai/cli/)** — Every command, flag, and option
187
+ - **[Concepts](https://docs.raiseframework.ai/concepts/)** — Memory, Skills, Governance, Knowledge Graph
188
+
189
+ ## License
190
+
191
+ Apache 2.0 — see [LICENSE](https://github.com/humansys/raise/blob/main/LICENSE).
@@ -0,0 +1,141 @@
1
+ # RaiSE CLI
2
+
3
+ **Reliable AI Software Engineering** — a lean methodology and deterministic CLI toolkit that turns AI coding assistants into disciplined collaborators.
4
+
5
+ [![PyPI](https://img.shields.io/pypi/v/raise-cli)](https://pypi.org/project/raise-cli/)
6
+ [![Python](https://img.shields.io/pypi/pyversions/raise-cli)](https://pypi.org/project/raise-cli/)
7
+ [![License](https://img.shields.io/pypi/l/raise-cli)](https://github.com/humansys/raise/blob/main/LICENSE)
8
+
9
+ ## What is RaiSE?
10
+
11
+ RaiSE provides **governance, memory, and structured workflows** for AI-assisted software engineering. You decide *what* to build. Rai (your AI partner) executes with accumulated memory and calibrated judgment. RaiSE provides the discipline that makes the collaboration reliable.
12
+
13
+ The result: AI that learns from your project, follows your rules, and compounds knowledge across sessions instead of starting fresh every time.
14
+
15
+ ## Install
16
+
17
+ ```bash
18
+ pip install raise-cli
19
+ ```
20
+
21
+ Optional integrations:
22
+
23
+ ```bash
24
+ # Jira + Confluence adapters
25
+ pip install "raise-cli[jira,confluence]"
26
+
27
+ # MCP server support
28
+ pip install "raise-cli[mcp]"
29
+
30
+ # All extras
31
+ pip install "raise-cli[jira,confluence,mcp,csharp,observability]"
32
+ ```
33
+
34
+ Requires Python 3.12 or 3.13.
35
+
36
+ ## Quick start
37
+
38
+ ```bash
39
+ # Initialize a project
40
+ rai init
41
+
42
+ # Start a session (loads context, memory, proposes work)
43
+ rai session start --project . --context
44
+
45
+ # Build the knowledge graph
46
+ rai graph build
47
+ ```
48
+
49
+ Then work through skills in your AI assistant (Claude Code, Cursor, Windsurf):
50
+
51
+ ```
52
+ /rai-session-start → Load context, propose focused work
53
+ /rai-story-start → Scope a piece of work
54
+ /rai-story-plan → Decompose into tasks
55
+ /rai-story-implement → TDD: test, code, verify, commit
56
+ /rai-story-review → Extract learnings
57
+ /rai-story-close → Merge and clean up
58
+ /rai-session-close → Capture session outcomes
59
+ ```
60
+
61
+ ## Key features
62
+
63
+ ### Structured workflows
64
+ 44 skills covering the full SDLC — epic, story, bugfix, discovery, session management, documentation, and release.
65
+
66
+ ### Knowledge graph
67
+ Project context, patterns, and cross-session memory — queryable and persistent.
68
+
69
+ ```bash
70
+ rai graph query "testing patterns" --types pattern --limit 5
71
+ ```
72
+
73
+ ### Backlog management
74
+ Built-in adapters for Jira and filesystem-backed backlogs.
75
+
76
+ ```bash
77
+ rai backlog search "project = MYPROJECT AND status = 'In Progress'"
78
+ rai backlog create "Fix pagination bug" -p MYPROJECT -t Bug
79
+ rai backlog transition MYPROJECT-123 done
80
+ ```
81
+
82
+ ### Documentation publishing
83
+ Publish to Confluence, local filesystem, or both (dual-write).
84
+
85
+ ```bash
86
+ rai docs publish adr --title "ADR-045: Auth Architecture"
87
+ ```
88
+
89
+ ### Quality gates
90
+ Automated checks before commits and releases.
91
+
92
+ ```bash
93
+ rai gate check --all # Run all gates
94
+ rai release check # 10-point release checklist
95
+ ```
96
+
97
+ ### Session continuity
98
+ Memory that compounds across sessions — patterns, calibration, coaching corrections.
99
+
100
+ ```bash
101
+ rai session start --context # Loads everything from prior sessions
102
+ rai pattern add "Always validate frontmatter before writing"
103
+ ```
104
+
105
+ ### Multi-language discovery
106
+ Scan codebases and build knowledge graphs from: Python, TypeScript, JavaScript, C#, PHP, Dart, Svelte.
107
+
108
+ ```bash
109
+ rai discover scan src/ --language python --output summary
110
+ ```
111
+
112
+ ## CLI commands
113
+
114
+ 72 subcommands across 17 groups:
115
+
116
+ | Group | Commands |
117
+ |-------|----------|
118
+ | `init` | Initialize project governance |
119
+ | `session` | start, close, context, journal, doctor |
120
+ | `graph` | build, query, context |
121
+ | `pattern` | add, query |
122
+ | `backlog` | create, get, search, transition, update, link, comment |
123
+ | `docs` | publish, get, search |
124
+ | `skill` | list, validate, check-name, scaffold |
125
+ | `discover` | scan |
126
+ | `adapter` | list, check, validate, status |
127
+ | `mcp` | list, health, tools, call, install, scaffold |
128
+ | `gate` | list, check |
129
+ | `doctor` | diagnostics with --fix auto-remediation |
130
+ | `release` | check, publish |
131
+
132
+ ## Documentation
133
+
134
+ - **[Getting Started](https://docs.raiseframework.ai/)** — Install and run your first session
135
+ - **[Guides](https://docs.raiseframework.ai/guides/first-story/)** — Your First Story, Configuring Integrations, Bugfix Lifecycle
136
+ - **[CLI Reference](https://docs.raiseframework.ai/cli/)** — Every command, flag, and option
137
+ - **[Concepts](https://docs.raiseframework.ai/concepts/)** — Memory, Skills, Governance, Knowledge Graph
138
+
139
+ ## License
140
+
141
+ Apache 2.0 — see [LICENSE](https://github.com/humansys/raise/blob/main/LICENSE).
@@ -1,12 +1,11 @@
1
1
  [project]
2
2
  name = "raise-cli"
3
- version = "2.4.0a2"
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"}
7
7
  ]
8
- # README.md is at repo root — referenced via sdist include, not readme field
9
- # (hatch resolves readme relative to build temp dir, not source dir)
8
+ readme = "README.md"
10
9
  license = {text = "Apache-2.0"}
11
10
  requires-python = ">=3.12"
12
11
  keywords = ["ai", "governance", "cli", "software-engineering", "methodology"]
@@ -37,6 +36,7 @@ dependencies = [
37
36
  "tree-sitter-svelte>=1.0.2",
38
37
  "tree-sitter-language-pack>=0.13.0",
39
38
  "logfire-api>=4.0",
39
+ "httpx>=0.27.0",
40
40
  ]
41
41
 
42
42
  [project.optional-dependencies]
@@ -82,7 +82,6 @@ glossary = "raise_cli.governance.parsers.glossary:GlossaryParser"
82
82
  [project.entry-points."rai.hooks"]
83
83
  telemetry = "raise_cli.hooks.builtin.telemetry:TelemetryHook"
84
84
  gate-bridge = "raise_cli.hooks.builtin.gate_bridge:GateBridgeHook"
85
- memory-sync = "raise_cli.hooks.builtin.memory:MemoryMdSyncHook"
86
85
 
87
86
  [project.entry-points."rai.gates"]
88
87
  tests = "raise_cli.gates.builtin.tests:TestGate"
@@ -95,6 +94,7 @@ format = "raise_cli.gates.builtin.format:FormatGate"
95
94
  environment = "raise_cli.doctor.checks.environment:EnvironmentCheck"
96
95
  project = "raise_cli.doctor.checks.project:ProjectCheck"
97
96
  developer = "raise_cli.doctor.checks.developer:DeveloperCheck"
97
+ adapters = "raise_cli.doctor.checks.adapters:AdapterDoctorCheck"
98
98
 
99
99
  [project.entry-points."rai.adapters.pm"]
100
100
  filesystem = "raise_cli.adapters.filesystem:FilesystemPMAdapter"
@@ -107,6 +107,15 @@ confluence = "raise_cli.adapters.confluence_adapter:PythonApiConfluenceAdapter"
107
107
  [project.entry-points."rai.graph.backends"]
108
108
  local = "raise_core.graph.backends.filesystem:FilesystemGraphBackend"
109
109
 
110
+ [project.entry-points."rai.session.state_deriver"]
111
+ git = "raise_cli.session.derive:GitStateDeriver"
112
+
113
+ [project.entry-points."rai.session.registry"]
114
+ local = "raise_cli.session.registry:LocalSessionRegistry"
115
+
116
+ [project.entry-points."rai.session.monitor"]
117
+ local = "raise_cli.session.monitor:LocalWorkstreamMonitor"
118
+
110
119
  [tool.uv.sources]
111
120
  raise-core = { workspace = true }
112
121
 
@@ -42,7 +42,13 @@ class PythonApiConfluenceAdapter:
42
42
  def publish(
43
43
  self, doc_type: str, content: str, metadata: dict[str, Any]
44
44
  ) -> PublishResult:
45
- """Publish doc: resolve routing, find/create page, apply labels."""
45
+ """Publish doc: resolve parent and labels, find/create page.
46
+
47
+ Parent resolution priority (RAISE-605):
48
+ 1. metadata["parent_id"] — explicit override
49
+ 2. routing.parent_title — from config
50
+ 3. Error — no parent available
51
+ """
46
52
  title = metadata.get("title")
47
53
  if not title:
48
54
  return PublishResult(
@@ -51,26 +57,29 @@ class PythonApiConfluenceAdapter:
51
57
  )
52
58
 
53
59
  routing = self._config.resolve_routing(doc_type)
54
- if not routing:
55
- return PublishResult(
56
- success=False,
57
- message=f"No routing configured for doc_type '{doc_type}'",
58
- )
59
-
60
- labels = routing.labels
61
- parent_id: str | None = None
62
-
63
- # Resolve parent page fail if not found (reliability over convenience)
64
- parent_page = self._client.get_page_by_title(routing.parent_title)
65
- if not parent_page:
66
- return PublishResult(
67
- success=False,
68
- message=(
69
- f"Parent page '{routing.parent_title}' not found in Confluence. "
70
- "Create it first or fix routing config."
71
- ),
72
- )
73
- parent_id = parent_page.id
60
+ labels: list[str] = routing.labels if routing else []
61
+ parent_id: str | None = metadata.get("parent_id")
62
+
63
+ # Resolve parent: explicit > routing > error
64
+ if parent_id is None:
65
+ if not routing:
66
+ return PublishResult(
67
+ success=False,
68
+ message=(
69
+ f"No routing configured for doc_type '{doc_type}' "
70
+ "and no parent_id provided in metadata."
71
+ ),
72
+ )
73
+ parent_page = self._client.get_page_by_title(routing.parent_title)
74
+ if not parent_page:
75
+ return PublishResult(
76
+ success=False,
77
+ message=(
78
+ f"Parent page '{routing.parent_title}' not found in Confluence. "
79
+ "Create it first or fix routing config."
80
+ ),
81
+ )
82
+ parent_id = parent_page.id
74
83
 
75
84
  # Check if page already exists
76
85
  existing = self._client.get_page_by_title(title)
@@ -163,10 +163,38 @@ class ConfluenceClient:
163
163
 
164
164
  # ── Discovery ─────────────────────────────────────────────────────
165
165
 
166
+ def get_space_homepage_id(self, space_key: str) -> str | None:
167
+ """Get the homepage page ID for a space. Returns None if not found."""
168
+ try:
169
+ raw: Any = self._client.get_home_page_of_space(space_key) # type: ignore[no-untyped-call]
170
+ if isinstance(raw, dict) and "id" in raw:
171
+ return str(raw["id"]) # type: ignore[no-untyped-call]
172
+ return None
173
+ except ConfluenceError:
174
+ raise
175
+ except Exception as e:
176
+ raise self._map_error(e, f"get_space_homepage_id({space_key})") from e
177
+
166
178
  def get_spaces(self) -> list[SpaceInfo]:
167
- """List all accessible spaces."""
179
+ """List all accessible spaces.
180
+
181
+ Paginates through all results — ``get_all_spaces()`` returns only
182
+ one page (default limit=50), which misses spaces beyond that page.
183
+ RAISE-1187: discovered during S1130.4 dogfood.
184
+ """
168
185
  try:
169
- raw: dict[str, Any] = self._client.get_all_spaces() # type: ignore[no-untyped-call]
186
+ all_results: list[dict[str, Any]] = []
187
+ start = 0
188
+ limit = 100
189
+ while True:
190
+ raw: dict[str, Any] = self._client.get_all_spaces( # type: ignore[no-untyped-call]
191
+ start=start, limit=limit
192
+ )
193
+ results: list[dict[str, Any]] = raw.get("results", [])
194
+ all_results.extend(results)
195
+ if len(results) < limit:
196
+ break
197
+ start += limit
170
198
  return [
171
199
  SpaceInfo(
172
200
  key=s["key"],
@@ -174,7 +202,7 @@ class ConfluenceClient:
174
202
  url=s.get("_links", {}).get("webui", ""),
175
203
  type=s.get("type", "global"),
176
204
  )
177
- for s in raw.get("results", [])
205
+ for s in all_results
178
206
  ]
179
207
  except ConfluenceError:
180
208
  raise
@@ -201,10 +229,25 @@ class ConfluenceClient:
201
229
 
202
230
  # ── Search & Health ───────────────────────────────────────────────
203
231
 
232
+ @staticmethod
233
+ def _ensure_cql(query: str) -> str:
234
+ """Wrap plain text in CQL siteSearch if not already CQL.
235
+
236
+ CQL queries contain operators like ~, =, AND, OR, or known
237
+ predicates like type=, space=, text~. Plain text does not.
238
+ """
239
+ cql_indicators = ("~", "=", " AND ", " OR ", " ORDER BY ")
240
+ if any(op in query for op in cql_indicators):
241
+ return query
242
+ # Escape double quotes in user query
243
+ escaped = query.replace('"', '\\"')
244
+ return f'siteSearch ~ "{escaped}"'
245
+
204
246
  def search(self, cql: str, limit: int = 10) -> list[PageSummary]:
205
- """Search using CQL."""
247
+ """Search using CQL. Plain text queries are auto-wrapped."""
248
+ effective_cql = self._ensure_cql(cql)
206
249
  try:
207
- raw: dict[str, Any] = self._client.cql(cql, limit=limit) # type: ignore[no-untyped-call]
250
+ raw: dict[str, Any] = self._client.cql(effective_cql, limit=limit) # type: ignore[no-untyped-call]
208
251
  return [
209
252
  PageSummary(
210
253
  id=str(r["content"]["id"]),
@@ -217,7 +260,7 @@ class ConfluenceClient:
217
260
  except ConfluenceError:
218
261
  raise
219
262
  except Exception as e:
220
- raise self._map_error(e, f"search({cql!r})") from e
263
+ raise self._map_error(e, f"search({effective_cql!r})") from e
221
264
 
222
265
  def health(self) -> AdapterHealth:
223
266
  """Check connectivity by listing 1 space."""
@@ -225,9 +268,7 @@ class ConfluenceClient:
225
268
  self._client.get_all_spaces(limit=1) # type: ignore[no-untyped-call]
226
269
  return AdapterHealth(name="confluence", healthy=True)
227
270
  except Exception as e:
228
- return AdapterHealth(
229
- name="confluence", healthy=False, message=str(e)
230
- )
271
+ return AdapterHealth(name="confluence", healthy=False, message=str(e))
231
272
 
232
273
  # ── Internal ──────────────────────────────────────────────────────
233
274