jfox-cli 1.14.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.14.0 → jfox_cli-1.16.0}/.github/workflows/integration-test.yml +12 -4
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.gitignore +1 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/AGENTS.md +4 -4
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/CHANGELOG.md +38 -11
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/CLAUDE.md +4 -4
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/PKG-INFO +26 -5
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/README.md +23 -3
- jfox_cli-1.16.0/docs/installation.md +129 -0
- jfox_cli-1.16.0/docs/json-schemas.md +168 -0
- jfox_cli-1.16.0/docs/superpowers/plans/2026-09-07-bm25-fresh-kb-logging.md +216 -0
- jfox_cli-1.16.0/docs/superpowers/plans/2026-09-07-pi-prompt-capture.md +708 -0
- jfox_cli-1.16.0/docs/superpowers/plans/2026-09-09-from-dict-non-dict-guard.md +723 -0
- jfox_cli-1.16.0/docs/superpowers/plans/2026-09-09-nightly-test-failures.md +388 -0
- jfox_cli-1.16.0/docs/superpowers/plans/2026-09-10-skill-sync-399-overview-jfox-judge.md +298 -0
- jfox_cli-1.16.0/docs/superpowers/plans/2026-09-14-json-schema-unify.md +878 -0
- 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-14-wiki-link-self-link.md +775 -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-07-bm25-fresh-kb-logging-design.md +83 -0
- jfox_cli-1.16.0/docs/superpowers/specs/2026-09-07-pi-prompt-capture-design.md +156 -0
- jfox_cli-1.16.0/docs/superpowers/specs/2026-09-09-from-dict-non-dict-guard-design.md +244 -0
- jfox_cli-1.16.0/docs/superpowers/specs/2026-09-09-nightly-test-failures-design.md +86 -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-10-skill-sync-399-overview-jfox-judge-design.md +86 -0
- jfox_cli-1.16.0/docs/superpowers/specs/2026-09-14-json-schema-unify-design.md +131 -0
- jfox_cli-1.16.0/docs/superpowers/specs/2026-09-14-wiki-link-self-link-design.md +91 -0
- jfox_cli-1.16.0/docs/superpowers/specs/2026-09-23-h1-strip-normalization-design.md +91 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/__init__.py +1 -1
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/auto_summary/cli.py +13 -6
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/auto_summary/scanner.py +4 -1
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/backup/cli.py +14 -5
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/backup/loop.py +2 -2
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/backup/manager.py +8 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/bm25_index.py +5 -1
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/bookshelf/cli.py +8 -6
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/candidates/cli.py +8 -2
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/cli.py +436 -91
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/embedding_backend.py +73 -1
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/fragment/cli.py +39 -6
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/global_config.py +95 -20
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/note.py +14 -4
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/note_index.py +4 -2
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/prompts/cli.py +33 -10
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/prompts/service.py +4 -1
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/search_engine.py +11 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/template_cli.py +91 -23
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/vector_store.py +15 -0
- jfox_cli-1.16.0/packages/pi-plugin/README.md +56 -0
- jfox_cli-1.16.0/packages/pi-plugin/extensions/jfox-prompt-capture.ts +147 -0
- jfox_cli-1.16.0/packages/pi-plugin/test/run-tests.ts +178 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/pyproject.toml +4 -2
- {jfox_cli-1.14.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/skills-recommend/pi/jfox-judge/SKILL.md +102 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-overview/SKILL.md +7 -5
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/conftest.py +13 -0
- jfox_cli-1.16.0/tests/fixtures/bulk_import_notes.json +4 -0
- jfox_cli-1.16.0/tests/integration/test_edit_roundtrip.py +75 -0
- jfox_cli-1.16.0/tests/integration/test_fragment_capture_flow.py +182 -0
- jfox_cli-1.16.0/tests/integration/test_links_edit_add.py +130 -0
- jfox_cli-1.16.0/tests/integration/test_no_embed_degradation.py +237 -0
- jfox_cli-1.16.0/tests/test_json_schema_contract.py +308 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_add_dedup.py +2 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_status.py +3 -3
- jfox_cli-1.16.0/tests/unit/test_bm25_fresh_kb_logging.py +54 -0
- jfox_cli-1.16.0/tests/unit/test_content_file.py +169 -0
- {jfox_cli-1.14.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.14.0 → jfox_cli-1.16.0}/tests/unit/test_format_unify.py +6 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_git_extractor.py +7 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_global_config.py +289 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_index_kb_param.py +7 -0
- jfox_cli-1.16.0/tests/unit/test_note_generator.py +51 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_capture.py +36 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_cli.py +5 -3
- jfox_cli-1.16.0/tests/unit/test_pyproject_embed_extra.py +47 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_redirect.py +1 -0
- jfox_cli-1.16.0/tests/unit/test_search_engine_embed_warning.py +79 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_vector_store_clear.py +9 -5
- jfox_cli-1.16.0/tests/unit/test_vector_store_embed_guard.py +85 -0
- jfox_cli-1.16.0/tests/unit/test_wiki_link_resolution.py +114 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/utils/note_generator.py +15 -2
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/uv.lock +6 -4
- jfox_cli-1.14.0/docs/installation.md +0 -98
- jfox_cli-1.14.0/tests/integration/test_fragment_capture_flow.py +0 -120
- jfox_cli-1.14.0/tests/unit/test_content_file.py +0 -73
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.claude/skills/ci/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.claude/skills/release/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.claude/skills/release/release_helper.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.claude/skills/release-all/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.claude/skills/release-all/release_all_helper.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.claude/skills/release-cc-plugin/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.claude/skills/release-cc-plugin/release_cc_plugin_helper.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.claude/skills/release-kimi-plugin/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.claude/skills/release-kimi-plugin/release_kimi_plugin_helper.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.claude-plugin/marketplace.json +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.githooks/pre-push +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/docs_improvement.yml +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.github/workflows/publish.yml +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.markdownlint-cli2.jsonc +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.pi-lens.json +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/.python-version +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/DEVELOPMENT_PLAN.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/SESSION.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/SESSION_SUMMARY.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/claude-code-plugin-guide.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/cli-descriptions.yaml +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/cli-reference.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/nightly-test.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/plugin-inventory.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-11-bulk-import-bm25-fix.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-11-edit-command.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-11-unify-format-option.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-ci-coverage-optimization.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-edit-content-file.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-fix-index-rebuild-clear.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-fix-index-verify-id-mismatch.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-fix-jfox-health-skill-kb-param.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-index-kb-param.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-lazy-import-perf.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-skill-redesign.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-add-content-file.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-bulk-import-vectorstore-init.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-ingest-log-command.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-ingest-skill-sync.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-suppress-third-party-logging.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-sync-skills-with-cli.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-14-sync-docs-daemon-show.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-15-gpu-embedding.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-15-make-daemon-deps-required.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-15-session-summary-confirmation.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-16-fix-windows-daemon-console-window.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-18-daemon-timeout-and-index-rebuild.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-22-release-skill.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-26-fix-daemon-deprecation-warnings.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-27-intranet-model-download.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-28-tag-filtering.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-29-daemon-stop-fix.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-03-jfox-check.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-03-list-notes-skip-summary.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-03-log-level-fix.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-04-list-notes-index.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-06-atomic-write.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-09-session-note-type.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-10-jfox-plugin.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-19-fix-last-used-never.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-20-modelscope-migration.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-02-todo-note-type.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-16-kimi-code-auto-summary.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-17-index-rebuild-backlinks.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-17-using-jfox-skill.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-18-self-update-command.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-21-fragment-capture.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-21-gem-synthesis.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-25-gem-synth-throttle-ledger.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-08-auto-summary-schedule-window.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-08-candidate-promote.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-gem-synth-dedup.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-release-cc-plugin-skill.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-session-summary-streamline.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-show-json.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-17-fix-candidate-dual-h1.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-18-dedup-lifecycle-decouple.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-19-promote-skill-three-modes.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-25-bookshelf.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-25-gem-synth-dedup-incremental-merge.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-26-kb-backup-restore.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-26-promote-skill-clear-reports-rewrite.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-27-release-all.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-28-bookshelf-flat-bundle.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-28-nightly-fulltest.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-07-session-to-permanent-cc-kimi.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-11-permanent-note-template.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-12-noteindex-frontmatter-limit-drop.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-15-delete-backlinks-cleanup.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-16-bm25-concurrent-write-race.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-21-index-verify-legacy-filenames.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-21-moc-density-diagnose.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-bm25-type-debt-cleanup.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-issue-392-cr-leftovers.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-jfox-moc-skill.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-markdownlint-adoption.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-moc-create-update.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-25-moc-create-update-json-shorthand.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-27-issue-436-organize-archive.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-28-cpu-default-model-bge-small-zh.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-29-english-readme-baseline.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-29-issue-383-add-permanent-dedup.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-29-louvain-moc-clustering.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-30-gem-synth-prompt-judgment.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-30-test-config-isolation.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-31-deterministic-cli-reference.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-01-ci-docs-drift-gate.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-02-plugin-inventory-enum-checks.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-03-jfox-moc-batch-quality-chapter.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-03-moc-member-management.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-04-chromadb-dim-migration-ndarray.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-05-moc-diagnose-archived-orphan.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-03-bugfixes-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-12-skill-redesign-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-13-pr-auto-code-review-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-14-show-command-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-15-gpu-embedding-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-15-session-summary-confirmation-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-21-release-skill-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-26-fix-daemon-deprecation-warnings-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-27-intranet-model-download-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-28-tag-filtering-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-29-daemon-stop-fix-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-30-jfox-kb-env-var-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-03-jfox-check-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-03-list-notes-skip-summary-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-03-log-level-fix-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-04-list-notes-index-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-06-atomic-write-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-09-jfox-plugin-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-09-session-note-type-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-20-modelscope-migration-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-02-todo-note-type-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-16-kimi-code-auto-summary-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-17-index-rebuild-backlinks-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-17-using-jfox-skill-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-18-archive-soft-delete-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-18-self-update-command-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-21-fragment-capture-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-21-gem-synthesis-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-25-gem-synth-throttle-ledger-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-08-candidate-promote-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-gem-synth-dedup-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-release-cc-plugin-skill-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-session-summary-streamline-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-show-json-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-18-dedup-lifecycle-decouple-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-19-promote-skill-three-modes-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-25-bookshelf-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-25-gem-synth-dedup-incremental-merge-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-26-kb-backup-restore-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-26-promote-skill-clear-reports-rewrite-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-27-release-all-orchestration-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-28-bookshelf-flat-bundle-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-28-nightly-fulltest-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-07-session-to-permanent-cc-kimi-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-11-permanent-note-template-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-12-noteindex-frontmatter-limit-drop-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-15-delete-backlinks-cleanup-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-16-bm25-concurrent-write-race-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-20-bm25-clear-orphan-followup-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-21-index-verify-legacy-filenames-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-21-moc-density-diagnose-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-bm25-type-debt-cleanup-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-issue-392-cr-leftovers-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-jfox-moc-skill-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-markdownlint-adoption-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-moc-create-update-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-25-moc-create-update-json-shorthand-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-27-issue-436-organize-archive-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-27-redirect-and-delete-guard.md +0 -0
- {jfox_cli-1.14.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.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-29-english-readme-baseline-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-29-issue-383-add-permanent-dedup-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-29-louvain-moc-clustering-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-30-gem-synth-prompt-judgment-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-30-test-config-isolation-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-31-deterministic-cli-reference-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-01-ci-docs-drift-gate-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-02-plugin-inventory-enum-checks-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-03-jfox-moc-batch-quality-chapter-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-03-moc-member-management-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-04-chromadb-dim-migration-ndarray-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-05-moc-diagnose-archived-orphan-design.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/docs/troubleshooting.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jessica-jones-static-cable.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/__main__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/add_dedup.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/auto_summary/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/auto_summary/extractor.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/auto_summary/kimi_source.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/auto_summary/ledger.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/auto_summary/loop.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/auto_summary/runner.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/auto_summary/schedule.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/auto_summary/sources.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/backup/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/backup/schedule.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/bookshelf/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/bookshelf/meta.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/bookshelf/store.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/candidates/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/candidates/service.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/config.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/daemon/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/daemon/__main__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/daemon/client.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/daemon/process.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/daemon/server.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/dedup.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/dedup_lifecycle.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/embedding_migration.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/formatters.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/fragment/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/fragment/internal_sources.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/fragment/service.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/fragment/store.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/git_extractor.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/graph.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/indexer.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/kb_manager.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/moc/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/moc/cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/moc/cluster.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/moc/draft.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/moc/generate.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/model_downloader.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/models.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/performance.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/prompts/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/prompts/actions.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/prompts/grounding.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/prompts/judge.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/prompts/lifecycle.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/prompts/runner.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/prompts/store.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/prompts/transcript.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/redirect.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/template.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/jfox/utils.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/package.json +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/.claude-plugin/plugin.json +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/hooks/fragment-capture.sh +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/hooks/hooks.json +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/bookshelf/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/ingest/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/manage/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/organize/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/promote/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/search/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/session-summary/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/session-to-permanent/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/using-jfox/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/README.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/kimi.plugin.json +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-admin/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-auto-summary/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-manage/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-promote/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-template/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/using-jfox/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/run_full_test.ps1 +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/scripts/LOUVAIN_VERIFY.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/scripts/download-model-intranet.sh +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/scripts/enum_coverage.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/scripts/generate_docs.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/scripts/louvain_verify.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/scripts/nightly_test.sh +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/scripts/nightly_test_helpers.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/scripts/plugin_inventory.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/README.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-common/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-bookshelf/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-ci/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-common/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-moc/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-promote/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release-all/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release-cc-plugin/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release-kimi-plugin/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-session-to-permanent/SKILL.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/COVERAGE_PLAN.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/MIGRATION.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/TESTS.md +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/integration/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/integration/test_auto_summary_kimi.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/integration/test_backlinks.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/integration/test_candidate_promote_flow.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/integration/test_cli_reference_generation.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/integration/test_index_rebuild_backlinks.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/integration/test_moc_member_commands.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/integration/test_model_download.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/integration/test_plugin_inventory.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/integration/test_tag_filter_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/performance/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/performance/test_performance.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/test_add_dedup_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/test_advanced_features.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/test_cli_format.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/test_config_set_unit.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/test_config_unit.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/test_core_workflow.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/test_embedding_device.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/test_hybrid_search.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/test_integration.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/test_kb_current.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/test_suggest_links.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/conftest.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/test_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/test_meta.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/test_store.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/conftest.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_add_backfill_links.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_archive.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_atomic_write.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_config_sources.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_defaults.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_extractor.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_ledger.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_loop.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_runner.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_scanner.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_schedule.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_backup.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_bm25_batch.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_bm25_concurrency.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_candidates_migrated_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_check.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_conftest_mock.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_daemon_process.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_dedup_lifecycle.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_default_model_switch.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_delete_backlink_cleanup.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_delete_guard.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_edit.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_embedding_backend_daemon_only.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_embedding_local_load.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_embedding_migration.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_enum_coverage.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_formatters.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_config.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_hook.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_internal_sources.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_service.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_store.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_generate_docs.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_indexer_clear_before_rebuild.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_indexer_verify.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_json_mode.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_kb_manager.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_kimi_extractor.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_kimi_plugin_skills.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_kimi_scanner.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_lazy_import.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_ledger_migration.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_list_notes_skip.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_logging_config.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_moc_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_moc_cluster.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_moc_create_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_moc_draft.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_moc_generate.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_moc_integration.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_moc_member_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_moc_skill_docs.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_moc_update_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_model_downloader.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_nightly_test_helpers.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_note_add_config.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_note_candidate_fields.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_note_candidate_filename.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_note_index.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_note_lifecycle_hooks.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_note_promote.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_note_type_candidate.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_note_type_structure.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_plugin_inventory.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_actions.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_backfill.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_candidate.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_grounding.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_judge.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_retirement.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_runner.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_store.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_transcript.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_rebuild_backlinks_impl.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_release_all_helper.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_release_cc_plugin_helper.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_release_helper.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_release_helper_verify.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_release_kimi_plugin_helper.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_runner_multi_source.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_scanner_list.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_session_file_source.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_session_note.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_session_source.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_show.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_system_prompt_sections.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_tag_filter.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_template.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_template_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_update.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_use_kb_env_var.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_using_jfox_skill.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_vector_store_dimension_warning.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/unit/test_vector_store_embeddings.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/utils/__init__.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/utils/assertions.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/utils/jfox_cli.py +0 -0
- {jfox_cli-1.14.0 → jfox_cli-1.16.0}/tests/utils/temp_kb.py +0 -0
|
@@ -142,6 +142,14 @@ jobs:
|
|
|
142
142
|
PYTHONIOENCODING: utf-8
|
|
143
143
|
PYTHONUTF8: 1
|
|
144
144
|
|
|
145
|
+
- name: Set up Node
|
|
146
|
+
uses: actions/setup-node@v4
|
|
147
|
+
with:
|
|
148
|
+
node-version: '22'
|
|
149
|
+
|
|
150
|
+
- name: Run pi-plugin node tests
|
|
151
|
+
run: node --experimental-strip-types packages/pi-plugin/test/run-tests.ts
|
|
152
|
+
|
|
145
153
|
- name: Upload test results
|
|
146
154
|
if: always()
|
|
147
155
|
uses: actions/upload-artifact@v4
|
|
@@ -198,12 +206,12 @@ jobs:
|
|
|
198
206
|
key: ${{ runner.os }}-sentence-transformers-bge-small-zh-v1.5
|
|
199
207
|
|
|
200
208
|
- name: Install dependencies
|
|
201
|
-
run: uv sync --extra dev
|
|
209
|
+
run: uv sync --extra dev --extra embed
|
|
202
210
|
|
|
203
211
|
- name: Run core tests
|
|
204
212
|
run: |
|
|
205
213
|
# 只跑核心工作流测试,单进程避免模型加载冲突
|
|
206
|
-
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
|
|
207
215
|
timeout-minutes: ${{ matrix.os == 'windows-latest' && 50 || 25 }}
|
|
208
216
|
env:
|
|
209
217
|
PYTHONIOENCODING: utf-8
|
|
@@ -256,12 +264,12 @@ jobs:
|
|
|
256
264
|
key: ${{ runner.os }}-sentence-transformers-bge-small-zh-v1.5
|
|
257
265
|
|
|
258
266
|
- name: Install dependencies
|
|
259
|
-
run: uv sync --extra dev
|
|
267
|
+
run: uv sync --extra dev --extra embed
|
|
260
268
|
|
|
261
269
|
- name: Run full test suite
|
|
262
270
|
run: |
|
|
263
271
|
# 全量测试,单进程(避免模型加载问题)
|
|
264
|
-
uv run pytest tests/ -v --timeout=600 --tb=short
|
|
272
|
+
uv run --extra dev --extra embed pytest tests/ -v --timeout=600 --tb=short
|
|
265
273
|
timeout-minutes: 60
|
|
266
274
|
env:
|
|
267
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,44 @@
|
|
|
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
|
+
|
|
17
|
+
## [1.15.0] - 2026-09-20
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
- **cli**: unify --json output schema — success flag, JSON errors, schema docs (#502) (#531)
|
|
22
|
+
- **pi-plugin**: pi-coding-agent user prompt capture (#462) (#521)
|
|
23
|
+
|
|
24
|
+
### Breaking Changes
|
|
25
|
+
|
|
26
|
+
- **backup**: `backup list --format json` 由裸数组改为 `{success, items}`,原 `[0]` 索引改为 `.items[0]` (#502)
|
|
27
|
+
- **prompts**: `prompts list` 由裸数组改为 `{success, items}` (#502)
|
|
28
|
+
- **auto-summary**: `run` 顶层 `success`(int 计数)改名为 `succeeded`,`success` 变为布尔(命令完成即 `true`);`status` 的 `progress.success` 同名改为 `progress.succeeded` (#502)
|
|
29
|
+
|
|
30
|
+
### Fixes
|
|
31
|
+
|
|
32
|
+
- **links**: edit 自链过滤 + 字面量剥离——三路径收敛 resolve_wiki_links (#511) (#530)
|
|
33
|
+
- **config**: guard from_dict against non-dict values, backup corrupt config before recovery (#481) (#526)
|
|
34
|
+
- **bm25**: fresh-KB metadata missing logs info instead of warning (#482) (#522)
|
|
35
|
+
|
|
36
|
+
### Changes
|
|
37
|
+
|
|
38
|
+
- **skill**: sync skill system #399 — overview cleanup + jfox-judge end-to-end skill (#529)
|
|
39
|
+
- nightly tests: fix 6 failures — rewrite capture-flow tests, dedupe generator, migrate dim-warning assertion (#525)
|
|
40
|
+
|
|
41
|
+
[1.15.0]: https://github.com/zhuxixi/jfox/compare/v1.14.0...v1.15.0
|
|
42
|
+
|
|
5
43
|
## [1.14.0] - 2026-09-07
|
|
6
44
|
|
|
7
45
|
### Features
|
|
@@ -357,17 +395,6 @@ All notable changes to jfox-cli will be documented in this file.
|
|
|
357
395
|
|
|
358
396
|
[1.0.0]: https://github.com/zhuxixi/jfox/compare/v0.10.0...v1.0.0
|
|
359
397
|
|
|
360
|
-
## [Unreleased]
|
|
361
|
-
|
|
362
|
-
### Features
|
|
363
|
-
|
|
364
|
-
- auto-summary 支持 Kimi Code session(`~/.kimi-code/sessions/`),与 Claude Code 共存;新增 `session_sources`/`kimi_sessions_dir` 配置(默认 claude+kimi 都启用,auto-detect 目录)。(#242)
|
|
365
|
-
- 总结笔记升级为五段结构(背景/做了什么/关键决策/技术细节/未决事项),更具上下文感。(#242)
|
|
366
|
-
|
|
367
|
-
### Changes
|
|
368
|
-
|
|
369
|
-
- auto-summary ledger 去重 key 加来源前缀(`claude:`/`kimi:`),旧数据自动迁移。
|
|
370
|
-
|
|
371
398
|
## [0.10.0] - 2026-06-06
|
|
372
399
|
|
|
373
400
|
### 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
|
+
```
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# jfox --json 输出 schema
|
|
2
|
+
|
|
3
|
+
本文档是全部 `--json` 输出的权威 schema 参考(issue #502,随下一 minor 版本发布)。调用方(脚本 / AI agent)只需读本文即可正确解析任意命令的 JSON 输出,无需逐命令猜测字段路径。
|
|
4
|
+
|
|
5
|
+
## 分流规则
|
|
6
|
+
|
|
7
|
+
所有 `--json` 输出顶层必有布尔 `success` 字段:
|
|
8
|
+
|
|
9
|
+
- `success: true` —— 命令执行成功,业务字段位置见下表
|
|
10
|
+
- `success: false` —— 执行失败,必有非空 `error` 字符串,进程退出码 1
|
|
11
|
+
|
|
12
|
+
调用方只需 `data["success"]` 即可分流,无需先读退出码;退出码与 `success` 保持一致(`check` 等报告型命令例外,见「特殊语义说明」)。
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
jfox add "内容" --title "标题" --json | python3 -c "
|
|
16
|
+
import json, sys
|
|
17
|
+
d = json.load(sys.stdin)
|
|
18
|
+
if d['success']:
|
|
19
|
+
print(d['id']) # add 顶层冗余快捷字段
|
|
20
|
+
else:
|
|
21
|
+
print(d['error'])
|
|
22
|
+
"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 顶层字段约定
|
|
26
|
+
|
|
27
|
+
| 字段 | 类型 | 出现条件 |
|
|
28
|
+
|------|------|----------|
|
|
29
|
+
| `success` | bool | 恒有 |
|
|
30
|
+
| `error` | string | 仅失败时(非空);个别命令成功时也存在但为空串,见特殊语义 |
|
|
31
|
+
| `id` / `title` | string | 仅 `add` 成功时(冗余快捷字段,与 `note.id` / `note.title` 同值) |
|
|
32
|
+
| 其余 | 按命令 | 见下表 |
|
|
33
|
+
|
|
34
|
+
## 主 CLI 命令 schema
|
|
35
|
+
|
|
36
|
+
命令均支持 `--json` 或 `--format json`;`--kb <name>` 选择目标知识库。
|
|
37
|
+
|
|
38
|
+
其中 #519 新增的降级警告 `warnings[]` 元素统一形状:`{"code": "embedding_unavailable", "message": "<安装提示>", "fallback": "keyword" | "bm25_only"}`;缺语义组件的拒绝错误统一携带 `code: "embed_dependency_missing"`(`error` 含 GPU/CPU/pip 三路安装指引)。
|
|
39
|
+
|
|
40
|
+
| 命令 | 成功顶层字段 | 实体位置 | 失败形状 |
|
|
41
|
+
|------|--------------|----------|----------|
|
|
42
|
+
| `init` | `success, message, name` | 平铺 | `{success, error}` |
|
|
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}` |
|
|
46
|
+
| `list` | `success, total, notes[]`(项含 `outgoing,incoming`) | 列表 `notes` | `{success, error}` |
|
|
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}` |
|
|
48
|
+
| `refs` | 默认:`success, notes[]`;`--search`:`success, query, matches[]`;`--note`:`success, note{id,title,type}, forward_links[], backward_links[]`(悬空项带 `dangling:true`) | 分支各异 | `{success, error}` |
|
|
49
|
+
| `delete` | `success, deleted, title` | 平铺 | 入链守卫:`{success, error, references{frontmatter[],body[],total}}`;其余 `{success, error}` |
|
|
50
|
+
| `archive` / `unarchive` | `success, archived`/`unarchived`, `title` | 平铺 | `{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}` |
|
|
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}` |
|
|
54
|
+
| `daily` | `success, date, total, notes[]` | 列表 `notes` | `{success, error}` |
|
|
55
|
+
| `inbox` | `success, total, notes[]` | 列表 `notes` | `{success, error}` |
|
|
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` 开启,见特殊语义说明) |
|
|
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` 开启,见特殊语义说明) |
|
|
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) |
|
|
61
|
+
| `check` | `success, total, issues[{file,issue,size}]`(发现 issue 时退出码 1,见特殊语义说明) | 列表 `issues` | `{success, error}` |
|
|
62
|
+
| `update` | `success, method, previous_version, current_version, already_latest, command, output, stderr, error`(成功时 `error` 为空串)+ dev 分支 `message` | 平铺 | 同形状 `success:false` |
|
|
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` 为首条错误 / 冲突或不可读文件计数摘要 / 验证未通过提示) |
|
|
64
|
+
| `config` | 无 JSON 输出(console) | — | — |
|
|
65
|
+
| `perf` | 无 JSON 输出(console) | — | — |
|
|
66
|
+
| `daemon` | 无 JSON 输出(console) | — | — |
|
|
67
|
+
| `model download` | `model, success, cache_dir, instructions` | 平铺 | `{success:false, error}`(意外异常也保证 JSON) |
|
|
68
|
+
|
|
69
|
+
## 子应用命令 schema
|
|
70
|
+
|
|
71
|
+
### template
|
|
72
|
+
|
|
73
|
+
| 命令 | 成功顶层字段 | 实体位置 | 失败形状 |
|
|
74
|
+
|------|--------------|----------|----------|
|
|
75
|
+
| `template list --format json` | `success, builtin[], custom[]`(项含 `name,description,note_type`) | 列表 | `{success, error}` |
|
|
76
|
+
| `template show <name>` | `success, name, description, note_type, title_format, content, tags, is_builtin` | 顶层平铺 | `{success, error}` |
|
|
77
|
+
| `template create ...` | `success, template{name,description,note_type}` | 嵌套 `template` | `{success, error}` |
|
|
78
|
+
| `template remove <name>` | `success, deleted` | 平铺 | `{success, error}` |
|
|
79
|
+
| `template edit` | 无 JSON 输出(console) | — | — |
|
|
80
|
+
|
|
81
|
+
### fragments
|
|
82
|
+
|
|
83
|
+
| 命令 | 成功顶层字段 | 实体位置 | 失败形状 |
|
|
84
|
+
|------|--------------|----------|----------|
|
|
85
|
+
| `fragments list --format json` | `success, fragments[], total`(行含 `fragment_id,session_id,fragment_type,source_event,timestamp,content,metadata_json`) | 列表 `fragments` | `{success, error}` |
|
|
86
|
+
| `fragments show <id>` | `success` + 上述 7 键平铺 | 顶层平铺 | `{success, error}` |
|
|
87
|
+
|
|
88
|
+
### prompts
|
|
89
|
+
|
|
90
|
+
| 命令 | 成功顶层字段 | 实体位置 | 失败形状 |
|
|
91
|
+
|------|--------------|----------|----------|
|
|
92
|
+
| `prompts list` | `success, items[]` | 列表 `items` | `{success, error}` |
|
|
93
|
+
| `prompts show <id>` | `success` + 行平铺 + `judgment` | 顶层平铺 | `{success, error}` |
|
|
94
|
+
| `prompts status` | `success, total_prompts, unjudged, processing, failed, succeeded, pending_disposition, active_unresolved` | 平铺统计 | — |
|
|
95
|
+
| `prompts drain` | `success, imported, duplicates, remaining, ...` | 平铺 | spool 溢出:`{success:false, error, ...}` + 退出码 1 |
|
|
96
|
+
| `prompts backfill` | `success, found, imported, skipped` | 平铺计数 | 失败为未捕获异常:非零退出码 + traceback,无 JSON 输出(已知例外,后续收敛) |
|
|
97
|
+
| `prompts judge` | `success, total, succeeded, failed, batches, items[]` | 平铺 + 列表 | 失败为未捕获异常:非零退出码 + traceback,无 JSON 输出(已知例外,后续收敛) |
|
|
98
|
+
| `prompts config` | `success, capture{...}, judge{...}`(`--set` 成功输出为 console,见特殊语义说明) | 嵌套两段 | `{success, error}` |
|
|
99
|
+
| `prompts promote/unresolved/resolve-unresolved/ignore/retry <id>` | 成功无 JSON 输出(console 确认文本) | — | `{success, error}` |
|
|
100
|
+
|
|
101
|
+
### candidates
|
|
102
|
+
|
|
103
|
+
| 命令 | 成功顶层字段 | 实体位置 | 失败形状 |
|
|
104
|
+
|------|--------------|----------|----------|
|
|
105
|
+
| `candidates list --format json` | `success, candidates[], total` | 列表 `candidates` | `{success, error}` |
|
|
106
|
+
| `candidates show <id>` | `success` + `Note.to_dict()` 平铺(`content` 为全文) | 顶层平铺 | `{success, error}` |
|
|
107
|
+
| `candidates promote/reject <id>` | `{promoted`/`rejected`, `success}`(`success` 为操作结果布尔,见特殊语义说明) | 平铺 | 正常失败无 `error` 键(已知例外);异常失败 `{success:false, error}` |
|
|
108
|
+
|
|
109
|
+
### bookshelf
|
|
110
|
+
|
|
111
|
+
| 命令 | 成功顶层字段 | 实体位置 | 失败形状 |
|
|
112
|
+
|------|--------------|----------|----------|
|
|
113
|
+
| `bookshelf add ...` | `success, slug, title, page_count, path` | 平铺 | `{success, error}` |
|
|
114
|
+
| `bookshelf list` | `success, books[], total` | 列表 `books` | `{success, error}` |
|
|
115
|
+
| `bookshelf show <slug>` | `success` + `BookMeta.to_dict()` 平铺 + `path, pages[]` | 顶层平铺 | `{success, error}` |
|
|
116
|
+
| `bookshelf show <slug> --page N` | `success, slug, page, content` | 平铺 | `{success, error}` |
|
|
117
|
+
| `bookshelf remove <slug>` | `success, slug, removed`(用户取消时 `removed:false`,仍 `success:true`) | 平铺 | `{success, error}` |
|
|
118
|
+
|
|
119
|
+
### auto-summary
|
|
120
|
+
|
|
121
|
+
| 命令 | 成功顶层字段 | 实体位置 | 失败形状 |
|
|
122
|
+
|------|--------------|----------|----------|
|
|
123
|
+
| `auto-summary status` | `success, config, ledger_file, ledger_stats, progress{total_scannable, succeeded, skipped, pending, failed, retryable, percentage, in_schedule_window}` | 嵌套多段 | — |
|
|
124
|
+
| `auto-summary enable/disable` | `success, message` | 平铺 | `{success, error}` |
|
|
125
|
+
| `auto-summary scan` | `success, pending[{session_id,project,size_bytes,mtime,age_minutes}]` | 列表 `pending` | — |
|
|
126
|
+
| `auto-summary run` | `success, succeeded, scanned, processed, skipped, failed, items[]`(`succeeded` 为 int 计数,见特殊语义说明) | 平铺 + 列表 | — |
|
|
127
|
+
| `auto-summary forget <id>` | `success, removed` | 平铺 | 多命中:`{success:false, error, matches[]}` |
|
|
128
|
+
| `auto-summary prune` | `success, pruned, older_than_days` | 平铺 | `{success, error}` |
|
|
129
|
+
|
|
130
|
+
### backup
|
|
131
|
+
|
|
132
|
+
| 命令 | 成功顶层字段 | 实体位置 | 失败形状 |
|
|
133
|
+
|------|--------------|----------|----------|
|
|
134
|
+
| `backup status` | `success, enabled, schedule_time, retain, backup_root, last_run, last_ok` | 平铺 | — |
|
|
135
|
+
| `backup list` | `success, items[]`(项含 `archive,size,ok`) | 列表 `items` | — |
|
|
136
|
+
| `backup verify <snapshot>` | `success, snapshot, ok`(`success` 与 `ok` 同值,`ok` 为兼容保留) | 平铺 | `{success:false, snapshot, ok:false, error}` + 退出码 1 |
|
|
137
|
+
| `backup enable/disable/run/restore` | 无 JSON 输出(console) | — | — |
|
|
138
|
+
|
|
139
|
+
### moc
|
|
140
|
+
|
|
141
|
+
`moc` 全部命令(`diagnose / create / update / add-member / remove-member`)本就带 `success`,本轮未改动:成功均为 `success` + 各自业务字段(`diagnose` 含 `coverage{...}, threshold_sweep[], orphans{...}`;`create` 含 `cluster{...}, draft{...}, created`;`update` 含 `updates[], applied`;`add-member/remove-member` 平铺操作结果),失败为 `{success, error}`。
|
|
142
|
+
|
|
143
|
+
## 特殊语义说明
|
|
144
|
+
|
|
145
|
+
以下行为是**有意设计**,调用方按此理解:
|
|
146
|
+
|
|
147
|
+
1. **`check` 报告语义**:`check --json` 发现问题时输出 `success:true`(命令本身执行成功、报告有效)+ 非空 `issues[]`,同时退出码 1。分流以 `success` 为准;`issues` 非空表示「检查发现了待处理问题」。
|
|
148
|
+
2. **`auto-summary run` 计数语义**:顶层 `success:true` 表示本轮调度执行完成并产出报告;单条会话的处理结果看 `succeeded`(int 计数)、`failed`、`items[]`。`success:true` 不代表所有条目都成功。
|
|
149
|
+
3. **`index verify` 的 `success`**:表示「校验过程本身无执行错误」(如目录不可读);索引数据是否健康看透传的 `healthy` 字段。`success:true, healthy:false` = 命令成功执行且发现数据不一致。
|
|
150
|
+
4. **`backup verify` 的 `success` 与 `ok`**:同值。`ok` 是本轮统一前的原始字段,为兼容保留;新代码请读 `success`。
|
|
151
|
+
5. **`kb` 错误分支的触发条件**:`kb` 的错误 JSON 由 `--json` 标志(`json_output`)触发;仅 `--format json` 不带 `--json` 时错误走 console 文本。这是全库 `json_output` 快捷方式约定的一部分。
|
|
152
|
+
6. **`prompts config --set` 成功输出**:仅 console 确认文本,无 JSON 成功形状(失败时有 `{success, error}`)。
|
|
153
|
+
7. **`prompts` 动作命令成功无 JSON**:`promote` 等五个动作命令成功时只输出 console 确认文本(历史行为,未纳入本轮统一范围)。
|
|
154
|
+
8. **`candidates promote/reject` 正常失败无 `error` 键**:service 层拒绝(如校验不通过)返回 `{promoted:false, success:false}` 而无 `error`;仅异常失败带 `error`。已知例外,后续版本收敛。
|
|
155
|
+
9. **`update` 成功时的 `error` 键**:恒存在但成功时为空字符串 `""`——判断成败请以 `success` 布尔为准,勿以 `error` 是否为 `null` 判断。
|
|
156
|
+
|
|
157
|
+
## 统一引入的破坏性变更
|
|
158
|
+
|
|
159
|
+
本轮统一引入的破坏性变更(均为低频管理命令,已在 CHANGELOG `Unreleased` 标注,随下一 minor 发布):
|
|
160
|
+
|
|
161
|
+
| 命令 | 变更前 | 变更后 |
|
|
162
|
+
|------|--------|--------|
|
|
163
|
+
| `backup list` | 裸 JSON 数组 `[...]` | `{success, items:[...]}`(原 `[0]` 索引改为 `.items[0]`) |
|
|
164
|
+
| `prompts list` | 裸 JSON 数组 `[...]` | `{success, items:[...]}` |
|
|
165
|
+
| `auto-summary run` | 顶层 `success` 为 int 计数 | `success` 变布尔(命令完成即 `true`);计数改名 `succeeded` |
|
|
166
|
+
| `auto-summary status` | `progress.success` 为 int 计数 | 改名 `progress.succeeded` |
|
|
167
|
+
|
|
168
|
+
其余全部变更为纯增量(新增 `success` 字段或错误分支补 JSON 输出),不影响既有解析。
|