marvisx-cli 0.3.8b4__tar.gz → 0.3.8b6__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 (658) hide show
  1. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/PKG-INFO +1 -1
  2. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/config.py +40 -0
  3. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/search.py +8 -0
  4. marvisx_cli-0.3.8b6/core/api/services/brain/llm/claude_cli.py +201 -0
  5. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/factory.py +13 -0
  6. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/embedding_service.py +392 -2
  7. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/embedding_router.py +4 -0
  8. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/search.py +89 -7
  9. marvisx_cli-0.3.8b6/core/cli/_onboarding.py +250 -0
  10. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/guides/marvis-way.md +23 -0
  11. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/marvis_doctor.py +53 -3
  12. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/marvis_init.py +6 -0
  13. marvisx_cli-0.3.8b6/core/cli/marvis_task.py +206 -0
  14. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/marvisx_cli.egg-info/PKG-INFO +1 -1
  15. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/marvisx_cli.egg-info/SOURCES.txt +3 -0
  16. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/pyproject.toml +1 -1
  17. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/LICENSE +0 -0
  18. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/MANIFEST.in +0 -0
  19. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/README.md +0 -0
  20. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/__init__.py +0 -0
  21. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/agents/__init__.py +0 -0
  22. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/agents/session_health.py +0 -0
  23. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/agents/session_manager.py +0 -0
  24. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/bin/marvisx-state-hook.py +0 -0
  25. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/db.py +0 -0
  26. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/dependencies/__init__.py +0 -0
  27. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/dependencies/tenant.py +0 -0
  28. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/main.py +0 -0
  29. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/__init__.py +0 -0
  30. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/_adapter.py +0 -0
  31. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/server.py +0 -0
  32. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/__init__.py +0 -0
  33. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/brain.py +0 -0
  34. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/graph.py +0 -0
  35. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/handoffs.py +0 -0
  36. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/ingest.py +0 -0
  37. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/learnings.py +0 -0
  38. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/projects.py +0 -0
  39. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/pull_requests.py +0 -0
  40. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/safety.py +0 -0
  41. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/search.py +0 -0
  42. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/tasks.py +0 -0
  43. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/workflow_playbooks/brainstorm.md +0 -0
  44. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/workflow_playbooks/compound.md +0 -0
  45. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/workflow_playbooks/plan.md +0 -0
  46. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/mcp/tools/workflows.py +0 -0
  47. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/middleware/__init__.py +0 -0
  48. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/middleware/tool_call_audit.py +0 -0
  49. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/__init__.py +0 -0
  50. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/auth.py +0 -0
  51. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/brain.py +0 -0
  52. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/common.py +0 -0
  53. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/costs.py +0 -0
  54. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/graph.py +0 -0
  55. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/graph_cosmo.py +0 -0
  56. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/graph_pr_impact.py +0 -0
  57. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/graph_ux.py +0 -0
  58. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/inbox.py +0 -0
  59. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/ingest_keys.py +0 -0
  60. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/kg.py +0 -0
  61. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/llm_config.py +0 -0
  62. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/monitoring.py +0 -0
  63. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/projects.py +0 -0
  64. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/sessions.py +0 -0
  65. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/tasks.py +0 -0
  66. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/teams.py +0 -0
  67. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/models/users.py +0 -0
  68. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/observability/__init__.py +0 -0
  69. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/observability/tracing.py +0 -0
  70. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/paths.py +0 -0
  71. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/rate_limit.py +0 -0
  72. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/rbac.py +0 -0
  73. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/__init__.py +0 -0
  74. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/_adapter.py +0 -0
  75. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/admin_pr_impact.py +0 -0
  76. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/admin_settings.py +0 -0
  77. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/agent.py +0 -0
  78. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/agent_tokens.py +0 -0
  79. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/app_settings.py +0 -0
  80. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/audit.py +0 -0
  81. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/auth.py +0 -0
  82. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/bench.py +0 -0
  83. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/brain.py +0 -0
  84. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/brain_directions.py +0 -0
  85. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/ci_checks.py +0 -0
  86. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/comments.py +0 -0
  87. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/costs.py +0 -0
  88. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/docs_coverage.py +0 -0
  89. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/docs_governance.py +0 -0
  90. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/documents.py +0 -0
  91. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/files.py +0 -0
  92. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/finder.py +0 -0
  93. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/graph.py +0 -0
  94. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/handoffs.py +0 -0
  95. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/inbox.py +0 -0
  96. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/ingest_api_keys.py +0 -0
  97. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/ingest_triage.py +0 -0
  98. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/judge.py +0 -0
  99. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/kg.py +0 -0
  100. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/learnings.py +0 -0
  101. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/llm_config.py +0 -0
  102. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/monitoring.py +0 -0
  103. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/notifications.py +0 -0
  104. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/pr_impact.py +0 -0
  105. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/projects.py +0 -0
  106. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/pull_requests.py +0 -0
  107. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/push.py +0 -0
  108. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/raci.py +0 -0
  109. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/search.py +0 -0
  110. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/sessions.py +0 -0
  111. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/settings.py +0 -0
  112. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/share_repo.py +0 -0
  113. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/status_updates.py +0 -0
  114. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/tags.py +0 -0
  115. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/tasks.py +0 -0
  116. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/teams.py +0 -0
  117. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/terminal.py +0 -0
  118. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/users.py +0 -0
  119. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/routers/webhooks.py +0 -0
  120. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/runtime_settings.py +0 -0
  121. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/security.py +0 -0
  122. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/__init__.py +0 -0
  123. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/_fts.py +0 -0
  124. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/audit.py +0 -0
  125. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/auto_approval.py +0 -0
  126. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/__init__.py +0 -0
  127. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/baseline.py +0 -0
  128. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/capabilities.py +0 -0
  129. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/cascade_rollup.py +0 -0
  130. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/compound_bridge.py +0 -0
  131. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/cycle.py +0 -0
  132. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/cycle_snapshot.py +0 -0
  133. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/digest_collector.py +0 -0
  134. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/direction.py +0 -0
  135. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/drift.py +0 -0
  136. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/drift_router.py +0 -0
  137. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/edge_metrics.py +0 -0
  138. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/events_reader.py +0 -0
  139. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/findings.py +0 -0
  140. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/findings_reader.py +0 -0
  141. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/jobs.py +0 -0
  142. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/journal.py +0 -0
  143. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/knowledge_forms.py +0 -0
  144. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/__init__.py +0 -0
  145. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/_runner.py +0 -0
  146. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/base.py +0 -0
  147. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/cache.py +0 -0
  148. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/constants.py +0 -0
  149. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/direction_alignment.py +0 -0
  150. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/finding_reasoning.py +0 -0
  151. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/finding_summary.py +0 -0
  152. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/grounding.py +0 -0
  153. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/journal_polish.py +0 -0
  154. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/local_gateway.py +0 -0
  155. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/parsers.py +0 -0
  156. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/llm/router_glue.py +0 -0
  157. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/memory_ops.py +0 -0
  158. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/models.py +0 -0
  159. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/owner_hint.py +0 -0
  160. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/recap.py +0 -0
  161. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/rules/__init__.py +0 -0
  162. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/rules/_signals.py +0 -0
  163. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/rules/dr1_activity_without_status.py +0 -0
  164. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/rules/dr2_decision_without_adr.py +0 -0
  165. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/rules/dr3_stale_open_loop.py +0 -0
  166. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/rules/dr4_docs_governance_drift.py +0 -0
  167. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/rules/dr5_playbook_changed.py +0 -0
  168. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/rules/dr6_external_update_unpropagated.py +0 -0
  169. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/rules/dr7_claimed_decision_gap.py +0 -0
  170. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/rules/dr8_direction_misalignment.py +0 -0
  171. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/runs_reader.py +0 -0
  172. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/scope.py +0 -0
  173. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/sources/__init__.py +0 -0
  174. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/sources/base.py +0 -0
  175. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/sources/git_kg.py +0 -0
  176. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/sources/handoffs.py +0 -0
  177. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/sources/ingestor.py +0 -0
  178. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/sources/learnings.py +0 -0
  179. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/sources/pir_tasks.py +0 -0
  180. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/temporal_recency.py +0 -0
  181. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/warehouse_consolidate.py +0 -0
  182. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/watermarks.py +0 -0
  183. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/brain/ws_emitter.py +0 -0
  184. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/cc_tasks_reader.py +0 -0
  185. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/chunking.py +0 -0
  186. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ci_service.py +0 -0
  187. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/claude_metrics.py +0 -0
  188. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/codex_metrics.py +0 -0
  189. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/conversation_reader.py +0 -0
  190. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/cost_service.py +0 -0
  191. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/crypto.py +0 -0
  192. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/docs_governance/__init__.py +0 -0
  193. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/docs_governance/confidence.py +0 -0
  194. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/docs_governance/config.py +0 -0
  195. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/docs_governance/enrichment.py +0 -0
  196. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/docs_governance/frontmatter_validator.py +0 -0
  197. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/docs_governance/hard_gates.py +0 -0
  198. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/docs_governance/triage_orchestrator.py +0 -0
  199. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/dream_cycle.py +0 -0
  200. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/embedding_backends/__init__.py +0 -0
  201. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/embedding_internal.py +0 -0
  202. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/event_dispatcher.py +0 -0
  203. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/events.py +0 -0
  204. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/git_ops.py +0 -0
  205. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/graph_cosmo_service.py +0 -0
  206. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/graph_ranker.py +0 -0
  207. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/graph_service.py +0 -0
  208. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/grounding/__init__.py +0 -0
  209. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/grounding/citations.py +0 -0
  210. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/grounding/verifier.py +0 -0
  211. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/inbox.py +0 -0
  212. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/inbox_digest.py +0 -0
  213. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/inbox_digest_deep_research.py +0 -0
  214. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/inbox_digest_jobs.py +0 -0
  215. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/inbox_gmail_sync.py +0 -0
  216. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/inbox_llm_classifier.py +0 -0
  217. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/inbox_source_identity.py +0 -0
  218. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/inbox_sources.py +0 -0
  219. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/inbox_taxonomy.py +0 -0
  220. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/inbox_tldr.py +0 -0
  221. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/inbox_triage.py +0 -0
  222. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/__init__.py +0 -0
  223. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/api_key_auth.py +0 -0
  224. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/auto_approve.py +0 -0
  225. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/classifier.py +0 -0
  226. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/confidence.py +0 -0
  227. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/dispatch.py +0 -0
  228. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/events.py +0 -0
  229. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/ignore_patterns.py +0 -0
  230. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/image_probe.py +0 -0
  231. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/ingress.py +0 -0
  232. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/insert_saga.py +0 -0
  233. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/llm/__init__.py +0 -0
  234. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/llm/anthropic_haiku.py +0 -0
  235. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/llm/base.py +0 -0
  236. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/llm/byok_provider.py +0 -0
  237. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/llm/classification_context.py +0 -0
  238. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/llm/config_store.py +0 -0
  239. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/llm/factory.py +0 -0
  240. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/llm/kg_enricher.py +0 -0
  241. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/llm/local_gateway.py +0 -0
  242. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/llm/local_vllm.py +0 -0
  243. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/llm/openai_nano.py +0 -0
  244. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/lock_advisory.py +0 -0
  245. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parser_router.py +0 -0
  246. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/__init__.py +0 -0
  247. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/docling_parser.py +0 -0
  248. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/docparse_gateway.py +0 -0
  249. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/docx_parser.py +0 -0
  250. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/folder_unpacker.py +0 -0
  251. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/gateway_aux.py +0 -0
  252. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/image_parser.py +0 -0
  253. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/internal_markdown.py +0 -0
  254. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/ocr_gateway.py +0 -0
  255. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/ocr_pdf_parser.py +0 -0
  256. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/pdf_types.py +0 -0
  257. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/transcript_parser.py +0 -0
  258. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/vision_gateway.py +0 -0
  259. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/xlsx_parser.py +0 -0
  260. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/parsers/zip_unpacker.py +0 -0
  261. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/preflight.py +0 -0
  262. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/routing_policy.py +0 -0
  263. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/serializers/__init__.py +0 -0
  264. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/serializers/xlsx_to_markdown.py +0 -0
  265. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/skip_log.py +0 -0
  266. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/ingest/watcher.py +0 -0
  267. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg/__init__.py +0 -0
  268. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg/audit.py +0 -0
  269. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg/communities.py +0 -0
  270. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg/community_summary.py +0 -0
  271. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg/graph_lane.py +0 -0
  272. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg/hybrid_search.py +0 -0
  273. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg/lens.py +0 -0
  274. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg/pr_impact.py +0 -0
  275. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg/queries.py +0 -0
  276. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg/ranking.py +0 -0
  277. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg/rrf.py +0 -0
  278. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/kg_watcher_control.py +0 -0
  279. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/local_llm/__init__.py +0 -0
  280. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/local_llm/async_client.py +0 -0
  281. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/local_llm/client.py +0 -0
  282. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/local_llm/url_validator.py +0 -0
  283. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/metrics_collector.py +0 -0
  284. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/metrics_providers.py +0 -0
  285. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/model_registry.py +0 -0
  286. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/model_router.py +0 -0
  287. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/n8n_client.py +0 -0
  288. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/newsletter_llm_gateway.py +0 -0
  289. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/notification_service.py +0 -0
  290. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/openai_responses.py +0 -0
  291. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/opencode_metrics.py +0 -0
  292. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/opencode_sessions.py +0 -0
  293. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/pii_redactor.py +0 -0
  294. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/pr_impact_pipeline/__init__.py +0 -0
  295. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/pr_impact_pipeline/differ.py +0 -0
  296. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/pr_impact_pipeline/dispatcher.py +0 -0
  297. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/pr_impact_pipeline/gc.py +0 -0
  298. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/pr_impact_pipeline/languages.py +0 -0
  299. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/pr_impact_pipeline/parser.py +0 -0
  300. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/pr_impact_pipeline/writer.py +0 -0
  301. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/pr_service.py +0 -0
  302. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/project_paths.py +0 -0
  303. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/project_status_updates.py +0 -0
  304. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/providers.py +0 -0
  305. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/push_service.py +0 -0
  306. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/reminder_service.py +0 -0
  307. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/runas.py +0 -0
  308. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/salience_service.py +0 -0
  309. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/security_collector.py +0 -0
  310. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/session_catalog.py +0 -0
  311. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/session_metrics_service.py +0 -0
  312. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/session_ops.py +0 -0
  313. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/session_state.py +0 -0
  314. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/share_links.py +0 -0
  315. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/task_transitions.py +0 -0
  316. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/temporal_tiebreak.py +0 -0
  317. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/temporal_write.py +0 -0
  318. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/terminal_metrics.py +0 -0
  319. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/terminal_metrics_dump.py +0 -0
  320. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/tmux.py +0 -0
  321. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/webhook_service.py +0 -0
  322. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/services/workspace_sync.py +0 -0
  323. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/templates/__init__.py +0 -0
  324. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/templates/markdown_share.py +0 -0
  325. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/terminal.py +0 -0
  326. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/__init__.py +0 -0
  327. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_agent_facing_auth_dependencies.py +0 -0
  328. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_audit_permissions.py +0 -0
  329. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_backfill_session_conversations.py +0 -0
  330. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_backfill_working_seconds_msg.py +0 -0
  331. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_claude_metrics.py +0 -0
  332. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_codex_metrics.py +0 -0
  333. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_config_env_aliases.py +0 -0
  334. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_finder_paths.py +0 -0
  335. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_git_ops_merge.py +0 -0
  336. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_graph_freshness.py +0 -0
  337. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_graph_freshness_flag.py +0 -0
  338. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_graph_neighbors_denoise.py +0 -0
  339. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_graph_summary.py +0 -0
  340. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_kg_claims_builder.py +0 -0
  341. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_kg_claims_wire.py +0 -0
  342. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_kg_trust_write_path.py +0 -0
  343. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_learnings_check_search.py +0 -0
  344. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_learnings_create_pre148.py +0 -0
  345. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_metrics_providers.py +0 -0
  346. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_migration_087.py +0 -0
  347. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_migration_088.py +0 -0
  348. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_migration_089.py +0 -0
  349. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_migration_149.py +0 -0
  350. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_openai_responses.py +0 -0
  351. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_opencode_metrics.py +0 -0
  352. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_opencode_sessions.py +0 -0
  353. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_populate_decay_flag.py +0 -0
  354. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_pr_workflow_e2e.py +0 -0
  355. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_projects_handoffs.py +0 -0
  356. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_providers.py +0 -0
  357. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_require_scope_empty_deny.py +0 -0
  358. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_safety_bridge.py +0 -0
  359. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_session_brief_temporal.py +0 -0
  360. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_session_catalog.py +0 -0
  361. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_session_conversations.py +0 -0
  362. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_session_metrics_service.py +0 -0
  363. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_session_resume_paths.py +0 -0
  364. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_session_theme_mode_migration.py +0 -0
  365. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_sessions_rbac.py +0 -0
  366. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_share_edit.py +0 -0
  367. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_share_repo.py +0 -0
  368. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_temporal_recency.py +0 -0
  369. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_terminal_session_manager.py +0 -0
  370. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_terminal_upload.py +0 -0
  371. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_tmux.py +0 -0
  372. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_workspace_sync.py +0 -0
  373. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/tests/test_ws_ticket_in_memory.py +0 -0
  374. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/__init__.py +0 -0
  375. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/_context.py +0 -0
  376. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/_errors.py +0 -0
  377. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/_roles.py +0 -0
  378. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/audit.py +0 -0
  379. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/brain.py +0 -0
  380. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/costs.py +0 -0
  381. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/graph.py +0 -0
  382. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/handoffs.py +0 -0
  383. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/ingest_triage.py +0 -0
  384. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/learnings.py +0 -0
  385. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/projects.py +0 -0
  386. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/pull_requests.py +0 -0
  387. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/use_cases/tasks.py +0 -0
  388. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/api/visibility.py +0 -0
  389. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/README.md +0 -0
  390. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/__init__.py +0 -0
  391. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/_brain_opportunistic.py +0 -0
  392. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/_brain_schedule.py +0 -0
  393. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/_index_source.py +0 -0
  394. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/_runtime_ctx.py +0 -0
  395. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/_transmute.py +0 -0
  396. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/_update_check.py +0 -0
  397. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/guides/__init__.py +0 -0
  398. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/marvis_account.py +0 -0
  399. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/marvis_brain.py +0 -0
  400. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/marvis_feedback.py +0 -0
  401. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/marvis_governance.py +0 -0
  402. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/marvis_guide.py +0 -0
  403. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/marvis_hooks.py +0 -0
  404. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/marvis_mcp.py +0 -0
  405. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/marvis_runtime.py +0 -0
  406. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/cli/marvis_telemetry.py +0 -0
  407. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/platform/__init__.py +0 -0
  408. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/_drift_check.py +0 -0
  409. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/_frontmatter.py +0 -0
  410. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/_graph_writer.py +0 -0
  411. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/ast_parser.py +0 -0
  412. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/__init__.py +0 -0
  413. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/_config.sh +0 -0
  414. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/block-dangerous-bash.sh +0 -0
  415. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/block-db-direct-write.sh +0 -0
  416. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/block-push-no-task.sh +0 -0
  417. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/block-staging-to-prod.sh +0 -0
  418. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/block-subtree-push.sh +0 -0
  419. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/config.json +0 -0
  420. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/enforce-no-merge-main.sh +0 -0
  421. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/enforce-worktree.sh +0 -0
  422. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/quality-gate.sh +0 -0
  423. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/safety_bridge.py +0 -0
  424. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/install_hooks/secret-scan.sh +0 -0
  425. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/migrate_spike_node_ids.py +0 -0
  426. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/populate_artifacts.py +0 -0
  427. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/populate_cross_project.py +0 -0
  428. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/populate_inbox_nodes.py +0 -0
  429. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/populate_pr_impact.py +0 -0
  430. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/populate_project_nodes.py +0 -0
  431. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/populate_touch_counter.py +0 -0
  432. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/reparse_failed.py +0 -0
  433. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/scripts/safety_bridge.py +0 -0
  434. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/telemetry/__init__.py +0 -0
  435. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/telemetry/client.py +0 -0
  436. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/telemetry/entitlements.py +0 -0
  437. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/telemetry/rollup.py +0 -0
  438. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/telemetry/schema.py +0 -0
  439. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/telemetry/sender.py +0 -0
  440. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/wizard/__init__.py +0 -0
  441. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/wizard/byok_vault.py +0 -0
  442. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/wizard/defaults.py +0 -0
  443. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/wizard/state.py +0 -0
  444. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/wizard/steps.py +0 -0
  445. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/core/wizard/validation.py +0 -0
  446. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/marvisx_cli.egg-info/dependency_links.txt +0 -0
  447. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/marvisx_cli.egg-info/entry_points.txt +0 -0
  448. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/marvisx_cli.egg-info/requires.txt +0 -0
  449. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/marvisx_cli.egg-info/top_level.txt +0 -0
  450. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/001_initial.sql +0 -0
  451. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/002_tasks.sql +0 -0
  452. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/003_session_management.sql +0 -0
  453. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/004_projects_comments.sql +0 -0
  454. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/005_session_intelligence.sql +0 -0
  455. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/006_settings.sql +0 -0
  456. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/007_task_scoring.sql +0 -0
  457. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/008_cost_tracking.sql +0 -0
  458. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/009_session_card_metrics.sql +0 -0
  459. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/010_monitoring.sql +0 -0
  460. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/012_agent_api.sql +0 -0
  461. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/013_session_complete.sql +0 -0
  462. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/015_pull_requests.sql +0 -0
  463. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/015_pull_requests_down.sql +0 -0
  464. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/016_users_raci.sql +0 -0
  465. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/017_task_cost_entries.sql +0 -0
  466. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/018_agents.sql +0 -0
  467. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/018_agents_down.sql +0 -0
  468. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/019_review_feedback.sql +0 -0
  469. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/020_pr_commit_sha.sql +0 -0
  470. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/021_webhook_events.sql +0 -0
  471. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/022_devx_agent_managed.sql +0 -0
  472. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/022_devx_agent_managed_down.sql +0 -0
  473. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/023_devx_p1_gate.sql +0 -0
  474. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/023_devx_p1_gate_down.sql +0 -0
  475. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/024_chat_messages.sql +0 -0
  476. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/024_pr_conversation_id.sql +0 -0
  477. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/024_task_indexes.sql +0 -0
  478. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/024_task_indexes_down.sql +0 -0
  479. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/025_audit_log.sql +0 -0
  480. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/026_agent_tokens.sql +0 -0
  481. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/027_teams_auth_phase_b.sql +0 -0
  482. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/028_learnings.sql +0 -0
  483. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/029_team_roles.sql +0 -0
  484. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/030_finder_pins.sql +0 -0
  485. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/031_pr_deploy_status.sql +0 -0
  486. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/032_task_reminders.sql +0 -0
  487. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/033_events_retry_count.sql +0 -0
  488. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/033_session_owner.sql +0 -0
  489. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/034_notifications.sql +0 -0
  490. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/035_shared_links.sql +0 -0
  491. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/036_session_index_upgrade.sql +0 -0
  492. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/037_pr_approval.sql +0 -0
  493. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/038_pr_submitted_by.sql +0 -0
  494. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/039_push_subscriptions.sql +0 -0
  495. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/040_semantic_search.sql +0 -0
  496. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/041_workspaces.sql +0 -0
  497. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/042_oidc_providers.sql +0 -0
  498. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/043_ci_checks.sql +0 -0
  499. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/044_agent_metrics.sql +0 -0
  500. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/045_documents_doc_type.sql +0 -0
  501. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/046_salience.sql +0 -0
  502. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/047_seed_missing_agents.sql +0 -0
  503. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/048_fix_agent_paths_roles.sql +0 -0
  504. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/049_agent_role_and_learnings_schema.sql +0 -0
  505. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/050_session_provider.sql +0 -0
  506. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/051_session_launch_profile.sql +0 -0
  507. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/052_session_theme_mode.sql +0 -0
  508. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/052_task_kind.sql +0 -0
  509. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/053_inbox_items.sql +0 -0
  510. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/054_inbox_triage_contract.sql +0 -0
  511. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/055_inbox_topic_treatment.sql +0 -0
  512. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/056_inbox_treatment_read_save.sql +0 -0
  513. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/057_session_theme_mode_backfill.sql +0 -0
  514. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/058_inbox_item_status_lifecycle.sql +0 -0
  515. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/059_inbox_tldr_and_source_scores.sql +0 -0
  516. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/060_newsletter.sql +0 -0
  517. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/061_inbox_redesign.sql +0 -0
  518. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/062_fix_inbox_sources_backfill.sql +0 -0
  519. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/063_task_completion_mode.sql +0 -0
  520. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/064_judge_mode_setting.sql +0 -0
  521. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/065_knowledge_graph_spike.sql +0 -0
  522. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/066_digest_ranking_inputs.sql +0 -0
  523. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/066_kg_artifact_nodes.sql +0 -0
  524. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/067_inbox_digest_selections.sql +0 -0
  525. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/067_kg_temporal.sql +0 -0
  526. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/068_inbox_digest_app_settings.sql +0 -0
  527. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/068_kg_touch_counter.sql +0 -0
  528. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/069_kg_doc_types.sql +0 -0
  529. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/070_digest_ranking_inputs_recovery.sql +0 -0
  530. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/071_inbox_digest_selections_recovery.sql +0 -0
  531. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/072_inbox_digest_app_settings_recovery.sql +0 -0
  532. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/073_kg_cross_project.sql +0 -0
  533. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/073_kg_cross_project_down.sql +0 -0
  534. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/074_kg_infra_types.sql +0 -0
  535. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/074_kg_infra_types_down.sql +0 -0
  536. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/075_kg_file_state_recovery.sql +0 -0
  537. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/075_kg_file_state_recovery_down.sql +0 -0
  538. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/076_kg_watcher_state.sql +0 -0
  539. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/076_kg_watcher_state_down.sql +0 -0
  540. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/077_kg_doc_types_extend.sql +0 -0
  541. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/077_kg_doc_types_extend_down.sql +0 -0
  542. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/078_kg_fts5.sql +0 -0
  543. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/078_kg_fts5_down.sql +0 -0
  544. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/079_kg_missing_indexes.sql +0 -0
  545. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/079_kg_missing_indexes_down.sql +0 -0
  546. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/080_kg_fts5_extended.sql +0 -0
  547. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/080_kg_fts5_extended_down.sql +0 -0
  548. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/081_kg_lens_indexes.sql +0 -0
  549. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/081_kg_lens_indexes_down.sql +0 -0
  550. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/082_kg_pins.sql +0 -0
  551. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/082_kg_pins_down.sql +0 -0
  552. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/083_kg_graph_nodes_degree.sql +0 -0
  553. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/083_kg_graph_nodes_degree_down.sql +0 -0
  554. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/084_drop_legacy_scheduler_tables.sql +0 -0
  555. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/084_drop_legacy_scheduler_tables_down.sql +0 -0
  556. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/085_kg_edge_resolves_to.sql +0 -0
  557. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/085_kg_edge_resolves_to_down.sql +0 -0
  558. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/086_project_status_updates_feed.sql +0 -0
  559. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/086_project_status_updates_feed_down.sql +0 -0
  560. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/087_session_metrics_dual.sql +0 -0
  561. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/087_session_metrics_dual_down.sql +0 -0
  562. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/088_rename_context_pct_legacy.sql +0 -0
  563. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/088_rename_context_pct_legacy_down.sql +0 -0
  564. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/089_session_metrics_equivalent_cost.sql +0 -0
  565. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/089_session_metrics_equivalent_cost_down.sql +0 -0
  566. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/090_kg_inbox_node_type.sql +0 -0
  567. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/090_kg_inbox_node_type_down.sql +0 -0
  568. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/091_kg_inbox_node_type_check.sql +0 -0
  569. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/091_kg_inbox_node_type_check_down.sql +0 -0
  570. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/092_sessions_activity_state_ts.sql +0 -0
  571. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/092_sessions_activity_state_ts_down.sql +0 -0
  572. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/093_sessions_activity_state_column.sql +0 -0
  573. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/093_sessions_activity_state_column_down.sql +0 -0
  574. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/094_ingest_pending.sql +0 -0
  575. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/094_ingest_pending_down.sql +0 -0
  576. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/095_kg_intent_first.sql +0 -0
  577. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/095_kg_intent_first_down.sql +0 -0
  578. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/096_kg_xlsx_artifact_prefix.sql +0 -0
  579. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/096_kg_xlsx_artifact_prefix_down.sql +0 -0
  580. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/097_ingest_change_history.sql +0 -0
  581. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/097_ingest_change_history_down.sql +0 -0
  582. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/098_kg_node_type_business.sql +0 -0
  583. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/098_kg_node_type_business_down.sql +0 -0
  584. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/099_kg_edges_restore_weight.sql +0 -0
  585. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/099_kg_edges_restore_weight_down.sql +0 -0
  586. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/100_kg_enriched_at.sql +0 -0
  587. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/100_kg_enriched_at_down.sql +0 -0
  588. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/101_local_llm_shadow_comparisons.sql +0 -0
  589. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/101_local_llm_shadow_comparisons_down.sql +0 -0
  590. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/102_promote_llm_costs.sql +0 -0
  591. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/102_promote_llm_costs_down.sql +0 -0
  592. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/103_ingest_skipped_log.sql +0 -0
  593. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/103_ingest_skipped_log_down.sql +0 -0
  594. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/120_docs_governance.sql +0 -0
  595. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/120_docs_governance_down.sql +0 -0
  596. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/121_notification_event_fk_cleanup.sql +0 -0
  597. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/121_notification_event_fk_cleanup_down.sql +0 -0
  598. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/122_docs_drift_history.sql +0 -0
  599. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/122_docs_drift_history_down.sql +0 -0
  600. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/123_ingest_parser_waiting_status.sql +0 -0
  601. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/123_ingest_parser_waiting_status_down.sql +0 -0
  602. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/124_heypocket_recordings.sql +0 -0
  603. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/124_heypocket_recordings_down.sql +0 -0
  604. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/125_kg_node_type_record.sql +0 -0
  605. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/125_kg_node_type_record_down.sql +0 -0
  606. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/126_ingest_terminal_upload_source_kind.sql +0 -0
  607. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/126_ingest_terminal_upload_source_kind_down.sql +0 -0
  608. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/127_brain_v1_substrate.sql +0 -0
  609. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/127_brain_v1_substrate_down.sql +0 -0
  610. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/128_brain_drift_signals.sql +0 -0
  611. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/128_brain_drift_signals_down.sql +0 -0
  612. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/129_brain_memory_operations.sql +0 -0
  613. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/129_brain_memory_operations_down.sql +0 -0
  614. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/130_brain_findings.sql +0 -0
  615. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/130_brain_findings_down.sql +0 -0
  616. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/132_kg_pr_modifies.sql +0 -0
  617. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/132_kg_pr_modifies_down.sql +0 -0
  618. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/133_brain_v1_2_direction_schema.sql +0 -0
  619. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/133_brain_v1_2_direction_schema_down.sql +0 -0
  620. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/134_brain_journal_narrative_polished.sql +0 -0
  621. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/134_brain_journal_narrative_polished_down.sql +0 -0
  622. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/135_kg_edges_provider.sql +0 -0
  623. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/136_documents_fts.sql +0 -0
  624. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/137_promote_llm_costs.sql +0 -0
  625. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/137_promote_llm_costs_down.sql +0 -0
  626. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/138_ingest_api_keys.sql +0 -0
  627. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/138_ingest_api_keys_down.sql +0 -0
  628. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/139_ingest_pending_ingress.sql +0 -0
  629. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/139_ingest_pending_ingress_down.sql +0 -0
  630. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/140_ingest_idempotency_quota.sql +0 -0
  631. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/140_ingest_idempotency_quota_down.sql +0 -0
  632. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/141_ingest_pending_metadata.sql +0 -0
  633. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/141_ingest_pending_metadata_down.sql +0 -0
  634. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/142_llm_function_config.sql +0 -0
  635. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/142_llm_function_config_down.sql +0 -0
  636. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/143_kg_code_embeddings.sql +0 -0
  637. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/143_kg_code_embeddings_down.sql +0 -0
  638. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/144_notifications_pending_sync_index.sql +0 -0
  639. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/145_audit_log_immutable.sql +0 -0
  640. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/145_audit_log_immutable_down.sql +0 -0
  641. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/146_drop_kg_backup_tables.sql +0 -0
  642. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/146_drop_kg_backup_tables_down.sql +0 -0
  643. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/147_chunks.sql +0 -0
  644. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/147_chunks_down.sql +0 -0
  645. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/148_bitemporal_learnings.sql +0 -0
  646. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/148_bitemporal_learnings_down.sql +0 -0
  647. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/149_kg_trust_columns.sql +0 -0
  648. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/149_kg_trust_columns_down.sql +0 -0
  649. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/migrations/__init__.py +0 -0
  650. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/projects/_template/context.md +0 -0
  651. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/projects/_template/docs/brainstorms/YYYY-MM-DD-example-brainstorm.md +0 -0
  652. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/projects/_template/docs/plans/YYYY-MM-DD-example-plan.md +0 -0
  653. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/projects/_template/docs/solutions/YYYY-MM-DD-example-solution.md +0 -0
  654. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/projects/_template/input/README.md +0 -0
  655. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/projects/_template/memory/handoff.md +0 -0
  656. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/projects/_template/output/README.md +0 -0
  657. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/projects/_template/project.yaml +0 -0
  658. {marvisx_cli-0.3.8b4 → marvisx_cli-0.3.8b6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: marvisx-cli
3
- Version: 0.3.8b4
3
+ Version: 0.3.8b6
4
4
  Summary: MarvisX OSS — agent-native company-brain CLI runtime (init, status, brief, triage)
5
5
  Author: MarvisX maintainers
6
6
  License: BSL-1.1
@@ -492,6 +492,37 @@ class Settings(BaseSettings):
492
492
  default=False, alias="MARVIS_KG_CLAIMS"
493
493
  )
494
494
 
495
+ # Memory-freshness v2a Phase 1 (B-fix, DEFAULT OFF). The documents_fts
496
+ # INSERT/UPDATE triggers (migration 136) write file_path into the content
497
+ # column, so every doc written AFTER the one-time migration backfill has NO
498
+ # body in the lexical lane (prod 2026-06-09: 100% of recent docs degraded
499
+ # → the BM25 lane sees OLD bodies but never NEW ones — a direct stale-
500
+ # retrieval mechanism). When True, every documents upsert path additionally
501
+ # overwrites the trigger-degraded FTS row with the real title+body
502
+ # (refresh_documents_fts_row). When False the refresh helper is a no-op and
503
+ # behavior is byte-identical to today. The one-shot backfill script
504
+ # (scripts/backfill_documents_fts.py) repairs historical rows; in prod the
505
+ # flag must flip ON at backfill time and stay on, otherwise the next doc
506
+ # update re-degrades its row. See plan
507
+ # 2026-06-09-feat-memory-freshness-v2a-retrieval.
508
+ fts_bodies_enabled: bool = Field(
509
+ default=False, alias="MARVIS_FTS_BODIES"
510
+ )
511
+
512
+ # Memory-freshness v2a Phase 2 (A-span, DEFAULT OFF). When False the search
513
+ # read path never touches the chunks/vec_chunks sidecars and the response is
514
+ # byte-identical to today (no span_* fields populated). When True (and
515
+ # MARVIS_CHUNKING populated the sidecars), the semantic lane max-pools
516
+ # chunk-KNN hits into the doc ranking and each file-backed hit carries the
517
+ # winning chunk's span expanded to line boundaries ±12 lines (span_text /
518
+ # span_path / span_line_start / span_line_end) so the agent can answer FROM
519
+ # the search result without a follow-up Read. Write-side chunking stays
520
+ # gated by MARVIS_CHUNKING (env, read per-call). See plan
521
+ # 2026-06-09-feat-memory-freshness-v2a-retrieval.
522
+ search_spans_enabled: bool = Field(
523
+ default=False, alias="MARVIS_SEARCH_SPANS"
524
+ )
525
+
495
526
  # Track 2 #3c — community summaries in the brief (GraphRAG global-search,
496
527
  # DEFAULT OFF). When False the brief is byte-identical to today: the
497
528
  # communities/community_summary modules are a flag-gated library + seam,
@@ -534,6 +565,15 @@ class Settings(BaseSettings):
534
565
  brain_llm_polish_enabled: bool = Field(
535
566
  default=True, alias="BRAIN_LLM_POLISH_ENABLED"
536
567
  )
568
+ # P1: pick the Brain LLM backend. "gateway" (default, unchanged) = the HTTP
569
+ # Mac-gateway client (requires BRAIN_LLM_GATEWAY_API_KEY). "claude_cli" = run
570
+ # `claude -p` headless on the user's Claude Code subscription (NO API key) —
571
+ # see core/api/services/brain/llm/claude_cli.py.
572
+ brain_llm_provider: Literal["gateway", "claude_cli"] = Field(
573
+ default="gateway", alias="BRAIN_LLM_PROVIDER"
574
+ )
575
+ # Path/name of the `claude` binary for the claude_cli provider.
576
+ marvis_claude_bin: str = Field(default="claude", alias="MARVIS_CLAUDE_BIN")
537
577
  brain_llm_journal_polish_enabled: bool = Field(
538
578
  default=True, alias="BRAIN_LLM_JOURNAL_POLISH_ENABLED"
539
579
  )
@@ -26,6 +26,14 @@ class SearchHit(BaseModel):
26
26
  edge_path: list[str] | None = None
27
27
  edge_path_summary: str | None = None
28
28
  rrf_score: float | None = None
29
+ # Memory-freshness v2a Phase 2 (A-span, MARVIS_SEARCH_SPANS): the winning
30
+ # chunk's text expanded to line boundaries ±12 lines, so the agent answers
31
+ # FROM the result without a follow-up Read. None when the flag is off, the
32
+ # hit is row-backed (task/learning/inbox), or the source file is gone.
33
+ span_text: str | None = None
34
+ span_path: str | None = None
35
+ span_line_start: int | None = None
36
+ span_line_end: int | None = None
29
37
 
30
38
 
31
39
  class SearchResponse(BaseModel):
@@ -0,0 +1,201 @@
1
+ # v1.0.0 - 2026-06-09 - P1: claude -p (Claude Code headless) provider for the Brain.
2
+ """Brain LLM backend that runs `claude -p` (Claude Code headless) as a subprocess.
3
+
4
+ The brain runs on the user's Claude Code **subscription** — zero API key. Selected
5
+ with `BRAIN_LLM_PROVIDER=claude_cli`; the default `gateway` path is unchanged.
6
+
7
+ Same `BrainLLMService` contract as `LocalGatewayBrainService` (call_polish / call_json
8
+ / aclose + model / grounding_strict). Only the transport differs: instead of an HTTP
9
+ chat.completion, we exec `claude -p --output-format json`, write the user prompt to
10
+ **stdin**, and read the single-result envelope. Verified flags/schema against the
11
+ installed binary (2026-06-09): envelope `{result: str, is_error: bool, …}`.
12
+
13
+ CRITICAL: `claude -p` is an AGENT by default (loads the Claude Code system prompt,
14
+ may use tools). For pure generation we pass `--allowedTools ""` (no tools),
15
+ `--system-prompt <brain>` (replace, not append) + `--exclude-dynamic-system-prompt-sections`
16
+ (strip the agentic preamble). Everything fails SOFT: any error/timeout/non-zero
17
+ exit/malformed JSON → PolishResult.failed (or None for call_json) → the brain
18
+ degrades to its deterministic baseline, never a crash.
19
+ """
20
+ from __future__ import annotations
21
+
22
+ import asyncio
23
+ import json
24
+ import logging
25
+ import os
26
+ import shutil
27
+ from contextlib import suppress
28
+ from typing import Any
29
+
30
+ from core.api.services.brain.llm.base import PolishPurpose, PolishResult
31
+ from core.api.services.brain.llm.direction_alignment import (
32
+ classify_direction_alignment_impl,
33
+ )
34
+ from core.api.services.brain.llm.local_gateway import _project_polished_fields
35
+ from core.api.services.brain.llm.parsers import ParseError, parse_json_or_raise
36
+
37
+ logger = logging.getLogger(__name__)
38
+
39
+
40
+ class ClaudeCliBrainService:
41
+ """Brain polish via `claude -p` headless on the local Claude Code subscription."""
42
+
43
+ def __init__(
44
+ self,
45
+ *,
46
+ model: str,
47
+ binary: str = "claude",
48
+ timeout_seconds: int = 60,
49
+ semaphore_size: int = 1,
50
+ grounding_strict: bool = False,
51
+ ) -> None:
52
+ self._model = model or ""
53
+ self._binary = binary or "claude"
54
+ self._timeout_seconds = max(5, int(timeout_seconds))
55
+ # Subprocess is heavy (CLI boot per call); keep concurrency low.
56
+ self._semaphore = asyncio.Semaphore(max(1, int(semaphore_size)))
57
+ self._grounding_strict = grounding_strict
58
+
59
+ @property
60
+ def model(self) -> str:
61
+ return self._model
62
+
63
+ @property
64
+ def grounding_strict(self) -> bool:
65
+ return self._grounding_strict
66
+
67
+ async def aclose(self) -> None:
68
+ # No persistent client/process to release.
69
+ return None
70
+
71
+ # ----------------------------------------------------------------- #
72
+ # subprocess transport #
73
+ # ----------------------------------------------------------------- #
74
+
75
+ async def _run(self, *, system_prompt: str, user_prompt: str) -> tuple[str | None, str]:
76
+ """Run `claude -p` once. Returns (content, "") on success, (None, reason) on
77
+ any failure. `content` is the assistant text (the envelope's `result`)."""
78
+ if not os.path.isabs(self._binary) and shutil.which(self._binary) is None:
79
+ return (None, "claude_not_on_path")
80
+
81
+ argv = [
82
+ self._binary,
83
+ "-p",
84
+ "--output-format", "json",
85
+ "--allowedTools", "", # no tools → pure generation, no agent loop
86
+ "--exclude-dynamic-system-prompt-sections", # drop the Claude Code agentic preamble
87
+ "--system-prompt", system_prompt,
88
+ ]
89
+ if self._model:
90
+ argv += ["--model", self._model]
91
+
92
+ async with self._semaphore:
93
+ try:
94
+ proc = await asyncio.create_subprocess_exec(
95
+ *argv,
96
+ stdin=asyncio.subprocess.PIPE,
97
+ stdout=asyncio.subprocess.PIPE,
98
+ stderr=asyncio.subprocess.PIPE,
99
+ )
100
+ except Exception as exc: # binary missing / exec error
101
+ return (None, f"spawn_failed:{exc}")
102
+ try:
103
+ out, err = await asyncio.wait_for(
104
+ proc.communicate(user_prompt.encode("utf-8")),
105
+ timeout=self._timeout_seconds,
106
+ )
107
+ except asyncio.TimeoutError:
108
+ proc.kill()
109
+ with suppress(Exception):
110
+ await proc.wait()
111
+ return (None, "timeout")
112
+ except Exception as exc:
113
+ return (None, f"communicate_failed:{exc}")
114
+
115
+ if proc.returncode != 0:
116
+ tail = err.decode("utf-8", "replace")[:200] if err else ""
117
+ return (None, f"exit_{proc.returncode}:{tail}")
118
+
119
+ try:
120
+ env = json.loads(out.decode("utf-8"))
121
+ except Exception:
122
+ return (None, "envelope_not_json")
123
+ if not isinstance(env, dict):
124
+ return (None, "envelope_not_object")
125
+ if env.get("is_error"):
126
+ return (None, f"claude_error:{str(env.get('result'))[:200]}")
127
+
128
+ content = env.get("result")
129
+ if not isinstance(content, str) or not content.strip():
130
+ # Tolerant of schema drift: fall back to the first non-empty string field.
131
+ content = next(
132
+ (v for v in env.values() if isinstance(v, str) and v.strip()), ""
133
+ )
134
+ if not content:
135
+ return (None, "empty_result")
136
+ return (content, "")
137
+
138
+ # ----------------------------------------------------------------- #
139
+ # BrainLLMService contract #
140
+ # ----------------------------------------------------------------- #
141
+
142
+ async def call_polish(
143
+ self,
144
+ *,
145
+ purpose: PolishPurpose,
146
+ system_prompt: str,
147
+ user_prompt: str,
148
+ max_tokens: int,
149
+ idempotency_key: str | None = None,
150
+ ) -> PolishResult:
151
+ """Issue the polish call. Never raises — returns PolishResult.failed on errors.
152
+ Shares the content→PolishResult projection with the gateway provider."""
153
+ content, reason = await self._run(system_prompt=system_prompt, user_prompt=user_prompt)
154
+ if content is None:
155
+ logger.warning("brain_claude_cli_polish_failed purpose=%s reason=%s", purpose, reason)
156
+ return PolishResult.failed(purpose=purpose, reason=reason, model=self._model)
157
+ try:
158
+ parsed = parse_json_or_raise(content)
159
+ except ParseError as exc:
160
+ return PolishResult.failed(
161
+ purpose=purpose, reason=f"json_parse_failed:{exc}", model=self._model
162
+ )
163
+ polished, cited = _project_polished_fields(purpose=purpose, parsed=parsed)
164
+ if not polished:
165
+ return PolishResult.failed(
166
+ purpose=purpose, reason="polished_fields_missing", model=self._model
167
+ )
168
+ return PolishResult(
169
+ success=True,
170
+ purpose=purpose,
171
+ polished=polished,
172
+ cited_evidence_refs=cited,
173
+ model=self._model,
174
+ )
175
+
176
+ async def call_json(
177
+ self,
178
+ *,
179
+ model: str,
180
+ system_prompt: str,
181
+ user_prompt: str,
182
+ max_tokens: int,
183
+ temperature: float,
184
+ idempotency_key: str | None = None,
185
+ ) -> dict[str, Any] | None:
186
+ """Generic JSON-object call (DR8 classifier). The per-call `model` is a
187
+ gateway model id with no Claude equivalent, so the configured Claude model
188
+ (`self._model`) is used. None on any failure — caller falls back."""
189
+ content, reason = await self._run(system_prompt=system_prompt, user_prompt=user_prompt)
190
+ if content is None:
191
+ logger.warning("brain_claude_cli_json_failed reason=%s", reason)
192
+ return None
193
+ try:
194
+ return parse_json_or_raise(content)
195
+ except ParseError as exc:
196
+ logger.warning("brain_claude_cli_json_parse_failed reason=%s", str(exc))
197
+ return None
198
+
199
+ async def classify_direction_alignment(self, payload: dict[str, Any]) -> dict[str, Any] | None:
200
+ """DR8 classifier surface — same impl the gateway provider uses."""
201
+ return await classify_direction_alignment_impl(llm_surface=self, payload=payload)
@@ -93,6 +93,19 @@ def get_brain_llm_service() -> BrainLLMService:
93
93
  _brain_llm_service = _NoOpBrainLLMService()
94
94
  return _brain_llm_service
95
95
 
96
+ # P1: claude -p provider runs on the Claude Code subscription — NO api key.
97
+ if getattr(settings, "brain_llm_provider", "gateway") == "claude_cli":
98
+ from core.api.services.brain.llm.claude_cli import ClaudeCliBrainService
99
+
100
+ _brain_llm_service = ClaudeCliBrainService(
101
+ binary=getattr(settings, "marvis_claude_bin", "claude") or "claude",
102
+ model=settings.brain_llm_model,
103
+ timeout_seconds=settings.brain_llm_polish_timeout_seconds,
104
+ semaphore_size=settings.brain_llm_semaphore_size,
105
+ grounding_strict=settings.brain_llm_grounding_strict,
106
+ )
107
+ return _brain_llm_service
108
+
96
109
  brain_key = _secret_text(settings.brain_llm_gateway_api_key)
97
110
  global_key = _secret_text(settings.llm_gateway_api_key)
98
111