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