cognitive-core 0.2.0 → 0.2.2
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.
- package/.claude/settings.json +111 -2
- package/.sessionlog/settings.json +4 -0
- package/dist/atlas.d.ts +10 -0
- package/dist/atlas.d.ts.map +1 -1
- package/dist/atlas.js +65 -0
- package/dist/atlas.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/learning/index.d.ts +1 -1
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/pipeline.d.ts +4 -31
- package/dist/learning/pipeline.d.ts.map +1 -1
- package/dist/learning/pipeline.js +12 -64
- package/dist/learning/pipeline.js.map +1 -1
- package/dist/learning/unified-pipeline.d.ts +30 -0
- package/dist/learning/unified-pipeline.d.ts.map +1 -1
- package/dist/learning/unified-pipeline.js +207 -0
- package/dist/learning/unified-pipeline.js.map +1 -1
- package/dist/memory/candidate-retrieval.d.ts.map +1 -1
- package/dist/memory/candidate-retrieval.js +3 -1
- package/dist/memory/candidate-retrieval.js.map +1 -1
- package/dist/memory/curated-loader.d.ts +21 -4
- package/dist/memory/curated-loader.d.ts.map +1 -1
- package/dist/memory/curated-loader.js +53 -16
- package/dist/memory/curated-loader.js.map +1 -1
- package/dist/memory/index.d.ts +2 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -1
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/playbook.d.ts +6 -0
- package/dist/memory/playbook.d.ts.map +1 -1
- package/dist/memory/playbook.js +15 -0
- package/dist/memory/playbook.js.map +1 -1
- package/dist/memory/source-resolver.d.ts +120 -0
- package/dist/memory/source-resolver.d.ts.map +1 -0
- package/dist/memory/source-resolver.js +300 -0
- package/dist/memory/source-resolver.js.map +1 -0
- package/dist/types/config.d.ts +141 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +40 -0
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/error-classifier.js +8 -8
- package/dist/utils/error-classifier.js.map +1 -1
- package/dist/workspace/efficacy-toolkit.d.ts +164 -0
- package/dist/workspace/efficacy-toolkit.d.ts.map +1 -0
- package/dist/workspace/efficacy-toolkit.js +281 -0
- package/dist/workspace/efficacy-toolkit.js.map +1 -0
- package/dist/workspace/index.d.ts +2 -1
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +3 -1
- package/dist/workspace/index.js.map +1 -1
- package/dist/workspace/templates/index.d.ts +3 -0
- package/dist/workspace/templates/index.d.ts.map +1 -1
- package/dist/workspace/templates/index.js +6 -0
- package/dist/workspace/templates/index.js.map +1 -1
- package/dist/workspace/templates/playbook-decay-detection.d.ts +46 -0
- package/dist/workspace/templates/playbook-decay-detection.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-decay-detection.js +197 -0
- package/dist/workspace/templates/playbook-decay-detection.js.map +1 -0
- package/dist/workspace/templates/playbook-efficacy-audit.d.ts +46 -0
- package/dist/workspace/templates/playbook-efficacy-audit.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-efficacy-audit.js +160 -0
- package/dist/workspace/templates/playbook-efficacy-audit.js.map +1 -0
- package/dist/workspace/templates/playbook-lifecycle-review.d.ts +51 -0
- package/dist/workspace/templates/playbook-lifecycle-review.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-lifecycle-review.js +187 -0
- package/dist/workspace/templates/playbook-lifecycle-review.js.map +1 -0
- package/dist/workspace/types.d.ts +12 -54
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/types.js.map +1 -1
- package/package.json +8 -2
- package/playbooks/compound-engineering/adversarial-review.json +51 -0
- package/playbooks/compound-engineering/agent-native-architecture.json +59 -0
- package/playbooks/compound-engineering/agent-native-review.json +54 -0
- package/playbooks/compound-engineering/api-contract-review.json +52 -0
- package/playbooks/compound-engineering/brainstorm-requirements.json +55 -0
- package/playbooks/compound-engineering/bug-reproduction.json +62 -0
- package/playbooks/compound-engineering/confidence-calibration.json +49 -0
- package/playbooks/compound-engineering/correctness-review.json +49 -0
- package/playbooks/compound-engineering/data-migration-safety.json +59 -0
- package/playbooks/compound-engineering/deployment-verification.json +63 -0
- package/playbooks/compound-engineering/error-recovery-patterns.json +53 -0
- package/playbooks/compound-engineering/implementation-planning.json +64 -0
- package/playbooks/compound-engineering/issue-pattern-analysis.json +53 -0
- package/playbooks/compound-engineering/knowledge-compounding.json +63 -0
- package/playbooks/compound-engineering/learnings-research.json +54 -0
- package/playbooks/compound-engineering/maintainability-review.json +49 -0
- package/playbooks/compound-engineering/performance-review.json +54 -0
- package/playbooks/compound-engineering/plan-adversarial-review.json +56 -0
- package/playbooks/compound-engineering/plan-feasibility-review.json +56 -0
- package/playbooks/compound-engineering/project-standards-review.json +52 -0
- package/playbooks/compound-engineering/reliability-review.json +53 -0
- package/playbooks/compound-engineering/review-orchestration.json +64 -0
- package/playbooks/compound-engineering/security-review.json +54 -0
- package/playbooks/compound-engineering/systematic-execution.json +64 -0
- package/playbooks/compound-engineering/testing-review.json +50 -0
- package/src/atlas.ts +96 -0
- package/src/index.ts +27 -0
- package/src/learning/index.ts +1 -0
- package/src/learning/unified-pipeline.ts +271 -1
- package/src/memory/candidate-retrieval.ts +2 -1
- package/src/memory/curated-loader.ts +69 -16
- package/src/memory/index.ts +16 -0
- package/src/memory/playbook.ts +19 -0
- package/src/memory/source-resolver.ts +422 -0
- package/src/types/config.ts +46 -0
- package/src/types/index.ts +4 -0
- package/src/utils/error-classifier.ts +8 -8
- package/src/workspace/efficacy-toolkit.ts +496 -0
- package/src/workspace/index.ts +29 -0
- package/src/workspace/templates/index.ts +24 -0
- package/src/workspace/templates/playbook-decay-detection.ts +272 -0
- package/src/workspace/templates/playbook-efficacy-audit.ts +246 -0
- package/src/workspace/templates/playbook-lifecycle-review.ts +274 -0
- package/src/workspace/types.ts +22 -78
- package/tests/fixtures/behavioral-trajectories.ts +210 -0
- package/tests/integration/curated-sources-e2e.test.ts +502 -0
- package/tests/integration/pipeline-data-correctness.test.ts +794 -0
- package/tests/learning/meta-learner.test.ts +418 -0
- package/tests/learning/pipeline-memory-updates.test.ts +721 -0
- package/tests/learning/unified-pipeline-efficacy.test.ts +232 -0
- package/tests/memory/candidate-retrieval.test.ts +167 -0
- package/tests/memory/compound-engineering-seed.test.ts +338 -0
- package/tests/memory/curated-loader-extended.test.ts +225 -0
- package/tests/memory/meta.test.ts +399 -0
- package/tests/memory/playbook-quality-validation.test.ts +430 -0
- package/tests/memory/source-resolver.test.ts +700 -0
- package/tests/search/evaluator.test.ts +257 -0
- package/tests/search/verification-runner.test.ts +357 -0
- package/tests/utils/error-classifier.test.ts +149 -0
- package/tests/utils/trajectory-helpers.test.ts +163 -0
- package/tests/workspace/efficacy-toolkit.test.ts +404 -0
- package/tests/workspace/templates/playbook-efficacy.test.ts +377 -0
- package/.claude/settings.local.json +0 -11
- package/dist/learning/llm-extractor.d.ts +0 -88
- package/dist/learning/llm-extractor.d.ts.map +0 -1
- package/dist/learning/llm-extractor.js +0 -372
- package/dist/learning/llm-extractor.js.map +0 -1
- package/dist/learning/loop-coordinator.d.ts +0 -61
- package/dist/learning/loop-coordinator.d.ts.map +0 -1
- package/dist/learning/loop-coordinator.js +0 -96
- package/dist/learning/loop-coordinator.js.map +0 -1
- package/references/agent-workspace/CLAUDE.md +0 -74
- package/references/agent-workspace/README.md +0 -587
- package/references/agent-workspace/media/banner.png +0 -0
- package/references/agent-workspace/package-lock.json +0 -2061
- package/references/agent-workspace/package.json +0 -54
- package/references/agent-workspace/src/handle.ts +0 -122
- package/references/agent-workspace/src/index.ts +0 -32
- package/references/agent-workspace/src/manager.ts +0 -102
- package/references/agent-workspace/src/readers/json.ts +0 -71
- package/references/agent-workspace/src/readers/markdown.ts +0 -37
- package/references/agent-workspace/src/readers/raw.ts +0 -27
- package/references/agent-workspace/src/types.ts +0 -68
- package/references/agent-workspace/src/validation.ts +0 -93
- package/references/agent-workspace/src/writers/json.ts +0 -17
- package/references/agent-workspace/src/writers/markdown.ts +0 -27
- package/references/agent-workspace/src/writers/raw.ts +0 -22
- package/references/agent-workspace/tests/errors.test.ts +0 -652
- package/references/agent-workspace/tests/handle.test.ts +0 -144
- package/references/agent-workspace/tests/manager.test.ts +0 -124
- package/references/agent-workspace/tests/readers.test.ts +0 -205
- package/references/agent-workspace/tests/validation.test.ts +0 -196
- package/references/agent-workspace/tests/writers.test.ts +0 -108
- package/references/agent-workspace/tsconfig.json +0 -20
- package/references/agent-workspace/tsup.config.ts +0 -9
- package/references/minimem/.claude/settings.json +0 -7
- package/references/minimem/.sudocode/issues.jsonl +0 -18
- package/references/minimem/.sudocode/specs.jsonl +0 -1
- package/references/minimem/CLAUDE.md +0 -310
- package/references/minimem/README.md +0 -556
- package/references/minimem/claude-plugin/.claude-plugin/plugin.json +0 -10
- package/references/minimem/claude-plugin/.mcp.json +0 -7
- package/references/minimem/claude-plugin/README.md +0 -158
- package/references/minimem/claude-plugin/commands/recall.md +0 -47
- package/references/minimem/claude-plugin/commands/remember.md +0 -41
- package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +0 -272
- package/references/minimem/claude-plugin/hooks/hooks.json +0 -27
- package/references/minimem/claude-plugin/hooks/session-end.sh +0 -86
- package/references/minimem/claude-plugin/hooks/session-start.sh +0 -85
- package/references/minimem/claude-plugin/skills/memory/SKILL.md +0 -108
- package/references/minimem/package-lock.json +0 -5373
- package/references/minimem/package.json +0 -60
- package/references/minimem/scripts/postbuild.js +0 -35
- package/references/minimem/src/__tests__/edge-cases.test.ts +0 -371
- package/references/minimem/src/__tests__/errors.test.ts +0 -265
- package/references/minimem/src/__tests__/helpers.ts +0 -199
- package/references/minimem/src/__tests__/internal.test.ts +0 -407
- package/references/minimem/src/__tests__/knowledge.test.ts +0 -287
- package/references/minimem/src/__tests__/minimem.integration.test.ts +0 -1127
- package/references/minimem/src/__tests__/session.test.ts +0 -190
- package/references/minimem/src/cli/__tests__/commands.test.ts +0 -759
- package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +0 -141
- package/references/minimem/src/cli/commands/append.ts +0 -76
- package/references/minimem/src/cli/commands/config.ts +0 -262
- package/references/minimem/src/cli/commands/conflicts.ts +0 -413
- package/references/minimem/src/cli/commands/daemon.ts +0 -169
- package/references/minimem/src/cli/commands/index.ts +0 -12
- package/references/minimem/src/cli/commands/init.ts +0 -88
- package/references/minimem/src/cli/commands/mcp.ts +0 -177
- package/references/minimem/src/cli/commands/push-pull.ts +0 -213
- package/references/minimem/src/cli/commands/search.ts +0 -158
- package/references/minimem/src/cli/commands/status.ts +0 -84
- package/references/minimem/src/cli/commands/sync-init.ts +0 -290
- package/references/minimem/src/cli/commands/sync.ts +0 -70
- package/references/minimem/src/cli/commands/upsert.ts +0 -197
- package/references/minimem/src/cli/config.ts +0 -584
- package/references/minimem/src/cli/index.ts +0 -264
- package/references/minimem/src/cli/shared.ts +0 -161
- package/references/minimem/src/cli/sync/__tests__/central.test.ts +0 -152
- package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +0 -209
- package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +0 -118
- package/references/minimem/src/cli/sync/__tests__/detection.test.ts +0 -207
- package/references/minimem/src/cli/sync/__tests__/integration.test.ts +0 -476
- package/references/minimem/src/cli/sync/__tests__/registry.test.ts +0 -363
- package/references/minimem/src/cli/sync/__tests__/state.test.ts +0 -255
- package/references/minimem/src/cli/sync/__tests__/validation.test.ts +0 -193
- package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +0 -178
- package/references/minimem/src/cli/sync/central.ts +0 -292
- package/references/minimem/src/cli/sync/conflicts.ts +0 -204
- package/references/minimem/src/cli/sync/daemon.ts +0 -407
- package/references/minimem/src/cli/sync/detection.ts +0 -138
- package/references/minimem/src/cli/sync/index.ts +0 -107
- package/references/minimem/src/cli/sync/operations.ts +0 -373
- package/references/minimem/src/cli/sync/registry.ts +0 -279
- package/references/minimem/src/cli/sync/state.ts +0 -355
- package/references/minimem/src/cli/sync/validation.ts +0 -206
- package/references/minimem/src/cli/sync/watcher.ts +0 -234
- package/references/minimem/src/cli/version.ts +0 -34
- package/references/minimem/src/core/index.ts +0 -9
- package/references/minimem/src/core/indexer.ts +0 -628
- package/references/minimem/src/core/searcher.ts +0 -221
- package/references/minimem/src/db/schema.ts +0 -183
- package/references/minimem/src/db/sqlite-vec.ts +0 -24
- package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +0 -431
- package/references/minimem/src/embeddings/batch-gemini.ts +0 -392
- package/references/minimem/src/embeddings/batch-openai.ts +0 -409
- package/references/minimem/src/embeddings/embeddings.ts +0 -434
- package/references/minimem/src/index.ts +0 -109
- package/references/minimem/src/internal.ts +0 -299
- package/references/minimem/src/minimem.ts +0 -1276
- package/references/minimem/src/search/__tests__/hybrid.test.ts +0 -247
- package/references/minimem/src/search/graph.ts +0 -234
- package/references/minimem/src/search/hybrid.ts +0 -151
- package/references/minimem/src/search/search.ts +0 -256
- package/references/minimem/src/server/__tests__/mcp.test.ts +0 -341
- package/references/minimem/src/server/__tests__/tools.test.ts +0 -364
- package/references/minimem/src/server/mcp.ts +0 -326
- package/references/minimem/src/server/tools.ts +0 -720
- package/references/minimem/src/session.ts +0 -460
- package/references/minimem/tsconfig.json +0 -19
- package/references/minimem/tsup.config.ts +0 -26
- package/references/minimem/vitest.config.ts +0 -24
- package/references/sessionlog/.husky/pre-commit +0 -1
- package/references/sessionlog/.lintstagedrc.json +0 -4
- package/references/sessionlog/.prettierignore +0 -4
- package/references/sessionlog/.prettierrc.json +0 -11
- package/references/sessionlog/LICENSE +0 -21
- package/references/sessionlog/README.md +0 -453
- package/references/sessionlog/eslint.config.js +0 -58
- package/references/sessionlog/package-lock.json +0 -3672
- package/references/sessionlog/package.json +0 -65
- package/references/sessionlog/src/__tests__/agent-hooks.test.ts +0 -570
- package/references/sessionlog/src/__tests__/agent-registry.test.ts +0 -127
- package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +0 -225
- package/references/sessionlog/src/__tests__/claude-generator.test.ts +0 -46
- package/references/sessionlog/src/__tests__/commit-msg.test.ts +0 -86
- package/references/sessionlog/src/__tests__/cursor-agent.test.ts +0 -224
- package/references/sessionlog/src/__tests__/e2e-live.test.ts +0 -890
- package/references/sessionlog/src/__tests__/event-log.test.ts +0 -183
- package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +0 -105
- package/references/sessionlog/src/__tests__/gemini-agent.test.ts +0 -375
- package/references/sessionlog/src/__tests__/git-hooks.test.ts +0 -78
- package/references/sessionlog/src/__tests__/hook-managers.test.ts +0 -121
- package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +0 -759
- package/references/sessionlog/src/__tests__/opencode-agent.test.ts +0 -338
- package/references/sessionlog/src/__tests__/redaction.test.ts +0 -136
- package/references/sessionlog/src/__tests__/session-repo.test.ts +0 -353
- package/references/sessionlog/src/__tests__/session-store.test.ts +0 -166
- package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +0 -466
- package/references/sessionlog/src/__tests__/skill-live.test.ts +0 -461
- package/references/sessionlog/src/__tests__/summarize.test.ts +0 -348
- package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +0 -610
- package/references/sessionlog/src/__tests__/task-plan-live.test.ts +0 -632
- package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +0 -121
- package/references/sessionlog/src/__tests__/types.test.ts +0 -166
- package/references/sessionlog/src/__tests__/utils.test.ts +0 -333
- package/references/sessionlog/src/__tests__/validation.test.ts +0 -103
- package/references/sessionlog/src/__tests__/worktree.test.ts +0 -57
- package/references/sessionlog/src/agent/agents/claude-code.ts +0 -1089
- package/references/sessionlog/src/agent/agents/cursor.ts +0 -361
- package/references/sessionlog/src/agent/agents/gemini-cli.ts +0 -632
- package/references/sessionlog/src/agent/agents/opencode.ts +0 -540
- package/references/sessionlog/src/agent/registry.ts +0 -143
- package/references/sessionlog/src/agent/session-types.ts +0 -113
- package/references/sessionlog/src/agent/types.ts +0 -220
- package/references/sessionlog/src/cli.ts +0 -597
- package/references/sessionlog/src/commands/clean.ts +0 -133
- package/references/sessionlog/src/commands/disable.ts +0 -84
- package/references/sessionlog/src/commands/doctor.ts +0 -145
- package/references/sessionlog/src/commands/enable.ts +0 -202
- package/references/sessionlog/src/commands/explain.ts +0 -261
- package/references/sessionlog/src/commands/reset.ts +0 -105
- package/references/sessionlog/src/commands/resume.ts +0 -180
- package/references/sessionlog/src/commands/rewind.ts +0 -195
- package/references/sessionlog/src/commands/setup-ccweb.ts +0 -275
- package/references/sessionlog/src/commands/status.ts +0 -172
- package/references/sessionlog/src/config.ts +0 -165
- package/references/sessionlog/src/events/event-log.ts +0 -126
- package/references/sessionlog/src/git-operations.ts +0 -558
- package/references/sessionlog/src/hooks/git-hooks.ts +0 -165
- package/references/sessionlog/src/hooks/lifecycle.ts +0 -391
- package/references/sessionlog/src/index.ts +0 -650
- package/references/sessionlog/src/security/redaction.ts +0 -283
- package/references/sessionlog/src/session/state-machine.ts +0 -452
- package/references/sessionlog/src/store/checkpoint-store.ts +0 -509
- package/references/sessionlog/src/store/native-store.ts +0 -173
- package/references/sessionlog/src/store/provider-types.ts +0 -99
- package/references/sessionlog/src/store/session-store.ts +0 -266
- package/references/sessionlog/src/strategy/attribution.ts +0 -296
- package/references/sessionlog/src/strategy/common.ts +0 -207
- package/references/sessionlog/src/strategy/content-overlap.ts +0 -228
- package/references/sessionlog/src/strategy/manual-commit.ts +0 -988
- package/references/sessionlog/src/strategy/types.ts +0 -279
- package/references/sessionlog/src/summarize/claude-generator.ts +0 -115
- package/references/sessionlog/src/summarize/summarize.ts +0 -432
- package/references/sessionlog/src/types.ts +0 -508
- package/references/sessionlog/src/utils/chunk-files.ts +0 -49
- package/references/sessionlog/src/utils/commit-message.ts +0 -65
- package/references/sessionlog/src/utils/detect-agent.ts +0 -36
- package/references/sessionlog/src/utils/hook-managers.ts +0 -125
- package/references/sessionlog/src/utils/ide-tags.ts +0 -32
- package/references/sessionlog/src/utils/paths.ts +0 -79
- package/references/sessionlog/src/utils/preview-rewind.ts +0 -80
- package/references/sessionlog/src/utils/rewind-conflict.ts +0 -121
- package/references/sessionlog/src/utils/shadow-branch.ts +0 -109
- package/references/sessionlog/src/utils/string-utils.ts +0 -46
- package/references/sessionlog/src/utils/todo-extract.ts +0 -188
- package/references/sessionlog/src/utils/trailers.ts +0 -187
- package/references/sessionlog/src/utils/transcript-parse.ts +0 -177
- package/references/sessionlog/src/utils/transcript-timestamp.ts +0 -59
- package/references/sessionlog/src/utils/tree-ops.ts +0 -219
- package/references/sessionlog/src/utils/tty.ts +0 -72
- package/references/sessionlog/src/utils/validation.ts +0 -65
- package/references/sessionlog/src/utils/worktree.ts +0 -58
- package/references/sessionlog/src/wire-types.ts +0 -59
- package/references/sessionlog/templates/setup-env.sh +0 -153
- package/references/sessionlog/tsconfig.json +0 -18
- package/references/sessionlog/vitest.config.ts +0 -12
- package/references/skill-tree/.claude/settings.json +0 -6
- package/references/skill-tree/.sudocode/issues.jsonl +0 -19
- package/references/skill-tree/.sudocode/specs.jsonl +0 -3
- package/references/skill-tree/CLAUDE.md +0 -126
- package/references/skill-tree/README.md +0 -372
- package/references/skill-tree/docs/GAPS_v1.md +0 -221
- package/references/skill-tree/docs/INTEGRATION_PLAN.md +0 -467
- package/references/skill-tree/docs/TODOS.md +0 -91
- package/references/skill-tree/docs/anthropic_skill_guide.md +0 -1364
- package/references/skill-tree/docs/design/federated-skill-trees.md +0 -524
- package/references/skill-tree/docs/design/multi-agent-sync.md +0 -759
- package/references/skill-tree/docs/scraper/BRAINSTORM.md +0 -583
- package/references/skill-tree/docs/scraper/POC_PLAN.md +0 -420
- package/references/skill-tree/docs/scraper/README.md +0 -170
- package/references/skill-tree/examples/basic-usage.ts +0 -164
- package/references/skill-tree/package-lock.json +0 -1852
- package/references/skill-tree/package.json +0 -66
- package/references/skill-tree/scraper/README.md +0 -123
- package/references/skill-tree/scraper/docs/DESIGN.md +0 -683
- package/references/skill-tree/scraper/docs/PLAN.md +0 -336
- package/references/skill-tree/scraper/drizzle.config.ts +0 -10
- package/references/skill-tree/scraper/package-lock.json +0 -6329
- package/references/skill-tree/scraper/package.json +0 -68
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +0 -27
- package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +0 -21
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +0 -54
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +0 -24
- package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +0 -93
- package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +0 -22
- package/references/skill-tree/scraper/tsup.config.ts +0 -14
- package/references/skill-tree/scraper/vitest.config.ts +0 -17
- package/references/skill-tree/scripts/convert-to-vitest.ts +0 -166
- package/references/skill-tree/skills/skill-writer/SKILL.md +0 -339
- package/references/skill-tree/skills/skill-writer/references/examples.md +0 -326
- package/references/skill-tree/skills/skill-writer/references/patterns.md +0 -210
- package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +0 -123
- package/references/skill-tree/test/run-all.ts +0 -106
- package/references/skill-tree/test/utils.ts +0 -128
- package/references/skill-tree/vitest.config.ts +0 -16
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MemorySearcher - Handles search operations
|
|
3
|
-
*
|
|
4
|
-
* Responsible for:
|
|
5
|
-
* - Executing vector searches
|
|
6
|
-
* - Executing keyword (FTS) searches
|
|
7
|
-
* - Merging results with hybrid scoring
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { DatabaseSync } from "node:sqlite";
|
|
11
|
-
|
|
12
|
-
import { bm25RankToScore, buildFtsQuery, mergeHybridResults } from "../search/hybrid.js";
|
|
13
|
-
import { searchKeyword, searchVector } from "../search/search.js";
|
|
14
|
-
import type { EmbeddingProvider } from "../embeddings/embeddings.js";
|
|
15
|
-
import type { DebugFn } from "../internal.js";
|
|
16
|
-
|
|
17
|
-
const SNIPPET_MAX_CHARS = 700;
|
|
18
|
-
const VECTOR_TABLE = "chunks_vec";
|
|
19
|
-
const FTS_TABLE = "chunks_fts";
|
|
20
|
-
const EMBEDDING_QUERY_TIMEOUT_REMOTE_MS = 60_000;
|
|
21
|
-
const EMBEDDING_QUERY_TIMEOUT_LOCAL_MS = 5 * 60_000;
|
|
22
|
-
|
|
23
|
-
export type SearchConfig = {
|
|
24
|
-
hybrid: {
|
|
25
|
-
enabled: boolean;
|
|
26
|
-
vectorWeight: number;
|
|
27
|
-
textWeight: number;
|
|
28
|
-
candidateMultiplier: number;
|
|
29
|
-
};
|
|
30
|
-
query: {
|
|
31
|
-
maxResults: number;
|
|
32
|
-
minScore: number;
|
|
33
|
-
};
|
|
34
|
-
debug?: DebugFn;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export type SearchResult = {
|
|
38
|
-
path: string;
|
|
39
|
-
startLine: number;
|
|
40
|
-
endLine: number;
|
|
41
|
-
score: number;
|
|
42
|
-
snippet: string;
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* MemorySearcher handles search queries against the indexed memory
|
|
47
|
-
*/
|
|
48
|
-
export class MemorySearcher {
|
|
49
|
-
private readonly db: DatabaseSync;
|
|
50
|
-
private readonly provider: EmbeddingProvider;
|
|
51
|
-
private readonly config: SearchConfig;
|
|
52
|
-
|
|
53
|
-
// State from parent
|
|
54
|
-
private vectorState: {
|
|
55
|
-
available: boolean;
|
|
56
|
-
dims?: number;
|
|
57
|
-
};
|
|
58
|
-
private ftsAvailable: boolean;
|
|
59
|
-
|
|
60
|
-
// Callback to ensure vector is ready
|
|
61
|
-
private ensureVectorReadyFn?: (dims?: number) => Promise<boolean>;
|
|
62
|
-
|
|
63
|
-
constructor(
|
|
64
|
-
db: DatabaseSync,
|
|
65
|
-
provider: EmbeddingProvider,
|
|
66
|
-
config: SearchConfig,
|
|
67
|
-
options?: {
|
|
68
|
-
vectorState?: { available: boolean; dims?: number };
|
|
69
|
-
ftsAvailable?: boolean;
|
|
70
|
-
ensureVectorReady?: (dims?: number) => Promise<boolean>;
|
|
71
|
-
}
|
|
72
|
-
) {
|
|
73
|
-
this.db = db;
|
|
74
|
-
this.provider = provider;
|
|
75
|
-
this.config = config;
|
|
76
|
-
this.vectorState = options?.vectorState ?? { available: false };
|
|
77
|
-
this.ftsAvailable = options?.ftsAvailable ?? false;
|
|
78
|
-
this.ensureVectorReadyFn = options?.ensureVectorReady;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Update vector/FTS availability (called by parent when extensions load)
|
|
83
|
-
*/
|
|
84
|
-
setVectorState(state: { available: boolean; dims?: number }): void {
|
|
85
|
-
this.vectorState = state;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
setFtsAvailable(available: boolean): void {
|
|
89
|
-
this.ftsAvailable = available;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Execute a search query
|
|
94
|
-
*/
|
|
95
|
-
async search(
|
|
96
|
-
query: string,
|
|
97
|
-
opts?: { maxResults?: number; minScore?: number }
|
|
98
|
-
): Promise<SearchResult[]> {
|
|
99
|
-
const cleaned = query.trim();
|
|
100
|
-
if (!cleaned) return [];
|
|
101
|
-
|
|
102
|
-
const minScore = opts?.minScore ?? this.config.query.minScore;
|
|
103
|
-
const maxResults = opts?.maxResults ?? this.config.query.maxResults;
|
|
104
|
-
const candidates = Math.min(
|
|
105
|
-
200,
|
|
106
|
-
Math.max(1, Math.floor(maxResults * this.config.hybrid.candidateMultiplier))
|
|
107
|
-
);
|
|
108
|
-
|
|
109
|
-
const sourceFilter = { sql: "", params: [] as string[] };
|
|
110
|
-
|
|
111
|
-
// Execute keyword search if hybrid is enabled
|
|
112
|
-
const keywordResults =
|
|
113
|
-
this.config.hybrid.enabled && this.ftsAvailable
|
|
114
|
-
? await searchKeyword({
|
|
115
|
-
db: this.db,
|
|
116
|
-
ftsTable: FTS_TABLE,
|
|
117
|
-
providerModel: this.provider.model,
|
|
118
|
-
query: cleaned,
|
|
119
|
-
limit: candidates,
|
|
120
|
-
snippetMaxChars: SNIPPET_MAX_CHARS,
|
|
121
|
-
sourceFilter,
|
|
122
|
-
buildFtsQuery,
|
|
123
|
-
bm25RankToScore,
|
|
124
|
-
}).catch(() => [])
|
|
125
|
-
: [];
|
|
126
|
-
|
|
127
|
-
// Embed query and execute vector search
|
|
128
|
-
const queryVec = await this.embedQueryWithTimeout(cleaned);
|
|
129
|
-
const hasVector = queryVec.some((v) => v !== 0);
|
|
130
|
-
const vectorResults = hasVector
|
|
131
|
-
? await searchVector({
|
|
132
|
-
db: this.db,
|
|
133
|
-
vectorTable: VECTOR_TABLE,
|
|
134
|
-
providerModel: this.provider.model,
|
|
135
|
-
queryVec,
|
|
136
|
-
limit: candidates,
|
|
137
|
-
snippetMaxChars: SNIPPET_MAX_CHARS,
|
|
138
|
-
ensureVectorReady: (dims) => this.ensureVectorReady(dims),
|
|
139
|
-
sourceFilterVec: sourceFilter,
|
|
140
|
-
sourceFilterChunks: sourceFilter,
|
|
141
|
-
}).catch(() => [])
|
|
142
|
-
: [];
|
|
143
|
-
|
|
144
|
-
// If hybrid is disabled, return vector results only
|
|
145
|
-
if (!this.config.hybrid.enabled) {
|
|
146
|
-
return vectorResults
|
|
147
|
-
.filter((entry) => entry.score >= minScore)
|
|
148
|
-
.slice(0, maxResults)
|
|
149
|
-
.map((r) => ({
|
|
150
|
-
path: r.path,
|
|
151
|
-
startLine: r.startLine,
|
|
152
|
-
endLine: r.endLine,
|
|
153
|
-
score: r.score,
|
|
154
|
-
snippet: r.snippet,
|
|
155
|
-
}));
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Merge results with hybrid scoring
|
|
159
|
-
const merged = mergeHybridResults({
|
|
160
|
-
vector: vectorResults.map((r) => ({
|
|
161
|
-
id: r.id,
|
|
162
|
-
path: r.path,
|
|
163
|
-
startLine: r.startLine,
|
|
164
|
-
endLine: r.endLine,
|
|
165
|
-
source: r.source,
|
|
166
|
-
snippet: r.snippet,
|
|
167
|
-
vectorScore: r.score,
|
|
168
|
-
})),
|
|
169
|
-
keyword: keywordResults.map((r) => ({
|
|
170
|
-
id: r.id,
|
|
171
|
-
path: r.path,
|
|
172
|
-
startLine: r.startLine,
|
|
173
|
-
endLine: r.endLine,
|
|
174
|
-
source: r.source,
|
|
175
|
-
snippet: r.snippet,
|
|
176
|
-
textScore: r.textScore,
|
|
177
|
-
})),
|
|
178
|
-
vectorWeight: this.config.hybrid.vectorWeight,
|
|
179
|
-
textWeight: this.config.hybrid.textWeight,
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
return merged
|
|
183
|
-
.filter((entry) => entry.score >= minScore)
|
|
184
|
-
.slice(0, maxResults)
|
|
185
|
-
.map((r) => ({
|
|
186
|
-
path: r.path,
|
|
187
|
-
startLine: r.startLine,
|
|
188
|
-
endLine: r.endLine,
|
|
189
|
-
score: r.score,
|
|
190
|
-
snippet: r.snippet,
|
|
191
|
-
}));
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Embed a query string with timeout
|
|
196
|
-
*/
|
|
197
|
-
private async embedQueryWithTimeout(text: string): Promise<number[]> {
|
|
198
|
-
const timeout =
|
|
199
|
-
this.provider.id === "local"
|
|
200
|
-
? EMBEDDING_QUERY_TIMEOUT_LOCAL_MS
|
|
201
|
-
: EMBEDDING_QUERY_TIMEOUT_REMOTE_MS;
|
|
202
|
-
|
|
203
|
-
return Promise.race([
|
|
204
|
-
this.provider.embedQuery(text),
|
|
205
|
-
new Promise<number[]>((_, reject) =>
|
|
206
|
-
setTimeout(() => reject(new Error("embedding query timeout")), timeout)
|
|
207
|
-
),
|
|
208
|
-
]);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Ensure vector extension is ready
|
|
213
|
-
*/
|
|
214
|
-
private async ensureVectorReady(dims?: number): Promise<boolean> {
|
|
215
|
-
if (this.vectorState.available) return true;
|
|
216
|
-
if (this.ensureVectorReadyFn) {
|
|
217
|
-
return this.ensureVectorReadyFn(dims);
|
|
218
|
-
}
|
|
219
|
-
return false;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import type { DatabaseSync } from "node:sqlite";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Current schema version. Increment this when making breaking schema changes.
|
|
5
|
-
*
|
|
6
|
-
* Version history:
|
|
7
|
-
* - 1: Initial schema (meta, files, chunks, embedding_cache, FTS5)
|
|
8
|
-
* - 2: Added source column to files and chunks tables
|
|
9
|
-
* - 3: Added type column to chunks table for observation type metadata
|
|
10
|
-
* - 4: Added knowledge columns to chunks + knowledge_links table
|
|
11
|
-
*/
|
|
12
|
-
export const SCHEMA_VERSION = 4;
|
|
13
|
-
|
|
14
|
-
export function ensureMemoryIndexSchema(params: {
|
|
15
|
-
db: DatabaseSync;
|
|
16
|
-
embeddingCacheTable: string;
|
|
17
|
-
ftsTable: string;
|
|
18
|
-
ftsEnabled: boolean;
|
|
19
|
-
}): { ftsAvailable: boolean; ftsError?: string; migrated?: boolean } {
|
|
20
|
-
// Create meta table first (needed for version tracking)
|
|
21
|
-
params.db.exec(`
|
|
22
|
-
CREATE TABLE IF NOT EXISTS meta (
|
|
23
|
-
key TEXT PRIMARY KEY,
|
|
24
|
-
value TEXT NOT NULL
|
|
25
|
-
);
|
|
26
|
-
`);
|
|
27
|
-
|
|
28
|
-
// Check schema version and handle migration
|
|
29
|
-
const migrated = migrateIfNeeded(params.db, params.ftsTable);
|
|
30
|
-
|
|
31
|
-
params.db.exec(`
|
|
32
|
-
CREATE TABLE IF NOT EXISTS files (
|
|
33
|
-
path TEXT PRIMARY KEY,
|
|
34
|
-
source TEXT NOT NULL DEFAULT 'memory',
|
|
35
|
-
hash TEXT NOT NULL,
|
|
36
|
-
mtime INTEGER NOT NULL,
|
|
37
|
-
size INTEGER NOT NULL
|
|
38
|
-
);
|
|
39
|
-
`);
|
|
40
|
-
params.db.exec(`
|
|
41
|
-
CREATE TABLE IF NOT EXISTS chunks (
|
|
42
|
-
id TEXT PRIMARY KEY,
|
|
43
|
-
path TEXT NOT NULL,
|
|
44
|
-
source TEXT NOT NULL DEFAULT 'memory',
|
|
45
|
-
start_line INTEGER NOT NULL,
|
|
46
|
-
end_line INTEGER NOT NULL,
|
|
47
|
-
hash TEXT NOT NULL,
|
|
48
|
-
model TEXT NOT NULL,
|
|
49
|
-
text TEXT NOT NULL,
|
|
50
|
-
embedding TEXT NOT NULL,
|
|
51
|
-
updated_at INTEGER NOT NULL
|
|
52
|
-
);
|
|
53
|
-
`);
|
|
54
|
-
params.db.exec(`
|
|
55
|
-
CREATE TABLE IF NOT EXISTS ${params.embeddingCacheTable} (
|
|
56
|
-
provider TEXT NOT NULL,
|
|
57
|
-
model TEXT NOT NULL,
|
|
58
|
-
provider_key TEXT NOT NULL,
|
|
59
|
-
hash TEXT NOT NULL,
|
|
60
|
-
embedding TEXT NOT NULL,
|
|
61
|
-
dims INTEGER,
|
|
62
|
-
updated_at INTEGER NOT NULL,
|
|
63
|
-
PRIMARY KEY (provider, model, provider_key, hash)
|
|
64
|
-
);
|
|
65
|
-
`);
|
|
66
|
-
params.db.exec(
|
|
67
|
-
`CREATE INDEX IF NOT EXISTS idx_embedding_cache_updated_at ON ${params.embeddingCacheTable}(updated_at);`,
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
let ftsAvailable = false;
|
|
71
|
-
let ftsError: string | undefined;
|
|
72
|
-
if (params.ftsEnabled) {
|
|
73
|
-
try {
|
|
74
|
-
params.db.exec(
|
|
75
|
-
`CREATE VIRTUAL TABLE IF NOT EXISTS ${params.ftsTable} USING fts5(\n` +
|
|
76
|
-
` text,\n` +
|
|
77
|
-
` id UNINDEXED,\n` +
|
|
78
|
-
` path UNINDEXED,\n` +
|
|
79
|
-
` source UNINDEXED,\n` +
|
|
80
|
-
` model UNINDEXED,\n` +
|
|
81
|
-
` start_line UNINDEXED,\n` +
|
|
82
|
-
` end_line UNINDEXED\n` +
|
|
83
|
-
`);`,
|
|
84
|
-
);
|
|
85
|
-
ftsAvailable = true;
|
|
86
|
-
} catch (err) {
|
|
87
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
88
|
-
ftsAvailable = false;
|
|
89
|
-
ftsError = message;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
ensureColumn(params.db, "files", "source", "TEXT NOT NULL DEFAULT 'memory'");
|
|
94
|
-
ensureColumn(params.db, "chunks", "source", "TEXT NOT NULL DEFAULT 'memory'");
|
|
95
|
-
ensureColumn(params.db, "chunks", "type", "TEXT");
|
|
96
|
-
ensureColumn(params.db, "chunks", "knowledge_type", "TEXT");
|
|
97
|
-
ensureColumn(params.db, "chunks", "knowledge_id", "TEXT");
|
|
98
|
-
ensureColumn(params.db, "chunks", "domains", "TEXT");
|
|
99
|
-
ensureColumn(params.db, "chunks", "entities", "TEXT");
|
|
100
|
-
ensureColumn(params.db, "chunks", "confidence", "REAL");
|
|
101
|
-
params.db.exec(`CREATE INDEX IF NOT EXISTS idx_chunks_path ON chunks(path);`);
|
|
102
|
-
params.db.exec(`CREATE INDEX IF NOT EXISTS idx_chunks_source ON chunks(source);`);
|
|
103
|
-
params.db.exec(`CREATE INDEX IF NOT EXISTS idx_chunks_type ON chunks(type);`);
|
|
104
|
-
params.db.exec(`CREATE INDEX IF NOT EXISTS idx_chunks_knowledge_type ON chunks(knowledge_type);`);
|
|
105
|
-
params.db.exec(`CREATE INDEX IF NOT EXISTS idx_chunks_knowledge_id ON chunks(knowledge_id);`);
|
|
106
|
-
|
|
107
|
-
// Knowledge links table for graph traversal
|
|
108
|
-
params.db.exec(`
|
|
109
|
-
CREATE TABLE IF NOT EXISTS knowledge_links (
|
|
110
|
-
from_id TEXT NOT NULL,
|
|
111
|
-
to_id TEXT NOT NULL,
|
|
112
|
-
relation TEXT NOT NULL,
|
|
113
|
-
layer TEXT,
|
|
114
|
-
weight REAL DEFAULT 0.5,
|
|
115
|
-
source_path TEXT,
|
|
116
|
-
created_at INTEGER,
|
|
117
|
-
PRIMARY KEY (from_id, to_id, relation)
|
|
118
|
-
);
|
|
119
|
-
`);
|
|
120
|
-
params.db.exec(`CREATE INDEX IF NOT EXISTS idx_kl_from ON knowledge_links(from_id);`);
|
|
121
|
-
params.db.exec(`CREATE INDEX IF NOT EXISTS idx_kl_to ON knowledge_links(to_id);`);
|
|
122
|
-
params.db.exec(`CREATE INDEX IF NOT EXISTS idx_kl_layer ON knowledge_links(layer);`);
|
|
123
|
-
|
|
124
|
-
// Store current schema version
|
|
125
|
-
params.db.prepare(
|
|
126
|
-
`INSERT OR REPLACE INTO meta (key, value) VALUES ('schema_version', ?)`,
|
|
127
|
-
).run(String(SCHEMA_VERSION));
|
|
128
|
-
|
|
129
|
-
return { ftsAvailable, ...(ftsError ? { ftsError } : {}), ...(migrated ? { migrated } : {}) };
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Check the stored schema version and migrate if needed.
|
|
134
|
-
* For breaking changes, drops data tables so they get recreated fresh.
|
|
135
|
-
* The embedding cache is preserved across migrations when possible.
|
|
136
|
-
*
|
|
137
|
-
* @returns true if a migration was performed, false otherwise.
|
|
138
|
-
*/
|
|
139
|
-
function migrateIfNeeded(db: DatabaseSync, ftsTable: string): boolean {
|
|
140
|
-
let storedVersion = 0;
|
|
141
|
-
try {
|
|
142
|
-
const row = db.prepare(
|
|
143
|
-
`SELECT value FROM meta WHERE key = 'schema_version'`,
|
|
144
|
-
).get() as { value: string } | undefined;
|
|
145
|
-
if (row) {
|
|
146
|
-
storedVersion = parseInt(row.value, 10) || 0;
|
|
147
|
-
}
|
|
148
|
-
} catch {
|
|
149
|
-
// meta table may not have the key yet (pre-versioning databases)
|
|
150
|
-
storedVersion = 0;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
if (storedVersion >= SCHEMA_VERSION) return false;
|
|
154
|
-
|
|
155
|
-
if (storedVersion > 0 && storedVersion < SCHEMA_VERSION) {
|
|
156
|
-
// Breaking schema change: drop and recreate data tables.
|
|
157
|
-
// Embedding cache is preserved since embeddings are content-addressed
|
|
158
|
-
// and will be reused on re-index.
|
|
159
|
-
db.exec(`DROP TABLE IF EXISTS files`);
|
|
160
|
-
db.exec(`DROP TABLE IF EXISTS chunks`);
|
|
161
|
-
db.exec(`DROP TABLE IF EXISTS knowledge_links`);
|
|
162
|
-
db.exec(`DROP TABLE IF EXISTS ${ftsTable}`);
|
|
163
|
-
// Also drop the vector table if it exists
|
|
164
|
-
try {
|
|
165
|
-
db.exec(`DROP TABLE IF EXISTS chunks_vec`);
|
|
166
|
-
} catch {
|
|
167
|
-
// sqlite-vec table may not exist
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
return storedVersion > 0;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
function ensureColumn(
|
|
175
|
-
db: DatabaseSync,
|
|
176
|
-
table: "files" | "chunks",
|
|
177
|
-
column: string,
|
|
178
|
-
definition: string,
|
|
179
|
-
): void {
|
|
180
|
-
const rows = db.prepare(`PRAGMA table_info(${table})`).all() as Array<{ name: string }>;
|
|
181
|
-
if (rows.some((row) => row.name === column)) return;
|
|
182
|
-
db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
|
|
183
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { DatabaseSync } from "node:sqlite";
|
|
2
|
-
|
|
3
|
-
export async function loadSqliteVecExtension(params: {
|
|
4
|
-
db: DatabaseSync;
|
|
5
|
-
extensionPath?: string;
|
|
6
|
-
}): Promise<{ ok: boolean; extensionPath?: string; error?: string }> {
|
|
7
|
-
try {
|
|
8
|
-
const sqliteVec = await import("sqlite-vec");
|
|
9
|
-
const resolvedPath = params.extensionPath?.trim() ? params.extensionPath.trim() : undefined;
|
|
10
|
-
const extensionPath = resolvedPath ?? sqliteVec.getLoadablePath();
|
|
11
|
-
|
|
12
|
-
params.db.enableLoadExtension(true);
|
|
13
|
-
if (resolvedPath) {
|
|
14
|
-
params.db.loadExtension(extensionPath);
|
|
15
|
-
} else {
|
|
16
|
-
sqliteVec.load(params.db);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return { ok: true, extensionPath };
|
|
20
|
-
} catch (err) {
|
|
21
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
22
|
-
return { ok: false, error: message };
|
|
23
|
-
}
|
|
24
|
-
}
|