jfox-cli 1.15.0__tar.gz → 1.16.0__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.
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/workflows/integration-test.yml +4 -4
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.gitignore +1 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/AGENTS.md +4 -4
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/CHANGELOG.md +12 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/CLAUDE.md +4 -4
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/PKG-INFO +26 -5
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/README.md +23 -3
- jfox_cli-1.16.0/docs/installation.md +129 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/json-schemas.md +11 -9
- jfox_cli-1.16.0/docs/superpowers/plans/2026-09-14-lightweight-install.md +1768 -0
- jfox_cli-1.16.0/docs/superpowers/plans/2026-09-23-h1-strip-normalization.md +522 -0
- jfox_cli-1.16.0/docs/superpowers/specs/2026-09-10-lightweight-install-embed-extra-design.md +266 -0
- jfox_cli-1.16.0/docs/superpowers/specs/2026-09-23-h1-strip-normalization-design.md +91 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/__init__.py +1 -1
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/cli.py +237 -13
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/embedding_backend.py +73 -1
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/note.py +14 -4
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/search_engine.py +11 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/vector_store.py +15 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/pyproject.toml +4 -2
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/pytest.ini +1 -0
- jfox_cli-1.16.0/scripts/verify_lightweight_install.sh +36 -0
- jfox_cli-1.16.0/tests/integration/test_edit_roundtrip.py +75 -0
- jfox_cli-1.16.0/tests/integration/test_no_embed_degradation.py +237 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_add_dedup.py +2 -0
- jfox_cli-1.16.0/tests/unit/test_content_file.py +169 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_daemon_cli.py +8 -0
- jfox_cli-1.16.0/tests/unit/test_embed_availability.py +116 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_format_unify.py +6 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_git_extractor.py +7 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_index_kb_param.py +7 -0
- jfox_cli-1.16.0/tests/unit/test_pyproject_embed_extra.py +47 -0
- jfox_cli-1.16.0/tests/unit/test_search_engine_embed_warning.py +79 -0
- jfox_cli-1.16.0/tests/unit/test_vector_store_embed_guard.py +85 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/uv.lock +6 -4
- jfox_cli-1.15.0/docs/installation.md +0 -98
- jfox_cli-1.15.0/tests/unit/test_content_file.py +0 -73
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/ci/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release/release_helper.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-all/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-all/release_all_helper.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-cc-plugin/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-cc-plugin/release_cc_plugin_helper.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-kimi-plugin/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-kimi-plugin/release_kimi_plugin_helper.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude-plugin/marketplace.json +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.githooks/pre-push +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/docs_improvement.yml +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/workflows/publish.yml +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.markdownlint-cli2.jsonc +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.pi-lens.json +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.python-version +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/DEVELOPMENT_PLAN.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/SESSION.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/SESSION_SUMMARY.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/claude-code-plugin-guide.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/cli-descriptions.yaml +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/cli-reference.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/nightly-test.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/plugin-inventory.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-11-bulk-import-bm25-fix.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-11-edit-command.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-11-unify-format-option.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-ci-coverage-optimization.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-edit-content-file.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-fix-index-rebuild-clear.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-fix-index-verify-id-mismatch.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-fix-jfox-health-skill-kb-param.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-index-kb-param.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-lazy-import-perf.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-skill-redesign.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-add-content-file.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-bulk-import-vectorstore-init.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-ingest-log-command.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-ingest-skill-sync.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-suppress-third-party-logging.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-sync-skills-with-cli.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-14-sync-docs-daemon-show.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-15-gpu-embedding.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-15-make-daemon-deps-required.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-15-session-summary-confirmation.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-16-fix-windows-daemon-console-window.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-18-daemon-timeout-and-index-rebuild.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-22-release-skill.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-26-fix-daemon-deprecation-warnings.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-27-intranet-model-download.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-28-tag-filtering.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-29-daemon-stop-fix.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-03-jfox-check.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-03-list-notes-skip-summary.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-03-log-level-fix.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-04-list-notes-index.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-06-atomic-write.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-09-session-note-type.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-10-jfox-plugin.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-19-fix-last-used-never.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-20-modelscope-migration.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-02-todo-note-type.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-16-kimi-code-auto-summary.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-17-index-rebuild-backlinks.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-17-using-jfox-skill.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-18-self-update-command.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-21-fragment-capture.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-21-gem-synthesis.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-25-gem-synth-throttle-ledger.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-08-auto-summary-schedule-window.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-08-candidate-promote.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-gem-synth-dedup.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-release-cc-plugin-skill.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-session-summary-streamline.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-show-json.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-17-fix-candidate-dual-h1.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-18-dedup-lifecycle-decouple.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-19-promote-skill-three-modes.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-25-bookshelf.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-25-gem-synth-dedup-incremental-merge.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-26-kb-backup-restore.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-26-promote-skill-clear-reports-rewrite.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-27-release-all.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-28-bookshelf-flat-bundle.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-28-nightly-fulltest.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-07-session-to-permanent-cc-kimi.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-11-permanent-note-template.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-12-noteindex-frontmatter-limit-drop.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-15-delete-backlinks-cleanup.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-16-bm25-concurrent-write-race.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-21-index-verify-legacy-filenames.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-21-moc-density-diagnose.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-bm25-type-debt-cleanup.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-issue-392-cr-leftovers.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-jfox-moc-skill.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-markdownlint-adoption.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-moc-create-update.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-25-moc-create-update-json-shorthand.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-27-issue-436-organize-archive.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-28-cpu-default-model-bge-small-zh.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-29-english-readme-baseline.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-29-issue-383-add-permanent-dedup.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-29-louvain-moc-clustering.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-30-gem-synth-prompt-judgment.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-30-test-config-isolation.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-31-deterministic-cli-reference.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-01-ci-docs-drift-gate.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-02-plugin-inventory-enum-checks.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-03-jfox-moc-batch-quality-chapter.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-03-moc-member-management.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-04-chromadb-dim-migration-ndarray.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-05-moc-diagnose-archived-orphan.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-07-bm25-fresh-kb-logging.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-07-pi-prompt-capture.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-09-from-dict-non-dict-guard.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-09-nightly-test-failures.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-10-skill-sync-399-overview-jfox-judge.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-14-json-schema-unify.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-14-wiki-link-self-link.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-03-bugfixes-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-12-skill-redesign-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-13-pr-auto-code-review-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-14-show-command-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-15-gpu-embedding-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-15-session-summary-confirmation-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-21-release-skill-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-26-fix-daemon-deprecation-warnings-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-27-intranet-model-download-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-28-tag-filtering-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-29-daemon-stop-fix-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-30-jfox-kb-env-var-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-03-jfox-check-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-03-list-notes-skip-summary-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-03-log-level-fix-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-04-list-notes-index-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-06-atomic-write-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-09-jfox-plugin-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-09-session-note-type-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-20-modelscope-migration-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-02-todo-note-type-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-16-kimi-code-auto-summary-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-17-index-rebuild-backlinks-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-17-using-jfox-skill-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-18-archive-soft-delete-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-18-self-update-command-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-21-fragment-capture-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-21-gem-synthesis-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-25-gem-synth-throttle-ledger-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-08-candidate-promote-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-gem-synth-dedup-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-release-cc-plugin-skill-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-session-summary-streamline-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-show-json-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-18-dedup-lifecycle-decouple-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-19-promote-skill-three-modes-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-25-bookshelf-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-25-gem-synth-dedup-incremental-merge-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-26-kb-backup-restore-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-26-promote-skill-clear-reports-rewrite-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-27-release-all-orchestration-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-28-bookshelf-flat-bundle-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-28-nightly-fulltest-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-07-session-to-permanent-cc-kimi-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-11-permanent-note-template-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-12-noteindex-frontmatter-limit-drop-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-15-delete-backlinks-cleanup-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-16-bm25-concurrent-write-race-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-20-bm25-clear-orphan-followup-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-21-index-verify-legacy-filenames-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-21-moc-density-diagnose-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-bm25-type-debt-cleanup-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-issue-392-cr-leftovers-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-jfox-moc-skill-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-markdownlint-adoption-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-moc-create-update-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-25-moc-create-update-json-shorthand-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-27-issue-436-organize-archive-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-27-redirect-and-delete-guard.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-28-cpu-default-model-bge-small-zh-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-29-english-readme-baseline-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-29-issue-383-add-permanent-dedup-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-29-louvain-moc-clustering-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-30-gem-synth-prompt-judgment-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-30-test-config-isolation-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-31-deterministic-cli-reference-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-01-ci-docs-drift-gate-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-02-plugin-inventory-enum-checks-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-03-jfox-moc-batch-quality-chapter-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-03-moc-member-management-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-04-chromadb-dim-migration-ndarray-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-05-moc-diagnose-archived-orphan-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-07-bm25-fresh-kb-logging-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-07-pi-prompt-capture-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-09-from-dict-non-dict-guard-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-09-nightly-test-failures-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-10-skill-sync-399-overview-jfox-judge-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-14-json-schema-unify-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-14-wiki-link-self-link-design.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/troubleshooting.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jessica-jones-static-cable.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/__main__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/add_dedup.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/extractor.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/kimi_source.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/ledger.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/loop.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/runner.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/scanner.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/schedule.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/sources.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/backup/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/backup/cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/backup/loop.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/backup/manager.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/backup/schedule.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/bm25_index.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/bookshelf/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/bookshelf/cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/bookshelf/meta.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/bookshelf/store.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/candidates/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/candidates/cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/candidates/service.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/config.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/daemon/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/daemon/__main__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/daemon/client.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/daemon/process.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/daemon/server.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/dedup.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/dedup_lifecycle.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/embedding_migration.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/formatters.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/fragment/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/fragment/cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/fragment/internal_sources.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/fragment/service.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/fragment/store.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/git_extractor.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/global_config.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/graph.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/indexer.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/kb_manager.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/moc/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/moc/cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/moc/cluster.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/moc/draft.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/moc/generate.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/model_downloader.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/models.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/note_index.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/performance.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/actions.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/grounding.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/judge.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/lifecycle.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/runner.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/service.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/store.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/transcript.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/redirect.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/template.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/template_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/utils.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/package.json +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/.claude-plugin/plugin.json +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/hooks/fragment-capture.sh +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/hooks/hooks.json +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/bookshelf/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/ingest/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/manage/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/organize/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/promote/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/search/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/session-summary/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/session-to-permanent/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/using-jfox/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/README.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/kimi.plugin.json +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-admin/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-auto-summary/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-manage/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-promote/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-template/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/using-jfox/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/pi-plugin/README.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/pi-plugin/extensions/jfox-prompt-capture.ts +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/pi-plugin/test/run-tests.ts +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/run_full_test.ps1 +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/LOUVAIN_VERIFY.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/download-model-intranet.sh +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/enum_coverage.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/generate_docs.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/louvain_verify.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/nightly_test.sh +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/nightly_test_helpers.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/plugin_inventory.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/README.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-common/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-bookshelf/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-ci/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-common/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-judge/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-moc/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-overview/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-promote/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release-all/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release-cc-plugin/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release-kimi-plugin/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-session-to-permanent/SKILL.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/COVERAGE_PLAN.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/MIGRATION.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/TESTS.md +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/conftest.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/fixtures/bulk_import_notes.json +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_auto_summary_kimi.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_backlinks.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_candidate_promote_flow.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_cli_reference_generation.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_fragment_capture_flow.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_index_rebuild_backlinks.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_links_edit_add.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_moc_member_commands.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_model_download.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_plugin_inventory.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_tag_filter_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/performance/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/performance/test_performance.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_add_dedup_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_advanced_features.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_cli_format.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_config_set_unit.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_config_unit.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_core_workflow.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_embedding_device.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_hybrid_search.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_integration.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_json_schema_contract.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_kb_current.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_suggest_links.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/conftest.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/test_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/test_meta.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/test_store.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/conftest.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_add_backfill_links.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_archive.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_atomic_write.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_config_sources.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_defaults.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_extractor.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_ledger.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_loop.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_runner.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_scanner.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_schedule.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_status.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_backup.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_bm25_batch.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_bm25_concurrency.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_bm25_fresh_kb_logging.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_candidates_migrated_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_check.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_conftest_mock.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_daemon_process.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_dedup_lifecycle.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_default_model_switch.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_delete_backlink_cleanup.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_delete_guard.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_edit.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_embedding_backend_daemon_only.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_embedding_local_load.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_embedding_migration.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_enum_coverage.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_formatters.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_config.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_hook.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_internal_sources.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_service.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_store.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_generate_docs.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_global_config.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_indexer_clear_before_rebuild.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_indexer_verify.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_json_mode.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_kb_manager.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_kimi_extractor.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_kimi_plugin_skills.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_kimi_scanner.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_lazy_import.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_ledger_migration.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_list_notes_skip.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_logging_config.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_cluster.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_create_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_draft.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_generate.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_integration.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_member_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_skill_docs.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_update_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_model_downloader.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_nightly_test_helpers.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_add_config.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_candidate_fields.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_candidate_filename.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_generator.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_index.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_lifecycle_hooks.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_promote.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_type_candidate.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_type_structure.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_plugin_inventory.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_actions.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_backfill.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_candidate.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_capture.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_grounding.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_judge.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_retirement.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_runner.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_store.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_transcript.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_rebuild_backlinks_impl.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_redirect.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_release_all_helper.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_release_cc_plugin_helper.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_release_helper.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_release_helper_verify.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_release_kimi_plugin_helper.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_runner_multi_source.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_scanner_list.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_session_file_source.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_session_note.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_session_source.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_show.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_system_prompt_sections.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_tag_filter.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_template.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_template_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_update.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_use_kb_env_var.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_using_jfox_skill.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_vector_store_clear.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_vector_store_dimension_warning.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_vector_store_embeddings.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_wiki_link_resolution.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/utils/__init__.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/utils/assertions.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/utils/jfox_cli.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/utils/note_generator.py +0 -0
- {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/utils/temp_kb.py +0 -0
|
@@ -206,12 +206,12 @@ jobs:
|
|
|
206
206
|
key: ${{ runner.os }}-sentence-transformers-bge-small-zh-v1.5
|
|
207
207
|
|
|
208
208
|
- name: Install dependencies
|
|
209
|
-
run: uv sync --extra dev
|
|
209
|
+
run: uv sync --extra dev --extra embed
|
|
210
210
|
|
|
211
211
|
- name: Run core tests
|
|
212
212
|
run: |
|
|
213
213
|
# 只跑核心工作流测试,单进程避免模型加载冲突
|
|
214
|
-
uv run pytest tests/test_core_workflow.py tests/test_integration.py -v --timeout=400 --tb=short
|
|
214
|
+
uv run --extra dev --extra embed pytest tests/test_core_workflow.py tests/test_integration.py -v --timeout=400 --tb=short
|
|
215
215
|
timeout-minutes: ${{ matrix.os == 'windows-latest' && 50 || 25 }}
|
|
216
216
|
env:
|
|
217
217
|
PYTHONIOENCODING: utf-8
|
|
@@ -264,12 +264,12 @@ jobs:
|
|
|
264
264
|
key: ${{ runner.os }}-sentence-transformers-bge-small-zh-v1.5
|
|
265
265
|
|
|
266
266
|
- name: Install dependencies
|
|
267
|
-
run: uv sync --extra dev
|
|
267
|
+
run: uv sync --extra dev --extra embed
|
|
268
268
|
|
|
269
269
|
- name: Run full test suite
|
|
270
270
|
run: |
|
|
271
271
|
# 全量测试,单进程(避免模型加载问题)
|
|
272
|
-
uv run pytest tests/ -v --timeout=600 --tb=short
|
|
272
|
+
uv run --extra dev --extra embed pytest tests/ -v --timeout=600 --tb=short
|
|
273
273
|
timeout-minutes: 60
|
|
274
274
|
env:
|
|
275
275
|
PYTHONIOENCODING: utf-8
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
| 语言 | Python >= 3.10 |
|
|
23
23
|
| CLI 框架 | Typer >= 0.12.0 |
|
|
24
24
|
| 终端美化 | Rich >= 13.0.0 |
|
|
25
|
-
| 文本嵌入 | sentence-transformers >= 3.0 (bge-small-zh-v1.5 / bge-m3) |
|
|
25
|
+
| 文本嵌入 | sentence-transformers >= 3.0 (bge-small-zh-v1.5 / bge-m3),现为可选 `[embed]` extra (#519) |
|
|
26
26
|
| 向量数据库 | ChromaDB >= 0.5.0 |
|
|
27
27
|
| 知识图谱 | NetworkX >= 3.0 |
|
|
28
28
|
| 文件监控 | Watchdog >= 3.0 |
|
|
@@ -89,11 +89,11 @@ jfox/
|
|
|
89
89
|
### 安装开发环境
|
|
90
90
|
|
|
91
91
|
```bash
|
|
92
|
-
# 安装(使用 uv
|
|
93
|
-
uv sync --extra dev
|
|
92
|
+
# 安装(使用 uv,推荐;embed 为语义组件,开发环境需要)
|
|
93
|
+
uv sync --extra dev --extra embed
|
|
94
94
|
|
|
95
95
|
# 安装(legacy pip fallback)
|
|
96
|
-
pip install -e ".[dev]"
|
|
96
|
+
pip install -e ".[dev,embed]"
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
### 运行测试
|
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to jfox-cli will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.16.0] - 2026-09-23
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- **install**: split sentence-transformers into [embed] extra with graceful degradation (#519) (#537)
|
|
10
|
+
|
|
11
|
+
### Fixes
|
|
12
|
+
|
|
13
|
+
- **cli**: normalize --content-file input - strip leading H1 unconditionally, unify stdin (#541) (#542)
|
|
14
|
+
|
|
15
|
+
[1.16.0]: https://github.com/zhuxixi/jfox/compare/v1.15.0...v1.16.0
|
|
16
|
+
|
|
5
17
|
## [1.15.0] - 2026-09-20
|
|
6
18
|
|
|
7
19
|
### Features
|
|
@@ -13,11 +13,11 @@ JFox is a local-first personal knowledge management CLI tool based on the Zettel
|
|
|
13
13
|
## Development Commands
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
# Install (using uv, recommended)
|
|
17
|
-
uv sync --extra dev
|
|
16
|
+
# Install (using uv, recommended; embed = semantic component, needed for dev)
|
|
17
|
+
uv sync --extra dev --extra embed
|
|
18
18
|
|
|
19
19
|
# Install (legacy pip fallback)
|
|
20
|
-
pip install -e ".[dev]"
|
|
20
|
+
pip install -e ".[dev,embed]"
|
|
21
21
|
|
|
22
22
|
# Run tests
|
|
23
23
|
uv run pytest tests/ -v # All tests
|
|
@@ -130,7 +130,7 @@ Notes are Markdown files with YAML frontmatter stored under `~/.zettelkasten/<kb
|
|
|
130
130
|
- **Test utils** (`tests/utils/`): `temp_kb.py`, `jfox_cli.py` (CLI wrapper), `note_generator.py`
|
|
131
131
|
- **全局配置隔离**: conftest 设 `ZK_CONFIG_PATH`(配合既有 `ZK_KB_ROOT`)指向临时目录,pytest 及其拉起的 CLI 子进程不读写真实 `~/.zk_config.json`(#469,`global_config.py` 的 `DEFAULT_CONFIG_PATH` 支持该 env 覆盖);`JFOX_SYNTHESIS_DB` 同样无条件指临时路径,防 DedupStore 单例写真实 `~/.zettelkasten/synthesis_log.db`(#483)
|
|
132
132
|
- **Model caching**: Session-level model cache in conftest.py to avoid 30-60s reload per test
|
|
133
|
-
- **Test markers**: `slow`, `performance`, `integration`, `embedding`, `workflow`, `bulk`
|
|
133
|
+
- **Test markers**: `slow`, `performance`, `integration`, `embedding`, `workflow`, `bulk`, `no_embed`(#519:需在无 sentence-transformers 环境执行的降级测试,CI Fast 天然满足)
|
|
134
134
|
- **Run single-process** to avoid ChromaDB/model loading conflicts
|
|
135
135
|
- **Test directory reorganization mostly complete**:
|
|
136
136
|
- `tests/unit/` — Pure logic unit tests (25 files)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: jfox-cli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.16.0
|
|
4
4
|
Summary: JFox - Zettelkasten 知识管理 CLI 工具
|
|
5
5
|
Project-URL: Homepage, https://github.com/zhuxixi/jfox
|
|
6
6
|
Project-URL: Repository, https://github.com/zhuxixi/jfox
|
|
@@ -25,7 +25,6 @@ Requires-Dist: pydantic>=2.0
|
|
|
25
25
|
Requires-Dist: pyyaml>=6.0
|
|
26
26
|
Requires-Dist: rank-bm25>=0.2.2
|
|
27
27
|
Requires-Dist: rich>=13.0.0
|
|
28
|
-
Requires-Dist: sentence-transformers>=3.0
|
|
29
28
|
Requires-Dist: typer>=0.12.0
|
|
30
29
|
Requires-Dist: tzdata; sys_platform == 'win32'
|
|
31
30
|
Requires-Dist: uvicorn[standard]>=0.27.0
|
|
@@ -37,6 +36,8 @@ Requires-Dist: pytest-timeout>=2.0; extra == 'dev'
|
|
|
37
36
|
Requires-Dist: pytest-xdist>=3.0; extra == 'dev'
|
|
38
37
|
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
39
38
|
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
39
|
+
Provides-Extra: embed
|
|
40
|
+
Requires-Dist: sentence-transformers>=3.0; extra == 'embed'
|
|
40
41
|
Description-Content-Type: text/markdown
|
|
41
42
|
|
|
42
43
|
# JFox
|
|
@@ -95,12 +96,32 @@ install → initialize → create a note → create a link → search
|
|
|
95
96
|
|
|
96
97
|
### Install
|
|
97
98
|
|
|
98
|
-
|
|
99
|
+
The default install is lightweight and CPU-friendly:
|
|
99
100
|
|
|
100
101
|
```bash
|
|
101
|
-
uv tool install "
|
|
102
|
+
uv tool install "jfox-cli"
|
|
103
|
+
# or from source: uv tool install "git+https://github.com/zhuxixi/jfox.git"
|
|
102
104
|
```
|
|
103
105
|
|
|
106
|
+
It includes note CRUD, BM25 keyword search, and the knowledge graph. It does **not** include semantic vector search (no torch/CUDA download; zero nvidia dependencies on CPU-only machines).
|
|
107
|
+
|
|
108
|
+
#### Semantic search component (optional)
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# GPU machines
|
|
112
|
+
uv tool install "jfox-cli[embed]"
|
|
113
|
+
|
|
114
|
+
# CPU-only machines (UV_TORCH_BACKEND=cpu makes uv resolve the CPU torch build, no CUDA)
|
|
115
|
+
UV_TORCH_BACKEND=cpu uv tool install "jfox-cli[embed]"
|
|
116
|
+
|
|
117
|
+
# pip users (on CPU machines run first: pip install torch --index-url https://download.pytorch.org/whl/cpu)
|
|
118
|
+
pip install "jfox-cli[embed]"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### Upgrading from 1.x
|
|
122
|
+
|
|
123
|
+
Starting with 2.0, the default install no longer bundles the semantic search component. An in-place upgrade (pip/uv do not uninstall existing packages) usually keeps working unchanged; after rebuilding an environment, jfox prints the same install hint the first time a semantic feature is used. After installing the component, run `jfox index rebuild` to backfill the semantic index.
|
|
124
|
+
|
|
104
125
|
For local development, see [Installation and Development](#installation-and-development).
|
|
105
126
|
|
|
106
127
|
### Initialize a knowledge base
|
|
@@ -322,7 +343,7 @@ For the current per-skill directory inventory, see the [generated plugin skill i
|
|
|
322
343
|
```bash
|
|
323
344
|
git clone https://github.com/zhuxixi/jfox.git
|
|
324
345
|
cd jfox
|
|
325
|
-
uv sync --extra dev
|
|
346
|
+
uv sync --extra dev --extra embed
|
|
326
347
|
```
|
|
327
348
|
|
|
328
349
|
Verify the installation:
|
|
@@ -54,12 +54,32 @@ install → initialize → create a note → create a link → search
|
|
|
54
54
|
|
|
55
55
|
### Install
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
The default install is lightweight and CPU-friendly:
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
uv tool install "
|
|
60
|
+
uv tool install "jfox-cli"
|
|
61
|
+
# or from source: uv tool install "git+https://github.com/zhuxixi/jfox.git"
|
|
61
62
|
```
|
|
62
63
|
|
|
64
|
+
It includes note CRUD, BM25 keyword search, and the knowledge graph. It does **not** include semantic vector search (no torch/CUDA download; zero nvidia dependencies on CPU-only machines).
|
|
65
|
+
|
|
66
|
+
#### Semantic search component (optional)
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# GPU machines
|
|
70
|
+
uv tool install "jfox-cli[embed]"
|
|
71
|
+
|
|
72
|
+
# CPU-only machines (UV_TORCH_BACKEND=cpu makes uv resolve the CPU torch build, no CUDA)
|
|
73
|
+
UV_TORCH_BACKEND=cpu uv tool install "jfox-cli[embed]"
|
|
74
|
+
|
|
75
|
+
# pip users (on CPU machines run first: pip install torch --index-url https://download.pytorch.org/whl/cpu)
|
|
76
|
+
pip install "jfox-cli[embed]"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### Upgrading from 1.x
|
|
80
|
+
|
|
81
|
+
Starting with 2.0, the default install no longer bundles the semantic search component. An in-place upgrade (pip/uv do not uninstall existing packages) usually keeps working unchanged; after rebuilding an environment, jfox prints the same install hint the first time a semantic feature is used. After installing the component, run `jfox index rebuild` to backfill the semantic index.
|
|
82
|
+
|
|
63
83
|
For local development, see [Installation and Development](#installation-and-development).
|
|
64
84
|
|
|
65
85
|
### Initialize a knowledge base
|
|
@@ -281,7 +301,7 @@ For the current per-skill directory inventory, see the [generated plugin skill i
|
|
|
281
301
|
```bash
|
|
282
302
|
git clone https://github.com/zhuxixi/jfox.git
|
|
283
303
|
cd jfox
|
|
284
|
-
uv sync --extra dev
|
|
304
|
+
uv sync --extra dev --extra embed
|
|
285
305
|
```
|
|
286
306
|
|
|
287
307
|
Verify the installation:
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Installation
|
|
2
|
+
|
|
3
|
+
## Recommended: uv
|
|
4
|
+
|
|
5
|
+
### Default install (lightweight, CPU-friendly)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Install as a global tool: note CRUD, BM25 keyword search, and the knowledge
|
|
9
|
+
# graph. No semantic vector search — no torch/CUDA download, zero nvidia
|
|
10
|
+
# dependencies on CPU-only machines.
|
|
11
|
+
uv tool install "jfox-cli"
|
|
12
|
+
|
|
13
|
+
# Or install from source
|
|
14
|
+
uv tool install "git+https://github.com/zhuxixi/jfox.git"
|
|
15
|
+
|
|
16
|
+
# Try without installing
|
|
17
|
+
uvx --from "git+https://github.com/zhuxixi/jfox.git" jfox --help
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Semantic search component (optional)
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# GPU machines
|
|
24
|
+
uv tool install "jfox-cli[embed]"
|
|
25
|
+
|
|
26
|
+
# CPU-only machines (UV_TORCH_BACKEND=cpu makes uv resolve the CPU torch
|
|
27
|
+
# build, no CUDA)
|
|
28
|
+
UV_TORCH_BACKEND=cpu uv tool install "jfox-cli[embed]"
|
|
29
|
+
|
|
30
|
+
# pip users (on CPU machines run first: pip install torch --index-url
|
|
31
|
+
# https://download.pytorch.org/whl/cpu)
|
|
32
|
+
pip install "jfox-cli[embed]"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### For local development
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Clone and install for local development
|
|
39
|
+
git clone https://github.com/zhuxixi/jfox.git
|
|
40
|
+
cd jfox
|
|
41
|
+
uv sync --extra dev --extra embed
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Verify:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
jfox --help
|
|
48
|
+
jfox --version
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Legacy: pip
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pip install -e ".[dev,embed]"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Upgrade
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Auto-detect installation method and upgrade
|
|
61
|
+
jfox update
|
|
62
|
+
|
|
63
|
+
# JSON output with version info
|
|
64
|
+
jfox update --json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
If `jfox update` fails (e.g. behind a proxy or on an unsupported install method), use the manual command for your install method:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# uv tool users
|
|
71
|
+
uv tool upgrade jfox-cli
|
|
72
|
+
|
|
73
|
+
# pipx users
|
|
74
|
+
pipx upgrade jfox-cli
|
|
75
|
+
|
|
76
|
+
# pip users
|
|
77
|
+
pip install --upgrade jfox-cli
|
|
78
|
+
|
|
79
|
+
# Development mode (git clone + uv sync --extra dev --extra embed)
|
|
80
|
+
git pull && uv sync --extra dev --extra embed
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Upgrading from 1.x
|
|
84
|
+
|
|
85
|
+
Starting with 2.0, the default install no longer bundles the semantic search component. An in-place upgrade (pip/uv do not uninstall existing packages) usually keeps working unchanged; after rebuilding an environment, jfox prints the same install hint the first time a semantic feature is used. After installing the `[embed]` component, run `jfox index rebuild` to backfill the semantic index.
|
|
86
|
+
|
|
87
|
+
## Uninstall
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# uv users
|
|
91
|
+
uv tool uninstall jfox-cli
|
|
92
|
+
|
|
93
|
+
# pip users
|
|
94
|
+
pip uninstall jfox-cli
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Requirements
|
|
98
|
+
|
|
99
|
+
- Python >= 3.10
|
|
100
|
+
- Core dependencies: typer, rich, chromadb, networkx, watchdog, pyyaml, fastapi, uvicorn
|
|
101
|
+
- Optional `[embed]` extra: sentence-transformers (+ torch) — required only for semantic vector search
|
|
102
|
+
|
|
103
|
+
## Windows PATH
|
|
104
|
+
|
|
105
|
+
If `jfox` command is not found after installation:
|
|
106
|
+
|
|
107
|
+
**uv users:**
|
|
108
|
+
|
|
109
|
+
```powershell
|
|
110
|
+
# Check uv tool install path
|
|
111
|
+
uv tool dir
|
|
112
|
+
# Add the corresponding bin directory to PATH
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**pip users:**
|
|
116
|
+
|
|
117
|
+
```powershell
|
|
118
|
+
# Check install location
|
|
119
|
+
pip show jfox-cli | findstr Location
|
|
120
|
+
# Add the Scripts directory to PATH, e.g.:
|
|
121
|
+
# C:\Users\<user>\AppData\Local\Packages\PythonSoftwareFoundation.Python3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\Scripts
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## HuggingFace Mirror (China)
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
export HF_ENDPOINT=https://hf-mirror.com
|
|
128
|
+
jfox init
|
|
129
|
+
```
|
|
@@ -35,27 +35,29 @@ else:
|
|
|
35
35
|
|
|
36
36
|
命令均支持 `--json` 或 `--format json`;`--kb <name>` 选择目标知识库。
|
|
37
37
|
|
|
38
|
+
其中 #519 新增的降级警告 `warnings[]` 元素统一形状:`{"code": "embedding_unavailable", "message": "<安装提示>", "fallback": "keyword" | "bm25_only"}`;缺语义组件的拒绝错误统一携带 `code: "embed_dependency_missing"`(`error` 含 GPU/CPU/pip 三路安装指引)。
|
|
39
|
+
|
|
38
40
|
| 命令 | 成功顶层字段 | 实体位置 | 失败形状 |
|
|
39
41
|
|------|--------------|----------|----------|
|
|
40
42
|
| `init` | `success, message, name` | 平铺 | `{success, error}` |
|
|
41
|
-
| `add` | `success, id, title, note{id,title,type,filepath,links}` + 可选 `warnings, backfill_failures, rollback_failures, backfill_note_save_failed, vector_dimension_warning
|
|
42
|
-
| `search` | `success, query, mode, include_archived, total, results[]` | 列表 `results` | `{success, error}` |
|
|
43
|
-
| `status` | `success, knowledge_base{path,exists}, stats, backend{type,model,dimension}
|
|
43
|
+
| `add` | `success, id, title, note{id,title,type,filepath,links}` + 可选 `warnings, backfill_failures, rollback_failures, backfill_note_save_failed, vector_dimension_warning, semantic_index_warning`(#519 无语义组件时降级提示) | 嵌套 `note`;顶层冗余 `id`/`title` | 重复:`{success, skipped:"duplicate", duplicate{matched_id,matched_title,matched_by,score}}`;其余 `{success, error}` |
|
|
44
|
+
| `search` | `success, query, mode, include_archived, total, results[]` + 可选 `warnings[]`(#519 降级时) | 列表 `results` | `{success, error}`;`--mode semantic` 且无语义服务时拒绝:`{success, code:"embed_dependency_missing", error}`(#519) |
|
|
45
|
+
| `status` | `success, knowledge_base{path,exists}, stats, backend{type,model,dimension}, embedding{local_package,daemon_running,service_available}`(#519 可用性块) | 嵌套三段 | `{success, error}` |
|
|
44
46
|
| `list` | `success, total, notes[]`(项含 `outgoing,incoming`) | 列表 `notes` | `{success, error}` |
|
|
45
47
|
| `show` | `success` + `id,title,type,created,updated,tags,links,backlinks,topic,filepath,content,content_body` + 可选 `source,archived`、candidate 字段(`gem_level` 等)、溯源字段(`source_fragments` 等) | 顶层平铺 | `{success, error}` |
|
|
46
48
|
| `refs` | 默认:`success, notes[]`;`--search`:`success, query, matches[]`;`--note`:`success, note{id,title,type}, forward_links[], backward_links[]`(悬空项带 `dangling:true`) | 分支各异 | `{success, error}` |
|
|
47
49
|
| `delete` | `success, deleted, title` | 平铺 | 入链守卫:`{success, error, references{frontmatter[],body[],total}}`;其余 `{success, error}` |
|
|
48
50
|
| `archive` / `unarchive` | `success, archived`/`unarchived`, `title` | 平铺 | `{success, error}` |
|
|
49
|
-
| `edit` | `success, note{id,title,type,filepath}` + 可选 `title_changed{old,new}, warnings
|
|
50
|
-
| `query` | `success, query, semantic_results, results[]` | 列表 `results` | `{success, error}` |
|
|
51
|
+
| `edit` | `success, note{id,title,type,filepath}` + 可选 `title_changed{old,new}, warnings, semantic_index_warning`(#519 无语义组件时) | 嵌套 `note` | `{success, error}` |
|
|
52
|
+
| `query` | `success, query, semantic_results, effective_mode, results[]` + 可选 `warnings[]`(#519 降级时 `effective_mode:"keyword"`) | 列表 `results` | `{success, error}` |
|
|
51
53
|
| `graph` | `--stats`:`success, total_nodes, total_edges, avg_degree, isolated_nodes, clusters, top_hubs[]`;`--orphans`:`success, orphans[]`;`--note`:`success, note_id, title, related[]` | 分支各异 | `{success, error}` |
|
|
52
54
|
| `daily` | `success, date, total, notes[]` | 列表 `notes` | `{success, error}` |
|
|
53
55
|
| `inbox` | `success, total, notes[]` | 列表 `notes` | `{success, error}` |
|
|
54
|
-
| `suggest-links` | `success, content, total_suggestions, threshold, suggestions[]` | 列表 `suggestions` | `{success, error}` |
|
|
55
|
-
| `index <action>` | `rebuild`:`success, indexed, bm25_rebuilt, bm25_indexed[, backlinks_*]
|
|
56
|
+
| `suggest-links` | `success, content, total_suggestions, threshold, suggestions[]` + 可选 `warnings[]`(#519 降级为关键词匹配时) | 列表 `suggestions` | `{success, error}` |
|
|
57
|
+
| `index <action>` | `rebuild`:`success, indexed, semantic_skipped, bm25_rebuilt, bm25_indexed[, backlinks_*]` + 可选 `warnings[]`(#519 无语义服务时 `semantic_skipped:true`、仅重建 BM25);`rebuild-bm25`:`success, indexed`;`status`:`success, total_indexed, last_indexed, pending_changes, vector_store`;`bm25-status`:`success, bm25_index{...}`;`verify`:`success`(语义见特殊语义说明)+ 透传字段 | 平铺 | `{success, error}`(错误分支需显式 `--json` 开启,见特殊语义说明) |
|
|
56
58
|
| `kb <action>` | `list`:`success, current, knowledge_bases[]`;`create/switch/use/remove/delete/rename`:`success, message`;`current/info`:`success, name, path, total_notes, by_type, created, last_used, description, is_current` | 平铺实体 | `{success, error}`(错误分支需显式 `--json` 开启,见特殊语义说明) |
|
|
57
|
-
| `ingest-log` | `success, repo_path, commits_extracted, imported, failed, total`(空仓库带 `message`) | 平铺计数 | `{success, error}
|
|
58
|
-
| `bulk-import` | `success, imported, failed, total`(`--json` 默认开启) | 平铺计数 | `{success, error}
|
|
59
|
+
| `ingest-log` | `success, repo_path, commits_extracted, imported, failed, total`(空仓库带 `message`) | 平铺计数 | `{success, error}`;缺语义组件拒绝:`{success, code:"embed_dependency_missing", error}`(#519) |
|
|
60
|
+
| `bulk-import` | `success, imported, failed, total`(`--json` 默认开启) | 平铺计数 | `{success, error}`;缺语义组件拒绝:`{success, code:"embed_dependency_missing", error}`(#519) |
|
|
59
61
|
| `check` | `success, total, issues[{file,issue,size}]`(发现 issue 时退出码 1,见特殊语义说明) | 列表 `issues` | `{success, error}` |
|
|
60
62
|
| `update` | `success, method, previous_version, current_version, already_latest, command, output, stderr, error`(成功时 `error` 为空串)+ dev 分支 `message` | 平铺 | 同形状 `success:false` |
|
|
61
63
|
| `redirect` | `success, old_id, keep_id, files_changed, frontmatter_links_updated, body_links_updated, backlinks_updated, conflicts[], unreadable_files[], errors[], verification_passed[, dry_run]` | 平铺计数 + 列表 | `{success, error, errors[], conflicts[], unreadable_files[], verification_passed}`(`error` 为首条错误 / 冲突或不可读文件计数摘要 / 验证未通过提示) |
|