jfox-cli 1.7.0__tar.gz → 1.7.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.claude-plugin/marketplace.json +2 -2
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.gitignore +3 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/CHANGELOG.md +27 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/CLAUDE.md +3 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/PKG-INFO +3 -2
- jfox_cli-1.7.2/docs/superpowers/plans/2026-08-11-permanent-note-template.md +263 -0
- jfox_cli-1.7.2/docs/superpowers/plans/2026-08-12-noteindex-frontmatter-limit-drop.md +49 -0
- jfox_cli-1.7.2/docs/superpowers/plans/2026-08-15-delete-backlinks-cleanup.md +394 -0
- jfox_cli-1.7.2/docs/superpowers/plans/2026-08-16-bm25-concurrent-write-race.md +577 -0
- jfox_cli-1.7.2/docs/superpowers/specs/2026-08-11-permanent-note-template-design.md +141 -0
- jfox_cli-1.7.2/docs/superpowers/specs/2026-08-12-noteindex-frontmatter-limit-drop-design.md +54 -0
- jfox_cli-1.7.2/docs/superpowers/specs/2026-08-15-delete-backlinks-cleanup-design.md +133 -0
- jfox_cli-1.7.2/docs/superpowers/specs/2026-08-16-bm25-concurrent-write-race-design.md +141 -0
- jfox_cli-1.7.2/docs/superpowers/specs/2026-08-20-bm25-clear-orphan-followup-design.md +111 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/__init__.py +1 -1
- jfox_cli-1.7.2/jfox/bm25_index.py +1012 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/cli.py +10 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/note.py +66 -1
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/note_index.py +10 -1
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/search_engine.py +13 -3
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/.claude-plugin/plugin.json +1 -1
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/skills/session-to-permanent/SKILL.md +29 -6
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/kimi.plugin.json +1 -1
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md +29 -6
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/pyproject.toml +2 -1
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-session-to-permanent/SKILL.md +29 -6
- jfox_cli-1.7.2/tests/unit/test_bm25_concurrency.py +576 -0
- jfox_cli-1.7.2/tests/unit/test_delete_backlink_cleanup.py +567 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_note_index.py +83 -1
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_release_cc_plugin_helper.py +7 -2
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_update.py +25 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/uv.lock +3 -1
- jfox_cli-1.7.0/jfox/bm25_index.py +0 -613
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.claude/skills/ci/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.claude/skills/release/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.claude/skills/release/release_helper.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.claude/skills/release-all/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.claude/skills/release-all/release_all_helper.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.claude/skills/release-cc-plugin/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.claude/skills/release-cc-plugin/release_cc_plugin_helper.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.claude/skills/release-kimi-plugin/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.claude/skills/release-kimi-plugin/release_kimi_plugin_helper.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.githooks/pre-push +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.github/ISSUE_TEMPLATE/docs_improvement.yml +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.github/workflows/integration-test.yml +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.github/workflows/publish.yml +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/.python-version +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/AGENTS.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/DEVELOPMENT_PLAN.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/README.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/SESSION.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/SESSION_SUMMARY.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/claude-code-plugin-guide.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/installation.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/nightly-test.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-11-bulk-import-bm25-fix.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-11-edit-command.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-11-unify-format-option.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-12-ci-coverage-optimization.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-12-edit-content-file.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-12-fix-index-rebuild-clear.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-12-fix-index-verify-id-mismatch.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-12-fix-jfox-health-skill-kb-param.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-12-index-kb-param.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-12-lazy-import-perf.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-12-skill-redesign.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-13-add-content-file.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-13-bulk-import-vectorstore-init.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-13-ingest-log-command.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-13-ingest-skill-sync.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-13-suppress-third-party-logging.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-13-sync-skills-with-cli.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-14-sync-docs-daemon-show.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-15-gpu-embedding.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-15-make-daemon-deps-required.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-15-session-summary-confirmation.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-16-fix-windows-daemon-console-window.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-18-daemon-timeout-and-index-rebuild.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-22-release-skill.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-26-fix-daemon-deprecation-warnings.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-27-intranet-model-download.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-28-tag-filtering.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-04-29-daemon-stop-fix.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-05-03-jfox-check.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-05-03-list-notes-skip-summary.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-05-03-log-level-fix.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-05-04-list-notes-index.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-05-06-atomic-write.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-05-09-session-note-type.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-05-10-jfox-plugin.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-05-19-fix-last-used-never.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-05-20-modelscope-migration.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-06-02-todo-note-type.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-06-16-kimi-code-auto-summary.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-06-17-index-rebuild-backlinks.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-06-17-using-jfox-skill.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-06-18-self-update-command.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-06-21-fragment-capture.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-06-21-gem-synthesis.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-06-25-gem-synth-throttle-ledger.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-08-auto-summary-schedule-window.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-08-candidate-promote.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-12-gem-synth-dedup.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-12-release-cc-plugin-skill.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-12-session-summary-streamline.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-12-show-json.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-17-fix-candidate-dual-h1.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-18-dedup-lifecycle-decouple.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-19-promote-skill-three-modes.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-25-bookshelf.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-25-gem-synth-dedup-incremental-merge.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-26-kb-backup-restore.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-26-promote-skill-clear-reports-rewrite.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-27-release-all.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-28-bookshelf-flat-bundle.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-07-28-nightly-fulltest.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/plans/2026-08-07-session-to-permanent-cc-kimi.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-03-bugfixes-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-12-skill-redesign-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-13-pr-auto-code-review-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-14-show-command-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-15-gpu-embedding-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-15-session-summary-confirmation-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-21-release-skill-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-26-fix-daemon-deprecation-warnings-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-27-intranet-model-download-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-28-tag-filtering-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-29-daemon-stop-fix-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-04-30-jfox-kb-env-var-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-05-03-jfox-check-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-05-03-list-notes-skip-summary-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-05-03-log-level-fix-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-05-04-list-notes-index-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-05-06-atomic-write-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-05-09-jfox-plugin-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-05-09-session-note-type-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-05-20-modelscope-migration-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-06-02-todo-note-type-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-06-16-kimi-code-auto-summary-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-06-17-index-rebuild-backlinks-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-06-17-using-jfox-skill-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-06-18-archive-soft-delete-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-06-18-self-update-command-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-06-21-fragment-capture-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-06-21-gem-synthesis-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-06-25-gem-synth-throttle-ledger-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-08-candidate-promote-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-12-gem-synth-dedup-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-12-release-cc-plugin-skill-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-12-session-summary-streamline-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-12-show-json-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-18-dedup-lifecycle-decouple-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-19-promote-skill-three-modes-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-25-bookshelf-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-25-gem-synth-dedup-incremental-merge-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-26-kb-backup-restore-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-26-promote-skill-clear-reports-rewrite-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-27-release-all-orchestration-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-28-bookshelf-flat-bundle-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-07-28-nightly-fulltest-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/superpowers/specs/2026-08-07-session-to-permanent-cc-kimi-design.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/docs/troubleshooting.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jessica-jones-static-cable.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/__main__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/auto_summary/__init__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/auto_summary/cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/auto_summary/extractor.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/auto_summary/kimi_source.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/auto_summary/ledger.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/auto_summary/loop.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/auto_summary/runner.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/auto_summary/scanner.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/auto_summary/schedule.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/auto_summary/sources.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/backup/__init__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/backup/cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/backup/loop.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/backup/manager.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/backup/schedule.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/bookshelf/__init__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/bookshelf/cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/bookshelf/meta.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/bookshelf/store.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/config.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/daemon/__init__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/daemon/__main__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/daemon/client.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/daemon/process.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/daemon/server.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/embedding_backend.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/formatters.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/fragment/__init__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/fragment/cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/fragment/detector.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/fragment/internal_sources.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/fragment/service.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/fragment/store.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/__init__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/anchors.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/dedup.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/grounding.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/lifecycle.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/llm.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/loop.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/paths.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/store.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/synthesizer.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/gem_synth/transcript.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/git_extractor.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/global_config.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/graph.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/indexer.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/kb_manager.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/model_downloader.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/models.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/performance.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/template.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/template_cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/utils.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/jfox/vector_store.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/package.json +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/hooks/fragment-capture.sh +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/hooks/hooks.json +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/skills/bookshelf/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/skills/ingest/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/skills/manage/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/skills/organize/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/skills/promote/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/skills/search/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/skills/session-summary/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/cc-plugin/skills/using-jfox/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/README.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/skills/jfox-admin/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/skills/jfox-auto-summary/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/skills/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/skills/jfox-manage/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/skills/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/skills/jfox-promote/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/skills/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/skills/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/skills/jfox-template/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/packages/kimi-plugin/skills/using-jfox/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/pytest.ini +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/run_full_test.ps1 +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/scripts/download-model-intranet.sh +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/scripts/nightly_test.sh +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/scripts/nightly_test_helpers.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/README.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/kimi-cli/jfox-common/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/kimi-cli/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/kimi-cli/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/kimi-cli/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/kimi-cli/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-bookshelf/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-ci/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-common/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-ingest/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-organize/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-overview/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-promote/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-release/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-release-all/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-release-cc-plugin/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-release-kimi-plugin/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-search/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/skills-recommend/pi/jfox-session-summary/SKILL.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/COVERAGE_PLAN.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/MIGRATION.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/TESTS.md +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/conftest.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/integration/__init__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/integration/test_auto_summary_kimi.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/integration/test_backlinks.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/integration/test_candidate_promote_flow.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/integration/test_fragment_capture_flow.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/integration/test_gem_synth_flow.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/integration/test_index_rebuild_backlinks.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/integration/test_model_download.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/integration/test_tag_filter_cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/performance/__init__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/performance/test_performance.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/test_advanced_features.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/test_cli_format.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/test_config_set_unit.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/test_config_unit.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/test_core_workflow.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/test_embedding_device.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/test_hybrid_search.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/test_integration.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/test_kb_current.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/test_suggest_links.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/__init__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/bookshelf/__init__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/bookshelf/conftest.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/bookshelf/test_cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/bookshelf/test_meta.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/bookshelf/test_store.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/conftest.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_add_backfill_links.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_archive.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_atomic_write.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_auto_summary_cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_auto_summary_config_sources.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_auto_summary_defaults.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_auto_summary_extractor.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_auto_summary_ledger.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_auto_summary_loop.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_auto_summary_runner.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_auto_summary_scanner.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_auto_summary_schedule.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_auto_summary_status.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_backup.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_bm25_batch.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_check.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_content_file.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_daemon_cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_daemon_process.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_edit.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_embedding_local_load.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_format_unify.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_formatters.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_fragment_cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_fragment_config.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_fragment_detector.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_fragment_hook.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_fragment_internal_sources.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_fragment_service.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_fragment_store.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_anchors.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_backfill.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_config.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_config_dedup.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_dedup.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_grounding.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_lifecycle.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_llm.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_loop.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_store.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_store_duplicate.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_synthesizer.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_gem_synth_transcript.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_git_extractor.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_global_config.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_index_kb_param.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_indexer_clear_before_rebuild.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_indexer_verify.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_kb_manager.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_kimi_extractor.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_kimi_plugin_skills.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_kimi_scanner.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_lazy_import.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_ledger_migration.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_list_notes_skip.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_logging_config.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_model_downloader.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_nightly_test_helpers.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_note_candidate_fields.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_note_candidate_filename.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_note_dedup_sync.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_note_lifecycle_hooks.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_note_promote.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_note_type_candidate.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_rebuild_backlinks_impl.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_release_all_helper.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_release_helper.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_release_helper_verify.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_release_kimi_plugin_helper.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_runner_multi_source.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_scanner_list.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_session_file_source.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_session_note.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_session_source.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_show.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_synthesizer_dedup.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_system_prompt_sections.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_tag_filter.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_template.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_template_cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_use_kb_env_var.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_using_jfox_skill.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/unit/test_vector_store_clear.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/utils/__init__.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/utils/assertions.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/utils/jfox_cli.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/utils/note_generator.py +0 -0
- {jfox_cli-1.7.0 → jfox_cli-1.7.2}/tests/utils/temp_kb.py +0 -0
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
},
|
|
8
8
|
"metadata": {
|
|
9
9
|
"description": "JFox Zettelkasten 知识管理工具的 Claude Code 集成",
|
|
10
|
-
"version": "0.7.
|
|
10
|
+
"version": "0.7.3"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
14
14
|
"name": "jfox",
|
|
15
15
|
"source": "./packages/cc-plugin",
|
|
16
16
|
"description": "JFox 知识管理 CLI 的 Claude Code 集成——搜索、写入工作流(导入/整理/会话总结)与知识库管理",
|
|
17
|
-
"version": "0.7.
|
|
17
|
+
"version": "0.7.3",
|
|
18
18
|
"author": { "name": "zhuxixi" },
|
|
19
19
|
"keywords": ["zettelkasten", "knowledge-management"],
|
|
20
20
|
"category": "workflow"
|
|
@@ -2,6 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to jfox-cli will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.7.2] - 2026-08-21
|
|
6
|
+
|
|
7
|
+
### Fixes
|
|
8
|
+
- **bm25**: 孤儿 tmp 无效时覆盖分支版本撞号,clear 数据复活(#403) (#404)
|
|
9
|
+
- **bm25**: PR #396 cc round-4 遗留修复——clear 快照化/单边态自愈/tmp 消费闭环(#401) (#402)
|
|
10
|
+
- **bm25**: 索引并发写乐观并发控制,根治 daemon 旧快照覆盖回滚(#391) (#396)
|
|
11
|
+
- **update**: 升级期间显示进度提示,stdin 指向 DEVNULL 防挂住 (#394) (#395)
|
|
12
|
+
|
|
13
|
+
### Changes
|
|
14
|
+
- style(bm25): collapse multi-line condition to single line (pi-lens format)
|
|
15
|
+
- **claude.md**: 记 delete_note backlinks 增量清理语义 (#388) (#397)
|
|
16
|
+
- **claude.md**: 记 CI paths 触发限制(#382) (#384)
|
|
17
|
+
|
|
18
|
+
[1.7.2]: https://github.com/zhuxixi/jfox/compare/v1.7.1...v1.7.2
|
|
19
|
+
|
|
20
|
+
## [1.7.1] - 2026-08-16
|
|
21
|
+
|
|
22
|
+
### Fixes
|
|
23
|
+
- **note**: delete_note 清理目标笔记 backlinks,消除悬空 id (#386) (#388)
|
|
24
|
+
- **note_index**: 抬高 frontmatter 行数上限并消除静默丢弃 (#380) (#382)
|
|
25
|
+
|
|
26
|
+
### Changes
|
|
27
|
+
- ignore pi local session config (#381)
|
|
28
|
+
- **skill**: session-to-permanent 模板改三层结构(#375) (#377)
|
|
29
|
+
|
|
30
|
+
[1.7.1]: https://github.com/zhuxixi/jfox/compare/v1.7.0...v1.7.1
|
|
31
|
+
|
|
5
32
|
## [1.7.0] - 2026-08-07
|
|
6
33
|
|
|
7
34
|
### Features
|
|
@@ -132,6 +132,8 @@ Four jobs in `.github/workflows/integration-test.yml`:
|
|
|
132
132
|
- **Full** (manual): All tests, all OS, all Python versions
|
|
133
133
|
- **Coverage** (after fast): Runs coverage on fast tests, uploads HTML/XML artifacts
|
|
134
134
|
|
|
135
|
+
**CI 触发受 `paths` 限制**:`integration-test.yml` 的 `paths` 只含 `jfox/**`/`tests/**`/`pyproject.toml`/自身——`packages/`(cc/kimi-plugin 发版 bump)、`docs/`、`.claude/` 改动**不触发 CI**。后果:`packages/` 下版本 bump 不跑测试,release-helper 测试须按当前版本动态算「下一版」(勿硬编码),否则只在后续触达 `tests/` 的 PR 才暴露(#382 踩过)。
|
|
136
|
+
|
|
135
137
|
**Release** workflow in `.github/workflows/publish.yml`: publishes to PyPI on GitHub release publication.
|
|
136
138
|
|
|
137
139
|
**Local nightly full-test**(#263/#361,非 GitHub Action):`scripts/nightly_test.sh` 是本机 crontab 定时任务(crontab 行装本机、不进仓库),每周二 09:00 跑 CI `test-fast` 跳过的全量 pytest(performance/bulk/slow/embedding)——成功静默,失败按签名去重复用带 `nightly-test-failure` label 的 issue。前置:今日 #338 备份须成功(读 `~/.jfox-backup/state.json` 的 `last_ok`,否则 `SKIP: 今日备份未确认` 退出)。纯逻辑在 `scripts/nightly_test_helpers.py`(单测 `tests/unit/test_nightly_test_helpers.py`);`--dry-run` 用人造失败走 issue 流程、不跑真实 pytest。
|
|
@@ -177,3 +179,4 @@ JFox ships as a Claude Code plugin. Two-tier structure:
|
|
|
177
179
|
- Test directory migration mostly complete; root-level `test_config_unit.py` and `test_config_set_unit.py` remain but test different things from `tests/unit/`
|
|
178
180
|
- 生命周期订阅模块的重依赖(numpy 等)必须 lazy import 进回调体,不能顶层 import——`jfox/__init__.py` 每次启动都 import 订阅模块,顶层会令 `--version`/`search` 等不相关命令多付 ~70-100ms eager 加载。参考 `gem_synth/lifecycle.py`
|
|
179
181
|
- `rich` Console 输出机器解析的 JSON 时须 `soft_wrap=True`:默认按 80 列硬折行,会把长字符串(如 Windows 绝对路径)在 JSON 字符串内部断行,`json.loads` 报 Invalid control character(Ubuntu 路径短不触发,只在 Windows CI 挂,#336)。参考 `bookshelf/cli.py` `_emit_json`
|
|
182
|
+
- `delete_note`/`promote_note` 增量同步各 target 的 backlinks(#388 起对称):单 target 写盘失败仅 warning 不中断;悬空/不对称残留用 `jfox index rebuild --backlinks` 全量重算兜底
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: jfox-cli
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.2
|
|
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
|
|
@@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
18
18
|
Requires-Python: >=3.10
|
|
19
19
|
Requires-Dist: chromadb>=0.5.0
|
|
20
20
|
Requires-Dist: fastapi>=0.110.0
|
|
21
|
+
Requires-Dist: filelock>=3.12
|
|
21
22
|
Requires-Dist: jinja2>=3.0
|
|
22
23
|
Requires-Dist: networkx>=3.0
|
|
23
24
|
Requires-Dist: pydantic>=2.0
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# Permanent 笔记模板重构 Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
4
|
+
|
|
5
|
+
**Goal:** 把 `jfox-session-to-permanent` Step 3 的固定三段式模板(事实/Why/How to apply)替换为三层结构(稳定核 + 类型段 + 易变细节),三平台 skill body 逐字一致。
|
|
6
|
+
|
|
7
|
+
**Architecture:** 单骨架 + 可选类型段。替换三个 skill 文件(pi / cc / kimi)Step 3 里同一段「内容结构」code block,并在其后、写作规范段之前插入「类型段目录 + 选标题原则 + 自检」。替换文字在三个文件中**逐字一致**(靠 Task 4 三方 diff 兜底)。不碰任何 `.py`、不碰 `jfox-promote`、不碰 Step 1/2/4/5、不碰写作规范与 wiki links 段。
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** Markdown(skill 散文层)。无代码、无测试套件——验证靠 grep 锚点 + 三方 diff。
|
|
10
|
+
|
|
11
|
+
## Global Constraints
|
|
12
|
+
|
|
13
|
+
(摘自 spec `docs/superpowers/specs/2026-08-11-permanent-note-template-design.md`,每个任务隐式遵守)
|
|
14
|
+
|
|
15
|
+
- 纯文档改动:不碰任何 `.py`、不碰 `pyproject.toml`/版本号;`packages/**/*.md` 不触发 CI(memory: docs-pr-no-ci-admin-merge)。
|
|
16
|
+
- 三文件 body(内容结构块 + 类型段目录 + 选标题原则 + 自检)**逐字一致**;各文件其余本平台特性不动(审阅交互 question vs AskUserQuestion、`--kb` 默认、交叉引用 `/skill:jfox-common` vs `/jfox:manage` vs `/skill:jfox-manage`)。
|
|
17
|
+
- 「写作规范(遵循 clear-reports 段落写作法)」5 条与「嵌入 wiki links」段**逐字保留不动**。
|
|
18
|
+
- 不改 `jfox-promote`(调研确认它不引用本模板)。
|
|
19
|
+
- 不回填历史永久笔记(仅对新沉淀生效)。
|
|
20
|
+
- commit 前 `git branch --show-current` 守卫(memory: concurrent-git-branch-hijack),须在 `issue-375-permanent-note-template` 分支。
|
|
21
|
+
|
|
22
|
+
## File Structure
|
|
23
|
+
|
|
24
|
+
| 文件 | 改动 | 责任 |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| `skills-recommend/pi/jfox-session-to-permanent/SKILL.md` | Step 3 替换 + 插入 | pi 平台 skill |
|
|
27
|
+
| `packages/cc-plugin/skills/session-to-permanent/SKILL.md` | 同上(逐字一致) | cc-plugin skill |
|
|
28
|
+
| `packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md` | 同上(逐字一致) | kimi-plugin skill |
|
|
29
|
+
|
|
30
|
+
三文件改的是**同一段**,替换文字完全相同——这是设计要求,不是省事。
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Canonical 替换文本(三个 Task 共用,逐字一致)
|
|
35
|
+
|
|
36
|
+
**要被替换的旧文本**(三个文件里逐字相同,grep 锚点 `**内容结构**(事实 → Why → How to apply):`):
|
|
37
|
+
|
|
38
|
+
````
|
|
39
|
+
**内容结构**(事实 → Why → How to apply):
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
<一句话核心事实。开门见山,把这条笔记最重要的结论放第一句。>
|
|
43
|
+
|
|
44
|
+
## Why
|
|
45
|
+
<这个事实为什么成立、背景是什么。每段只讲一个子主题,段首给概要句。>
|
|
46
|
+
|
|
47
|
+
## How to apply
|
|
48
|
+
<什么场景下用、具体怎么操作。结合示例或命令。>
|
|
49
|
+
```
|
|
50
|
+
````
|
|
51
|
+
|
|
52
|
+
**替换为下面这段新文本**(三个文件逐字一致,注意内层是 3 个反引号的 code block):
|
|
53
|
+
|
|
54
|
+
````
|
|
55
|
+
**内容结构**(稳定核 + 类型段 + 易变细节):
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
<一句话结论。这条笔记最稳定、最值得未来记住的那句话,开门见山放第一句。>
|
|
59
|
+
|
|
60
|
+
## 为什么(背景与依据)
|
|
61
|
+
<这条知识回答的是什么问题;成立的前提/约束/假设。
|
|
62
|
+
若是决策类:写当时的背景、选它的主要原因、以及认真考虑过但没选的替代方案——依据很大程度上在于"被丢弃的选项"。
|
|
63
|
+
没东西可写就整段省略,别硬凑。>
|
|
64
|
+
|
|
65
|
+
## <类型段,选 0–1 个,标题写实>
|
|
66
|
+
<按笔记内容从下方"类型段目录"选一个标题,或整段省略。>
|
|
67
|
+
|
|
68
|
+
## 怎么用
|
|
69
|
+
<什么场景下用、具体步骤或命令。结合示例或命令。>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
> **易变细节处理(写作指导,不是每条笔记的固定段)**:路径、版本号、端口、文件位置归到「## 怎么用」,它们是易变的"实现决策",核(结论 + 为什么)不写具体值、保持常青。只有当「## 怎么用」里确实出现了这类易变值时,才在该段末尾加一句具体的核对提醒(如「端口以 docker-compose.yml 为准」);没出现就不加——固定的模板话重复进每条笔记会掩盖该条的重点。
|
|
73
|
+
|
|
74
|
+
**选标题的原则**:标题要写实、具体——写这条笔记实际在讲的主题,不套抽象类别名;一段一个主题,不用「A与B」复合标题(如不要「运行速度与耗电量」,要拆成两段或选其一)。
|
|
75
|
+
|
|
76
|
+
**类型段目录**:按笔记内容选 0–1 个标题;方法/调试类通常省略,直接并进「## 怎么用」。
|
|
77
|
+
|
|
78
|
+
| 笔记内容 | 类型段标题 | 这一段写什么 |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| 机制 / 原理 | `## 它怎么工作` | 系统/工具的运作机制、各部分如何配合 |
|
|
81
|
+
| 现状快照 | `## 当前现状` | 脚本/文件/端口/配置的当前位置与状态 |
|
|
82
|
+
| 自动化链路 | `## 链路与组件` | 多组件串联的链路与各组件职责 |
|
|
83
|
+
| 纯概念 | `## 概念` | 可复用的概念、原理、术语解释 |
|
|
84
|
+
| 方法 / 调试 | (省略) | 直接写进「## 怎么用」 |
|
|
85
|
+
|
|
86
|
+
> **链路类的提醒**:一条笔记若在画多个组件的关系,本质是「迷你 structure note」——组件多了应考虑拆成一个 MOC(见 #376)+ 各组件独立笔记,而不是把所有组件塞进一条 fat note。
|
|
87
|
+
|
|
88
|
+
**自检**:把「## 怎么用」整段遮住,剩下的「结论 + 为什么 + 类型段」是否还独立成立、还有价值?是→分层成功;否→核里写进了易变细节,把具体路径/版本挪到「## 怎么用」。
|
|
89
|
+
````
|
|
90
|
+
|
|
91
|
+
> 替换范围说明:旧文本从 `**内容结构**(事实 → Why → How to apply):` 起,到内层 code block 结束的 ` ``` ` 止(不含其后的空行和「写作规范」段)。新文本替换到「**自检**:……挪到「## 怎么用」。」止。替换后紧跟原有的「**写作规范(遵循 clear-reports 段落写作法)**」段——**写作规范段及其后内容一律不动**。
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
### Task 1: 替换 pi 平台 skill 的 Step 3 模板
|
|
96
|
+
|
|
97
|
+
**Files:**
|
|
98
|
+
- Modify: `skills-recommend/pi/jfox-session-to-permanent/SKILL.md`(Step 3「内容结构」块,约 L103–113)
|
|
99
|
+
|
|
100
|
+
**Interfaces:** 本任务建立 canonical 替换结果,Task 2/3 必须与其逐字一致(Task 4 diff 验证)。
|
|
101
|
+
|
|
102
|
+
- [ ] **Step 1: 守卫 + 定位旧块**
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
cd /home/elling/git-repo/github/jfox
|
|
106
|
+
git branch --show-current # 必须: issue-375-permanent-note-template
|
|
107
|
+
grep -n "内容结构" skills-recommend/pi/jfox-session-to-permanent/SKILL.md
|
|
108
|
+
```
|
|
109
|
+
Expected: 命中 `**内容结构**(事实 → Why → How to apply):`
|
|
110
|
+
|
|
111
|
+
- [ ] **Step 2: 替换**
|
|
112
|
+
|
|
113
|
+
用 Edit 工具,把本 plan「Canonical 替换文本」里的**旧文本**整段替换为**新文本**。`old_string` = 旧文本(从 `**内容结构**(事实 → Why → How to apply):` 到内层 ``` 止),`new_string` = 新文本(到「**自检**」段止)。
|
|
114
|
+
|
|
115
|
+
- [ ] **Step 3: 验证替换正确**
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# 旧锚点 0 命中
|
|
119
|
+
grep -c "事实 → Why → How to apply\|## How to apply" skills-recommend/pi/jfox-session-to-permanent/SKILL.md
|
|
120
|
+
# 新锚点命中
|
|
121
|
+
grep -c "稳定核 + 类型段 + 易变细节\|类型段目录\|选标题的原则\|自检:把" skills-recommend/pi/jfox-session-to-permanent/SKILL.md
|
|
122
|
+
# 写作规范段仍在
|
|
123
|
+
grep -c "写作规范(遵循 clear-reports" skills-recommend/pi/jfox-session-to-permanent/SKILL.md
|
|
124
|
+
```
|
|
125
|
+
Expected: 第 1 条 = 0;第 2 条 ≥ 4;第 3 条 = 1。
|
|
126
|
+
|
|
127
|
+
- [ ] **Step 4: Commit**
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
git add skills-recommend/pi/jfox-session-to-permanent/SKILL.md
|
|
131
|
+
git commit -m "refactor(skill): session-to-permanent 模板改三层结构(pi, #375)"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
### Task 2: 替换 cc-plugin skill 的 Step 3 模板(与 pi 逐字一致)
|
|
137
|
+
|
|
138
|
+
**Files:**
|
|
139
|
+
- Modify: `packages/cc-plugin/skills/session-to-permanent/SKILL.md`(Step 3,约 L97–107)
|
|
140
|
+
|
|
141
|
+
**Interfaces:** 替换文字必须与 Task 1 结果逐字一致。
|
|
142
|
+
|
|
143
|
+
- [ ] **Step 1: 守卫 + 定位**
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
git branch --show-current # issue-375-permanent-note-template
|
|
147
|
+
grep -n "内容结构" packages/cc-plugin/skills/session-to-permanent/SKILL.md
|
|
148
|
+
```
|
|
149
|
+
Expected: 命中旧锚点 `**内容结构**(事实 → Why → How to apply):`
|
|
150
|
+
|
|
151
|
+
- [ ] **Step 2: 替换**
|
|
152
|
+
|
|
153
|
+
同 Task 1 Step 2——用本 plan「Canonical 替换文本」的旧/新文本做 Edit(同一份文字)。
|
|
154
|
+
|
|
155
|
+
- [ ] **Step 3: 验证**
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
grep -c "事实 → Why → How to apply\|## How to apply" packages/cc-plugin/skills/session-to-permanent/SKILL.md # =0
|
|
159
|
+
grep -c "稳定核 + 类型段 + 易变细节\|类型段目录\|选标题的原则\|自检:把" packages/cc-plugin/skills/session-to-permanent/SKILL.md # ≥4
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
- [ ] **Step 4: Commit**
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
git add packages/cc-plugin/skills/session-to-permanent/SKILL.md
|
|
166
|
+
git commit -m "refactor(skill): session-to-permanent 模板改三层结构(cc, #375)"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
### Task 3: 替换 kimi-plugin skill 的 Step 3 模板(与 pi 逐字一致)
|
|
172
|
+
|
|
173
|
+
**Files:**
|
|
174
|
+
- Modify: `packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md`(Step 3,约 L97–107)
|
|
175
|
+
|
|
176
|
+
**Interfaces:** 替换文字必须与 Task 1 结果逐字一致。
|
|
177
|
+
|
|
178
|
+
- [ ] **Step 1: 守卫 + 定位**
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
git branch --show-current # issue-375-permanent-note-template
|
|
182
|
+
grep -n "内容结构" packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md
|
|
183
|
+
```
|
|
184
|
+
Expected: 命中旧锚点。
|
|
185
|
+
|
|
186
|
+
- [ ] **Step 2: 替换**
|
|
187
|
+
|
|
188
|
+
同 Task 1 Step 2。
|
|
189
|
+
|
|
190
|
+
- [ ] **Step 3: 验证**
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
grep -c "事实 → Why → How to apply\|## How to apply" packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md # =0
|
|
194
|
+
grep -c "稳定核 + 类型段 + 易变细节\|类型段目录\|选标题的原则\|自检:把" packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md # ≥4
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
- [ ] **Step 4: Commit**
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
git add packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md
|
|
201
|
+
git commit -m "refactor(skill): session-to-permanent 模板改三层结构(kimi, #375)"
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### Task 4: 三方 diff + 全局验证
|
|
207
|
+
|
|
208
|
+
**Files:** 无新改动;只读验证,必要时回修。
|
|
209
|
+
|
|
210
|
+
**Interfaces:** 消费 Task 1/2/3 的产物。
|
|
211
|
+
|
|
212
|
+
- [ ] **Step 1: 三方 body 逐字一致性**
|
|
213
|
+
|
|
214
|
+
抽取三文件「内容结构 → 写作规范」之间的区段,两两 diff:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
cd /home/elling/git-repo/github/jfox
|
|
218
|
+
A=skills-recommend/pi/jfox-session-to-permanent/SKILL.md
|
|
219
|
+
B=packages/cc-plugin/skills/session-to-permanent/SKILL.md
|
|
220
|
+
C=packages/kimi-plugin/skills/jfox-session-to-permanent/SKILL.md
|
|
221
|
+
extract() { sed -n '/\*\*内容结构\*\*/,/\*\*写作规范(遵循/p' "$1"; }
|
|
222
|
+
diff <(extract "$A") <(extract "$B")
|
|
223
|
+
diff <(extract "$A") <(extract "$C")
|
|
224
|
+
```
|
|
225
|
+
Expected: 两个 diff 均**无输出**(区段逐字一致)。若有差异,回对应 Task 修正到一致。
|
|
226
|
+
|
|
227
|
+
- [ ] **Step 2: 全局旧锚点 0 命中(排除 worktrees)**
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
grep -rn "事实 → Why → How to apply" --include="*.md" . | grep -v "/.worktrees/"
|
|
231
|
+
grep -rn "## How to apply" --include="*.md" . | grep -v "/.worktrees/"
|
|
232
|
+
```
|
|
233
|
+
Expected: 均无命中(session-to-permanent 三处已改;其它文件本就没有)。
|
|
234
|
+
|
|
235
|
+
- [ ] **Step 3: 写作规范 5 条 + wiki links 段仍在(抽查一处即可,三处一致)**
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
grep -c "写作规范(遵循 clear-reports" skills-recommend/pi/jfox-session-to-permanent/SKILL.md # =1
|
|
239
|
+
grep -c "嵌入 wiki links" skills-recommend/pi/jfox-session-to-permanent/SKILL.md # =1
|
|
240
|
+
grep -c "先给结论,再展开" skills-recommend/pi/jfox-session-to-permanent/SKILL.md # =1(5条之1)
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
- [ ] **Step 4: jfox-promote 未受影响**
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
grep -rn "稳定核 + 类型段\|类型段目录" packages/cc-plugin/skills/promote packages/kimi-plugin/skills/jfox-promote skills-recommend/pi/jfox-promote 2>/dev/null
|
|
247
|
+
```
|
|
248
|
+
Expected: 无命中(promote 没被碰)。
|
|
249
|
+
|
|
250
|
+
- [ ] **Step 5: 若 Step 1–4 全过则无需 commit;若有回修则 commit 修正**
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
git status # 应 clean(除非有回修)
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Self-Review(writing-plans 自检,已完成)
|
|
259
|
+
|
|
260
|
+
- **Spec coverage**:spec §3.1(新模板块)→ Task 1/2/3 Step 2;§3.2(类型段目录 + 选标题原则)→ 同一 canonical 新文本;§3.3(自检)→ 同一;§3.4(写作规范/wiki 不动)→ Task 1/3/4 Step 3 验证;§4(三平台一致 + 各保留特性)→ Task 4 Step 1 diff + Global Constraints;§6 验收→ Task 4。无遗漏。
|
|
261
|
+
- **Placeholder scan**:canonical 文本是最终稿,无 TBD/TODO。grep 期望值都给了具体数字。
|
|
262
|
+
- **Type consistency**:三个文件 grep 锚点字符串统一(`稳定核 + 类型段 + 易变细节` / `类型段目录` / `选标题的原则` / `自检:把`),Task 4 diff 兜底。
|
|
263
|
+
- **docs-only 适配**:原 TDD 模板的「写失败测试/跑测试」对纯 markdown 不适用,替换为「grep 锚点 + diff」机械验证,每步都给了可执行命令与期望值。
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Plan: NoteIndex frontmatter 行数上限静默丢弃(#380)
|
|
2
|
+
|
|
3
|
+
对应 spec:`specs/2026-08-12-noteindex-frontmatter-limit-drop-design.md`
|
|
4
|
+
|
|
5
|
+
## Task 1 — 回归测试(先红)
|
|
6
|
+
|
|
7
|
+
文件:`tests/unit/test_note_index.py`,新增 class `TestNoteIndexLargeFrontmatter`(或并入
|
|
8
|
+
`TestNoteIndexInvalidFiles`)。
|
|
9
|
+
|
|
10
|
+
- fixture/inline:构造一条 frontmatter 行数 > 旧上限 200(取 245:240 条 backlinks + 5 行其它字段)
|
|
11
|
+
的 permanent 笔记,写入 `cfg.notes_dir/permanent/`。
|
|
12
|
+
- 断言:
|
|
13
|
+
- `find_by_title(...)` 命中(非 None),`id` 正确 —— 直接回归 #380。
|
|
14
|
+
- `_parse_frontmatter_only(filepath)` 非 None。
|
|
15
|
+
- 另加一条:超限(构造远超 50000 行的病理 frontmatter 不现实,改为直接 monkeypatch
|
|
16
|
+
`_MAX_FRONTMATTER_LINES` 到小值如 5,构造 >5 行 frontmatter,断言返回 None 且
|
|
17
|
+
`caplog` 捕获到 `WARNING` 级日志、日志含文件名 —— 锁定「超限不再静默」)。
|
|
18
|
+
|
|
19
|
+
验证:`uv run pytest tests/unit/test_note_index.py -v`(新测试红,旧测试绿)。
|
|
20
|
+
|
|
21
|
+
## Task 2 — 修复(转绿)
|
|
22
|
+
|
|
23
|
+
文件:`jfox/note_index.py`
|
|
24
|
+
|
|
25
|
+
- `_MAX_FRONTMATTER_LINES = 200` → `50000`,注释更新为「防御性 guard:frontmatter 不闭合时
|
|
26
|
+
避免读全文件;远超现实 backlinks 上限,正常笔记读到闭合 `---` 即 break,无性能影响」。
|
|
27
|
+
- 超限分支:`return None` 前加 `logger.warning(f"frontmatter 超过 {_MAX_FRONTMATTER_LINES} 行上限,
|
|
28
|
+
已跳过:{filepath}")`。
|
|
29
|
+
|
|
30
|
+
验证:Task 1 测试转绿;`uv run pytest tests/unit/test_note_index.py -v` 全绿。
|
|
31
|
+
|
|
32
|
+
## Task 3 — 全量校验 + lint
|
|
33
|
+
|
|
34
|
+
- `uv run pytest tests/unit/ -q`(快速单测全过,不触发 embedding/slow)。
|
|
35
|
+
- `uv run ruff check jfox/note_index.py tests/unit/test_note_index.py`。
|
|
36
|
+
- `uv run black --check jfox/note_index.py tests/unit/test_note_index.py`
|
|
37
|
+
(用 `uv run --with black==26.3.1 black --check ...` 若缺,见 memory `run-black-not-just-ruff`)。
|
|
38
|
+
|
|
39
|
+
## Task 4 — 提交 + CR + PR
|
|
40
|
+
|
|
41
|
+
- `git add` 按文件 stage(note_index.py、test_note_index.py、spec、plan)。
|
|
42
|
+
- 本地 CR(`feature-dev:code-reviewer` 或 `/code-review`,深度自定)。
|
|
43
|
+
- push + `gh pr create --head`,PR body 含根因/修复/测试/复现链接,关 #380。
|
|
44
|
+
- 打 `zima:needs-review`,走 zima-pr-monitor babysit。
|
|
45
|
+
|
|
46
|
+
## 非任务(确认不做)
|
|
47
|
+
|
|
48
|
+
- index verify 接入 NoteIndex invalid files。
|
|
49
|
+
- backlinks 截断策略。
|