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.
Files changed (518) hide show
  1. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/workflows/integration-test.yml +4 -4
  2. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.gitignore +1 -0
  3. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/AGENTS.md +4 -4
  4. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/CHANGELOG.md +12 -0
  5. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/CLAUDE.md +4 -4
  6. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/PKG-INFO +26 -5
  7. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/README.md +23 -3
  8. jfox_cli-1.16.0/docs/installation.md +129 -0
  9. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/json-schemas.md +11 -9
  10. jfox_cli-1.16.0/docs/superpowers/plans/2026-09-14-lightweight-install.md +1768 -0
  11. jfox_cli-1.16.0/docs/superpowers/plans/2026-09-23-h1-strip-normalization.md +522 -0
  12. jfox_cli-1.16.0/docs/superpowers/specs/2026-09-10-lightweight-install-embed-extra-design.md +266 -0
  13. jfox_cli-1.16.0/docs/superpowers/specs/2026-09-23-h1-strip-normalization-design.md +91 -0
  14. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/__init__.py +1 -1
  15. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/cli.py +237 -13
  16. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/embedding_backend.py +73 -1
  17. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/note.py +14 -4
  18. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/search_engine.py +11 -0
  19. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/vector_store.py +15 -0
  20. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/pyproject.toml +4 -2
  21. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/pytest.ini +1 -0
  22. jfox_cli-1.16.0/scripts/verify_lightweight_install.sh +36 -0
  23. jfox_cli-1.16.0/tests/integration/test_edit_roundtrip.py +75 -0
  24. jfox_cli-1.16.0/tests/integration/test_no_embed_degradation.py +237 -0
  25. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_add_dedup.py +2 -0
  26. jfox_cli-1.16.0/tests/unit/test_content_file.py +169 -0
  27. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_daemon_cli.py +8 -0
  28. jfox_cli-1.16.0/tests/unit/test_embed_availability.py +116 -0
  29. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_format_unify.py +6 -0
  30. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_git_extractor.py +7 -0
  31. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_index_kb_param.py +7 -0
  32. jfox_cli-1.16.0/tests/unit/test_pyproject_embed_extra.py +47 -0
  33. jfox_cli-1.16.0/tests/unit/test_search_engine_embed_warning.py +79 -0
  34. jfox_cli-1.16.0/tests/unit/test_vector_store_embed_guard.py +85 -0
  35. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/uv.lock +6 -4
  36. jfox_cli-1.15.0/docs/installation.md +0 -98
  37. jfox_cli-1.15.0/tests/unit/test_content_file.py +0 -73
  38. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/ci/SKILL.md +0 -0
  39. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release/SKILL.md +0 -0
  40. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release/release_helper.py +0 -0
  41. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-all/SKILL.md +0 -0
  42. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-all/release_all_helper.py +0 -0
  43. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-cc-plugin/SKILL.md +0 -0
  44. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-cc-plugin/release_cc_plugin_helper.py +0 -0
  45. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-kimi-plugin/SKILL.md +0 -0
  46. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude/skills/release-kimi-plugin/release_kimi_plugin_helper.py +0 -0
  47. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.claude-plugin/marketplace.json +0 -0
  48. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.githooks/pre-push +0 -0
  49. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  50. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  51. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/docs_improvement.yml +0 -0
  52. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  53. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  54. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.github/workflows/publish.yml +0 -0
  55. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.markdownlint-cli2.jsonc +0 -0
  56. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.pi-lens.json +0 -0
  57. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/.python-version +0 -0
  58. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/DEVELOPMENT_PLAN.md +0 -0
  59. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/SESSION.md +0 -0
  60. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/SESSION_SUMMARY.md +0 -0
  61. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/claude-code-plugin-guide.md +0 -0
  62. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/cli-descriptions.yaml +0 -0
  63. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/cli-reference.md +0 -0
  64. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/nightly-test.md +0 -0
  65. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/plugin-inventory.md +0 -0
  66. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-11-bulk-import-bm25-fix.md +0 -0
  67. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-11-edit-command.md +0 -0
  68. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-11-unify-format-option.md +0 -0
  69. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-ci-coverage-optimization.md +0 -0
  70. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-edit-content-file.md +0 -0
  71. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-fix-index-rebuild-clear.md +0 -0
  72. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-fix-index-verify-id-mismatch.md +0 -0
  73. {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
  74. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-index-kb-param.md +0 -0
  75. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-lazy-import-perf.md +0 -0
  76. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-12-skill-redesign.md +0 -0
  77. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-add-content-file.md +0 -0
  78. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-bulk-import-vectorstore-init.md +0 -0
  79. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-ingest-log-command.md +0 -0
  80. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-ingest-skill-sync.md +0 -0
  81. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-suppress-third-party-logging.md +0 -0
  82. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-13-sync-skills-with-cli.md +0 -0
  83. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-14-sync-docs-daemon-show.md +0 -0
  84. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-15-gpu-embedding.md +0 -0
  85. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-15-make-daemon-deps-required.md +0 -0
  86. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-15-session-summary-confirmation.md +0 -0
  87. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-16-fix-windows-daemon-console-window.md +0 -0
  88. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-18-daemon-timeout-and-index-rebuild.md +0 -0
  89. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-22-release-skill.md +0 -0
  90. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-26-fix-daemon-deprecation-warnings.md +0 -0
  91. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-27-intranet-model-download.md +0 -0
  92. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-28-tag-filtering.md +0 -0
  93. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-04-29-daemon-stop-fix.md +0 -0
  94. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-03-jfox-check.md +0 -0
  95. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-03-list-notes-skip-summary.md +0 -0
  96. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-03-log-level-fix.md +0 -0
  97. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-04-list-notes-index.md +0 -0
  98. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-06-atomic-write.md +0 -0
  99. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-09-session-note-type.md +0 -0
  100. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-10-jfox-plugin.md +0 -0
  101. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-19-fix-last-used-never.md +0 -0
  102. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-05-20-modelscope-migration.md +0 -0
  103. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-02-todo-note-type.md +0 -0
  104. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-16-kimi-code-auto-summary.md +0 -0
  105. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-17-index-rebuild-backlinks.md +0 -0
  106. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-17-using-jfox-skill.md +0 -0
  107. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-18-self-update-command.md +0 -0
  108. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-21-fragment-capture.md +0 -0
  109. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-21-gem-synthesis.md +0 -0
  110. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-06-25-gem-synth-throttle-ledger.md +0 -0
  111. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-08-auto-summary-schedule-window.md +0 -0
  112. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-08-candidate-promote.md +0 -0
  113. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-gem-synth-dedup.md +0 -0
  114. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-release-cc-plugin-skill.md +0 -0
  115. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-session-summary-streamline.md +0 -0
  116. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-12-show-json.md +0 -0
  117. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-17-fix-candidate-dual-h1.md +0 -0
  118. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-18-dedup-lifecycle-decouple.md +0 -0
  119. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-19-promote-skill-three-modes.md +0 -0
  120. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-25-bookshelf.md +0 -0
  121. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-25-gem-synth-dedup-incremental-merge.md +0 -0
  122. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-26-kb-backup-restore.md +0 -0
  123. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-26-promote-skill-clear-reports-rewrite.md +0 -0
  124. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-27-release-all.md +0 -0
  125. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-28-bookshelf-flat-bundle.md +0 -0
  126. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-07-28-nightly-fulltest.md +0 -0
  127. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-07-session-to-permanent-cc-kimi.md +0 -0
  128. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-11-permanent-note-template.md +0 -0
  129. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-12-noteindex-frontmatter-limit-drop.md +0 -0
  130. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-15-delete-backlinks-cleanup.md +0 -0
  131. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-16-bm25-concurrent-write-race.md +0 -0
  132. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-21-index-verify-legacy-filenames.md +0 -0
  133. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-21-moc-density-diagnose.md +0 -0
  134. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-bm25-type-debt-cleanup.md +0 -0
  135. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-issue-392-cr-leftovers.md +0 -0
  136. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-jfox-moc-skill.md +0 -0
  137. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-markdownlint-adoption.md +0 -0
  138. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-22-moc-create-update.md +0 -0
  139. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-25-moc-create-update-json-shorthand.md +0 -0
  140. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-27-issue-436-organize-archive.md +0 -0
  141. {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
  142. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-29-english-readme-baseline.md +0 -0
  143. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-29-issue-383-add-permanent-dedup.md +0 -0
  144. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-29-louvain-moc-clustering.md +0 -0
  145. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-30-gem-synth-prompt-judgment.md +0 -0
  146. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-30-test-config-isolation.md +0 -0
  147. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-08-31-deterministic-cli-reference.md +0 -0
  148. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-01-ci-docs-drift-gate.md +0 -0
  149. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-02-plugin-inventory-enum-checks.md +0 -0
  150. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-03-jfox-moc-batch-quality-chapter.md +0 -0
  151. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-03-moc-member-management.md +0 -0
  152. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-04-chromadb-dim-migration-ndarray.md +0 -0
  153. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-05-moc-diagnose-archived-orphan.md +0 -0
  154. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-07-bm25-fresh-kb-logging.md +0 -0
  155. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-07-pi-prompt-capture.md +0 -0
  156. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-09-from-dict-non-dict-guard.md +0 -0
  157. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-09-nightly-test-failures.md +0 -0
  158. {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
  159. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-14-json-schema-unify.md +0 -0
  160. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/plans/2026-09-14-wiki-link-self-link.md +0 -0
  161. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-03-bugfixes-design.md +0 -0
  162. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-12-skill-redesign-design.md +0 -0
  163. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-13-pr-auto-code-review-design.md +0 -0
  164. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-14-show-command-design.md +0 -0
  165. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-15-gpu-embedding-design.md +0 -0
  166. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-15-session-summary-confirmation-design.md +0 -0
  167. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-21-release-skill-design.md +0 -0
  168. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-26-fix-daemon-deprecation-warnings-design.md +0 -0
  169. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-27-intranet-model-download-design.md +0 -0
  170. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-28-tag-filtering-design.md +0 -0
  171. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-29-daemon-stop-fix-design.md +0 -0
  172. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-04-30-jfox-kb-env-var-design.md +0 -0
  173. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-03-jfox-check-design.md +0 -0
  174. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-03-list-notes-skip-summary-design.md +0 -0
  175. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-03-log-level-fix-design.md +0 -0
  176. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-04-list-notes-index-design.md +0 -0
  177. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-06-atomic-write-design.md +0 -0
  178. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-09-jfox-plugin-design.md +0 -0
  179. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-09-session-note-type-design.md +0 -0
  180. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-05-20-modelscope-migration-design.md +0 -0
  181. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-02-todo-note-type-design.md +0 -0
  182. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-16-kimi-code-auto-summary-design.md +0 -0
  183. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-17-index-rebuild-backlinks-design.md +0 -0
  184. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-17-using-jfox-skill-design.md +0 -0
  185. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-18-archive-soft-delete-design.md +0 -0
  186. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-18-self-update-command-design.md +0 -0
  187. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-21-fragment-capture-design.md +0 -0
  188. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-21-gem-synthesis-design.md +0 -0
  189. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-06-25-gem-synth-throttle-ledger-design.md +0 -0
  190. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-08-candidate-promote-design.md +0 -0
  191. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-gem-synth-dedup-design.md +0 -0
  192. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-release-cc-plugin-skill-design.md +0 -0
  193. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-session-summary-streamline-design.md +0 -0
  194. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-12-show-json-design.md +0 -0
  195. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-18-dedup-lifecycle-decouple-design.md +0 -0
  196. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-19-promote-skill-three-modes-design.md +0 -0
  197. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-25-bookshelf-design.md +0 -0
  198. {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
  199. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-26-kb-backup-restore-design.md +0 -0
  200. {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
  201. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-27-release-all-orchestration-design.md +0 -0
  202. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-28-bookshelf-flat-bundle-design.md +0 -0
  203. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-07-28-nightly-fulltest-design.md +0 -0
  204. {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
  205. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-11-permanent-note-template-design.md +0 -0
  206. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-12-noteindex-frontmatter-limit-drop-design.md +0 -0
  207. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-15-delete-backlinks-cleanup-design.md +0 -0
  208. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-16-bm25-concurrent-write-race-design.md +0 -0
  209. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-20-bm25-clear-orphan-followup-design.md +0 -0
  210. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-21-index-verify-legacy-filenames-design.md +0 -0
  211. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-21-moc-density-diagnose-design.md +0 -0
  212. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-bm25-type-debt-cleanup-design.md +0 -0
  213. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-issue-392-cr-leftovers-design.md +0 -0
  214. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-jfox-moc-skill-design.md +0 -0
  215. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-markdownlint-adoption-design.md +0 -0
  216. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-22-moc-create-update-design.md +0 -0
  217. {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
  218. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-27-issue-436-organize-archive-design.md +0 -0
  219. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-27-redirect-and-delete-guard.md +0 -0
  220. {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
  221. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-29-english-readme-baseline-design.md +0 -0
  222. {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
  223. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-29-louvain-moc-clustering-design.md +0 -0
  224. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-30-gem-synth-prompt-judgment-design.md +0 -0
  225. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-30-test-config-isolation-design.md +0 -0
  226. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-08-31-deterministic-cli-reference-design.md +0 -0
  227. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-01-ci-docs-drift-gate-design.md +0 -0
  228. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-02-plugin-inventory-enum-checks-design.md +0 -0
  229. {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
  230. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-03-moc-member-management-design.md +0 -0
  231. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-04-chromadb-dim-migration-ndarray-design.md +0 -0
  232. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-05-moc-diagnose-archived-orphan-design.md +0 -0
  233. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-07-bm25-fresh-kb-logging-design.md +0 -0
  234. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-07-pi-prompt-capture-design.md +0 -0
  235. {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
  236. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-09-nightly-test-failures-design.md +0 -0
  237. {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
  238. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-14-json-schema-unify-design.md +0 -0
  239. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/superpowers/specs/2026-09-14-wiki-link-self-link-design.md +0 -0
  240. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/docs/troubleshooting.md +0 -0
  241. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jessica-jones-static-cable.md +0 -0
  242. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/__main__.py +0 -0
  243. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/add_dedup.py +0 -0
  244. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/__init__.py +0 -0
  245. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/cli.py +0 -0
  246. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/extractor.py +0 -0
  247. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/kimi_source.py +0 -0
  248. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/ledger.py +0 -0
  249. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/loop.py +0 -0
  250. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/runner.py +0 -0
  251. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/scanner.py +0 -0
  252. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/schedule.py +0 -0
  253. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/auto_summary/sources.py +0 -0
  254. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/backup/__init__.py +0 -0
  255. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/backup/cli.py +0 -0
  256. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/backup/loop.py +0 -0
  257. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/backup/manager.py +0 -0
  258. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/backup/schedule.py +0 -0
  259. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/bm25_index.py +0 -0
  260. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/bookshelf/__init__.py +0 -0
  261. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/bookshelf/cli.py +0 -0
  262. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/bookshelf/meta.py +0 -0
  263. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/bookshelf/store.py +0 -0
  264. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/candidates/__init__.py +0 -0
  265. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/candidates/cli.py +0 -0
  266. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/candidates/service.py +0 -0
  267. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/config.py +0 -0
  268. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/daemon/__init__.py +0 -0
  269. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/daemon/__main__.py +0 -0
  270. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/daemon/client.py +0 -0
  271. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/daemon/process.py +0 -0
  272. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/daemon/server.py +0 -0
  273. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/dedup.py +0 -0
  274. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/dedup_lifecycle.py +0 -0
  275. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/embedding_migration.py +0 -0
  276. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/formatters.py +0 -0
  277. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/fragment/__init__.py +0 -0
  278. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/fragment/cli.py +0 -0
  279. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/fragment/internal_sources.py +0 -0
  280. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/fragment/service.py +0 -0
  281. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/fragment/store.py +0 -0
  282. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/git_extractor.py +0 -0
  283. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/global_config.py +0 -0
  284. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/graph.py +0 -0
  285. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/indexer.py +0 -0
  286. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/kb_manager.py +0 -0
  287. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/moc/__init__.py +0 -0
  288. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/moc/cli.py +0 -0
  289. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/moc/cluster.py +0 -0
  290. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/moc/draft.py +0 -0
  291. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/moc/generate.py +0 -0
  292. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/model_downloader.py +0 -0
  293. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/models.py +0 -0
  294. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/note_index.py +0 -0
  295. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/performance.py +0 -0
  296. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/__init__.py +0 -0
  297. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/actions.py +0 -0
  298. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/cli.py +0 -0
  299. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/grounding.py +0 -0
  300. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/judge.py +0 -0
  301. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/lifecycle.py +0 -0
  302. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/runner.py +0 -0
  303. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/service.py +0 -0
  304. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/store.py +0 -0
  305. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/prompts/transcript.py +0 -0
  306. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/redirect.py +0 -0
  307. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/template.py +0 -0
  308. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/template_cli.py +0 -0
  309. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/jfox/utils.py +0 -0
  310. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/package.json +0 -0
  311. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/.claude-plugin/plugin.json +0 -0
  312. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/hooks/fragment-capture.sh +0 -0
  313. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/hooks/hooks.json +0 -0
  314. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/bookshelf/SKILL.md +0 -0
  315. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/ingest/SKILL.md +0 -0
  316. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/manage/SKILL.md +0 -0
  317. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/organize/SKILL.md +0 -0
  318. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/promote/SKILL.md +0 -0
  319. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/search/SKILL.md +0 -0
  320. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/session-summary/SKILL.md +0 -0
  321. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/session-to-permanent/SKILL.md +0 -0
  322. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/cc-plugin/skills/using-jfox/SKILL.md +0 -0
  323. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/README.md +0 -0
  324. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/kimi.plugin.json +0 -0
  325. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-admin/SKILL.md +0 -0
  326. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-auto-summary/SKILL.md +0 -0
  327. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-ingest/SKILL.md +0 -0
  328. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-manage/SKILL.md +0 -0
  329. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-organize/SKILL.md +0 -0
  330. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-promote/SKILL.md +0 -0
  331. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-search/SKILL.md +0 -0
  332. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-session-summary/SKILL.md +0 -0
  333. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md +0 -0
  334. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/jfox-template/SKILL.md +0 -0
  335. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/kimi-plugin/skills/using-jfox/SKILL.md +0 -0
  336. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/pi-plugin/README.md +0 -0
  337. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/pi-plugin/extensions/jfox-prompt-capture.ts +0 -0
  338. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/packages/pi-plugin/test/run-tests.ts +0 -0
  339. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/run_full_test.ps1 +0 -0
  340. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/LOUVAIN_VERIFY.md +0 -0
  341. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/download-model-intranet.sh +0 -0
  342. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/enum_coverage.py +0 -0
  343. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/generate_docs.py +0 -0
  344. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/louvain_verify.py +0 -0
  345. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/nightly_test.sh +0 -0
  346. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/nightly_test_helpers.py +0 -0
  347. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/scripts/plugin_inventory.py +0 -0
  348. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/README.md +0 -0
  349. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-common/SKILL.md +0 -0
  350. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-ingest/SKILL.md +0 -0
  351. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-organize/SKILL.md +0 -0
  352. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-search/SKILL.md +0 -0
  353. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/kimi-cli/jfox-session-summary/SKILL.md +0 -0
  354. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-bookshelf/SKILL.md +0 -0
  355. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-ci/SKILL.md +0 -0
  356. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-common/SKILL.md +0 -0
  357. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-ingest/SKILL.md +0 -0
  358. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-judge/SKILL.md +0 -0
  359. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-moc/SKILL.md +0 -0
  360. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-organize/SKILL.md +0 -0
  361. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-overview/SKILL.md +0 -0
  362. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-promote/SKILL.md +0 -0
  363. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release/SKILL.md +0 -0
  364. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release-all/SKILL.md +0 -0
  365. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release-cc-plugin/SKILL.md +0 -0
  366. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-release-kimi-plugin/SKILL.md +0 -0
  367. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-search/SKILL.md +0 -0
  368. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-session-summary/SKILL.md +0 -0
  369. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/skills-recommend/pi/jfox-session-to-permanent/SKILL.md +0 -0
  370. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/COVERAGE_PLAN.md +0 -0
  371. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/MIGRATION.md +0 -0
  372. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/TESTS.md +0 -0
  373. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/conftest.py +0 -0
  374. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/fixtures/bulk_import_notes.json +0 -0
  375. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/__init__.py +0 -0
  376. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_auto_summary_kimi.py +0 -0
  377. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_backlinks.py +0 -0
  378. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_candidate_promote_flow.py +0 -0
  379. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_cli_reference_generation.py +0 -0
  380. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_fragment_capture_flow.py +0 -0
  381. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_index_rebuild_backlinks.py +0 -0
  382. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_links_edit_add.py +0 -0
  383. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_moc_member_commands.py +0 -0
  384. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_model_download.py +0 -0
  385. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_plugin_inventory.py +0 -0
  386. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/integration/test_tag_filter_cli.py +0 -0
  387. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/performance/__init__.py +0 -0
  388. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/performance/test_performance.py +0 -0
  389. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_add_dedup_cli.py +0 -0
  390. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_advanced_features.py +0 -0
  391. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_cli_format.py +0 -0
  392. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_config_set_unit.py +0 -0
  393. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_config_unit.py +0 -0
  394. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_core_workflow.py +0 -0
  395. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_embedding_device.py +0 -0
  396. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_hybrid_search.py +0 -0
  397. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_integration.py +0 -0
  398. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_json_schema_contract.py +0 -0
  399. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_kb_current.py +0 -0
  400. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/test_suggest_links.py +0 -0
  401. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/__init__.py +0 -0
  402. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/__init__.py +0 -0
  403. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/conftest.py +0 -0
  404. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/test_cli.py +0 -0
  405. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/test_meta.py +0 -0
  406. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/bookshelf/test_store.py +0 -0
  407. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/conftest.py +0 -0
  408. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_add_backfill_links.py +0 -0
  409. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_archive.py +0 -0
  410. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_atomic_write.py +0 -0
  411. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_cli.py +0 -0
  412. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_config_sources.py +0 -0
  413. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_defaults.py +0 -0
  414. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_extractor.py +0 -0
  415. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_ledger.py +0 -0
  416. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_loop.py +0 -0
  417. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_runner.py +0 -0
  418. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_scanner.py +0 -0
  419. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_schedule.py +0 -0
  420. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_auto_summary_status.py +0 -0
  421. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_backup.py +0 -0
  422. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_bm25_batch.py +0 -0
  423. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_bm25_concurrency.py +0 -0
  424. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_bm25_fresh_kb_logging.py +0 -0
  425. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_candidates_migrated_cli.py +0 -0
  426. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_check.py +0 -0
  427. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_conftest_mock.py +0 -0
  428. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_daemon_process.py +0 -0
  429. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_dedup_lifecycle.py +0 -0
  430. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_default_model_switch.py +0 -0
  431. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_delete_backlink_cleanup.py +0 -0
  432. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_delete_guard.py +0 -0
  433. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_edit.py +0 -0
  434. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_embedding_backend_daemon_only.py +0 -0
  435. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_embedding_local_load.py +0 -0
  436. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_embedding_migration.py +0 -0
  437. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_enum_coverage.py +0 -0
  438. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_formatters.py +0 -0
  439. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_cli.py +0 -0
  440. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_config.py +0 -0
  441. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_hook.py +0 -0
  442. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_internal_sources.py +0 -0
  443. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_service.py +0 -0
  444. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_fragment_store.py +0 -0
  445. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_generate_docs.py +0 -0
  446. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_global_config.py +0 -0
  447. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_indexer_clear_before_rebuild.py +0 -0
  448. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_indexer_verify.py +0 -0
  449. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_json_mode.py +0 -0
  450. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_kb_manager.py +0 -0
  451. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_kimi_extractor.py +0 -0
  452. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_kimi_plugin_skills.py +0 -0
  453. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_kimi_scanner.py +0 -0
  454. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_lazy_import.py +0 -0
  455. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_ledger_migration.py +0 -0
  456. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_list_notes_skip.py +0 -0
  457. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_logging_config.py +0 -0
  458. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_cli.py +0 -0
  459. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_cluster.py +0 -0
  460. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_create_cli.py +0 -0
  461. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_draft.py +0 -0
  462. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_generate.py +0 -0
  463. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_integration.py +0 -0
  464. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_member_cli.py +0 -0
  465. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_skill_docs.py +0 -0
  466. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_moc_update_cli.py +0 -0
  467. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_model_downloader.py +0 -0
  468. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_nightly_test_helpers.py +0 -0
  469. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_add_config.py +0 -0
  470. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_candidate_fields.py +0 -0
  471. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_candidate_filename.py +0 -0
  472. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_generator.py +0 -0
  473. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_index.py +0 -0
  474. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_lifecycle_hooks.py +0 -0
  475. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_promote.py +0 -0
  476. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_type_candidate.py +0 -0
  477. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_note_type_structure.py +0 -0
  478. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_plugin_inventory.py +0 -0
  479. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_actions.py +0 -0
  480. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_backfill.py +0 -0
  481. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_candidate.py +0 -0
  482. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_capture.py +0 -0
  483. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_cli.py +0 -0
  484. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_grounding.py +0 -0
  485. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_judge.py +0 -0
  486. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_retirement.py +0 -0
  487. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_runner.py +0 -0
  488. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_store.py +0 -0
  489. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_prompt_transcript.py +0 -0
  490. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_rebuild_backlinks_impl.py +0 -0
  491. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_redirect.py +0 -0
  492. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_release_all_helper.py +0 -0
  493. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_release_cc_plugin_helper.py +0 -0
  494. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_release_helper.py +0 -0
  495. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_release_helper_verify.py +0 -0
  496. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_release_kimi_plugin_helper.py +0 -0
  497. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_runner_multi_source.py +0 -0
  498. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_scanner_list.py +0 -0
  499. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_session_file_source.py +0 -0
  500. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_session_note.py +0 -0
  501. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_session_source.py +0 -0
  502. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_show.py +0 -0
  503. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_system_prompt_sections.py +0 -0
  504. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_tag_filter.py +0 -0
  505. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_template.py +0 -0
  506. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_template_cli.py +0 -0
  507. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_update.py +0 -0
  508. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_use_kb_env_var.py +0 -0
  509. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_using_jfox_skill.py +0 -0
  510. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_vector_store_clear.py +0 -0
  511. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_vector_store_dimension_warning.py +0 -0
  512. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_vector_store_embeddings.py +0 -0
  513. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/unit/test_wiki_link_resolution.py +0 -0
  514. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/utils/__init__.py +0 -0
  515. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/utils/assertions.py +0 -0
  516. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/utils/jfox_cli.py +0 -0
  517. {jfox_cli-1.15.0 → jfox_cli-1.16.0}/tests/utils/note_generator.py +0 -0
  518. {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
@@ -55,3 +55,4 @@ review_body*.md
55
55
  .pr_monitor_state.json
56
56
  .tmp_issue_body.md
57
57
  .worktrees/
58
+ .venv-noembed/
@@ -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.15.0
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
- For a quick user installation with `uv`:
99
+ The default install is lightweight and CPU-friendly:
99
100
 
100
101
  ```bash
101
- uv tool install "git+https://github.com/zhuxixi/jfox.git"
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
- For a quick user installation with `uv`:
57
+ The default install is lightweight and CPU-friendly:
58
58
 
59
59
  ```bash
60
- uv tool install "git+https://github.com/zhuxixi/jfox.git"
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` | 嵌套 `note`;顶层冗余 `id`/`title` | 重复:`{success, skipped:"duplicate", duplicate{matched_id,matched_title,matched_by,score}}`;其余 `{success, error}` |
42
- | `search` | `success, query, mode, include_archived, total, results[]` | 列表 `results` | `{success, error}` |
43
- | `status` | `success, knowledge_base{path,exists}, stats, backend{type,model,dimension}` | 嵌套三段 | `{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}` |
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` | 嵌套 `note` | `{success, error}` |
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_*]`;`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
+ | `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` 为首条错误 / 冲突或不可读文件计数摘要 / 验证未通过提示) |