conexus 3.2.0__tar.gz → 3.2.2__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 (429) hide show
  1. {conexus-3.2.0 → conexus-3.2.2}/.claude-plugin/marketplace.json +2 -2
  2. {conexus-3.2.0 → conexus-3.2.2}/CHANGELOG.md +16 -0
  3. {conexus-3.2.0 → conexus-3.2.2}/PKG-INFO +1 -1
  4. conexus-3.2.2/nx/.claude-plugin/plugin.json +11 -0
  5. {conexus-3.2.0 → conexus-3.2.2}/nx/CHANGELOG.md +16 -0
  6. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/architect-planner.md +27 -0
  7. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/codebase-deep-analyzer.md +28 -1
  8. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/debugger.md +27 -0
  9. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/deep-analyst.md +27 -0
  10. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/deep-research-synthesizer.md +43 -3
  11. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/knowledge-tidier.md +1 -1
  12. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/orchestrator.md +1 -1
  13. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/pdf-chromadb-processor.md +1 -1
  14. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/plan-enricher.md +1 -1
  15. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/strategic-planner.md +16 -1
  16. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/substantive-critic.md +1 -1
  17. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/test-validator.md +1 -1
  18. conexus-3.2.2/nx/hooks/scripts/auto-approve-nx-mcp.sh +51 -0
  19. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/rdr-gate/SKILL.md +6 -4
  20. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/rdr-research/SKILL.md +11 -0
  21. {conexus-3.2.0 → conexus-3.2.2}/pyproject.toml +1 -1
  22. {conexus-3.2.0 → conexus-3.2.2}/sn/.claude-plugin/plugin.json +1 -1
  23. conexus-3.2.2/sn/hooks/scripts/auto-approve-sn-mcp.sh +46 -0
  24. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/catalog/link_generator.py +63 -0
  25. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/indexer.py +5 -3
  26. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_link_generation.py +108 -0
  27. {conexus-3.2.0 → conexus-3.2.2}/uv.lock +1 -1
  28. conexus-3.2.0/nx/hooks/scripts/auto-approve-nx-mcp.sh +0 -18
  29. conexus-3.2.0/sn/hooks/scripts/auto-approve-sn-mcp.sh +0 -18
  30. {conexus-3.2.0 → conexus-3.2.2}/.beads/.gitignore +0 -0
  31. {conexus-3.2.0 → conexus-3.2.2}/.beads/README.md +0 -0
  32. {conexus-3.2.0 → conexus-3.2.2}/.beads/config.yaml +0 -0
  33. {conexus-3.2.0 → conexus-3.2.2}/.beads/hooks/post-checkout +0 -0
  34. {conexus-3.2.0 → conexus-3.2.2}/.beads/hooks/post-merge +0 -0
  35. {conexus-3.2.0 → conexus-3.2.2}/.beads/hooks/pre-commit +0 -0
  36. {conexus-3.2.0 → conexus-3.2.2}/.beads/hooks/pre-push +0 -0
  37. {conexus-3.2.0 → conexus-3.2.2}/.beads/hooks/prepare-commit-msg +0 -0
  38. {conexus-3.2.0 → conexus-3.2.2}/.beads/interactions.jsonl +0 -0
  39. {conexus-3.2.0 → conexus-3.2.2}/.beads/issues.jsonl +0 -0
  40. {conexus-3.2.0 → conexus-3.2.2}/.beads/metadata.json +0 -0
  41. {conexus-3.2.0 → conexus-3.2.2}/.claude/skills/release.md +0 -0
  42. {conexus-3.2.0 → conexus-3.2.2}/.devcontainer/Dockerfile +0 -0
  43. {conexus-3.2.0 → conexus-3.2.2}/.devcontainer/devcontainer.json +0 -0
  44. {conexus-3.2.0 → conexus-3.2.2}/.dockerignore +0 -0
  45. {conexus-3.2.0 → conexus-3.2.2}/.env.example +0 -0
  46. {conexus-3.2.0 → conexus-3.2.2}/.gitattributes +0 -0
  47. {conexus-3.2.0 → conexus-3.2.2}/.github/workflows/ci.yml +0 -0
  48. {conexus-3.2.0 → conexus-3.2.2}/.github/workflows/release.yml +0 -0
  49. {conexus-3.2.0 → conexus-3.2.2}/.gitignore +0 -0
  50. {conexus-3.2.0 → conexus-3.2.2}/.markdownlint.json +0 -0
  51. {conexus-3.2.0 → conexus-3.2.2}/AGENTS.md +0 -0
  52. {conexus-3.2.0 → conexus-3.2.2}/CLAUDE.md +0 -0
  53. {conexus-3.2.0 → conexus-3.2.2}/Formula/nx.rb +0 -0
  54. {conexus-3.2.0 → conexus-3.2.2}/LICENSE +0 -0
  55. {conexus-3.2.0 → conexus-3.2.2}/README.md +0 -0
  56. {conexus-3.2.0 → conexus-3.2.2}/docs/README.md +0 -0
  57. {conexus-3.2.0 → conexus-3.2.2}/docs/architecture.md +0 -0
  58. {conexus-3.2.0 → conexus-3.2.2}/docs/catalog.md +0 -0
  59. {conexus-3.2.0 → conexus-3.2.2}/docs/cli-reference.md +0 -0
  60. {conexus-3.2.0 → conexus-3.2.2}/docs/configuration.md +0 -0
  61. {conexus-3.2.0 → conexus-3.2.2}/docs/contributing.md +0 -0
  62. {conexus-3.2.0 → conexus-3.2.2}/docs/getting-started.md +0 -0
  63. {conexus-3.2.0 → conexus-3.2.2}/docs/historical.md +0 -0
  64. {conexus-3.2.0 → conexus-3.2.2}/docs/memory-and-tasks.md +0 -0
  65. {conexus-3.2.0 → conexus-3.2.2}/docs/postmortem/2026-03-23-pdf-index-collection-mismatch.md +0 -0
  66. {conexus-3.2.0 → conexus-3.2.2}/docs/postmortem/2026-03-24-pdf-index-fix-not-applied.md +0 -0
  67. {conexus-3.2.0 → conexus-3.2.2}/docs/querying-guide.md +0 -0
  68. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/README.md +0 -0
  69. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/001-rdr-process-validation.md +0 -0
  70. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/002-t2-status-synchronization.md +0 -0
  71. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/010-t1-http-server.md +0 -0
  72. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/011-pdf-ingest-test-coverage.md +0 -0
  73. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/012-pdfplumber-extraction-tier.md +0 -0
  74. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/014-knowledge-base-retrieval-quality.md +0 -0
  75. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/015-indexing-pipeline-rethink.md +0 -0
  76. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/016-ast-chunk-line-range-bug.md +0 -0
  77. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/017-indexing-progress-reporting.md +0 -0
  78. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/018-replace-serve-with-git-hooks.md +0 -0
  79. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/023-agent-tool-permissions-audit.md +0 -0
  80. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/024-rdr-process-guardrails.md +0 -0
  81. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/028-language-registry-unification.md +0 -0
  82. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/029-pipeline-versioning.md +0 -0
  83. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/049-git-backed-catalog.md +0 -0
  84. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/050-catalog-query-integration.md +0 -0
  85. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/051-link-lifecycle.md +0 -0
  86. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/052-catalog-first-query-routing.md +0 -0
  87. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/053-xanadu-fidelity.md +0 -0
  88. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/post-mortem/cce-query-model-mismatch.md +0 -0
  89. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-001-rdr-process-validation.md +0 -0
  90. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-002-t2-status-synchronization.md +0 -0
  91. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-004-four-store-architecture.md +0 -0
  92. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-005-chromadb-cloud-quota-enforcement.md +0 -0
  93. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-006-chunk-size-configuration.md +0 -0
  94. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-007-claude-adoption-session-context-and-search-guidance.md +0 -0
  95. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-008-nx-workflow-integration.md +0 -0
  96. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-009-remove-agentic-and-answer-flags.md +0 -0
  97. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-010-t1-scratch-persistent-bounded-store.md +0 -0
  98. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-011-pdf-ingest-test-coverage.md +0 -0
  99. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-012-pdfplumber-extraction-tier.md +0 -0
  100. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-013-remove-nx-pm-layer.md +0 -0
  101. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-014-knowledge-base-retrieval-quality.md +0 -0
  102. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-015-indexing-pipeline-rethink.md +0 -0
  103. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-016-ast-chunk-line-range-bug.md +0 -0
  104. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-017-indexing-progress-reporting.md +0 -0
  105. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-018-replace-serve-with-git-hooks.md +0 -0
  106. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-019-chromadb-transient-retry.md +0 -0
  107. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-020-voyage-chromadb-read-timeout.md +0 -0
  108. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-021-docling-pdf-extraction.md +0 -0
  109. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-022-memory-delete-command.md +0 -0
  110. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-023-agent-tool-permissions-audit.md +0 -0
  111. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-024-rdr-process-guardrails.md +0 -0
  112. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-025-language-agnostic-agents.md +0 -0
  113. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-026-hybrid-search-fusion.md +0 -0
  114. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-027-search-results-ux.md +0 -0
  115. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-028-code-search-recall.md +0 -0
  116. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-029-pipeline-versioning.md +0 -0
  117. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-030-reliability-hardening.md +0 -0
  118. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-031-collection-portability.md +0 -0
  119. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-032-indexer-decomposition.md +0 -0
  120. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-033-pdf-agent-nx-index-alignment.md +0 -0
  121. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-034-mcp-server-agent-storage.md +0 -0
  122. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-035-plugin-agent-mcp-tool-access.md +0 -0
  123. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-036-post-accept-planning-workflow.md +0 -0
  124. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-037-t3-database-consolidation.md +0 -0
  125. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-038-local-t3-backend.md +0 -0
  126. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-039-claude-code-framework-alignment.md +0 -0
  127. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-040-cce-postmortem-gaps-mcp-enhancement.md +0 -0
  128. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-040-developer-agent-circuit-breaker.md +0 -0
  129. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-041-t1-scratch-inter-agent-context.md +0 -0
  130. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-042-agenticscholar-enhancements.md +0 -0
  131. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-043-plan-enricher-scope.md +0 -0
  132. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-044-math-aware-pdf-extraction.md +0 -0
  133. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-045-post-implementation-verification.md +0 -0
  134. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-046-mineru-server-backed-extraction.md +0 -0
  135. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-047-large-pdf-extraction-resilience.md +0 -0
  136. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-048-streaming-pdf-pipeline.md +0 -0
  137. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-049-consolidation-plan.md +0 -0
  138. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-049-git-backed-catalog.md +0 -0
  139. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-050-knowledge-graph-query-planning.md +0 -0
  140. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-051-link-lifecycle.md +0 -0
  141. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-052-catalog-first-query-routing.md +0 -0
  142. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr/rdr-053-xanadu-fidelity.md +0 -0
  143. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr-nexus-integration.md +0 -0
  144. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr-overview.md +0 -0
  145. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr-templates.md +0 -0
  146. {conexus-3.2.0 → conexus-3.2.2}/docs/rdr-workflow.md +0 -0
  147. {conexus-3.2.0 → conexus-3.2.2}/docs/repo-indexing.md +0 -0
  148. {conexus-3.2.0 → conexus-3.2.2}/docs/storage-tiers.md +0 -0
  149. {conexus-3.2.0 → conexus-3.2.2}/docs/xanadu-in-nexus.md +0 -0
  150. {conexus-3.2.0 → conexus-3.2.2}/nx/.mcp.json +0 -0
  151. {conexus-3.2.0 → conexus-3.2.2}/nx/README.md +0 -0
  152. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/_shared/CONTEXT_PROTOCOL.md +0 -0
  153. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/_shared/ERROR_HANDLING.md +0 -0
  154. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/_shared/MAINTENANCE.md +0 -0
  155. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/_shared/README.md +0 -0
  156. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/_shared/RELAY_TEMPLATE.md +0 -0
  157. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/analytical-operator.md +0 -0
  158. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/code-review-expert.md +0 -0
  159. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/developer.md +0 -0
  160. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/plan-auditor.md +0 -0
  161. {conexus-3.2.0 → conexus-3.2.2}/nx/agents/query-planner.md +0 -0
  162. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/analyze-code.md +0 -0
  163. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/architecture.md +0 -0
  164. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/create-plan.md +0 -0
  165. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/debug.md +0 -0
  166. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/deep-analysis.md +0 -0
  167. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/enrich-plan.md +0 -0
  168. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/implement.md +0 -0
  169. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/knowledge-tidy.md +0 -0
  170. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/nx-preflight.md +0 -0
  171. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/pdf-process.md +0 -0
  172. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/plan-audit.md +0 -0
  173. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/rdr-accept.md +0 -0
  174. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/rdr-close.md +0 -0
  175. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/rdr-create.md +0 -0
  176. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/rdr-gate.md +0 -0
  177. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/rdr-list.md +0 -0
  178. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/rdr-research.md +0 -0
  179. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/rdr-show.md +0 -0
  180. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/research.md +0 -0
  181. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/review-code.md +0 -0
  182. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/substantive-critique.md +0 -0
  183. {conexus-3.2.0 → conexus-3.2.2}/nx/commands/test-validate.md +0 -0
  184. {conexus-3.2.0 → conexus-3.2.2}/nx/hooks/hooks.json +0 -0
  185. {conexus-3.2.0 → conexus-3.2.2}/nx/hooks/scripts/post_compact_hook.sh +0 -0
  186. {conexus-3.2.0 → conexus-3.2.2}/nx/hooks/scripts/pre_close_verification_hook.sh +0 -0
  187. {conexus-3.2.0 → conexus-3.2.2}/nx/hooks/scripts/rdr_hook.py +0 -0
  188. {conexus-3.2.0 → conexus-3.2.2}/nx/hooks/scripts/read_verification_config.py +0 -0
  189. {conexus-3.2.0 → conexus-3.2.2}/nx/hooks/scripts/session_start_hook.py +0 -0
  190. {conexus-3.2.0 → conexus-3.2.2}/nx/hooks/scripts/stop_failure_hook.py +0 -0
  191. {conexus-3.2.0 → conexus-3.2.2}/nx/hooks/scripts/stop_verification_hook.sh +0 -0
  192. {conexus-3.2.0 → conexus-3.2.2}/nx/hooks/scripts/subagent-start.sh +0 -0
  193. {conexus-3.2.0 → conexus-3.2.2}/nx/hooks/scripts/t2_prefix_scan.py +0 -0
  194. {conexus-3.2.0 → conexus-3.2.2}/nx/registry.yaml +0 -0
  195. {conexus-3.2.0 → conexus-3.2.2}/nx/resources/rdr/README-TEMPLATE.md +0 -0
  196. {conexus-3.2.0 → conexus-3.2.2}/nx/resources/rdr/TEMPLATE.md +0 -0
  197. {conexus-3.2.0 → conexus-3.2.2}/nx/resources/rdr/post-mortem/TEMPLATE.md +0 -0
  198. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/architecture/SKILL.md +0 -0
  199. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/brainstorming-gate/SKILL.md +0 -0
  200. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/cli-controller/SKILL.md +0 -0
  201. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/code-review/SKILL.md +0 -0
  202. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/codebase-analysis/SKILL.md +0 -0
  203. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/debugging/SKILL.md +0 -0
  204. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/deep-analysis/SKILL.md +0 -0
  205. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/development/SKILL.md +0 -0
  206. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/enrich-plan/SKILL.md +0 -0
  207. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/finishing-branch/SKILL.md +0 -0
  208. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/git-worktrees/SKILL.md +0 -0
  209. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/knowledge-tidying/SKILL.md +0 -0
  210. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/nexus/SKILL.md +0 -0
  211. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/nexus/reference.md +0 -0
  212. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/orchestration/SKILL.md +0 -0
  213. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/pdf-processing/SKILL.md +0 -0
  214. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/plan-validation/SKILL.md +0 -0
  215. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/query/SKILL.md +0 -0
  216. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/rdr-accept/SKILL.md +0 -0
  217. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/rdr-close/SKILL.md +0 -0
  218. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/rdr-create/SKILL.md +0 -0
  219. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/rdr-list/SKILL.md +0 -0
  220. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/rdr-show/SKILL.md +0 -0
  221. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/receiving-review/SKILL.md +0 -0
  222. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/research-synthesis/SKILL.md +0 -0
  223. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/serena-code-nav/SKILL.md +0 -0
  224. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/strategic-planning/SKILL.md +0 -0
  225. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/substantive-critique/SKILL.md +0 -0
  226. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/test-validation/SKILL.md +0 -0
  227. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/using-nx-skills/SKILL.md +0 -0
  228. {conexus-3.2.0 → conexus-3.2.2}/nx/skills/writing-nx-skills/SKILL.md +0 -0
  229. {conexus-3.2.0 → conexus-3.2.2}/scripts/reinstall-tool.sh +0 -0
  230. {conexus-3.2.0 → conexus-3.2.2}/sn/.mcp.json +0 -0
  231. {conexus-3.2.0 → conexus-3.2.2}/sn/README.md +0 -0
  232. {conexus-3.2.0 → conexus-3.2.2}/sn/hooks/hooks.json +0 -0
  233. {conexus-3.2.0 → conexus-3.2.2}/sn/hooks/scripts/mcp-inject.sh +0 -0
  234. {conexus-3.2.0 → conexus-3.2.2}/sn/hooks/scripts/session-start.sh +0 -0
  235. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/__init__.py +0 -0
  236. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/bib_enricher.py +0 -0
  237. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/catalog/__init__.py +0 -0
  238. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/catalog/auto_linker.py +0 -0
  239. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/catalog/catalog.py +0 -0
  240. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/catalog/catalog_db.py +0 -0
  241. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/catalog/consolidation.py +0 -0
  242. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/catalog/tumbler.py +0 -0
  243. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/checkpoint.py +0 -0
  244. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/chunker.py +0 -0
  245. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/classifier.py +0 -0
  246. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/cli.py +0 -0
  247. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/code_indexer.py +0 -0
  248. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/__init__.py +0 -0
  249. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/_helpers.py +0 -0
  250. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/_provision.py +0 -0
  251. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/catalog.py +0 -0
  252. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/collection.py +0 -0
  253. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/config_cmd.py +0 -0
  254. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/doctor.py +0 -0
  255. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/enrich.py +0 -0
  256. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/hook.py +0 -0
  257. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/hooks.py +0 -0
  258. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/index.py +0 -0
  259. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/memory.py +0 -0
  260. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/mineru.py +0 -0
  261. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/scratch.py +0 -0
  262. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/search_cmd.py +0 -0
  263. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/commands/store.py +0 -0
  264. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/config.py +0 -0
  265. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/corpus.py +0 -0
  266. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/db/__init__.py +0 -0
  267. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/db/chroma_quotas.py +0 -0
  268. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/db/local_ef.py +0 -0
  269. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/db/t1.py +0 -0
  270. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/db/t2.py +0 -0
  271. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/db/t3.py +0 -0
  272. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/doc_indexer.py +0 -0
  273. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/errors.py +0 -0
  274. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/exporter.py +0 -0
  275. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/formatters.py +0 -0
  276. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/frecency.py +0 -0
  277. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/hooks.py +0 -0
  278. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/index_context.py +0 -0
  279. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/indexer_utils.py +0 -0
  280. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/languages.py +0 -0
  281. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/mcp_server.py +0 -0
  282. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/md_chunker.py +0 -0
  283. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/pdf_chunker.py +0 -0
  284. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/pdf_extractor.py +0 -0
  285. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/pipeline_buffer.py +0 -0
  286. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/pipeline_stages.py +0 -0
  287. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/prose_indexer.py +0 -0
  288. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/registry.py +0 -0
  289. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/retry.py +0 -0
  290. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/ripgrep_cache.py +0 -0
  291. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/scoring.py +0 -0
  292. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/search_engine.py +0 -0
  293. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/session.py +0 -0
  294. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/ttl.py +0 -0
  295. {conexus-3.2.0 → conexus-3.2.2}/src/nexus/types.py +0 -0
  296. {conexus-3.2.0 → conexus-3.2.2}/tests/__init__.py +0 -0
  297. {conexus-3.2.0 → conexus-3.2.2}/tests/__snapshots__/test_search_snapshot.ambr +0 -0
  298. {conexus-3.2.0 → conexus-3.2.2}/tests/benchmarks/__init__.py +0 -0
  299. {conexus-3.2.0 → conexus-3.2.2}/tests/benchmarks/corpus.json +0 -0
  300. {conexus-3.2.0 → conexus-3.2.2}/tests/benchmarks/queries.json +0 -0
  301. {conexus-3.2.0 → conexus-3.2.2}/tests/benchmarks/test_retrieval_ndcg.py +0 -0
  302. {conexus-3.2.0 → conexus-3.2.2}/tests/conftest.py +0 -0
  303. {conexus-3.2.0 → conexus-3.2.2}/tests/e2e/auth-login.sh +0 -0
  304. {conexus-3.2.0 → conexus-3.2.2}/tests/e2e/lib.sh +0 -0
  305. {conexus-3.2.0 → conexus-3.2.2}/tests/e2e/run.sh +0 -0
  306. {conexus-3.2.0 → conexus-3.2.2}/tests/e2e/sandbox.sh +0 -0
  307. {conexus-3.2.0 → conexus-3.2.2}/tests/e2e/scenarios/00_debug_load.sh +0 -0
  308. {conexus-3.2.0 → conexus-3.2.2}/tests/e2e/scenarios/01_smoke.sh +0 -0
  309. {conexus-3.2.0 → conexus-3.2.2}/tests/e2e/scenarios/02_sequential_thinking.sh +0 -0
  310. {conexus-3.2.0 → conexus-3.2.2}/tests/e2e/scenarios/03_skills.sh +0 -0
  311. {conexus-3.2.0 → conexus-3.2.2}/tests/hooks/__init__.py +0 -0
  312. {conexus-3.2.0 → conexus-3.2.2}/tests/hooks/test_permission_request_hooks.py +0 -0
  313. {conexus-3.2.0 → conexus-3.2.2}/tests/hooks/test_post_compact_hook.py +0 -0
  314. {conexus-3.2.0 → conexus-3.2.2}/tests/hooks/test_pre_close_verification_hook.py +0 -0
  315. {conexus-3.2.0 → conexus-3.2.2}/tests/hooks/test_read_verification_config.py +0 -0
  316. {conexus-3.2.0 → conexus-3.2.2}/tests/hooks/test_stop_failure_hook.py +0 -0
  317. {conexus-3.2.0 → conexus-3.2.2}/tests/hooks/test_stop_verification_hook.py +0 -0
  318. {conexus-3.2.0 → conexus-3.2.2}/tests/hooks/test_verification_integration.py +0 -0
  319. {conexus-3.2.0 → conexus-3.2.2}/tests/test_ast_languages.py +0 -0
  320. {conexus-3.2.0 → conexus-3.2.2}/tests/test_auto_linker.py +0 -0
  321. {conexus-3.2.0 → conexus-3.2.2}/tests/test_backfill_hash.py +0 -0
  322. {conexus-3.2.0 → conexus-3.2.2}/tests/test_bib_enricher.py +0 -0
  323. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog.py +0 -0
  324. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_backfill.py +0 -0
  325. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_cli.py +0 -0
  326. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_consolidation.py +0 -0
  327. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_db.py +0 -0
  328. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_e2e.py +0 -0
  329. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_git.py +0 -0
  330. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_indexer_hook.py +0 -0
  331. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_jsonl.py +0 -0
  332. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_knowledge_hook.py +0 -0
  333. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_links.py +0 -0
  334. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_mcp.py +0 -0
  335. {conexus-3.2.0 → conexus-3.2.2}/tests/test_catalog_pdf_hook.py +0 -0
  336. {conexus-3.2.0 → conexus-3.2.2}/tests/test_checkpoint.py +0 -0
  337. {conexus-3.2.0 → conexus-3.2.2}/tests/test_chroma_quotas.py +0 -0
  338. {conexus-3.2.0 → conexus-3.2.2}/tests/test_chroma_retry.py +0 -0
  339. {conexus-3.2.0 → conexus-3.2.2}/tests/test_chunker.py +0 -0
  340. {conexus-3.2.0 → conexus-3.2.2}/tests/test_chunker_ast_languages.py +0 -0
  341. {conexus-3.2.0 → conexus-3.2.2}/tests/test_classifier.py +0 -0
  342. {conexus-3.2.0 → conexus-3.2.2}/tests/test_collection_cmd.py +0 -0
  343. {conexus-3.2.0 → conexus-3.2.2}/tests/test_config.py +0 -0
  344. {conexus-3.2.0 → conexus-3.2.2}/tests/test_config_cmd.py +0 -0
  345. {conexus-3.2.0 → conexus-3.2.2}/tests/test_corpus.py +0 -0
  346. {conexus-3.2.0 → conexus-3.2.2}/tests/test_doc_indexer.py +0 -0
  347. {conexus-3.2.0 → conexus-3.2.2}/tests/test_doc_indexer_hash_sync.py +0 -0
  348. {conexus-3.2.0 → conexus-3.2.2}/tests/test_doc_indexer_pagination.py +0 -0
  349. {conexus-3.2.0 → conexus-3.2.2}/tests/test_doctor_cmd.py +0 -0
  350. {conexus-3.2.0 → conexus-3.2.2}/tests/test_doctor_integrity.py +0 -0
  351. {conexus-3.2.0 → conexus-3.2.2}/tests/test_e2e.py +0 -0
  352. {conexus-3.2.0 → conexus-3.2.2}/tests/test_enrich_command.py +0 -0
  353. {conexus-3.2.0 → conexus-3.2.2}/tests/test_exporter.py +0 -0
  354. {conexus-3.2.0 → conexus-3.2.2}/tests/test_formatters.py +0 -0
  355. {conexus-3.2.0 → conexus-3.2.2}/tests/test_frecency.py +0 -0
  356. {conexus-3.2.0 → conexus-3.2.2}/tests/test_git_hooks.py +0 -0
  357. {conexus-3.2.0 → conexus-3.2.2}/tests/test_hooks.py +0 -0
  358. {conexus-3.2.0 → conexus-3.2.2}/tests/test_hybrid_boost.py +0 -0
  359. {conexus-3.2.0 → conexus-3.2.2}/tests/test_index_cmd.py +0 -0
  360. {conexus-3.2.0 → conexus-3.2.2}/tests/test_index_lock.py +0 -0
  361. {conexus-3.2.0 → conexus-3.2.2}/tests/test_index_pdf_batch.py +0 -0
  362. {conexus-3.2.0 → conexus-3.2.2}/tests/test_index_rdr_cmd.py +0 -0
  363. {conexus-3.2.0 → conexus-3.2.2}/tests/test_index_reminder.py +0 -0
  364. {conexus-3.2.0 → conexus-3.2.2}/tests/test_indexer.py +0 -0
  365. {conexus-3.2.0 → conexus-3.2.2}/tests/test_indexer_chunk_flow.py +0 -0
  366. {conexus-3.2.0 → conexus-3.2.2}/tests/test_indexer_e2e.py +0 -0
  367. {conexus-3.2.0 → conexus-3.2.2}/tests/test_indexer_modules.py +0 -0
  368. {conexus-3.2.0 → conexus-3.2.2}/tests/test_integration.py +0 -0
  369. {conexus-3.2.0 → conexus-3.2.2}/tests/test_jsonl.py +0 -0
  370. {conexus-3.2.0 → conexus-3.2.2}/tests/test_languages.py +0 -0
  371. {conexus-3.2.0 → conexus-3.2.2}/tests/test_local_mode.py +0 -0
  372. {conexus-3.2.0 → conexus-3.2.2}/tests/test_mcp_concurrency.py +0 -0
  373. {conexus-3.2.0 → conexus-3.2.2}/tests/test_mcp_integration.py +0 -0
  374. {conexus-3.2.0 → conexus-3.2.2}/tests/test_mcp_server.py +0 -0
  375. {conexus-3.2.0 → conexus-3.2.2}/tests/test_mcp_session.py +0 -0
  376. {conexus-3.2.0 → conexus-3.2.2}/tests/test_md_chunker.py +0 -0
  377. {conexus-3.2.0 → conexus-3.2.2}/tests/test_md_chunker_semantic_integrity.py +0 -0
  378. {conexus-3.2.0 → conexus-3.2.2}/tests/test_md_preservation.py +0 -0
  379. {conexus-3.2.0 → conexus-3.2.2}/tests/test_memory.py +0 -0
  380. {conexus-3.2.0 → conexus-3.2.2}/tests/test_mineru_cmd.py +0 -0
  381. {conexus-3.2.0 → conexus-3.2.2}/tests/test_mineru_extractor.py +0 -0
  382. {conexus-3.2.0 → conexus-3.2.2}/tests/test_minified_chunking.py +0 -0
  383. {conexus-3.2.0 → conexus-3.2.2}/tests/test_p0_regressions.py +0 -0
  384. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pdf_chunker.py +0 -0
  385. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pdf_chunker_integration.py +0 -0
  386. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pdf_e2e.py +0 -0
  387. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pdf_extractor.py +0 -0
  388. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pdf_extractor_integration.py +0 -0
  389. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pdf_extractor_normalization.py +0 -0
  390. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pdf_extractor_server.py +0 -0
  391. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pdf_normalization.py +0 -0
  392. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pdf_subsystem.py +0 -0
  393. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pipeline_buffer.py +0 -0
  394. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pipeline_stages.py +0 -0
  395. {conexus-3.2.0 → conexus-3.2.2}/tests/test_pipeline_version.py +0 -0
  396. {conexus-3.2.0 → conexus-3.2.2}/tests/test_plan_library.py +0 -0
  397. {conexus-3.2.0 → conexus-3.2.2}/tests/test_plugin.py +0 -0
  398. {conexus-3.2.0 → conexus-3.2.2}/tests/test_plugin_install.py +0 -0
  399. {conexus-3.2.0 → conexus-3.2.2}/tests/test_plugin_structure.py +0 -0
  400. {conexus-3.2.0 → conexus-3.2.2}/tests/test_ppid_chain_hypothesis.py +0 -0
  401. {conexus-3.2.0 → conexus-3.2.2}/tests/test_provision.py +0 -0
  402. {conexus-3.2.0 → conexus-3.2.2}/tests/test_rdr052_verification.py +0 -0
  403. {conexus-3.2.0 → conexus-3.2.2}/tests/test_rdr053_verification.py +0 -0
  404. {conexus-3.2.0 → conexus-3.2.2}/tests/test_registry.py +0 -0
  405. {conexus-3.2.0 → conexus-3.2.2}/tests/test_ripgrep_cache.py +0 -0
  406. {conexus-3.2.0 → conexus-3.2.2}/tests/test_schema.py +0 -0
  407. {conexus-3.2.0 → conexus-3.2.2}/tests/test_scoring.py +0 -0
  408. {conexus-3.2.0 → conexus-3.2.2}/tests/test_scratch.py +0 -0
  409. {conexus-3.2.0 → conexus-3.2.2}/tests/test_scratch_cmd.py +0 -0
  410. {conexus-3.2.0 → conexus-3.2.2}/tests/test_search_cmd.py +0 -0
  411. {conexus-3.2.0 → conexus-3.2.2}/tests/test_search_engine.py +0 -0
  412. {conexus-3.2.0 → conexus-3.2.2}/tests/test_search_modules.py +0 -0
  413. {conexus-3.2.0 → conexus-3.2.2}/tests/test_search_snapshot.py +0 -0
  414. {conexus-3.2.0 → conexus-3.2.2}/tests/test_session.py +0 -0
  415. {conexus-3.2.0 → conexus-3.2.2}/tests/test_session_propagation_hypotheses.py +0 -0
  416. {conexus-3.2.0 → conexus-3.2.2}/tests/test_silent_error_logging.py +0 -0
  417. {conexus-3.2.0 → conexus-3.2.2}/tests/test_sn_plugin.py +0 -0
  418. {conexus-3.2.0 → conexus-3.2.2}/tests/test_store_cmd.py +0 -0
  419. {conexus-3.2.0 → conexus-3.2.2}/tests/test_t1.py +0 -0
  420. {conexus-3.2.0 → conexus-3.2.2}/tests/test_t2.py +0 -0
  421. {conexus-3.2.0 → conexus-3.2.2}/tests/test_t2_prefix_scan.py +0 -0
  422. {conexus-3.2.0 → conexus-3.2.2}/tests/test_t3.py +0 -0
  423. {conexus-3.2.0 → conexus-3.2.2}/tests/test_t3_quota_enforcement.py +0 -0
  424. {conexus-3.2.0 → conexus-3.2.2}/tests/test_table_extraction.py +0 -0
  425. {conexus-3.2.0 → conexus-3.2.2}/tests/test_ttl.py +0 -0
  426. {conexus-3.2.0 → conexus-3.2.2}/tests/test_tumbler.py +0 -0
  427. {conexus-3.2.0 → conexus-3.2.2}/tests/test_tuning_config.py +0 -0
  428. {conexus-3.2.0 → conexus-3.2.2}/tests/test_types_and_errors.py +0 -0
  429. {conexus-3.2.0 → conexus-3.2.2}/tests/test_voyage_retry.py +0 -0
@@ -9,13 +9,13 @@
9
9
  "name": "nx",
10
10
  "source": "./nx",
11
11
  "description": "Self-hosted three-tier knowledge management with 17 specialized agents, analytical query pipelines, semantic search, and RDR decision tracking for Claude Code.",
12
- "version": "3.2.0"
12
+ "version": "3.2.2"
13
13
  },
14
14
  {
15
15
  "name": "sn",
16
16
  "source": "./sn",
17
17
  "description": "Injects Serena and Context7 MCP tool usage guidance into subagents via SubagentStart hook.",
18
- "version": "3.2.0"
18
+ "version": "3.2.2"
19
19
  }
20
20
  ]
21
21
  }
@@ -6,6 +6,22 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [3.2.2] - 2026-04-07
10
+
11
+ ### Fixed
12
+ - **Plugin audit compliance** — added `nx/.claude-plugin/plugin.json` manifest; fixed 9 agents using non-standard `color` values (only `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan` are valid per Claude Code docs).
13
+ - **PermissionRequest hooks** — added `sequential-thinking` to nx MCP auto-approve list (was causing CI failure); explicit matchers in hooks.json reverted to wildcard routing (decision logic stays explicit in shell scripts).
14
+
15
+ ## [3.2.1] - 2026-04-07
16
+
17
+ ### Added
18
+ - **File-path extraction linker** — `generate_rdr_filepath_links()` scans RDR content for source file paths and creates `implements` links to matching catalog code entries. `created_by="filepath_extractor"`. Wired into the indexer alongside the existing heuristic linker.
19
+
20
+ ### Fixed
21
+ - **MCP auto-approve hooks** — replaced wildcard glob patterns with explicit full tool name lists in both nx (28 tools) and sn (27 tools) PermissionRequest hooks.
22
+ - **Agent self-seeding** — 5 analysis/research agents now self-seed T1 scratch with `link-context` when dispatched without a skill, so the auto-linker fires regardless of dispatch path.
23
+ - **Mandatory T3 persistence** — added `<HARD-GATE>` and Stop Criteria enforcement for `store_put` in deep-research-synthesizer, deep-analyst, debugger, architect-planner, and codebase-deep-analyzer.
24
+
9
25
  ## [3.2.0] - 2026-04-06
10
26
 
11
27
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conexus
3
- Version: 3.2.0
3
+ Version: 3.2.2
4
4
  Summary: Self-hosted semantic search and knowledge management for LLM-driven development
5
5
  Project-URL: Homepage, https://github.com/Hellblazer/nexus
6
6
  Project-URL: Repository, https://github.com/Hellblazer/nexus
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "nx",
3
+ "version": "3.2.2",
4
+ "description": "Self-hosted three-tier knowledge management with specialized agents, analytical query pipelines, semantic search, and RDR decision tracking for Claude Code.",
5
+ "author": {
6
+ "name": "Hal Hildebrand",
7
+ "url": "https://github.com/Hellblazer"
8
+ },
9
+ "repository": "https://github.com/Hellblazer/nexus",
10
+ "license": "AGPL-3.0-or-later"
11
+ }
@@ -6,6 +6,22 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [3.2.2] - 2026-04-07
10
+
11
+ ### Fixed
12
+ - Added `nx/.claude-plugin/plugin.json` manifest
13
+ - Fixed 9 agents with non-standard color values (amber, teal, mint, gold, coral, emerald, indigo, lime)
14
+ - Added `sequential-thinking` to MCP auto-approve hook
15
+
16
+ ## [3.2.1] - 2026-04-07
17
+
18
+ ### Fixed
19
+ - MCP auto-approve hook uses explicit full tool names (28 tools) instead of wildcard
20
+ - 5 agents self-seed link-context from task prompt when dispatched without a skill
21
+ - Mandatory T3 store_put with HARD-GATE enforcement in 5 analysis/research agents
22
+ - rdr-gate stores critique to T3 on both pass and fail
23
+ - rdr-research seeds link-context before agent dispatch
24
+
9
25
  ## [3.2.0] - 2026-04-06
10
26
 
11
27
  ### Added
@@ -54,6 +54,14 @@ Before starting, validate the relay contains all required fields per [RELAY_TEMP
54
54
 
55
55
  T2 memory context is auto-injected by SessionStart and SubagentStart hooks.
56
56
 
57
+ ### Link Context (before starting work)
58
+
59
+ Check T1 scratch for existing `link-context` entries via `mcp__plugin_nx_nexus__scratch(action="list")`. If none tagged `link-context`, seed it yourself:
60
+ 1. Extract RDR references, document titles, or topic keywords from your task
61
+ 2. Resolve to tumblers: `mcp__plugin_nx_nexus__catalog_search(query="<reference>")`
62
+ 3. Seed: `mcp__plugin_nx_nexus__scratch(action="put", content='{"targets": [{"tumbler": "<tumbler>", "link_type": "relates"}], "source_agent": "architect-planner"}', tags="link-context")`
63
+ 4. If nothing resolves, skip
64
+
57
65
  You are an expert software architect and strategic planner who adapts to any language and build system. Read CLAUDE.md to identify the project's language, build system, module structure, and architectural patterns before starting design work. You excel at creating comprehensive, adaptive execution plans that are self-correcting and goal-oriented.
58
66
 
59
67
  **Core Responsibilities:**
@@ -162,6 +170,19 @@ Use to propose architectures using proven technologies.
162
170
  5. Store design decisions in Nexus: mcp__plugin_nx_nexus__store_put(content="...", collection="knowledge", title="decision-architect-{topic}", tags="architecture"
163
171
 
164
172
 
173
+ ## T3 Persistence (MANDATORY before returning)
174
+
175
+ You MUST store your architectural decisions to T3 knowledge BEFORE returning. The auto-linker creates catalog links at storage time — those links are lost if you skip this step.
176
+
177
+ ```
178
+ mcp__plugin_nx_nexus__store_put(
179
+ content="# Architecture: {topic}\n\n{decisions}",
180
+ collection="knowledge",
181
+ title="architecture-{topic}-{date}",
182
+ tags="architecture,architect-planner,{domain}"
183
+ )
184
+ ```
185
+
165
186
  ## Recommended Next Step (MANDATORY output)
166
187
 
167
188
  Your final output MUST include a clearly labeled next-step recommendation for the caller to dispatch `developer`.
@@ -220,3 +241,9 @@ Provide structured plans with:
220
241
  7. Bead IDs for all created tasks
221
242
 
222
243
  Always include a `## Next Step: plan-auditor` block in your output upon plan completion for the caller to dispatch. Be thorough, be complete, be efficient - deliver plans that are executable machines focused on successful outcomes.
244
+
245
+ <HARD-GATE>
246
+ BEFORE generating your final response, you MUST call store_put to persist your architectural decisions to T3.
247
+ If you have not yet called mcp__plugin_nx_nexus__store_put in this session, STOP and call it NOW.
248
+ Do NOT return without storing. This is not optional.
249
+ </HARD-GATE>
@@ -3,7 +3,7 @@ name: codebase-deep-analyzer
3
3
  version: "2.0"
4
4
  description: Performs comprehensive codebase analysis including architecture patterns, dependencies, and technical debt. Use when onboarding to projects, before major refactoring, or for system-wide understanding.
5
5
  model: sonnet
6
- color: amber
6
+ color: yellow
7
7
  effort: medium
8
8
  ---
9
9
 
@@ -54,6 +54,14 @@ Before starting, validate the relay contains all required fields per [RELAY_TEMP
54
54
 
55
55
  T2 memory context is auto-injected by SessionStart and SubagentStart hooks. Check `/beads:ready` for unblocked tasks.
56
56
 
57
+ ### Link Context (before starting work)
58
+
59
+ Check T1 scratch for existing `link-context` entries via `mcp__plugin_nx_nexus__scratch(action="list")`. If none tagged `link-context`, seed it yourself:
60
+ 1. Extract RDR references, document titles, or topic keywords from your task
61
+ 2. Resolve to tumblers: `mcp__plugin_nx_nexus__catalog_search(query="<reference>")`
62
+ 3. Seed: `mcp__plugin_nx_nexus__scratch(action="put", content='{"targets": [{"tumbler": "<tumbler>", "link_type": "relates"}], "source_agent": "codebase-deep-analyzer"}', tags="link-context")`
63
+ 4. If nothing resolves, skip
64
+
57
65
  You are an elite codebase architect and analysis specialist with deep expertise in software archaeology, system comprehension, and technical documentation. Your mission is to perform comprehensive, systematic analysis of codebases using sequential thought processes and parallel task coordination.
58
66
 
59
67
  **Core Analysis Methodology:**
@@ -160,6 +168,19 @@ When analyzing a codebase, check for `docs/rdr/` directory. If present:
160
168
  - RDR documents contain architectural decisions, trade-offs, and research — valuable context for codebase understanding
161
169
 
162
170
 
171
+ ## T3 Persistence (MANDATORY before returning)
172
+
173
+ You MUST store your analysis findings to T3 knowledge BEFORE returning. The auto-linker creates catalog links at storage time — those links are lost if you skip this step.
174
+
175
+ ```
176
+ mcp__plugin_nx_nexus__store_put(
177
+ content="# Codebase Analysis: {topic}\n\n{findings}",
178
+ collection="knowledge",
179
+ title="analysis-codebase-{topic}-{date}",
180
+ tags="analysis,codebase-deep-analyzer,{domain}"
181
+ )
182
+ ```
183
+
163
184
  ## Recommended Next Step (conditional output)
164
185
 
165
186
  When your analysis reveals work that needs to be planned (e.g., refactoring, new features, debt remediation), your final output MUST include a next-step recommendation for the caller to dispatch `strategic-planner`. Skip if analysis is informational only.
@@ -226,3 +247,9 @@ Store using these naming conventions:
226
247
  - Knowledge base stored in Nexus (via store_put tool) for future reference
227
248
 
228
249
  You approach each codebase as a complex system requiring systematic exploration, patient investigation, and thoughtful synthesis. Your analysis should be thorough enough to enable confident architectural decisions and technical planning.
250
+
251
+ <HARD-GATE>
252
+ BEFORE generating your final response, you MUST call store_put to persist your findings to T3.
253
+ If you have not yet called mcp__plugin_nx_nexus__store_put in this session, STOP and call it NOW.
254
+ Do NOT return without storing. This is not optional.
255
+ </HARD-GATE>
@@ -54,6 +54,14 @@ Before starting, validate the relay contains all required fields per [RELAY_TEMP
54
54
 
55
55
  T2 memory context is auto-injected by SessionStart and SubagentStart hooks.
56
56
 
57
+ ### Link Context (before starting work)
58
+
59
+ Check T1 scratch for existing `link-context` entries via `mcp__plugin_nx_nexus__scratch(action="list")`. If none tagged `link-context`, seed it yourself:
60
+ 1. Extract RDR references, document titles, or topic keywords from your task
61
+ 2. Resolve to tumblers: `mcp__plugin_nx_nexus__catalog_search(query="<reference>")`
62
+ 3. Seed: `mcp__plugin_nx_nexus__scratch(action="put", content='{"targets": [{"tumbler": "<tumbler>", "link_type": "relates"}], "source_agent": "debugger"}', tags="link-context")`
63
+ 4. If nothing resolves, skip
64
+
57
65
  ### Sibling Context (check scratch for predecessor findings)
58
66
 
59
67
  Before forming hypotheses, check if the developer or other agents left context in scratch:
@@ -154,6 +162,19 @@ Pattern: Form hypothesis -> Use search tool to gather evidence -> Validate with
154
162
 
155
163
 
156
164
 
165
+ ## T3 Persistence (MANDATORY before returning)
166
+
167
+ You MUST store your debugging findings to T3 knowledge BEFORE returning. The auto-linker creates catalog links at storage time — those links are lost if you skip this step.
168
+
169
+ ```
170
+ mcp__plugin_nx_nexus__store_put(
171
+ content="# Debug: {issue}\n\n{findings}",
172
+ collection="knowledge",
173
+ title="debug-{issue}-{date}",
174
+ tags="debug,debugger,{domain}"
175
+ )
176
+ ```
177
+
157
178
  ## Recommended Next Step (MANDATORY output)
158
179
 
159
180
  Your final output MUST include a clearly labeled next-step recommendation for the caller to dispatch `developer`.
@@ -208,3 +229,9 @@ Store using these naming conventions:
208
229
  - Suggest preventive measures to avoid similar issues
209
230
 
210
231
  You approach each debugging session as a scientific investigation, using evidence-based reasoning to systematically eliminate possibilities until the truth emerges. Your goal is not just to fix the immediate problem, but to understand why it occurred and how to prevent similar issues in the future.
232
+
233
+ <HARD-GATE>
234
+ BEFORE generating your final response, you MUST call store_put to persist your findings to T3.
235
+ If you have not yet called mcp__plugin_nx_nexus__store_put in this session, STOP and call it NOW.
236
+ Do NOT return without storing. This is not optional.
237
+ </HARD-GATE>
@@ -54,6 +54,14 @@ Before starting, validate the relay contains all required fields per [RELAY_TEMP
54
54
 
55
55
  T2 memory context is auto-injected by SessionStart and SubagentStart hooks.
56
56
 
57
+ ### Link Context (before starting work)
58
+
59
+ Check T1 scratch for existing `link-context` entries via `mcp__plugin_nx_nexus__scratch(action="list")`. If none tagged `link-context`, seed it yourself:
60
+ 1. Extract RDR references, document titles, or topic keywords from your task
61
+ 2. Resolve to tumblers: `mcp__plugin_nx_nexus__catalog_search(query="<reference>")`
62
+ 3. Seed: `mcp__plugin_nx_nexus__scratch(action="put", content='{"targets": [{"tumbler": "<tumbler>", "link_type": "relates"}], "source_agent": "deep-analyst"}', tags="link-context")`
63
+ 4. If nothing resolves, skip
64
+
57
65
  You are a meticulous systems analyst with exceptional analytical capabilities. You specialize in deep investigation, comprehensive understanding, and clear explanation of complex technical problems and systems.
58
66
 
59
67
  ## Version 2.0 - Enhanced with Hypothesis Testing and Multi-Angle Analysis
@@ -138,6 +146,19 @@ Incorporate or explicitly refute prior findings in Thought 1. When T3 is empty t
138
146
 
139
147
 
140
148
 
149
+ ## T3 Persistence (MANDATORY before returning)
150
+
151
+ You MUST store your analysis findings to T3 knowledge BEFORE returning. The auto-linker creates catalog links at storage time — those links are lost if you skip this step.
152
+
153
+ ```
154
+ mcp__plugin_nx_nexus__store_put(
155
+ content="# Analysis: {topic}\n\n{findings}",
156
+ collection="knowledge",
157
+ title="analysis-deep-{topic}-{date}",
158
+ tags="analysis,deep-analyst,{domain}"
159
+ )
160
+ ```
161
+
141
162
  ## Recommended Next Step (conditional output)
142
163
 
143
164
  When your investigation reveals issues requiring planned remediation, your final output MUST include a next-step recommendation for the caller to dispatch `strategic-planner`. Skip if findings are informational only.
@@ -262,3 +283,9 @@ Your analysis integrates with:
262
283
 
263
284
  You are not just an analyst but a detective, scientist, and advisor rolled into one. Your systematic approach, intellectual honesty, and comprehensive methodology ensure that complex problems are not just understood but mastered, with clear paths forward based on solid evidence and rigorous analysis.
264
285
 
286
+ <HARD-GATE>
287
+ BEFORE generating your final response, you MUST call store_put to persist your findings to T3.
288
+ If you have not yet called mcp__plugin_nx_nexus__store_put in this session, STOP and call it NOW.
289
+ Do NOT return without storing. This is not optional.
290
+ </HARD-GATE>
291
+
@@ -3,7 +3,7 @@ name: deep-research-synthesizer
3
3
  version: "2.0"
4
4
  description: Conducts comprehensive research across nx knowledge store, memory, web resources, and code repositories. Use when needing multi-source research synthesis or building comprehensive understanding of new technologies.
5
5
  model: sonnet
6
- color: teal
6
+ color: cyan
7
7
  effort: medium
8
8
  ---
9
9
 
@@ -55,6 +55,24 @@ Before starting, validate the relay contains all required fields per [RELAY_TEMP
55
55
 
56
56
  T2 memory context is auto-injected by SessionStart and SubagentStart hooks.
57
57
 
58
+ ### Link Context (before starting work)
59
+
60
+ Check T1 scratch for existing `link-context` entries:
61
+ ```
62
+ mcp__plugin_nx_nexus__scratch(action="list")
63
+ ```
64
+ If no `link-context` tag is present, seed it yourself:
65
+
66
+ 1. Extract RDR references (`RDR-\d+`), document titles, or topic keywords from your task prompt
67
+ 2. Resolve to tumblers: `mcp__plugin_nx_nexus__catalog_search(query="<reference>")`
68
+ 3. If found, seed scratch:
69
+ ```
70
+ mcp__plugin_nx_nexus__scratch(action="put", content='{"targets": [{"tumbler": "<tumbler>", "link_type": "cites"}], "source_agent": "deep-research-synthesizer"}', tags="link-context")
71
+ ```
72
+ 4. If nothing resolves, skip — the auto-linker handles empty context
73
+
74
+ This ensures your `store_put` calls create catalog links regardless of how you were dispatched.
75
+
58
76
  ## PDF Processing Protocol
59
77
 
60
78
  1. **First, check if it is already indexed** by searching nx store for the document
@@ -123,12 +141,27 @@ If your project uses beads for task tracking, consider linking research findings
123
141
 
124
142
 
125
143
 
144
+ ## T3 Persistence (MANDATORY before returning)
145
+
146
+ You MUST store your research findings to T3 knowledge BEFORE returning. Do not defer this to knowledge-tidier — the auto-linker creates catalog links at storage time, and those links are lost if you skip this step.
147
+
148
+ ```
149
+ mcp__plugin_nx_nexus__store_put(
150
+ content="# Research: {topic}\n\n{findings}",
151
+ collection="knowledge",
152
+ title="research-{agent}-{topic}-{date}",
153
+ tags="research,{domain}"
154
+ )
155
+ ```
156
+
157
+ This is not optional. Store first, then recommend knowledge-tidier for consolidation.
158
+
126
159
  ## Recommended Next Step (MANDATORY output)
127
160
 
128
161
  Your final output MUST include a clearly labeled next-step recommendation for the caller to dispatch `knowledge-tidier`.
129
162
 
130
163
  **Condition**: ALWAYS after research completion
131
- **Rationale**: Research findings must be persisted to nx T3 store
164
+ **Rationale**: Knowledge-tidier consolidates and deduplicates stored findings
132
165
  **Mechanism**: You do not have the Agent tool — your caller orchestrates the chain. Include this block at the end of your output:
133
166
 
134
167
  ```
@@ -280,12 +313,13 @@ Track and report:
280
313
 
281
314
  ## Stop Criteria
282
315
 
283
- Research is complete when:
316
+ Research is NOT complete until ALL of the following are true:
284
317
  - All identified sources have been searched
285
318
  - All facts have been cross-validated
286
319
  - No unresolved contradictions remain
287
320
  - Output has been reviewed and versioned
288
321
  - Quality metrics meet thresholds
322
+ - **Findings stored to T3 via `store_put`** — this is a hard gate, not optional
289
323
 
290
324
  ## Edge Case Handling
291
325
 
@@ -295,3 +329,9 @@ Research is complete when:
295
329
  - **Technical Complexity**: Break down complex topics into digestible components while maintaining accuracy
296
330
 
297
331
  You are not just a researcher but a knowledge architect, building lasting value in the user information ecosystem with every investigation. Your work creates compounding returns as each research session enriches the collective knowledge base for future inquiries.
332
+
333
+ <HARD-GATE>
334
+ BEFORE generating your final response, you MUST call store_put to persist your findings to T3.
335
+ If you have not yet called mcp__plugin_nx_nexus__store_put in this session, STOP and call it NOW.
336
+ Do NOT return without storing. This is not optional.
337
+ </HARD-GATE>
@@ -3,7 +3,7 @@ name: knowledge-tidier
3
3
  version: "2.0"
4
4
  description: Reviews and consolidates nx T3 knowledge and T2 memory for accuracy and consistency. Use after major research tasks or when contradicting information is discovered across documents.
5
5
  model: haiku
6
- color: mint
6
+ color: green
7
7
  effort: medium
8
8
  maxTurns: 20
9
9
  ---
@@ -3,7 +3,7 @@ name: orchestrator
3
3
  version: "2.0"
4
4
  description: Routes requests to appropriate specialized agents and manages multi-agent pipelines. Use when the task is ambiguous, when coordinating work across multiple agents, or when unsure which agent to invoke.
5
5
  model: sonnet
6
- color: gold
6
+ color: yellow
7
7
  effort: medium
8
8
  ---
9
9
 
@@ -3,7 +3,7 @@ name: pdf-chromadb-processor
3
3
  version: "3.0"
4
4
  description: Indexes PDF files into nx T3 store for semantic search by delegating to nx index pdf. Use for any PDF that needs to be extracted and made semantically searchable.
5
5
  model: haiku
6
- color: coral
6
+ color: orange
7
7
  effort: low
8
8
  maxTurns: 30
9
9
  ---
@@ -3,7 +3,7 @@ name: plan-enricher
3
3
  version: "2.0"
4
4
  description: Enriches beads with execution context — file paths, code patterns, constraints, test commands, and (when available) audit findings. Use after plan-audit in RDR planning chain, or standalone for bead enrichment within the same session.
5
5
  model: sonnet
6
- color: emerald
6
+ color: green
7
7
  effort: medium
8
8
  ---
9
9
 
@@ -3,7 +3,7 @@ name: strategic-planner
3
3
  version: "2.1"
4
4
  description: Creates phased TDD-driven implementation plans and decomposes complex work into tracked beads. Use for multi-phase feature planning, dependency management, breaking vague requirements into executable tasks, or iterating on existing plans.
5
5
  model: opus
6
- color: indigo
6
+ color: purple
7
7
  effort: high
8
8
  ---
9
9
 
@@ -192,6 +192,21 @@ Each bead must contain sufficient context for autonomous execution:
192
192
 
193
193
 
194
194
 
195
+ ## T3 Persistence (MANDATORY before returning)
196
+
197
+ You MUST store key architectural decisions to T3 knowledge BEFORE returning. Plans go to T2 memory (per Completion Protocol), but validated decisions belong in T3 so the auto-linker can create catalog links.
198
+
199
+ ```
200
+ mcp__plugin_nx_nexus__store_put(
201
+ content="# Decision: {topic}\n\n{rationale}",
202
+ collection="knowledge",
203
+ title="decision-planner-{topic}-{date}",
204
+ tags="decision,planning,{domain}"
205
+ )
206
+ ```
207
+
208
+ Skip only if the plan contains no architectural decisions (pure task decomposition).
209
+
195
210
  ## Recommended Next Step (MANDATORY output)
196
211
 
197
212
  Your final output MUST include a clearly labeled next-step recommendation for the caller to dispatch `plan-auditor`.
@@ -3,7 +3,7 @@ name: substantive-critic
3
3
  version: "2.0"
4
4
  description: Provides deep constructive critique of code, documentation, plans, and designs. Identifies structural flaws, logical inconsistencies, and unvalidated assumptions. Use when reviewing architectural decisions, validating implementations against specifications, or auditing plans before committing.
5
5
  model: sonnet
6
- color: teal
6
+ color: pink
7
7
  effort: high
8
8
  ---
9
9
 
@@ -3,7 +3,7 @@ name: test-validator
3
3
  version: "2.0"
4
4
  description: Verifies test coverage, runs test suites, and validates test quality for code changes. Use after implementation, before marking work complete, or when test failures need systematic root-cause analysis.
5
5
  model: sonnet
6
- color: lime
6
+ color: pink
7
7
  effort: high
8
8
  ---
9
9
 
@@ -0,0 +1,51 @@
1
+ #!/bin/bash
2
+ # Auto-approve nexus MCP tools — explicit full tool names, no wildcards.
3
+ set -euo pipefail
4
+
5
+ INPUT=$(cat)
6
+ TOOL_NAME=$(echo "$INPUT" | python3 -c "import json,sys; print(json.loads(sys.stdin.read()).get('tool_name',''))" 2>/dev/null || echo "")
7
+
8
+ # Explicit allow list — every nx MCP tool by full name
9
+ case "$TOOL_NAME" in
10
+ mcp__plugin_nx_nexus__search|\
11
+ mcp__plugin_nx_nexus__query|\
12
+ mcp__plugin_nx_nexus__store_put|\
13
+ mcp__plugin_nx_nexus__store_get|\
14
+ mcp__plugin_nx_nexus__store_list|\
15
+ mcp__plugin_nx_nexus__store_delete|\
16
+ mcp__plugin_nx_nexus__memory_put|\
17
+ mcp__plugin_nx_nexus__memory_get|\
18
+ mcp__plugin_nx_nexus__memory_search|\
19
+ mcp__plugin_nx_nexus__memory_delete|\
20
+ mcp__plugin_nx_nexus__scratch|\
21
+ mcp__plugin_nx_nexus__scratch_manage|\
22
+ mcp__plugin_nx_nexus__collection_list|\
23
+ mcp__plugin_nx_nexus__collection_info|\
24
+ mcp__plugin_nx_nexus__collection_verify|\
25
+ mcp__plugin_nx_nexus__plan_save|\
26
+ mcp__plugin_nx_nexus__plan_search|\
27
+ mcp__plugin_nx_nexus__catalog_search|\
28
+ mcp__plugin_nx_nexus__catalog_show|\
29
+ mcp__plugin_nx_nexus__catalog_list|\
30
+ mcp__plugin_nx_nexus__catalog_register|\
31
+ mcp__plugin_nx_nexus__catalog_update|\
32
+ mcp__plugin_nx_nexus__catalog_link|\
33
+ mcp__plugin_nx_nexus__catalog_links|\
34
+ mcp__plugin_nx_nexus__catalog_unlink|\
35
+ mcp__plugin_nx_nexus__catalog_link_audit|\
36
+ mcp__plugin_nx_nexus__catalog_link_bulk|\
37
+ mcp__plugin_nx_nexus__catalog_link_query|\
38
+ mcp__plugin_nx_nexus__catalog_resolve|\
39
+ mcp__plugin_nx_nexus__catalog_stats|\
40
+ mcp__plugin_nx_sequential-thinking__sequentialthinking)
41
+ python3 -c "
42
+ import json
43
+ print(json.dumps({
44
+ 'hookSpecificOutput': {
45
+ 'hookEventName': 'PermissionRequest',
46
+ 'decision': {'behavior': 'allow'}
47
+ }
48
+ }))
49
+ "
50
+ ;;
51
+ esac
@@ -117,16 +117,18 @@ If no collections found: "No prior RDRs indexed. Cross-project prior-art search
117
117
  ### On Pass
118
118
 
119
119
  1. Write gate result to T2: mcp__plugin_nx_nexus__memory_put(content="outcome: PASSED\ndate: YYYY-MM-DD\ncritical_count: 0\nsignificant_count: N\nobservation_count: N\nsummary: One-sentence summary", project="{repo}_rdr", title="{id}-gate-latest", ttl="permanent", tags="rdr,gate"
120
- 2. Append gate findings to the RDR's Revision History section
121
- 3. Print: `> Run '/nx:rdr-accept <id>' to accept this RDR.`
120
+ 2. Store gate critique to T3: mcp__plugin_nx_nexus__store_put(content="# Gate: RDR NNN\n\n{critique}", collection="knowledge", title="gate-rdr-NNN-{date}", tags="rdr,gate,critique")
121
+ 3. Append gate findings to the RDR's Revision History section
122
+ 4. Print: `> Run '/nx:rdr-accept <id>' to accept this RDR.`
122
123
 
123
124
  Status remains **Draft** until the author explicitly accepts via `/nx:rdr-accept`.
124
125
 
125
126
  ### On Fail
126
127
 
127
128
  1. Write gate result to T2 (same format, `outcome: "BLOCKED"`)
128
- 2. Display the critique with specific sections to address
129
- 3. Status remains Draft
129
+ 2. Store gate critique to T3: mcp__plugin_nx_nexus__store_put(content="# Gate BLOCKED: RDR NNN\n\n{critique}", collection="knowledge", title="gate-rdr-NNN-{date}", tags="rdr,gate,critique,blocked")
130
+ 3. Display the critique with specific sections to address
131
+ 4. Status remains Draft
130
132
 
131
133
  ## Relay Template (Use This Format)
132
134
 
@@ -80,6 +80,17 @@ When the user asks to *investigate* something (not just record a finding):
80
80
  - **External research** ("what embedding models support CCE?"): Dispatch `deep-research-synthesizer` agent, then record the finding
81
81
  - **Simple recording**: No agent needed — just write the T2 record and update markdown
82
82
 
83
+ ### Pre-Dispatch: Seed Link Context
84
+
85
+ Before dispatching an agent, seed T1 scratch with link targets so the auto-linker can create catalog links when the agent stores findings:
86
+
87
+ 1. Resolve the RDR's tumbler: `mcp__plugin_nx_nexus__catalog_search(query="RDR-NNN", content_type="rdr")`
88
+ 2. Write link context to scratch:
89
+ ```
90
+ mcp__plugin_nx_nexus__scratch(action="put", content='{"targets": [{"tumbler": "<resolved-tumbler>", "link_type": "cites"}], "source_agent": "rdr-research"}', tag="link-context")
91
+ ```
92
+ 3. If catalog search returns no result, skip seeding (the auto-linker handles empty context gracefully)
93
+
83
94
  ## Relay Template (Use This Format)
84
95
 
85
96
  When dispatching agents (deep-research-synthesizer or codebase-deep-analyzer) via Agent tool, use this exact structure:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "conexus"
7
- version = "3.2.0"
7
+ version = "3.2.2"
8
8
  description = "Self-hosted semantic search and knowledge management for LLM-driven development"
9
9
  readme = { file = "README.md", content-type = "text/markdown" }
10
10
  requires-python = ">=3.12,<3.14"
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "sn",
3
- "version": "3.2.0",
3
+ "version": "3.2.2",
4
4
  "description": "Injects Serena and Context7 MCP tool usage guidance into subagents via SubagentStart hook."
5
5
  }
@@ -0,0 +1,46 @@
1
+ #!/bin/bash
2
+ # Auto-approve sn plugin MCP tools (Serena + Context7) — explicit full tool names.
3
+ set -euo pipefail
4
+
5
+ INPUT=$(cat)
6
+ TOOL_NAME=$(echo "$INPUT" | python3 -c "import json,sys; print(json.loads(sys.stdin.read()).get('tool_name',''))" 2>/dev/null || echo "")
7
+
8
+ case "$TOOL_NAME" in
9
+ mcp__plugin_sn_serena__check_onboarding_performed|\
10
+ mcp__plugin_sn_serena__delete_memory|\
11
+ mcp__plugin_sn_serena__edit_memory|\
12
+ mcp__plugin_sn_serena__find_file|\
13
+ mcp__plugin_sn_serena__initial_instructions|\
14
+ mcp__plugin_sn_serena__insert_after_symbol|\
15
+ mcp__plugin_sn_serena__insert_before_symbol|\
16
+ mcp__plugin_sn_serena__jet_brains_find_declaration|\
17
+ mcp__plugin_sn_serena__jet_brains_find_implementations|\
18
+ mcp__plugin_sn_serena__jet_brains_find_referencing_symbols|\
19
+ mcp__plugin_sn_serena__jet_brains_find_symbol|\
20
+ mcp__plugin_sn_serena__jet_brains_get_symbols_overview|\
21
+ mcp__plugin_sn_serena__jet_brains_inline_symbol|\
22
+ mcp__plugin_sn_serena__jet_brains_move|\
23
+ mcp__plugin_sn_serena__jet_brains_rename|\
24
+ mcp__plugin_sn_serena__jet_brains_safe_delete|\
25
+ mcp__plugin_sn_serena__jet_brains_type_hierarchy|\
26
+ mcp__plugin_sn_serena__list_dir|\
27
+ mcp__plugin_sn_serena__list_memories|\
28
+ mcp__plugin_sn_serena__onboarding|\
29
+ mcp__plugin_sn_serena__read_memory|\
30
+ mcp__plugin_sn_serena__rename_memory|\
31
+ mcp__plugin_sn_serena__replace_symbol_body|\
32
+ mcp__plugin_sn_serena__search_for_pattern|\
33
+ mcp__plugin_sn_serena__write_memory|\
34
+ mcp__plugin_sn_context7__resolve-library-id|\
35
+ mcp__plugin_sn_context7__query-docs)
36
+ python3 -c "
37
+ import json
38
+ print(json.dumps({
39
+ 'hookSpecificOutput': {
40
+ 'hookEventName': 'PermissionRequest',
41
+ 'decision': {'behavior': 'allow'}
42
+ }
43
+ }))
44
+ "
45
+ ;;
46
+ esac