conexus 2.3.4__tar.gz → 2.3.6__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.
- {conexus-2.3.4 → conexus-2.3.6}/.claude-plugin/marketplace.json +1 -1
- {conexus-2.3.4 → conexus-2.3.6}/CHANGELOG.md +28 -0
- {conexus-2.3.4 → conexus-2.3.6}/PKG-INFO +15 -11
- {conexus-2.3.4 → conexus-2.3.6}/README.md +13 -8
- {conexus-2.3.4 → conexus-2.3.6}/docs/cli-reference.md +6 -5
- {conexus-2.3.4 → conexus-2.3.6}/docs/configuration.md +26 -21
- {conexus-2.3.4 → conexus-2.3.6}/docs/contributing.md +3 -3
- conexus-2.3.6/docs/getting-started.md +166 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/memory-and-tasks.md +1 -1
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-007-claude-adoption-session-context-and-search-guidance.md +2 -2
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr-overview.md +1 -1
- {conexus-2.3.4 → conexus-2.3.6}/docs/repo-indexing.md +6 -10
- {conexus-2.3.4 → conexus-2.3.6}/docs/storage-tiers.md +10 -8
- {conexus-2.3.4 → conexus-2.3.6}/nx/CHANGELOG.md +11 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/README.md +1 -1
- {conexus-2.3.4 → conexus-2.3.6}/pyproject.toml +2 -3
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/config.py +1 -1
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/t3.py +1 -9
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/doc_indexer.py +1 -7
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/indexer.py +1 -7
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/retry.py +7 -9
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/scoring.py +1 -7
- {conexus-2.3.4 → conexus-2.3.6}/uv.lock +4 -8
- conexus-2.3.4/docs/getting-started.md +0 -143
- {conexus-2.3.4 → conexus-2.3.6}/.beads/.gitignore +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.beads/README.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.beads/config.yaml +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.beads/hooks/post-checkout +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.beads/hooks/post-merge +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.beads/hooks/pre-commit +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.beads/hooks/pre-push +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.beads/hooks/prepare-commit-msg +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.beads/interactions.jsonl +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.beads/issues.jsonl +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.beads/metadata.json +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.claude/skills/release.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.devcontainer/Dockerfile +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.devcontainer/devcontainer.json +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.dockerignore +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.env.example +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.gitattributes +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.github/workflows/ci.yml +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.github/workflows/release.yml +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.gitignore +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/.markdownlint.json +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/AGENTS.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/CLAUDE.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/Formula/nx.rb +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/LICENSE +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/README.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/architecture.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/historical/README.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/historical/architecture.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/historical/plans/2026-02-23-rdr-workflow-skills-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/historical/plans/2026-02-23-rdr-workflow-skills-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/historical/plans/2026-02-24-nx-plugin-v0.4.0.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/historical/plans/2026-02-24-smart-repo-indexing-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/historical/plans/2026-02-24-smart-repo-indexing-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/historical/spec.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-02-28-rdr-004-four-store-cloud-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-02-28-rdr-004-four-store-cloud-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-01-dry-run-pdf-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-01-dry-run-pdf-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-01-pdfplumber-tier-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-01-rc10-1.0.0-readiness-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-01-rc10-critique-findings.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-02-classifier-skip-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-chunk-byte-cap-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-chunk-byte-cap-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-force-reindex-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-rdr017-phase2-cli-monitor-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-rdr017-phase2-cli-monitor-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-rdr018-git-hooks-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-04-doc-ux-polish-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-04-rdr-doc-polish-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-07-rdr-023-agent-tool-permissions-design.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-07-rdr-023-agent-tool-permissions-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-08-rdr-025-language-agnostic-agents-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-09-rdr-027-search-ux-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-09-rdr-028-language-registry-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-09-rdr-029-pipeline-versioning-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-09-rdr-030-reliability-hardening-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-11-rdr-034-mcp-server-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-21-rdr039-phase2-hooks-impl-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/README.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/001-rdr-process-validation.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/002-t2-status-synchronization.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/010-t1-http-server.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/011-pdf-ingest-test-coverage.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/012-pdfplumber-extraction-tier.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/014-knowledge-base-retrieval-quality.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/015-indexing-pipeline-rethink.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/016-ast-chunk-line-range-bug.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/017-indexing-progress-reporting.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/018-replace-serve-with-git-hooks.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/023-agent-tool-permissions-audit.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/024-rdr-process-guardrails.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/028-language-registry-unification.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/029-pipeline-versioning.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/cce-query-model-mismatch.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-001-rdr-process-validation.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-002-t2-status-synchronization.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-004-four-store-architecture.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-005-chromadb-cloud-quota-enforcement.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-006-chunk-size-configuration.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-008-nx-workflow-integration.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-009-remove-agentic-and-answer-flags.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-010-t1-scratch-persistent-bounded-store.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-011-pdf-ingest-test-coverage.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-012-pdfplumber-extraction-tier.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-013-remove-nx-pm-layer.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-014-knowledge-base-retrieval-quality.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-015-indexing-pipeline-rethink.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-016-ast-chunk-line-range-bug.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-017-indexing-progress-reporting.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-018-replace-serve-with-git-hooks.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-019-chromadb-transient-retry.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-020-voyage-chromadb-read-timeout.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-021-docling-pdf-extraction.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-022-memory-delete-command.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-023-agent-tool-permissions-audit.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-024-rdr-process-guardrails.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-025-language-agnostic-agents.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-026-hybrid-search-fusion.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-027-search-results-ux.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-028-code-search-recall.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-029-pipeline-versioning.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-030-reliability-hardening.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-031-collection-portability.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-032-indexer-decomposition.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-033-pdf-agent-nx-index-alignment.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-034-mcp-server-agent-storage.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-035-plugin-agent-mcp-tool-access.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-036-post-accept-planning-workflow.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-037-t3-database-consolidation.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-038-local-t3-backend.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-039-claude-code-framework-alignment.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr-nexus-integration.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr-templates.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/docs/rdr-workflow.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/.mcp.json +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/_shared/CONTEXT_PROTOCOL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/_shared/ERROR_HANDLING.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/_shared/MAINTENANCE.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/_shared/README.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/_shared/RELAY_TEMPLATE.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/architect-planner.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/code-review-expert.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/codebase-deep-analyzer.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/debugger.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/deep-analyst.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/deep-research-synthesizer.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/developer.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/knowledge-tidier.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/orchestrator.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/pdf-chromadb-processor.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/plan-auditor.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/plan-enricher.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/strategic-planner.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/substantive-critic.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/agents/test-validator.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/analyze-code.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/architecture.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/create-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/debug.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/deep-analysis.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/enrich-plan.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/implement.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/knowledge-tidy.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/nx-preflight.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/pdf-process.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/plan-audit.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-accept.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-close.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-create.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-gate.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-list.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-research.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-show.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/research.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/review-code.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/substantive-critique.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/commands/test-validate.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/hooks.json +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/post_compact_hook.sh +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/rdr_hook.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/session_start_hook.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/stop_failure_hook.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/subagent-start.sh +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/t2_prefix_scan.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/registry.yaml +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/resources/rdr/README-TEMPLATE.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/resources/rdr/TEMPLATE.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/resources/rdr/post-mortem/TEMPLATE.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/architecture/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/brainstorming-gate/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/cli-controller/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/code-review/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/codebase-analysis/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/debugging/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/deep-analysis/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/development/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/enrich-plan/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/knowledge-tidying/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/nexus/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/nexus/reference.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/orchestration/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/pdf-processing/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/plan-validation/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-accept/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-close/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-create/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-gate/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-list/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-research/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-show/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/research-synthesis/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/serena-code-nav/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/strategic-planning/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/substantive-critique/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/test-validation/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/using-nx-skills/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/nx/skills/writing-nx-skills/SKILL.md +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/__init__.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/chunker.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/classifier.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/cli.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/code_indexer.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/__init__.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/_helpers.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/_provision.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/collection.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/config_cmd.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/doctor.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/hook.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/hooks.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/index.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/memory.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/scratch.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/search_cmd.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/store.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/corpus.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/__init__.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/chroma_quotas.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/local_ef.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/t1.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/t2.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/errors.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/exporter.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/formatters.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/frecency.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/hooks.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/index_context.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/indexer_utils.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/languages.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/mcp_server.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/md_chunker.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/pdf_chunker.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/pdf_extractor.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/prose_indexer.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/registry.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/ripgrep_cache.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/search_engine.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/session.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/ttl.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/src/nexus/types.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/__init__.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/__snapshots__/test_search_snapshot.ambr +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/conftest.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/auth-login.sh +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/lib.sh +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/run.sh +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/sandbox.sh +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/scenarios/00_debug_load.sh +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/scenarios/01_smoke.sh +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/scenarios/02_sequential_thinking.sh +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/scenarios/03_skills.sh +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/hooks/__init__.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/hooks/test_post_compact_hook.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/hooks/test_stop_failure_hook.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_ast_languages.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_chroma_quotas.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_chroma_retry.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_chunker.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_chunker_ast_languages.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_classifier.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_collection_cmd.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_config.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_config_cmd.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_corpus.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_doc_indexer.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_doc_indexer_hash_sync.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_doc_indexer_pagination.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_doctor_cmd.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_doctor_integrity.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_e2e.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_exporter.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_formatters.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_frecency.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_git_hooks.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_hooks.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_hybrid_boost.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_index_cmd.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_index_lock.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_index_rdr_cmd.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_index_reminder.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_indexer.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_indexer_chunk_flow.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_indexer_e2e.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_indexer_modules.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_integration.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_languages.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_local_mode.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_mcp_concurrency.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_mcp_integration.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_mcp_server.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_mcp_session.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_md_chunker.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_md_chunker_semantic_integrity.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_md_preservation.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_memory.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_minified_chunking.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_p0_regressions.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_chunker.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_chunker_integration.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_e2e.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_extractor.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_extractor_integration.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_extractor_normalization.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_normalization.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_subsystem.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_pipeline_version.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_plugin.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_plugin_install.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_plugin_structure.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_ppid_chain_hypothesis.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_provision.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_registry.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_ripgrep_cache.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_schema.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_scoring.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_scratch.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_scratch_cmd.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_search_cmd.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_search_engine.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_search_modules.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_search_snapshot.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_session.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_session_propagation_hypotheses.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_silent_error_logging.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_store_cmd.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_t1.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_t2.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_t2_prefix_scan.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_t3.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_t3_quota_enforcement.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_ttl.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_tuning_config.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_types_and_errors.py +0 -0
- {conexus-2.3.4 → conexus-2.3.6}/tests/test_voyage_retry.py +0 -0
|
@@ -6,6 +6,34 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [2.3.6] - 2026-03-23
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- **Restore voyageai as required dependency** — the `conexus[cloud]` optional extra
|
|
13
|
+
was an unnecessary workaround. Since `requires-python < 3.14` blocks the only
|
|
14
|
+
incompatible Python version, voyageai always works on supported Pythons. Reverted
|
|
15
|
+
to direct `import voyageai` with no guards. Removed the `cloud` extra.
|
|
16
|
+
|
|
17
|
+
## [2.3.5] - 2026-03-23
|
|
18
|
+
|
|
19
|
+
### Docs
|
|
20
|
+
- **Streamlined getting-started guide** — linear flow from prerequisites through
|
|
21
|
+
install, verify, use, plugin, cloud. Added `nx doctor` verify step, Python 3.14
|
|
22
|
+
workaround, `uv tool update` instructions, and `conexus[cloud]`/`conexus[local]`
|
|
23
|
+
extras documentation.
|
|
24
|
+
- **Three-pass substantive critique** — fixed query model docs (CCE collections use
|
|
25
|
+
voyage-context-3 for both index and query), removed "T3 cloud" mislabeling from
|
|
26
|
+
CLI reference, corrected tuning YAML structure (nested subsections, not flat keys),
|
|
27
|
+
fixed local-mode auto-detection docs (either key absent, not both), added missing
|
|
28
|
+
`--on-locked` flag and `NX_VOYAGEAI_READ_TIMEOUT_SECONDS` env var, corrected
|
|
29
|
+
minified code detection description, and replaced all `pip install` with `uv` syntax.
|
|
30
|
+
- **Unprefixed skill references** — corrected `/rdr-create` → `/nx:rdr-create` etc.
|
|
31
|
+
across all documentation and RDR files.
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
- **`is_local_mode()` docstring** — corrected to match implementation (either key
|
|
35
|
+
absent triggers local mode, not both).
|
|
36
|
+
|
|
9
37
|
## [2.3.4] - 2026-03-23
|
|
10
38
|
|
|
11
39
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: conexus
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.6
|
|
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
|
|
@@ -33,8 +33,7 @@ Requires-Dist: pyyaml>=6.0
|
|
|
33
33
|
Requires-Dist: structlog>=24.0
|
|
34
34
|
Requires-Dist: tqdm>=4.65
|
|
35
35
|
Requires-Dist: tree-sitter-language-pack==0.7.1
|
|
36
|
-
|
|
37
|
-
Requires-Dist: voyageai>=0.2; extra == 'cloud'
|
|
36
|
+
Requires-Dist: voyageai>=0.2
|
|
38
37
|
Provides-Extra: local
|
|
39
38
|
Requires-Dist: fastembed>=0.7.0; extra == 'local'
|
|
40
39
|
Description-Content-Type: text/markdown
|
|
@@ -72,22 +71,27 @@ nx store put --collection knowledge__myapp "API rate limit is 10k/min per the ve
|
|
|
72
71
|
|
|
73
72
|
## Quick Start
|
|
74
73
|
|
|
74
|
+
Requires Python 3.12–3.13 and [uv](https://docs.astral.sh/uv/).
|
|
75
|
+
|
|
75
76
|
```bash
|
|
76
77
|
uv tool install conexus # install the nx CLI
|
|
77
|
-
nx
|
|
78
|
+
nx doctor # verify installation
|
|
79
|
+
nx index repo . # index your repo (no API keys needed)
|
|
78
80
|
nx search "what does X do" # semantic search, fully local
|
|
79
81
|
```
|
|
80
82
|
|
|
81
|
-
|
|
83
|
+
Update: `uv tool update conexus`
|
|
84
|
+
|
|
85
|
+
Works immediately with local ONNX embeddings — no accounts, no API keys. For higher-quality cloud embeddings (Voyage AI), see the [cloud setup instructions](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md#cloud-mode-optional).
|
|
82
86
|
|
|
83
|
-
For Claude Code,
|
|
87
|
+
For Claude Code, install the plugin:
|
|
84
88
|
|
|
85
89
|
```bash
|
|
86
90
|
/plugin marketplace add Hellblazer/nexus
|
|
87
91
|
/plugin install nx@nexus-plugins
|
|
88
92
|
```
|
|
89
93
|
|
|
90
|
-
|
|
94
|
+
See [Getting Started](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md) for the full walkthrough.
|
|
91
95
|
|
|
92
96
|
## Three tiers, one lifecycle
|
|
93
97
|
|
|
@@ -111,7 +115,7 @@ nx index pdf paper.pdf --collection knowledge__ml # reference papers
|
|
|
111
115
|
nx store put --collection knowledge__ops "Redis maxmemory-policy: allkeys-lru for cache, noeviction for queues"
|
|
112
116
|
```
|
|
113
117
|
|
|
114
|
-
Repository indexing (`nx index repo`) is the most automated path. It classifies git-tracked files, chunks code into logical pieces via tree-sitter AST parsing across 31 languages, and embeds each chunk
|
|
118
|
+
Repository indexing (`nx index repo`) is the most automated path. It classifies git-tracked files, chunks code into logical pieces via tree-sitter AST parsing across 31 languages, and embeds each chunk using local ONNX models by default, or Voyage AI models in cloud mode. Recently-touched files rank higher via git frecency scoring.
|
|
115
119
|
|
|
116
120
|
See [Repo Indexing](https://github.com/Hellblazer/nexus/blob/main/docs/repo-indexing.md) for details and `.nexus.yml` configuration.
|
|
117
121
|
|
|
@@ -172,12 +176,12 @@ Full details: [CLI Reference](https://github.com/Hellblazer/nexus/blob/main/docs
|
|
|
172
176
|
2. [Workflow](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-workflow.md) — Create → Research → Gate → Accept → Close
|
|
173
177
|
3. [Nexus Integration](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-nexus-integration.md) — How storage tiers and agents amplify RDRs
|
|
174
178
|
4. [Templates](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-templates.md) — Minimal and full examples, post-mortem template
|
|
175
|
-
5. [Project RDR Index](https://github.com/Hellblazer/nexus/blob/main/docs/rdr/README.md) — All
|
|
179
|
+
5. [Project RDR Index](https://github.com/Hellblazer/nexus/blob/main/docs/rdr/README.md) — All project RDRs with status
|
|
176
180
|
|
|
177
181
|
## Prerequisites
|
|
178
182
|
|
|
179
|
-
- Python 3.12
|
|
180
|
-
- For
|
|
183
|
+
- Python 3.12–3.13, [`uv`](https://docs.astral.sh/uv/), `git`
|
|
184
|
+
- For cloud embeddings (optional): [ChromaDB Cloud](https://www.trychroma.com/) + [Voyage AI](https://www.voyageai.com/) accounts (free tiers available)
|
|
181
185
|
- For hybrid search: [`ripgrep`](https://github.com/BurntSushi/ripgrep)
|
|
182
186
|
|
|
183
187
|
## License
|
|
@@ -31,22 +31,27 @@ nx store put --collection knowledge__myapp "API rate limit is 10k/min per the ve
|
|
|
31
31
|
|
|
32
32
|
## Quick Start
|
|
33
33
|
|
|
34
|
+
Requires Python 3.12–3.13 and [uv](https://docs.astral.sh/uv/).
|
|
35
|
+
|
|
34
36
|
```bash
|
|
35
37
|
uv tool install conexus # install the nx CLI
|
|
36
|
-
nx
|
|
38
|
+
nx doctor # verify installation
|
|
39
|
+
nx index repo . # index your repo (no API keys needed)
|
|
37
40
|
nx search "what does X do" # semantic search, fully local
|
|
38
41
|
```
|
|
39
42
|
|
|
40
|
-
|
|
43
|
+
Update: `uv tool update conexus`
|
|
44
|
+
|
|
45
|
+
Works immediately with local ONNX embeddings — no accounts, no API keys. For higher-quality cloud embeddings (Voyage AI), see the [cloud setup instructions](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md#cloud-mode-optional).
|
|
41
46
|
|
|
42
|
-
For Claude Code,
|
|
47
|
+
For Claude Code, install the plugin:
|
|
43
48
|
|
|
44
49
|
```bash
|
|
45
50
|
/plugin marketplace add Hellblazer/nexus
|
|
46
51
|
/plugin install nx@nexus-plugins
|
|
47
52
|
```
|
|
48
53
|
|
|
49
|
-
|
|
54
|
+
See [Getting Started](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md) for the full walkthrough.
|
|
50
55
|
|
|
51
56
|
## Three tiers, one lifecycle
|
|
52
57
|
|
|
@@ -70,7 +75,7 @@ nx index pdf paper.pdf --collection knowledge__ml # reference papers
|
|
|
70
75
|
nx store put --collection knowledge__ops "Redis maxmemory-policy: allkeys-lru for cache, noeviction for queues"
|
|
71
76
|
```
|
|
72
77
|
|
|
73
|
-
Repository indexing (`nx index repo`) is the most automated path. It classifies git-tracked files, chunks code into logical pieces via tree-sitter AST parsing across 31 languages, and embeds each chunk
|
|
78
|
+
Repository indexing (`nx index repo`) is the most automated path. It classifies git-tracked files, chunks code into logical pieces via tree-sitter AST parsing across 31 languages, and embeds each chunk using local ONNX models by default, or Voyage AI models in cloud mode. Recently-touched files rank higher via git frecency scoring.
|
|
74
79
|
|
|
75
80
|
See [Repo Indexing](https://github.com/Hellblazer/nexus/blob/main/docs/repo-indexing.md) for details and `.nexus.yml` configuration.
|
|
76
81
|
|
|
@@ -131,12 +136,12 @@ Full details: [CLI Reference](https://github.com/Hellblazer/nexus/blob/main/docs
|
|
|
131
136
|
2. [Workflow](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-workflow.md) — Create → Research → Gate → Accept → Close
|
|
132
137
|
3. [Nexus Integration](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-nexus-integration.md) — How storage tiers and agents amplify RDRs
|
|
133
138
|
4. [Templates](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-templates.md) — Minimal and full examples, post-mortem template
|
|
134
|
-
5. [Project RDR Index](https://github.com/Hellblazer/nexus/blob/main/docs/rdr/README.md) — All
|
|
139
|
+
5. [Project RDR Index](https://github.com/Hellblazer/nexus/blob/main/docs/rdr/README.md) — All project RDRs with status
|
|
135
140
|
|
|
136
141
|
## Prerequisites
|
|
137
142
|
|
|
138
|
-
- Python 3.12
|
|
139
|
-
- For
|
|
143
|
+
- Python 3.12–3.13, [`uv`](https://docs.astral.sh/uv/), `git`
|
|
144
|
+
- For cloud embeddings (optional): [ChromaDB Cloud](https://www.trychroma.com/) + [Voyage AI](https://www.voyageai.com/) accounts (free tiers available)
|
|
140
145
|
- For hybrid search: [`ripgrep`](https://github.com/BurntSushi/ripgrep)
|
|
141
146
|
|
|
142
147
|
## License
|
|
@@ -17,7 +17,7 @@ nx search "authentication middleware" --corpus code --hybrid --n 20
|
|
|
17
17
|
| `QUERY` (positional) | Search query text |
|
|
18
18
|
| `PATH` (positional, optional) | Scope search to files under that directory |
|
|
19
19
|
| `--corpus NAME` | Collection prefix or full name (repeatable; default: `knowledge`, `code`, `docs`) |
|
|
20
|
-
| `--hybrid` |
|
|
20
|
+
| `--hybrid` | Augment semantic results with frecency-weighted ranking and ripgrep keyword matches (0.7*vector + 0.3*frecency). Requires ripgrep |
|
|
21
21
|
| `--no-rerank` | Disable cross-corpus reranking (use round-robin instead) |
|
|
22
22
|
| `--where KEY=VALUE` | Metadata filter (repeatable; multiple flags are ANDed) |
|
|
23
23
|
| `--max-file-chunks N` | Exclude chunks from files larger than N chunks (code corpora only; ANDs with `--where`) |
|
|
@@ -38,7 +38,7 @@ nx search "authentication middleware" --corpus code --hybrid --n 20
|
|
|
38
38
|
|
|
39
39
|
## nx index
|
|
40
40
|
|
|
41
|
-
Index content into T3
|
|
41
|
+
Index content into T3 collections.
|
|
42
42
|
|
|
43
43
|
```
|
|
44
44
|
nx index repo ./my-project
|
|
@@ -64,6 +64,7 @@ nx index repo ./my-project
|
|
|
64
64
|
|------|-------------|
|
|
65
65
|
| `--frecency-only` | Update frecency scores only; skip re-embedding (faster, for re-ranking refresh). Mutually exclusive with `--force` |
|
|
66
66
|
| `--force-stale` | Re-index only if collection pipeline version is outdated (smart force — skips current collections) |
|
|
67
|
+
| `--on-locked {skip,wait}` | Behavior when another process holds the repo lock: `skip` exits immediately, `wait` blocks (default: `wait`) |
|
|
67
68
|
|
|
68
69
|
**`pdf` and `md` flags:**
|
|
69
70
|
|
|
@@ -82,7 +83,7 @@ nx index repo ./my-project
|
|
|
82
83
|
|
|
83
84
|
## nx store
|
|
84
85
|
|
|
85
|
-
Manage T3
|
|
86
|
+
Manage T3 knowledge entries.
|
|
86
87
|
|
|
87
88
|
```
|
|
88
89
|
echo "# Cache Strategy" | nx store put - --collection knowledge --title "decision-cache" --tags "decision,arch"
|
|
@@ -220,7 +221,7 @@ nx scratch put "hypothesis: cache invalidation is stale"
|
|
|
220
221
|
|
|
221
222
|
## nx collection
|
|
222
223
|
|
|
223
|
-
Manage T3 cloud
|
|
224
|
+
Manage T3 collections (local or cloud).
|
|
224
225
|
|
|
225
226
|
```
|
|
226
227
|
nx collection list
|
|
@@ -228,7 +229,7 @@ nx collection list
|
|
|
228
229
|
|
|
229
230
|
| Subcommand | Description |
|
|
230
231
|
|------------|-------------|
|
|
231
|
-
| `list` | All
|
|
232
|
+
| `list` | All T3 collections with document counts |
|
|
232
233
|
| `info NAME` | Details for one collection |
|
|
233
234
|
| `verify NAME` | Existence check + document count |
|
|
234
235
|
| `delete NAME` | Delete collection (irreversible) |
|
|
@@ -13,7 +13,7 @@ Each level is deep-merged, with higher-priority values winning.
|
|
|
13
13
|
|
|
14
14
|
## Local Mode
|
|
15
15
|
|
|
16
|
-
Nexus auto-detects local mode when cloud credentials are absent. No configuration needed — just `
|
|
16
|
+
Nexus auto-detects local mode when cloud credentials are absent. No configuration needed — just `uv tool install conexus && nx index repo .`.
|
|
17
17
|
|
|
18
18
|
| Env var | Default | Description |
|
|
19
19
|
|---|---|---|
|
|
@@ -21,9 +21,9 @@ Nexus auto-detects local mode when cloud credentials are absent. No configuratio
|
|
|
21
21
|
| `NX_LOCAL_CHROMA_PATH` | `~/.local/share/nexus/chroma` | Override local ChromaDB storage path |
|
|
22
22
|
| `NX_LOCAL_EMBED_MODEL` | (auto) | Force a specific local embedding model name |
|
|
23
23
|
|
|
24
|
-
**Auto-detection**: When
|
|
24
|
+
**Auto-detection**: When either `CHROMA_API_KEY` or `VOYAGE_API_KEY` is absent, local mode activates — both are required for cloud mode. Set `NX_LOCAL=1` to force local mode even with cloud credentials.
|
|
25
25
|
|
|
26
|
-
**Embedding tiers**: Tier 0 (bundled MiniLM-L6-v2, 384d) is always available. Install `
|
|
26
|
+
**Embedding tiers**: Tier 0 (bundled MiniLM-L6-v2, 384d) is always available. Install with `uv tool install conexus --with "conexus[local]" --force` for tier 1 (bge-base-en-v1.5, 768d, better quality).
|
|
27
27
|
|
|
28
28
|
**Storage path**: Defaults to `$XDG_DATA_HOME/nexus/chroma` or `~/.local/share/nexus/chroma`. Override with `NX_LOCAL_CHROMA_PATH`.
|
|
29
29
|
|
|
@@ -54,8 +54,9 @@ Set via `nx config init` (wizard) or `nx config set KEY VALUE`. Stored in `~/.co
|
|
|
54
54
|
|---|---|---|---|
|
|
55
55
|
| `embeddings.rerankerModel` | `NX_EMBEDDINGS_RERANKER_MODEL` | `rerank-2.5` | Voyage reranker for multi-corpus merge |
|
|
56
56
|
| `client.host` | `NX_CLIENT_HOST` | `localhost` | Override ChromaDB host URL |
|
|
57
|
+
| `voyageai.read_timeout_seconds` | `NX_VOYAGEAI_READ_TIMEOUT_SECONDS` | `120` | Request timeout (seconds) for Voyage AI API calls. Increase for large PDF indexing |
|
|
57
58
|
|
|
58
|
-
Embedding models are selected automatically based on collection type (see [Storage Tiers](storage-tiers.md)): `voyage-code-3` for code, `voyage-context-3` for docs/knowledge at index time, `voyage-4` for
|
|
59
|
+
Embedding models are selected automatically based on collection type (see [Storage Tiers](storage-tiers.md)): `voyage-code-3` for code, `voyage-context-3` (CCE) for docs/rdr/knowledge at both index and query time, `voyage-4` for code queries only.
|
|
59
60
|
|
|
60
61
|
## Per-Repo Overrides (.nexus.yml)
|
|
61
62
|
|
|
@@ -77,26 +78,30 @@ The `[tuning]` section in `~/.config/nexus/config.yml` controls search scoring,
|
|
|
77
78
|
|
|
78
79
|
```yaml
|
|
79
80
|
tuning:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
scoring:
|
|
82
|
+
vector_weight: 0.7 # weight for vector similarity in hybrid scoring
|
|
83
|
+
frecency_weight: 0.3 # weight for git frecency in hybrid scoring
|
|
84
|
+
file_size_threshold: 30 # chunks — files larger than this are down-ranked
|
|
85
|
+
frecency:
|
|
86
|
+
decay_rate: 0.01 # frecency decay rate (higher = faster decay)
|
|
87
|
+
chunking:
|
|
88
|
+
code_chunk_lines: 150 # target lines per code chunk (fallback splitter)
|
|
89
|
+
pdf_chunk_chars: 1500 # target chars per PDF chunk
|
|
90
|
+
timeouts:
|
|
91
|
+
git_log: 30 # seconds — timeout for git log subprocess
|
|
92
|
+
ripgrep: 10 # seconds — timeout for ripgrep subprocess in hybrid search
|
|
88
93
|
```
|
|
89
94
|
|
|
90
|
-
|
|
|
95
|
+
| YAML path | Default | Description |
|
|
91
96
|
|-----|---------|-------------|
|
|
92
|
-
| `vector_weight` | `0.7` | Vector similarity weight in hybrid scoring formula |
|
|
93
|
-
| `frecency_weight` | `0.3` | Git frecency weight in hybrid scoring formula |
|
|
94
|
-
| `file_size_threshold` | `30` | Chunk count above which code files are down-ranked |
|
|
95
|
-
| `decay_rate` | `0.01` | Exponential decay rate for frecency scoring |
|
|
96
|
-
| `code_chunk_lines` | `150` | Target lines per code chunk (line-based fallback) |
|
|
97
|
-
| `pdf_chunk_chars` | `1500` | Target characters per PDF chunk |
|
|
98
|
-
| `
|
|
99
|
-
| `
|
|
97
|
+
| `tuning.scoring.vector_weight` | `0.7` | Vector similarity weight in hybrid scoring formula |
|
|
98
|
+
| `tuning.scoring.frecency_weight` | `0.3` | Git frecency weight in hybrid scoring formula |
|
|
99
|
+
| `tuning.scoring.file_size_threshold` | `30` | Chunk count above which code files are down-ranked |
|
|
100
|
+
| `tuning.frecency.decay_rate` | `0.01` | Exponential decay rate for frecency scoring |
|
|
101
|
+
| `tuning.chunking.code_chunk_lines` | `150` | Target lines per code chunk (line-based fallback) |
|
|
102
|
+
| `tuning.chunking.pdf_chunk_chars` | `1500` | Target characters per PDF chunk |
|
|
103
|
+
| `tuning.timeouts.git_log` | `30` | Timeout (seconds) for `git log` subprocess |
|
|
104
|
+
| `tuning.timeouts.ripgrep` | `10` | Timeout (seconds) for `rg` subprocess in hybrid search |
|
|
100
105
|
|
|
101
106
|
These values are exposed as a `TuningConfig` dataclass in `nexus.config`. The search command, indexer, and scoring modules all read from this config — changes take effect on the next invocation without restarting anything.
|
|
102
107
|
|
|
@@ -31,7 +31,7 @@ uv run pytest -m integration
|
|
|
31
31
|
|
|
32
32
|
## Code Conventions
|
|
33
33
|
|
|
34
|
-
- **Python 3.12
|
|
34
|
+
- **Python 3.12–3.13**: use `match/case`, `tomllib`, `typing.Protocol`, walrus operator
|
|
35
35
|
- **Type hints everywhere**: all public functions, methods, module-level variables
|
|
36
36
|
- **No ORM**: raw `sqlite3` for T2
|
|
37
37
|
- **Logging**: `structlog` — never `print()` in library code
|
|
@@ -76,7 +76,7 @@ Do not bump these without testing the full chunking pipeline.
|
|
|
76
76
|
## Git Workflow
|
|
77
77
|
|
|
78
78
|
- Branch naming: `feature/<bead-id>-<short-description>`
|
|
79
|
-
- Never push directly to `main` — all changes via PR
|
|
79
|
+
- Never push directly to `main` — all changes via PR (exception: version-bump release commits, see Release Process below)
|
|
80
80
|
- Use `bd` (beads) for task tracking
|
|
81
81
|
|
|
82
82
|
The `main` branch requires CI to pass before merging. Configure branch protection at
|
|
@@ -176,7 +176,7 @@ Every step below is **required**. Missing any one of them has caused problems in
|
|
|
176
176
|
```bash
|
|
177
177
|
gh run watch # watch CI until green
|
|
178
178
|
gh release view vX.Y.Z
|
|
179
|
-
pip
|
|
179
|
+
uv pip compile --no-deps conexus==X.Y.Z # confirm version resolves on PyPI
|
|
180
180
|
```
|
|
181
181
|
|
|
182
182
|
11. **Yank pre-release versions** (if applicable)
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Getting Started with Nexus
|
|
2
|
+
|
|
3
|
+
## Prerequisites
|
|
4
|
+
|
|
5
|
+
- **Python 3.12 or 3.13** (3.14 is not yet supported — [upstream dependency issue](https://github.com/pydantic/pydantic/issues))
|
|
6
|
+
- **[uv](https://docs.astral.sh/uv/)** — Python package manager
|
|
7
|
+
- **git**
|
|
8
|
+
|
|
9
|
+
Check your Python version:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
python3 --version
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
If you're on 3.14+, install 3.13 with `uv python install 3.13` — uv will use it automatically.
|
|
16
|
+
|
|
17
|
+
## Install
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
uv tool install conexus
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Verify:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
nx --version
|
|
27
|
+
nx doctor
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`nx doctor` checks dependencies, credentials, and connectivity. Everything should show `✓` except cloud credentials (which are optional).
|
|
31
|
+
|
|
32
|
+
## Update
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
uv tool update conexus
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Use it (no API keys needed)
|
|
39
|
+
|
|
40
|
+
Everything below works immediately — no accounts, no network.
|
|
41
|
+
|
|
42
|
+
### Index and search a repo
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
cd your-project
|
|
46
|
+
nx index repo . # index with local ONNX embeddings
|
|
47
|
+
nx search "retry logic" # semantic search, fully local
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Scratch — ephemeral inter-agent context (T1)
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
nx scratch put "working hypothesis: the cache TTL is too short"
|
|
54
|
+
nx scratch list
|
|
55
|
+
nx scratch search "cache"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Memory — persistent project notes (T2)
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
nx memory put "auth uses JWT with 24h expiry" -p myproject -t auth-notes
|
|
62
|
+
nx memory search "JWT" -p myproject
|
|
63
|
+
nx memory get -p myproject -t auth-notes
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Claude Code plugin (optional)
|
|
67
|
+
|
|
68
|
+
The `nx` plugin gives Claude Code agents access to all three storage tiers, 15 specialized agents, and 28 development workflow skills.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
/plugin marketplace add Hellblazer/nexus
|
|
72
|
+
/plugin install nx@nexus-plugins
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
After installing, run `/nx:nx-preflight` to verify all plugin dependencies (nx CLI, beads, superpowers plugin) are present.
|
|
76
|
+
|
|
77
|
+
See [plugin documentation](https://github.com/Hellblazer/nexus/blob/main/nx/README.md) for the full agent/skill reference. For local development from a repo checkout:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
claude --plugin-dir ./nx
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Cloud mode (optional)
|
|
84
|
+
|
|
85
|
+
Local mode uses bundled ONNX embeddings (384d MiniLM). Cloud mode upgrades to Voyage AI (1024d), cross-chunk context (CCE), and reranking.
|
|
86
|
+
|
|
87
|
+
### 1. Create accounts
|
|
88
|
+
|
|
89
|
+
| Service | Purpose | Free tier |
|
|
90
|
+
|---------|---------|-----------|
|
|
91
|
+
| [ChromaDB Cloud](https://trychroma.com) | Vector storage | Generous for individual use |
|
|
92
|
+
| [Voyage AI](https://voyageai.com) | Embeddings | 200M tokens/month |
|
|
93
|
+
|
|
94
|
+
Both free tiers cover typical usage at no cost.
|
|
95
|
+
|
|
96
|
+
### 2. Configure credentials
|
|
97
|
+
|
|
98
|
+
Interactive wizard:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
nx config init
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Or set individually:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
nx config set chroma_api_key sk-...
|
|
108
|
+
nx config set chroma_database nexus
|
|
109
|
+
nx config set voyage_api_key pa-...
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 3. Verify
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
nx doctor
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
All items should show `✓`. Fix anything marked `✗` before proceeding.
|
|
119
|
+
|
|
120
|
+
### 4. Index and search
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
nx index repo .
|
|
124
|
+
nx search "how does authentication work"
|
|
125
|
+
nx search "retry logic" --corpus code
|
|
126
|
+
nx search "API changelog" --corpus docs
|
|
127
|
+
nx search "database pool" --hybrid # semantic + keyword matching
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Common flags: `-n 20` (result count), `--json`, `--files` (paths only), `-c` (show matched text). `--hybrid` requires [ripgrep](https://github.com/BurntSushi/ripgrep).
|
|
131
|
+
|
|
132
|
+
### Upgrade local embedding quality (optional)
|
|
133
|
+
|
|
134
|
+
For better local-only embeddings (768d bge-base) without cloud:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
uv tool install conexus --with "conexus[local]" --force
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
To force local mode even when cloud credentials exist: `NX_LOCAL=1`.
|
|
141
|
+
|
|
142
|
+
## Troubleshooting
|
|
143
|
+
|
|
144
|
+
**`nx` command not found** — Make sure `~/.local/bin` is on your PATH. Run `uv tool install conexus` again and check the output for the install location.
|
|
145
|
+
|
|
146
|
+
**Crash on startup (Python 3.14)** — Nexus requires Python 3.12–3.13. If `python3 --version` shows 3.14, install 3.13: `uv python install 3.13`, then reinstall: `uv tool install conexus --force`.
|
|
147
|
+
|
|
148
|
+
**`nx doctor` reports credentials not set** — Expected for local mode. Only needed if you want cloud embeddings — run `nx config init`.
|
|
149
|
+
|
|
150
|
+
**Provisioning failed during `nx config init`** — If your ChromaDB plan restricts automatic database creation, create the database manually in the [dashboard](https://trychroma.com) using your `chroma_database` value as the name.
|
|
151
|
+
|
|
152
|
+
**`nx index repo .` fails with "credentials not set"** — In cloud mode, indexing requires T3 credentials. Run `nx config init` first, or use local mode (no credentials needed).
|
|
153
|
+
|
|
154
|
+
**`import voyageai` error** — Reinstall: `uv tool install conexus --force`. If on Python 3.14, downgrade to 3.13: `uv python install 3.13` then reinstall.
|
|
155
|
+
|
|
156
|
+
**First index is slow or hits a rate limit** — Large repos may take a few minutes. Add `--monitor` for per-file progress. Re-running is safe — unchanged files are skipped.
|
|
157
|
+
|
|
158
|
+
**`nx search` returns no results** — Run `nx doctor` to verify connectivity. If indexing was interrupted, re-run `nx index repo .` to resume.
|
|
159
|
+
|
|
160
|
+
## Next steps
|
|
161
|
+
|
|
162
|
+
- [CLI Reference](https://github.com/Hellblazer/nexus/blob/main/docs/cli-reference.md) — every command, every flag
|
|
163
|
+
- [Storage Tiers](https://github.com/Hellblazer/nexus/blob/main/docs/storage-tiers.md) — T1, T2, T3 architecture
|
|
164
|
+
- [Repo Indexing](https://github.com/Hellblazer/nexus/blob/main/docs/repo-indexing.md) — file classification, chunking, frecency
|
|
165
|
+
- [Configuration](https://github.com/Hellblazer/nexus/blob/main/docs/configuration.md) — config keys, environment variables, tuning
|
|
166
|
+
- [RDR Overview](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-overview.md) — decision tracking with Research-Design-Review
|
|
@@ -22,7 +22,7 @@ active decisions, working state — and retrieve it by project and title.
|
|
|
22
22
|
The plugin's SessionStart hooks automatically surface T2 memory context so
|
|
23
23
|
agents know where a project stands without being told. Two hooks contribute:
|
|
24
24
|
|
|
25
|
-
1. `nx hook session-start` lists recent T2 entries for the current repo.
|
|
25
|
+
1. `nx hook session-start` (internal, invoked by plugin hooks) lists recent T2 entries for the current repo.
|
|
26
26
|
|
|
27
27
|
2. The plugin's `session_start_hook.py` scans all T2 namespaces for the
|
|
28
28
|
project (bare, `_rdr`, etc.) and injects a summary, along with ready beads.
|
|
@@ -94,7 +94,7 @@ The following was tested in a single session against the arcaneum project:
|
|
|
94
94
|
--show-toplevel` → `Path(toplevel).name`. For repo `arcaneum`, this produces
|
|
95
95
|
`arcaneum`. The hook then calls `nx memory list --project arcaneum`.
|
|
96
96
|
|
|
97
|
-
The RDR workflow (via `/rdr-create` and the `rdr_hook.py`) populates T2 under
|
|
97
|
+
The RDR workflow (via `/nx:rdr-create` and the `rdr_hook.py`) populates T2 under
|
|
98
98
|
`{repo_name}_rdr` (e.g., `arcaneum_rdr`). These are different keys in the T2
|
|
99
99
|
store.
|
|
100
100
|
|
|
@@ -348,7 +348,7 @@ contradicts the actual namespace conventions in use (`{repo}_rdr`,
|
|
|
348
348
|
**Project naming**: Use purpose-specific suffixes for different memory domains:
|
|
349
349
|
|
|
350
350
|
- bare `{repo}` — general project memory and notes
|
|
351
|
-
- `{repo}_rdr` — RDR documents and gate results (populated by `/rdr-create`)
|
|
351
|
+
- `{repo}_rdr` — RDR documents and gate results (populated by `/nx:rdr-create`)
|
|
352
352
|
- `{repo}_pm` — project management context (populated by `nx pm`)
|
|
353
353
|
|
|
354
354
|
The session hook discovers all populated namespaces by prefix scan; content
|
|
@@ -56,7 +56,7 @@ Flag assumptions that your design depends on. Low-stakes assumptions need no ver
|
|
|
56
56
|
|
|
57
57
|
RDRs are not waterfall documents written once before implementation. They're iterative — write one, build, learn from what you find, write the next one. Each RDR builds on what earlier ones established, and sometimes an implementation reveals that a prior decision needs revisiting.
|
|
58
58
|
|
|
59
|
-
The Nexus project has produced
|
|
59
|
+
The Nexus project has produced over 35 RDRs across its development. The corpus is searchable, so when starting a new design, prior decisions surface automatically — preventing contradictions and avoiding redundant investigation.
|
|
60
60
|
|
|
61
61
|
## Statuses and types
|
|
62
62
|
|
|
@@ -41,12 +41,12 @@ Classification is overridable via `.nexus.yml` (see [Per-Repo Configuration](#ne
|
|
|
41
41
|
|
|
42
42
|
## Dual-Collection Architecture
|
|
43
43
|
|
|
44
|
-
Each indexed repository produces two T3 (
|
|
44
|
+
Each indexed repository produces two T3 collections (local ONNX or cloud Voyage AI):
|
|
45
45
|
|
|
46
|
-
| Collection |
|
|
46
|
+
| Collection | Cloud Index Model | Cloud Query Model | Contents |
|
|
47
47
|
|---|---|---|---|
|
|
48
48
|
| `code__<name>-<hash8>` | `voyage-code-3` | `voyage-4` | Code files |
|
|
49
|
-
| `docs__<name>-<hash8>` | `voyage-context-3` (CCE) | `voyage-
|
|
49
|
+
| `docs__<name>-<hash8>` | `voyage-context-3` (CCE) | `voyage-context-3` | Prose + PDF files |
|
|
50
50
|
|
|
51
51
|
`<name>` is the repository basename; `<hash8>` is the first 8 hex characters of the
|
|
52
52
|
SHA-256 digest of the main repository path. Long basenames are truncated to stay within
|
|
@@ -107,10 +107,7 @@ line-based splitting: 150-line chunks with 15% overlap.
|
|
|
107
107
|
|
|
108
108
|
### Minified Code Handling
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
back to byte-based splitting instead of producing single oversized chunks. This prevents
|
|
112
|
-
minified JavaScript, CSS, and similar files from consuming disproportionate storage and
|
|
113
|
-
degrading search quality.
|
|
110
|
+
Individual lines exceeding the byte limit (12 KB) are pre-split at natural code delimiters (`;`, `,`, `}`) before chunking. AST-produced chunks that individually exceed the byte limit are post-processed by the same line-level splitting. This prevents minified JavaScript, CSS, and similar files from producing single oversized chunks that consume disproportionate storage and degrade search quality.
|
|
114
111
|
|
|
115
112
|
### Context Prefix Injection (Embed-Only)
|
|
116
113
|
|
|
@@ -229,7 +226,7 @@ version is bumped. This enables targeted re-indexing:
|
|
|
229
226
|
checks, so only changed files are re-embedded. This is the recommended flag after upgrading
|
|
230
227
|
Nexus to a version with pipeline changes.
|
|
231
228
|
|
|
232
|
-
`nx doctor` reports the pipeline version status of each collection
|
|
229
|
+
In cloud mode, `nx doctor` reports the pipeline version status of each collection. In local mode, pipeline version is not checked — run `nx index repo --force-stale` after an upgrade to refresh any outdated collections.
|
|
233
230
|
|
|
234
231
|
```
|
|
235
232
|
✓ pipeline (code__nexus-571b8edd): v4
|
|
@@ -268,5 +265,4 @@ nx search "query" --corpus code --hybrid --no-rerank # hybrid without cross-cor
|
|
|
268
265
|
`--corpus` resolves as a prefix: `code` matches all `code__*` collections, `docs` matches
|
|
269
266
|
all `docs__*` collections. A fully-qualified name (containing `__`) matches exactly.
|
|
270
267
|
|
|
271
|
-
|
|
272
|
-
model.
|
|
268
|
+
`code__*` collections are queried with `voyage-4`. CCE collections (`docs__*`, `rdr__*`, `knowledge__*`) are queried with `voyage-context-3` — the same model used at index time. Mixing models across CCE vector spaces produces near-random similarity scores.
|
|
@@ -8,7 +8,7 @@ Nexus organizes data across three tiers with increasing durability. Data flows u
|
|
|
8
8
|
|------|---------|---------|------------|-----|
|
|
9
9
|
| T1 -- scratch | ChromaDB HTTP server (per-session) | Localhost only | Session only | Working notes, hypotheses |
|
|
10
10
|
| T2 -- memory | SQLite + FTS5 (WAL) | None | Survives restarts | Per-project notes, session context |
|
|
11
|
-
| T3 -- knowledge | ChromaDB
|
|
11
|
+
| T3 -- knowledge | Local ChromaDB (default) or ChromaDB Cloud + Voyage AI | Local: none / Cloud: required | Permanent | Semantic search, indexed code/docs |
|
|
12
12
|
|
|
13
13
|
## T1 -- Session Scratch
|
|
14
14
|
|
|
@@ -44,12 +44,12 @@ T3 has two backends: **local** (zero-config) and **cloud** (higher quality).
|
|
|
44
44
|
|
|
45
45
|
Backed by `chromadb.PersistentClient` with local ONNX embeddings. No API keys or network required. Data stored at `~/.local/share/nexus/chroma`.
|
|
46
46
|
|
|
47
|
-
| | Tier 0 (bundled) | Tier 1 (`
|
|
47
|
+
| | Tier 0 (bundled) | Tier 1 (`uv tool install conexus --with "conexus[local]" --force`) |
|
|
48
48
|
|---|---|---|
|
|
49
49
|
| Model | all-MiniLM-L6-v2 | bge-base-en-v1.5 |
|
|
50
50
|
| Dimensions | 384 | 768 |
|
|
51
51
|
| Quality | Basic semantic matching | Better code & prose retrieval |
|
|
52
|
-
| Install | Included | `
|
|
52
|
+
| Install | Included | `uv tool install conexus --with "conexus[local]" --force` |
|
|
53
53
|
|
|
54
54
|
All collection types use the same local model (no per-prefix splitting). Reranking is unavailable in local mode.
|
|
55
55
|
|
|
@@ -66,10 +66,12 @@ Collections are namespaced by corpus type using `__` (double underscore) as sepa
|
|
|
66
66
|
| Pattern | Contents | Cloud index model | Cloud query model |
|
|
67
67
|
|---------|----------|-------------------|-------------------|
|
|
68
68
|
| `code__<repo>-<hash>` | Indexed source code | voyage-code-3 | voyage-4 |
|
|
69
|
-
| `docs__<repo>-<hash>` | Indexed prose files | voyage-context-3 (CCE) | voyage-
|
|
70
|
-
| `rdr__<repo>-<hash>` | Indexed RDR documents | voyage-context-3 (CCE) | voyage-
|
|
71
|
-
| `docs__<corpus>` | Indexed PDFs and markdown | voyage-context-3 (CCE) | voyage-
|
|
72
|
-
| `knowledge__<topic>` | Stored agent outputs and notes | voyage-context-3 | voyage-
|
|
69
|
+
| `docs__<repo>-<hash>` | Indexed prose files | voyage-context-3 (CCE) | voyage-context-3 |
|
|
70
|
+
| `rdr__<repo>-<hash>` | Indexed RDR documents | voyage-context-3 (CCE) | voyage-context-3 |
|
|
71
|
+
| `docs__<corpus>` | Indexed PDFs and markdown | voyage-context-3 (CCE) | voyage-context-3 |
|
|
72
|
+
| `knowledge__<topic>` | Stored agent outputs and notes | voyage-context-3 (CCE) | voyage-context-3 |
|
|
73
|
+
|
|
74
|
+
CCE collections must be queried with `voyage-context-3` to stay in the same vector space — `voyage-4` is not compatible. Only `code__*` collections use `voyage-4` for queries.
|
|
73
75
|
|
|
74
76
|
In local mode, all collections use the active local model for both index and query.
|
|
75
77
|
|
|
@@ -120,7 +122,7 @@ T3 (knowledge)
|
|
|
120
122
|
### Promotion methods
|
|
121
123
|
|
|
122
124
|
- **T1 -> T2**: `nx scratch promote ID --project NAME --title NAME`, or auto-flush of flagged items at session end.
|
|
123
|
-
- **T2 -> T3**: `nx memory promote
|
|
125
|
+
- **T2 -> T3**: `nx memory promote ID --collection NAME` (by numeric row ID from `nx memory list`).
|
|
124
126
|
|
|
125
127
|
### TTL translation on promote
|
|
126
128
|
|