oh-my-second-brain 0.2.0 → 0.6.1
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-plugin/marketplace.json +41 -0
- package/{adapters/claude-code/.claude-plugin → .claude-plugin}/plugin.json +7 -8
- package/{adapters/codex/.codex-plugin → .codex-plugin}/plugin.json +4 -4
- package/ACKNOWLEDGMENTS.md +162 -0
- package/CHANGELOG-assets.md +23 -0
- package/CHANGELOG-cli.md +24 -0
- package/CHANGELOG-kernel.md +48 -0
- package/CHANGELOG-mcp.md +36 -0
- package/CHANGELOG-vendors.md +26 -0
- package/CHANGELOG.md +51 -7
- package/README.ko.md +2 -2
- package/README.md +16 -16
- package/{adapters/claude-code → assets/claude}/CLAUDE.md +4 -4
- package/{adapters → assets}/codex/AGENTS.md +3 -3
- package/{adapters → assets}/codex/rules/oms.md +5 -5
- package/{adapters → assets}/hermes/README.md +1 -1
- package/{adapters → assets}/hermes/SOUL.md +3 -3
- package/{adapters/hermes/manifest.json → assets/hermes-manifest.json} +3 -4
- package/assets/skills/distill/SKILL.md +20 -0
- package/assets/skills/doctor/SKILL.md +23 -0
- package/assets/skills/link/SKILL.md +24 -0
- package/assets/skills/search/SKILL.md +25 -0
- package/assets/skills/status/SKILL.md +22 -0
- package/assets/skills/write/SKILL.md +30 -0
- package/core/ontology/schemas/README.md +20 -14
- package/dist/assets/shared-skills.d.ts +4 -0
- package/dist/assets/shared-skills.js +8 -0
- package/dist/assets/shared-skills.js.map +1 -0
- package/dist/cli/args.d.ts +3 -1
- package/dist/cli/args.js +14 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/audit.js +3 -3
- package/dist/cli/audit.js.map +1 -1
- package/dist/cli/claude-install-plan.js +2 -2
- package/dist/cli/claude-install-plan.js.map +1 -1
- package/dist/cli/doctor-lint.js +8 -8
- package/dist/cli/doctor-lint.js.map +1 -1
- package/dist/cli/global-writeback.js +1 -1
- package/dist/cli/global-writeback.js.map +1 -1
- package/dist/cli/host-commands.d.ts +1 -1
- package/dist/cli/host-commands.js +24 -5
- package/dist/cli/host-commands.js.map +1 -1
- package/dist/cli/link-command.d.ts +1 -1
- package/dist/cli/link-command.js +2 -2
- package/dist/cli/link-command.js.map +1 -1
- package/dist/cli/linkify.js +16 -71
- package/dist/cli/linkify.js.map +1 -1
- package/dist/cli/oms.d.ts +1 -1
- package/dist/cli/oms.js +45 -11
- package/dist/cli/oms.js.map +1 -1
- package/dist/cli/semantic-args.d.ts +1 -1
- package/dist/cli/semantic-args.js +102 -3
- package/dist/cli/semantic-args.js.map +1 -1
- package/dist/cli/semantic-http.js +3 -3
- package/dist/cli/semantic-http.js.map +1 -1
- package/dist/cli/semantic-usage.js +1 -1
- package/dist/cli/semantic-usage.js.map +1 -1
- package/dist/cli/semantic.js +31 -12
- package/dist/cli/semantic.js.map +1 -1
- package/dist/cli/setup-command.d.ts +17 -0
- package/dist/cli/setup-command.js +89 -145
- package/dist/cli/setup-command.js.map +1 -1
- package/dist/cli/update-notice.d.ts +1 -1
- package/dist/cli/update-notice.js +2 -2
- package/dist/cli/update-notice.js.map +1 -1
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +2 -2
- package/dist/cli/usage.js.map +1 -1
- package/dist/{capture → kernel/capture}/safe.d.ts +11 -1
- package/dist/{capture → kernel/capture}/safe.js +3 -3
- package/dist/kernel/capture/safe.js.map +1 -0
- package/dist/kernel/contracts/index.d.ts +144 -0
- package/dist/kernel/contracts/index.js +401 -0
- package/dist/kernel/contracts/index.js.map +1 -0
- package/dist/kernel/conventions/frontmatter.js.map +1 -0
- package/dist/kernel/conventions/lint.js.map +1 -0
- package/dist/kernel/conventions/report.js.map +1 -0
- package/dist/{conventions → kernel/conventions}/validate.d.ts +1 -1
- package/dist/kernel/conventions/validate.js.map +1 -0
- package/dist/kernel/conventions/vault-walk.js.map +1 -0
- package/dist/{conventions → kernel/conventions}/write-contract.d.ts +1 -1
- package/dist/kernel/conventions/write-contract.js.map +1 -0
- package/dist/kernel/conventions/write-protocol.js.map +1 -0
- package/dist/kernel/doctor/service.d.ts +71 -0
- package/dist/kernel/doctor/service.js +70 -0
- package/dist/kernel/doctor/service.js.map +1 -0
- package/dist/{engine → kernel/engine}/assemble.d.ts +46 -1
- package/dist/kernel/engine/assemble.js +483 -0
- package/dist/kernel/engine/assemble.js.map +1 -0
- package/dist/kernel/engine/axes/store.d.ts +90 -0
- package/dist/kernel/engine/axes/store.js +400 -0
- package/dist/kernel/engine/axes/store.js.map +1 -0
- package/dist/{engine → kernel/engine}/conventions/vault-lint.d.ts +1 -1
- package/dist/{engine → kernel/engine}/conventions/vault-lint.js +1 -1
- package/dist/kernel/engine/conventions/vault-lint.js.map +1 -0
- package/dist/kernel/engine/embed/chunker.js.map +1 -0
- package/dist/kernel/engine/embed/deferred.js.map +1 -0
- package/dist/{engine → kernel/engine}/embed/hash-stub.test-helper.d.ts +1 -1
- package/dist/{engine → kernel/engine}/embed/hash-stub.test-helper.js +1 -1
- package/dist/kernel/engine/embed/hash-stub.test-helper.js.map +1 -0
- package/dist/kernel/engine/embed/identity.d.ts +21 -0
- package/dist/kernel/engine/embed/identity.js +47 -0
- package/dist/kernel/engine/embed/identity.js.map +1 -0
- package/dist/kernel/engine/embed/model.d.ts +134 -0
- package/dist/kernel/engine/embed/model.js +302 -0
- package/dist/kernel/engine/embed/model.js.map +1 -0
- package/dist/{engine → kernel/engine}/embed/provider.d.ts +36 -5
- package/dist/kernel/engine/embed/provider.js +403 -0
- package/dist/kernel/engine/embed/provider.js.map +1 -0
- package/dist/{engine → kernel/engine}/embed/store.d.ts +13 -1
- package/dist/kernel/engine/embed/store.js +730 -0
- package/dist/kernel/engine/embed/store.js.map +1 -0
- package/dist/kernel/engine/embed/sync.d.ts +100 -0
- package/dist/kernel/engine/embed/sync.js +753 -0
- package/dist/kernel/engine/embed/sync.js.map +1 -0
- package/dist/{engine → kernel/engine}/graph/builder.d.ts +9 -5
- package/dist/{engine → kernel/engine}/graph/builder.js +213 -79
- package/dist/kernel/engine/graph/builder.js.map +1 -0
- package/dist/kernel/engine/graph/explore.js.map +1 -0
- package/dist/{engine → kernel/engine}/graph/node.d.ts +49 -1
- package/dist/kernel/engine/graph/node.js +315 -0
- package/dist/kernel/engine/graph/node.js.map +1 -0
- package/dist/kernel/engine/graph/resolver.js.map +1 -0
- package/dist/kernel/engine/graph/traverse.js.map +1 -0
- package/dist/kernel/engine/linkify/apply.js.map +1 -0
- package/dist/kernel/engine/linkify/josa.js.map +1 -0
- package/dist/kernel/engine/linkify/mask.js.map +1 -0
- package/dist/kernel/engine/linkify/suggest.js.map +1 -0
- package/dist/kernel/engine/linkify/types.js.map +1 -0
- package/dist/{engine → kernel/engine}/mcp/facade.d.ts +27 -1
- package/dist/kernel/engine/mcp/facade.js +1144 -0
- package/dist/kernel/engine/mcp/facade.js.map +1 -0
- package/dist/kernel/engine/mcp/op-mappers.js.map +1 -0
- package/dist/{engine → kernel/engine}/mcp/query-mapper.d.ts +27 -2
- package/dist/kernel/engine/mcp/query-mapper.js +247 -0
- package/dist/kernel/engine/mcp/query-mapper.js.map +1 -0
- package/dist/{engine → kernel/engine}/mcp/types.d.ts +69 -2
- package/dist/kernel/engine/mcp/types.js.map +1 -0
- package/dist/{engine → kernel/engine}/retrieval/dispatcher.d.ts +23 -1
- package/dist/{engine → kernel/engine}/retrieval/dispatcher.js +92 -14
- package/dist/kernel/engine/retrieval/dispatcher.js.map +1 -0
- package/dist/{engine → kernel/engine}/retrieval/index.d.ts +4 -1
- package/dist/{engine → kernel/engine}/retrieval/index.js +6 -3
- package/dist/kernel/engine/retrieval/index.js.map +1 -0
- package/dist/kernel/engine/retrieval/reranker.d.ts +124 -0
- package/dist/kernel/engine/retrieval/reranker.js +204 -0
- package/dist/kernel/engine/retrieval/reranker.js.map +1 -0
- package/dist/{engine → kernel/engine}/retrieval/rrf.d.ts +10 -2
- package/dist/kernel/engine/retrieval/rrf.js +77 -0
- package/dist/kernel/engine/retrieval/rrf.js.map +1 -0
- package/dist/{engine → kernel/engine}/tracer.d.ts +13 -0
- package/dist/{engine → kernel/engine}/tracer.js +63 -6
- package/dist/kernel/engine/tracer.js.map +1 -0
- package/dist/{engine → kernel/engine}/types.d.ts +4 -4
- package/dist/kernel/engine/types.js.map +1 -0
- package/dist/{graph → kernel/graph}/cache.d.ts +1 -1
- package/dist/{graph → kernel/graph}/cache.js +165 -21
- package/dist/kernel/graph/cache.js.map +1 -0
- package/dist/kernel/graph/explore.js.map +1 -0
- package/dist/{harness → kernel/harness}/surface-registry.d.ts +0 -1
- package/dist/kernel/harness/surface-registry.js +170 -0
- package/dist/kernel/harness/surface-registry.js.map +1 -0
- package/dist/{harness → kernel/harness}/validation.js +67 -4
- package/dist/kernel/harness/validation.js.map +1 -0
- package/dist/kernel/index.d.ts +13 -0
- package/dist/kernel/index.js +14 -0
- package/dist/kernel/index.js.map +1 -0
- package/dist/{install → kernel/install}/adapter-source.d.ts +10 -1
- package/dist/kernel/install/adapter-source.js +76 -0
- package/dist/kernel/install/adapter-source.js.map +1 -0
- package/dist/kernel/install/common.js.map +1 -0
- package/dist/{install → kernel/install}/hosts.d.ts +3 -3
- package/dist/{install → kernel/install}/hosts.js +3 -22
- package/dist/kernel/install/hosts.js.map +1 -0
- package/dist/{core/ontology → kernel/install}/types.js.map +1 -1
- package/dist/{link → kernel/link}/convention-note.js +2 -2
- package/dist/kernel/link/convention-note.js.map +1 -0
- package/dist/kernel/link/global-config.js.map +1 -0
- package/dist/kernel/link/link.js.map +1 -0
- package/dist/kernel/link/workflow.d.ts +55 -0
- package/dist/kernel/link/workflow.js +107 -0
- package/dist/kernel/link/workflow.js.map +1 -0
- package/dist/kernel/measurement/no-default-contract.d.ts +17 -0
- package/dist/kernel/measurement/no-default-contract.js +84 -0
- package/dist/kernel/measurement/no-default-contract.js.map +1 -0
- package/dist/{ontology → kernel/ontology}/active.d.ts +1 -1
- package/dist/{ontology → kernel/ontology}/active.js +2 -2
- package/dist/kernel/ontology/active.js.map +1 -0
- package/dist/kernel/ontology/loader.js.map +1 -0
- package/dist/kernel/ontology/resolver.js.map +1 -0
- package/dist/{install → kernel/ontology}/types.js.map +1 -1
- package/dist/kernel/plugin/index.d.ts +1 -0
- package/dist/kernel/plugin/index.js +2 -0
- package/dist/kernel/plugin/index.js.map +1 -0
- package/dist/{core → kernel}/runtime/assets.d.ts +2 -4
- package/dist/{core → kernel}/runtime/assets.js +1 -3
- package/dist/kernel/runtime/assets.js.map +1 -0
- package/dist/kernel/search/morning-test-fixtures.js.map +1 -0
- package/dist/{retrieve → kernel/search}/morning.d.ts +0 -1
- package/dist/kernel/search/morning.js.map +1 -0
- package/dist/kernel/search/semantic-contract.js.map +1 -0
- package/dist/kernel/searchbackend/engine-search-backend.d.ts +28 -0
- package/dist/kernel/searchbackend/engine-search-backend.js +153 -0
- package/dist/kernel/searchbackend/engine-search-backend.js.map +1 -0
- package/dist/kernel/searchbackend/index.d.ts +2 -0
- package/dist/kernel/searchbackend/index.js +2 -0
- package/dist/kernel/searchbackend/index.js.map +1 -0
- package/dist/kernel/searchbackend/search-backend.d.ts +57 -0
- package/dist/kernel/searchbackend/search-backend.js +110 -0
- package/dist/kernel/searchbackend/search-backend.js.map +1 -0
- package/dist/{mcp → kernel/semantic}/semantic-engine.d.ts +3 -2
- package/dist/kernel/semantic/semantic-engine.js +78 -0
- package/dist/kernel/semantic/semantic-engine.js.map +1 -0
- package/dist/{mcp → kernel/semantic}/semantic-retrieve-args.d.ts +20 -3
- package/dist/{mcp → kernel/semantic}/semantic-retrieve-args.js +81 -15
- package/dist/kernel/semantic/semantic-retrieve-args.js.map +1 -0
- package/dist/{mcp → kernel/semantic}/semantic-retrieve-schema.d.ts +0 -24
- package/dist/{mcp → kernel/semantic}/semantic-retrieve-schema.js +0 -8
- package/dist/kernel/semantic/semantic-retrieve-schema.js.map +1 -0
- package/dist/{mcp → kernel/semantic}/semantic-retrieve.js +5 -9
- package/dist/kernel/semantic/semantic-retrieve.js.map +1 -0
- package/dist/kernel/semantic/semantic-schemas.js.map +1 -0
- package/dist/{mcp → kernel/semantic}/semantic-tool-schemas.js +0 -28
- package/dist/kernel/semantic/semantic-tool-schemas.js.map +1 -0
- package/dist/{setup → kernel/setup}/axis.d.ts +1 -1
- package/dist/{setup → kernel/setup}/axis.js +1 -1
- package/dist/kernel/setup/axis.js.map +1 -0
- package/dist/{cli/setup-documents.d.ts → kernel/setup/documents.d.ts} +1 -1
- package/dist/{cli/setup-documents.js → kernel/setup/documents.js} +15 -49
- package/dist/kernel/setup/documents.js.map +1 -0
- package/dist/kernel/setup/service.d.ts +44 -0
- package/dist/kernel/setup/service.js +97 -0
- package/dist/kernel/setup/service.js.map +1 -0
- package/dist/{update → kernel/update}/update.d.ts +7 -0
- package/dist/{update → kernel/update}/update.js +106 -8
- package/dist/kernel/update/update.js.map +1 -0
- package/dist/mcp/engine-morning-backend.d.ts +4 -4
- package/dist/mcp/engine-morning-backend.js +4 -18
- package/dist/mcp/engine-morning-backend.js.map +1 -1
- package/dist/mcp/link-tools.d.ts +9 -56
- package/dist/mcp/link-tools.js +5 -129
- package/dist/mcp/link-tools.js.map +1 -1
- package/dist/mcp/server.d.ts +9 -2
- package/dist/mcp/server.js +373 -324
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/update-notice.d.ts +1 -1
- package/dist/mcp/update-notice.js +1 -1
- package/dist/mcp/update-notice.js.map +1 -1
- package/dist/{install → vendors/claude}/claude-hooks.d.ts +1 -1
- package/dist/{install → vendors/claude}/claude-hooks.js +1 -1
- package/dist/vendors/claude/claude-hooks.js.map +1 -0
- package/dist/{install → vendors/claude}/claude-marketplace.d.ts +3 -3
- package/dist/{install → vendors/claude}/claude-marketplace.js +6 -9
- package/dist/vendors/claude/claude-marketplace.js.map +1 -0
- package/dist/{install → vendors/claude}/claude.d.ts +2 -2
- package/dist/{install → vendors/claude}/claude.js +2 -2
- package/dist/vendors/claude/claude.js.map +1 -0
- package/dist/{hook → vendors/claude/hook}/post-tool-use.js +5 -5
- package/dist/vendors/claude/hook/post-tool-use.js.map +1 -0
- package/dist/vendors/claude/hook/pre-tool-use.js.map +1 -0
- package/dist/vendors/claude/hook/stdin.js.map +1 -0
- package/dist/vendors/codex/codex.d.ts +10 -0
- package/dist/{install → vendors/codex}/codex.js +19 -37
- package/dist/vendors/codex/codex.js.map +1 -0
- package/dist/{install → vendors/hermes}/hermes.d.ts +2 -2
- package/dist/{install → vendors/hermes}/hermes.js +15 -7
- package/dist/vendors/hermes/hermes.js.map +1 -0
- package/docs/adapters.md +15 -0
- package/docs/install.md +10 -11
- package/package.json +23 -10
- package/adapters/README.md +0 -99
- package/adapters/claude-code/skills/compile/SKILL.md +0 -27
- package/adapters/claude-code/skills/define/SKILL.md +0 -51
- package/adapters/claude-code/skills/distill/SKILL.md +0 -28
- package/adapters/claude-code/skills/doctor/SKILL.md +0 -58
- package/adapters/claude-code/skills/link/SKILL.md +0 -87
- package/adapters/claude-code/skills/retrieve/SKILL.md +0 -99
- package/adapters/claude-code/skills/setup/SKILL.md +0 -78
- package/adapters/claude-code/skills/uninstall/SKILL.md +0 -34
- package/adapters/claude-code/skills/update/SKILL.md +0 -45
- package/adapters/claude-code/skills/vault-decision-record/SKILL.md +0 -52
- package/adapters/claude-code/skills/vault-lint/SKILL.md +0 -47
- package/adapters/claude-code/skills/vault-scaffold/SKILL.md +0 -47
- package/adapters/claude-code/skills/wiki/SKILL.md +0 -82
- package/adapters/claude-code/skills/write/SKILL.md +0 -16
- package/adapters/codex/skills/oms-compile/SKILL.md +0 -16
- package/adapters/codex/skills/oms-distill/SKILL.md +0 -14
- package/adapters/codex/skills/oms-doctor/SKILL.md +0 -14
- package/adapters/codex/skills/oms-install/SKILL.md +0 -19
- package/adapters/codex/skills/oms-link/SKILL.md +0 -35
- package/adapters/codex/skills/oms-retrieve/SKILL.md +0 -32
- package/adapters/codex/skills/oms-setup/SKILL.md +0 -34
- package/adapters/codex/skills/oms-uninstall/SKILL.md +0 -20
- package/adapters/codex/skills/oms-update/SKILL.md +0 -22
- package/adapters/codex/skills/oms-vault-lint/SKILL.md +0 -19
- package/adapters/codex/skills/oms-wiki/SKILL.md +0 -39
- package/adapters/codex/skills/oms-write/SKILL.md +0 -10
- package/adapters/hermes/skills/compile/SKILL.md +0 -13
- package/adapters/hermes/skills/distill/SKILL.md +0 -10
- package/adapters/hermes/skills/doctor/SKILL.md +0 -14
- package/adapters/hermes/skills/install/SKILL.md +0 -19
- package/adapters/hermes/skills/link/SKILL.md +0 -18
- package/adapters/hermes/skills/retrieve/SKILL.md +0 -32
- package/adapters/hermes/skills/setup/SKILL.md +0 -37
- package/adapters/hermes/skills/uninstall/SKILL.md +0 -20
- package/adapters/hermes/skills/update/SKILL.md +0 -22
- package/adapters/hermes/skills/wiki/SKILL.md +0 -14
- package/adapters/hermes/skills/write/SKILL.md +0 -10
- package/core/agents/librarian.md +0 -44
- package/core/agents/retriever.md +0 -62
- package/core/skills/compile/CHANGELOG.md +0 -24
- package/core/skills/compile/SKILL.md +0 -57
- package/core/skills/define/SKILL.md +0 -59
- package/core/skills/distill/CHANGELOG.md +0 -39
- package/core/skills/distill/SKILL.md +0 -62
- package/core/skills/doctor/SKILL.md +0 -49
- package/core/skills/link/SKILL.md +0 -130
- package/core/skills/retrieve/SKILL.md +0 -78
- package/core/skills/setup/CHANGELOG.md +0 -49
- package/core/skills/setup/SKILL.md +0 -246
- package/core/skills/uninstall/SKILL.md +0 -34
- package/core/skills/vault-decision-record/CHANGELOG.md +0 -24
- package/core/skills/vault-decision-record/SKILL.md +0 -93
- package/core/skills/vault-lint/CHANGELOG.md +0 -35
- package/core/skills/vault-lint/SKILL.md +0 -58
- package/core/skills/vault-scaffold/CHANGELOG.md +0 -21
- package/core/skills/vault-scaffold/SKILL.md +0 -72
- package/core/skills/wiki/CHANGELOG.md +0 -23
- package/core/skills/wiki/SKILL.md +0 -159
- package/core/skills/write/SKILL.md +0 -15
- package/dist/capture/safe.js.map +0 -1
- package/dist/cli/setup-documents.js.map +0 -1
- package/dist/conventions/frontmatter.js.map +0 -1
- package/dist/conventions/lint.js.map +0 -1
- package/dist/conventions/report.js.map +0 -1
- package/dist/conventions/validate.js.map +0 -1
- package/dist/conventions/vault-walk.js.map +0 -1
- package/dist/conventions/write-contract.js.map +0 -1
- package/dist/conventions/write-protocol.js.map +0 -1
- package/dist/core/ontology/loader.js.map +0 -1
- package/dist/core/ontology/resolver.js.map +0 -1
- package/dist/core/runtime/assets.js.map +0 -1
- package/dist/engine/assemble.js +0 -162
- package/dist/engine/assemble.js.map +0 -1
- package/dist/engine/conventions/vault-lint.js.map +0 -1
- package/dist/engine/embed/chunker.js.map +0 -1
- package/dist/engine/embed/deferred.js.map +0 -1
- package/dist/engine/embed/hash-stub.test-helper.js.map +0 -1
- package/dist/engine/embed/identity.d.ts +0 -11
- package/dist/engine/embed/identity.js +0 -15
- package/dist/engine/embed/identity.js.map +0 -1
- package/dist/engine/embed/provider.js +0 -266
- package/dist/engine/embed/provider.js.map +0 -1
- package/dist/engine/embed/store.js +0 -416
- package/dist/engine/embed/store.js.map +0 -1
- package/dist/engine/embed/sync.d.ts +0 -45
- package/dist/engine/embed/sync.js +0 -321
- package/dist/engine/embed/sync.js.map +0 -1
- package/dist/engine/graph/builder.js.map +0 -1
- package/dist/engine/graph/explore.js.map +0 -1
- package/dist/engine/graph/node.js +0 -110
- package/dist/engine/graph/node.js.map +0 -1
- package/dist/engine/graph/resolver.js.map +0 -1
- package/dist/engine/graph/traverse.js.map +0 -1
- package/dist/engine/linkify/apply.js.map +0 -1
- package/dist/engine/linkify/josa.js.map +0 -1
- package/dist/engine/linkify/mask.js.map +0 -1
- package/dist/engine/linkify/suggest.js.map +0 -1
- package/dist/engine/linkify/types.js.map +0 -1
- package/dist/engine/mcp/facade.js +0 -628
- package/dist/engine/mcp/facade.js.map +0 -1
- package/dist/engine/mcp/op-mappers.js.map +0 -1
- package/dist/engine/mcp/query-mapper.js +0 -102
- package/dist/engine/mcp/query-mapper.js.map +0 -1
- package/dist/engine/mcp/types.js.map +0 -1
- package/dist/engine/retrieval/dispatcher.js.map +0 -1
- package/dist/engine/retrieval/index.js.map +0 -1
- package/dist/engine/retrieval/reranker.d.ts +0 -46
- package/dist/engine/retrieval/reranker.js +0 -29
- package/dist/engine/retrieval/reranker.js.map +0 -1
- package/dist/engine/retrieval/rrf.js +0 -54
- package/dist/engine/retrieval/rrf.js.map +0 -1
- package/dist/engine/tracer.js.map +0 -1
- package/dist/engine/types.js.map +0 -1
- package/dist/graph/cache.js.map +0 -1
- package/dist/graph/explore.js.map +0 -1
- package/dist/harness/surface-registry.js +0 -397
- package/dist/harness/surface-registry.js.map +0 -1
- package/dist/harness/validation.js.map +0 -1
- package/dist/hook/post-tool-use.js.map +0 -1
- package/dist/hook/pre-tool-use.js.map +0 -1
- package/dist/hook/stdin.js.map +0 -1
- package/dist/index.d.ts +0 -12
- package/dist/index.js +0 -13
- package/dist/index.js.map +0 -1
- package/dist/install/adapter-source.js +0 -45
- package/dist/install/adapter-source.js.map +0 -1
- package/dist/install/claude-hooks.js.map +0 -1
- package/dist/install/claude-marketplace.js.map +0 -1
- package/dist/install/claude.js.map +0 -1
- package/dist/install/codex.d.ts +0 -24
- package/dist/install/codex.js.map +0 -1
- package/dist/install/common.js.map +0 -1
- package/dist/install/hermes.js.map +0 -1
- package/dist/install/hosts.js.map +0 -1
- package/dist/link/convention-note.js.map +0 -1
- package/dist/link/global-config.js.map +0 -1
- package/dist/link/link.js.map +0 -1
- package/dist/mcp/semantic-engine.js +0 -52
- package/dist/mcp/semantic-engine.js.map +0 -1
- package/dist/mcp/semantic-retrieve-args.js.map +0 -1
- package/dist/mcp/semantic-retrieve-schema.js.map +0 -1
- package/dist/mcp/semantic-retrieve.js.map +0 -1
- package/dist/mcp/semantic-schemas.js.map +0 -1
- package/dist/mcp/semantic-tool-schemas.js.map +0 -1
- package/dist/ontology/active.js.map +0 -1
- package/dist/retrieve/morning-test-fixtures.js.map +0 -1
- package/dist/retrieve/morning.js.map +0 -1
- package/dist/retrieve/semantic-contract.js.map +0 -1
- package/dist/setup/axis.js.map +0 -1
- package/dist/update/update.js.map +0 -1
- package/docs/release.md +0 -188
- /package/{adapters/codex/.mcp.json → .mcp.codex.json} +0 -0
- /package/{adapters/claude-code/.mcp.json → .mcp.json} +0 -0
- /package/{adapters/claude-code → assets/claude}/hooks/oms-guard.mjs +0 -0
- /package/{adapters/claude-code → assets/claude}/hooks/oms-post-guard.mjs +0 -0
- /package/dist/{conventions → kernel/conventions}/frontmatter.d.ts +0 -0
- /package/dist/{conventions → kernel/conventions}/frontmatter.js +0 -0
- /package/dist/{conventions → kernel/conventions}/lint.d.ts +0 -0
- /package/dist/{conventions → kernel/conventions}/lint.js +0 -0
- /package/dist/{conventions → kernel/conventions}/report.d.ts +0 -0
- /package/dist/{conventions → kernel/conventions}/report.js +0 -0
- /package/dist/{conventions → kernel/conventions}/validate.js +0 -0
- /package/dist/{conventions → kernel/conventions}/vault-walk.d.ts +0 -0
- /package/dist/{conventions → kernel/conventions}/vault-walk.js +0 -0
- /package/dist/{conventions → kernel/conventions}/write-contract.js +0 -0
- /package/dist/{conventions → kernel/conventions}/write-protocol.d.ts +0 -0
- /package/dist/{conventions → kernel/conventions}/write-protocol.js +0 -0
- /package/dist/{engine → kernel/engine}/embed/chunker.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/embed/chunker.js +0 -0
- /package/dist/{engine → kernel/engine}/embed/deferred.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/embed/deferred.js +0 -0
- /package/dist/{engine → kernel/engine}/graph/explore.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/graph/explore.js +0 -0
- /package/dist/{engine → kernel/engine}/graph/resolver.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/graph/resolver.js +0 -0
- /package/dist/{engine → kernel/engine}/graph/traverse.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/graph/traverse.js +0 -0
- /package/dist/{engine → kernel/engine}/linkify/apply.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/linkify/apply.js +0 -0
- /package/dist/{engine → kernel/engine}/linkify/josa.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/linkify/josa.js +0 -0
- /package/dist/{engine → kernel/engine}/linkify/mask.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/linkify/mask.js +0 -0
- /package/dist/{engine → kernel/engine}/linkify/suggest.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/linkify/suggest.js +0 -0
- /package/dist/{engine → kernel/engine}/linkify/types.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/linkify/types.js +0 -0
- /package/dist/{engine → kernel/engine}/mcp/op-mappers.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/mcp/op-mappers.js +0 -0
- /package/dist/{engine → kernel/engine}/mcp/types.js +0 -0
- /package/dist/{engine → kernel/engine}/types.js +0 -0
- /package/dist/{graph → kernel/graph}/explore.d.ts +0 -0
- /package/dist/{graph → kernel/graph}/explore.js +0 -0
- /package/dist/{harness → kernel/harness}/validation.d.ts +0 -0
- /package/dist/{install → kernel/install}/common.d.ts +0 -0
- /package/dist/{install → kernel/install}/common.js +0 -0
- /package/dist/{install → kernel/install}/types.d.ts +0 -0
- /package/dist/{core/ontology → kernel/install}/types.js +0 -0
- /package/dist/{link → kernel/link}/convention-note.d.ts +0 -0
- /package/dist/{link → kernel/link}/global-config.d.ts +0 -0
- /package/dist/{link → kernel/link}/global-config.js +0 -0
- /package/dist/{link → kernel/link}/link.d.ts +0 -0
- /package/dist/{link → kernel/link}/link.js +0 -0
- /package/dist/{core → kernel}/ontology/loader.d.ts +0 -0
- /package/dist/{core → kernel}/ontology/loader.js +0 -0
- /package/dist/{core → kernel}/ontology/resolver.d.ts +0 -0
- /package/dist/{core → kernel}/ontology/resolver.js +0 -0
- /package/dist/{core → kernel}/ontology/types.d.ts +0 -0
- /package/dist/{install → kernel/ontology}/types.js +0 -0
- /package/dist/{retrieve → kernel/search}/morning-test-fixtures.d.ts +0 -0
- /package/dist/{retrieve → kernel/search}/morning-test-fixtures.js +0 -0
- /package/dist/{retrieve → kernel/search}/morning.js +0 -0
- /package/dist/{retrieve → kernel/search}/semantic-contract.d.ts +0 -0
- /package/dist/{retrieve → kernel/search}/semantic-contract.js +0 -0
- /package/dist/{mcp → kernel/semantic}/semantic-retrieve.d.ts +0 -0
- /package/dist/{mcp → kernel/semantic}/semantic-schemas.d.ts +0 -0
- /package/dist/{mcp → kernel/semantic}/semantic-schemas.js +0 -0
- /package/dist/{mcp → kernel/semantic}/semantic-tool-schemas.d.ts +0 -0
- /package/dist/{hook → vendors/claude/hook}/post-tool-use.d.ts +0 -0
- /package/dist/{hook → vendors/claude/hook}/pre-tool-use.d.ts +0 -0
- /package/dist/{hook → vendors/claude/hook}/pre-tool-use.js +0 -0
- /package/dist/{hook → vendors/claude/hook}/stdin.d.ts +0 -0
- /package/dist/{hook → vendors/claude/hook}/stdin.js +0 -0
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EmbeddingProvider implementations for the OMS engine.
|
|
3
|
+
*
|
|
4
|
+
* Two production providers:
|
|
5
|
+
* 1. GGUF / node-llama-cpp (EmbeddingGemma-300M, 768d, NO fold) — default production.
|
|
6
|
+
* 2. Upstage Solar (4096d, REST API, env-keyed) — opt-in commercial path (ADR-002).
|
|
7
|
+
*
|
|
8
|
+
* The hash-projection stub is TEST-ONLY and lives in hash-stub.test-helper.ts.
|
|
9
|
+
* It MUST NOT be imported by any production module.
|
|
10
|
+
*
|
|
11
|
+
* Patterns ported idea-only from qmd (tobi, MIT) — see ACKNOWLEDGMENTS.md M1 section:
|
|
12
|
+
* - Lazy-load + 5-minute idle unload guard (plan.md:83 sanctioned timer)
|
|
13
|
+
* - Hardware-adaptive parallel pool (P-01): pool = min(4, cpuCount-1), ≥1
|
|
14
|
+
* - Round-robin context selection across the pool
|
|
15
|
+
*
|
|
16
|
+
* R18 constraint: this file MUST NOT import anything from src/search at runtime.
|
|
17
|
+
* The GGUF embedding logic is re-implemented independently here.
|
|
18
|
+
*/
|
|
19
|
+
import { cpus } from "node:os";
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// Constants
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
/** Default embedding dimension for the GGUF provider (EmbeddingGemma-300M). */
|
|
24
|
+
export const GGUF_EMBEDDING_DIMENSIONS = 768;
|
|
25
|
+
/** Default context length for the GGUF provider (EmbeddingGemma-300M). */
|
|
26
|
+
export const GGUF_EMBEDDING_CONTEXT_LENGTH = 2048;
|
|
27
|
+
/** Milliseconds of inactivity before the GGUF pool is unloaded (plan.md:83). */
|
|
28
|
+
const IDLE_UNLOAD_MS = 5 * 60 * 1000;
|
|
29
|
+
/**
|
|
30
|
+
* Hard input-token ceiling enforced before every embed() call.
|
|
31
|
+
*
|
|
32
|
+
* Sits a margin below the descriptor context length to leave room for any special /
|
|
33
|
+
* task-prefix tokens getEmbeddingFor() injects. Inputs above this are
|
|
34
|
+
* token-exactly truncated via the model's own tokenizer rather than thrown —
|
|
35
|
+
* the engine MUST never choke on one oversized chunk the way the whole-doc
|
|
36
|
+
* floor (src/search) does. This bounds INPUT LENGTH only; it is NOT a dimension
|
|
37
|
+
* fold (ADR-007) — the emitted vector remains the provider width.
|
|
38
|
+
*/
|
|
39
|
+
const EMBED_INPUT_TOKEN_MARGIN = 148;
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// L2-normalise helper (GGUF provider — full vector, NO dimension folding)
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
/**
|
|
44
|
+
* L2-normalise a raw embedding vector and return as Float32Array.
|
|
45
|
+
*
|
|
46
|
+
* There is NO modulo fold or projection here: the full provider vector is
|
|
47
|
+
* preserved. A malformed model response is a hard error. Replacing NaN or
|
|
48
|
+
* Infinity with zero would make a corrupted index look valid and, worse,
|
|
49
|
+
* produce vectors that cannot be reproduced on a later sync.
|
|
50
|
+
*/
|
|
51
|
+
function normalizeVector(values) {
|
|
52
|
+
const vec = new Float32Array(values.length);
|
|
53
|
+
let mag = 0;
|
|
54
|
+
for (let i = 0; i < values.length; i++) {
|
|
55
|
+
const v = values[i];
|
|
56
|
+
if (typeof v !== "number" || !Number.isFinite(v)) {
|
|
57
|
+
throw new Error(`Embedding vector contains a non-finite value at index ${i}.`);
|
|
58
|
+
}
|
|
59
|
+
vec[i] = v;
|
|
60
|
+
mag += vec[i] * vec[i];
|
|
61
|
+
}
|
|
62
|
+
if (!Number.isFinite(mag)) {
|
|
63
|
+
throw new Error("Embedding vector norm is non-finite.");
|
|
64
|
+
}
|
|
65
|
+
if (mag === 0)
|
|
66
|
+
return vec;
|
|
67
|
+
const norm = Math.sqrt(mag);
|
|
68
|
+
for (let i = 0; i < vec.length; i++)
|
|
69
|
+
vec[i] = vec[i] / norm;
|
|
70
|
+
return vec;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Parse the descriptor's compact prefix declaration. Setup descriptors use
|
|
74
|
+
* either `none`, a JSON object (`{"query":"...","passage":"..."}`), or a
|
|
75
|
+
* delimited pair such as `query=search_query:,passage=search_document:`.
|
|
76
|
+
* Keeping parsing here makes the actual embedding calls deterministic and
|
|
77
|
+
* prevents silently ignoring a non-`none` declaration.
|
|
78
|
+
*/
|
|
79
|
+
function parsePrefixScheme(value) {
|
|
80
|
+
const scheme = typeof value === "string" ? value.trim() : "none";
|
|
81
|
+
if (scheme === "" || scheme.toLowerCase() === "none" || scheme.toLowerCase() === "symmetric") {
|
|
82
|
+
return { query: "", passage: "" };
|
|
83
|
+
}
|
|
84
|
+
if (scheme.startsWith("{")) {
|
|
85
|
+
let parsed;
|
|
86
|
+
try {
|
|
87
|
+
parsed = JSON.parse(scheme);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
throw new Error(`Invalid embedding prefixScheme JSON: ${scheme}`);
|
|
91
|
+
}
|
|
92
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
93
|
+
throw new Error("Embedding prefixScheme JSON must be an object.");
|
|
94
|
+
}
|
|
95
|
+
const record = parsed;
|
|
96
|
+
const query = record["query"] ?? record["queryPrefix"];
|
|
97
|
+
const passage = record["passage"] ?? record["document"] ?? record["passagePrefix"] ?? record["documentPrefix"];
|
|
98
|
+
if ((query !== undefined && typeof query !== "string") ||
|
|
99
|
+
(passage !== undefined && typeof passage !== "string") ||
|
|
100
|
+
(query === undefined && passage === undefined)) {
|
|
101
|
+
throw new Error("Embedding prefixScheme JSON requires a string query or passage value.");
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
query: typeof query === "string" ? query : "",
|
|
105
|
+
passage: typeof passage === "string" ? passage : "",
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const fields = {};
|
|
109
|
+
const keyPattern = /(?:^|[;,|])\s*(query|queryPrefix|passage|passagePrefix|document|documentPrefix)\s*[:=]\s*/giu;
|
|
110
|
+
const matches = [...scheme.matchAll(keyPattern)];
|
|
111
|
+
for (let i = 0; i < matches.length; i++) {
|
|
112
|
+
const match = matches[i];
|
|
113
|
+
const key = match[1].toLowerCase().startsWith("document")
|
|
114
|
+
? "passage"
|
|
115
|
+
: match[1].toLowerCase().startsWith("passage")
|
|
116
|
+
? "passage"
|
|
117
|
+
: "query";
|
|
118
|
+
const start = (match.index ?? 0) + match[0].length;
|
|
119
|
+
const end = i + 1 < matches.length ? (matches[i + 1].index ?? scheme.length) : scheme.length;
|
|
120
|
+
fields[key] = scheme.slice(start, end).trim();
|
|
121
|
+
}
|
|
122
|
+
if (fields.query !== undefined || fields.passage !== undefined) {
|
|
123
|
+
return { query: fields.query ?? "", passage: fields.passage ?? "" };
|
|
124
|
+
}
|
|
125
|
+
throw new Error(`Unsupported embedding prefixScheme "${scheme}". Use "none", JSON, or query/passage declarations.`);
|
|
126
|
+
}
|
|
127
|
+
function positiveInteger(value, fallback, label) {
|
|
128
|
+
const resolved = value ?? fallback;
|
|
129
|
+
if (!Number.isInteger(resolved) || resolved <= 0) {
|
|
130
|
+
throw new Error(`Embedding ${label} must be a positive integer.`);
|
|
131
|
+
}
|
|
132
|
+
return resolved;
|
|
133
|
+
}
|
|
134
|
+
function runtimeOptions(value, contextLength) {
|
|
135
|
+
const dimensionsInput = typeof value === "number" ? value : value?.dimensions;
|
|
136
|
+
const contextInput = typeof value === "number"
|
|
137
|
+
? contextLength
|
|
138
|
+
: value?.context ?? value?.contextLength ?? value?.contextTokens ?? contextLength;
|
|
139
|
+
return {
|
|
140
|
+
dimensions: positiveInteger(dimensionsInput, GGUF_EMBEDDING_DIMENSIONS, "dimensions"),
|
|
141
|
+
contextLength: positiveInteger(contextInput, GGUF_EMBEDDING_CONTEXT_LENGTH, "context length"),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Create a production EmbeddingProvider backed by a local GGUF model via
|
|
146
|
+
* node-llama-cpp. Target model: EmbeddingGemma-300M (descriptor width).
|
|
147
|
+
*
|
|
148
|
+
* Design (ported idea-only from qmd, MIT — ACKNOWLEDGMENTS.md M1):
|
|
149
|
+
* - Lazy-load: model/contexts are not initialised until the first embed() call.
|
|
150
|
+
* - 5-minute idle unload guard (plan.md:83, the ONLY permitted timer):
|
|
151
|
+
* each embed() call resets a setTimeout; if no calls arrive within
|
|
152
|
+
* IDLE_UNLOAD_MS the pool is fully disposed; next embed() reloads lazily.
|
|
153
|
+
* - Hardware-adaptive parallel pool: pool size = min(4, cpuCount-1), ≥ 1.
|
|
154
|
+
* Contexts are selected round-robin; embed calls do not queue.
|
|
155
|
+
*
|
|
156
|
+
* @param modelPath - Absolute path to the GGUF model file.
|
|
157
|
+
* @param dimensionsOrOptions - Expected width or descriptor runtime options.
|
|
158
|
+
* @param contextLength - Legacy positional context-length override.
|
|
159
|
+
*/
|
|
160
|
+
export function createGGUFEmbeddingProvider(modelPath, dimensionsOrOptions = GGUF_EMBEDDING_DIMENSIONS, contextLength) {
|
|
161
|
+
const runtime = runtimeOptions(dimensionsOrOptions, contextLength);
|
|
162
|
+
const prefixes = parsePrefixScheme(typeof dimensionsOrOptions === "object" ? dimensionsOrOptions.prefixScheme : undefined);
|
|
163
|
+
const maxInputTokens = Math.max(1, runtime.contextLength - EMBED_INPUT_TOKEN_MARGIN);
|
|
164
|
+
// Hardware-adaptive pool size (P-01 pattern, qmd MIT)
|
|
165
|
+
const poolSize = Math.min(4, Math.max(1, cpus().length - 1));
|
|
166
|
+
let pool = null;
|
|
167
|
+
let loadPromise = null;
|
|
168
|
+
let idleTimer = null;
|
|
169
|
+
/** Reset the 5-minute idle unload timer. Called on every embed(). */
|
|
170
|
+
function resetIdleTimer() {
|
|
171
|
+
if (idleTimer !== null)
|
|
172
|
+
clearTimeout(idleTimer);
|
|
173
|
+
idleTimer = setTimeout(() => {
|
|
174
|
+
idleTimer = null;
|
|
175
|
+
if (pool === null)
|
|
176
|
+
return;
|
|
177
|
+
const p = pool;
|
|
178
|
+
pool = null;
|
|
179
|
+
void Promise.all(p.contexts.map((ctx) => ctx.dispose().catch(() => undefined)))
|
|
180
|
+
.then(() => p.model.dispose().catch(() => undefined));
|
|
181
|
+
}, IDLE_UNLOAD_MS);
|
|
182
|
+
}
|
|
183
|
+
/** Ensure the pool is initialised. Returns the live pool. */
|
|
184
|
+
async function ensurePool() {
|
|
185
|
+
if (pool !== null)
|
|
186
|
+
return pool;
|
|
187
|
+
// Deduplicate concurrent init calls via a shared promise
|
|
188
|
+
if (loadPromise !== null)
|
|
189
|
+
return loadPromise;
|
|
190
|
+
loadPromise = (async () => {
|
|
191
|
+
const { getLlama } = await import("node-llama-cpp");
|
|
192
|
+
const llama = await getLlama();
|
|
193
|
+
const model = await llama.loadModel({ modelPath });
|
|
194
|
+
const contexts = await Promise.all(Array.from({ length: poolSize }, () => model.createEmbeddingContext({
|
|
195
|
+
contextSize: runtime.contextLength,
|
|
196
|
+
batchSize: runtime.contextLength,
|
|
197
|
+
})));
|
|
198
|
+
pool = { model, contexts, nextIdx: 0 };
|
|
199
|
+
return pool;
|
|
200
|
+
})().finally(() => {
|
|
201
|
+
loadPromise = null;
|
|
202
|
+
});
|
|
203
|
+
return loadPromise;
|
|
204
|
+
}
|
|
205
|
+
const provider = {
|
|
206
|
+
model: `node-llama-cpp:${modelPath}`,
|
|
207
|
+
dimensions: runtime.dimensions,
|
|
208
|
+
// Expose the descriptor-derived context to identity/sync without widening
|
|
209
|
+
// the shared EmbeddingProvider contract.
|
|
210
|
+
context: runtime.contextLength,
|
|
211
|
+
contextLength: runtime.contextLength,
|
|
212
|
+
...(typeof dimensionsOrOptions === "object" && dimensionsOrOptions.mrlDim !== undefined
|
|
213
|
+
? { mrlDim: dimensionsOrOptions.mrlDim }
|
|
214
|
+
: {}),
|
|
215
|
+
...(typeof dimensionsOrOptions === "object" && dimensionsOrOptions.normalization !== undefined
|
|
216
|
+
? { normalization: dimensionsOrOptions.normalization }
|
|
217
|
+
: {}),
|
|
218
|
+
...(typeof dimensionsOrOptions === "object" && dimensionsOrOptions.prefixScheme !== undefined
|
|
219
|
+
? { prefixScheme: dimensionsOrOptions.prefixScheme }
|
|
220
|
+
: {}),
|
|
221
|
+
async embed(text) {
|
|
222
|
+
return embedPassage(text);
|
|
223
|
+
},
|
|
224
|
+
async embedQuery(text) {
|
|
225
|
+
return embedText(`${prefixes.query}${text}`);
|
|
226
|
+
},
|
|
227
|
+
dispose: disposeProvider,
|
|
228
|
+
};
|
|
229
|
+
async function embedText(text) {
|
|
230
|
+
resetIdleTimer();
|
|
231
|
+
const p = await ensurePool();
|
|
232
|
+
// Token-exact truncation: never feed more than the context can hold, so a
|
|
233
|
+
// single oversized chunk can never throw "Input is longer than the context
|
|
234
|
+
// size". Bounds INPUT LENGTH only via the model's own tokenizer — NOT a
|
|
235
|
+
// dimension fold (ADR-007); the output stays at the provider width.
|
|
236
|
+
let input = text;
|
|
237
|
+
const tokens = p.model.tokenize(text);
|
|
238
|
+
if (tokens.length > maxInputTokens) {
|
|
239
|
+
input = p.model.detokenize(tokens.slice(0, maxInputTokens));
|
|
240
|
+
}
|
|
241
|
+
// Round-robin context selection across the pool
|
|
242
|
+
const idx = p.nextIdx % p.contexts.length;
|
|
243
|
+
p.nextIdx = idx + 1;
|
|
244
|
+
const ctx = p.contexts[idx];
|
|
245
|
+
const result = await ctx.getEmbeddingFor(input);
|
|
246
|
+
// No fold — return the full provider vector, L2-normalised
|
|
247
|
+
const vector = normalizeVector(result.vector);
|
|
248
|
+
if (vector.length !== runtime.dimensions) {
|
|
249
|
+
throw new Error(`GGUF embedding returned ${vector.length} dimensions; expected ${runtime.dimensions}.`);
|
|
250
|
+
}
|
|
251
|
+
return vector;
|
|
252
|
+
}
|
|
253
|
+
async function embedPassage(text) {
|
|
254
|
+
return embedText(`${prefixes.passage}${text}`);
|
|
255
|
+
}
|
|
256
|
+
async function disposeProvider() {
|
|
257
|
+
if (idleTimer !== null) {
|
|
258
|
+
clearTimeout(idleTimer);
|
|
259
|
+
idleTimer = null;
|
|
260
|
+
}
|
|
261
|
+
// Wait for any in-flight load to complete before disposing
|
|
262
|
+
if (loadPromise !== null) {
|
|
263
|
+
try {
|
|
264
|
+
await loadPromise;
|
|
265
|
+
}
|
|
266
|
+
catch { /* load failed, nothing to dispose */ }
|
|
267
|
+
}
|
|
268
|
+
if (pool !== null) {
|
|
269
|
+
const p = pool;
|
|
270
|
+
pool = null;
|
|
271
|
+
await Promise.all(p.contexts.map((ctx) => ctx.dispose().catch(() => undefined)));
|
|
272
|
+
await p.model.dispose().catch(() => undefined);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return provider;
|
|
276
|
+
}
|
|
277
|
+
// ---------------------------------------------------------------------------
|
|
278
|
+
// Upstage Solar provider (4096d, REST API, opt-in commercial, ADR-002)
|
|
279
|
+
// ---------------------------------------------------------------------------
|
|
280
|
+
const UPSTAGE_DIMENSIONS = 4096;
|
|
281
|
+
const UPSTAGE_API_URL = "https://api.upstage.ai/v1/embeddings";
|
|
282
|
+
/**
|
|
283
|
+
* Create an Upstage Solar embedding provider (4096d).
|
|
284
|
+
*
|
|
285
|
+
* This is the opt-in commercial path (ADR-002 tier model). Only activate
|
|
286
|
+
* when UPSTAGE_API_KEY is set in the environment; never use by default.
|
|
287
|
+
* The API key MUST come from env — never hardcoded (R4 secrets-via-env).
|
|
288
|
+
*/
|
|
289
|
+
export function createUpstageProvider(apiKey, model, dimensions = UPSTAGE_DIMENSIONS, metadata = {}) {
|
|
290
|
+
const resolvedDimensions = positiveInteger(dimensions, UPSTAGE_DIMENSIONS, "dimensions");
|
|
291
|
+
const contextLength = metadata.context ?? metadata.contextLength ?? metadata.contextTokens;
|
|
292
|
+
const prefixes = parsePrefixScheme(metadata.prefixScheme);
|
|
293
|
+
const provider = {
|
|
294
|
+
model: `upstage:${model}`,
|
|
295
|
+
dimensions: resolvedDimensions,
|
|
296
|
+
...(contextLength === undefined ? {} : { context: contextLength }),
|
|
297
|
+
...(contextLength === undefined ? {} : { contextLength }),
|
|
298
|
+
...(metadata.mrlDim === undefined ? {} : { mrlDim: metadata.mrlDim }),
|
|
299
|
+
...(metadata.normalization === undefined ? {} : { normalization: metadata.normalization }),
|
|
300
|
+
...(metadata.prefixScheme === undefined ? {} : { prefixScheme: metadata.prefixScheme }),
|
|
301
|
+
async embed(text) {
|
|
302
|
+
return embedPassage(text);
|
|
303
|
+
},
|
|
304
|
+
async embedQuery(text) {
|
|
305
|
+
return embedText(`${prefixes.query}${text}`);
|
|
306
|
+
},
|
|
307
|
+
dispose: () => Promise.resolve(),
|
|
308
|
+
};
|
|
309
|
+
async function embedPassage(text) {
|
|
310
|
+
return embedText(`${prefixes.passage}${text}`);
|
|
311
|
+
}
|
|
312
|
+
async function embedText(text) {
|
|
313
|
+
let input = (text ?? "").trim();
|
|
314
|
+
// Upstage rejects empty input with HTTP 400. Empty/whitespace chunks
|
|
315
|
+
// carry no semantic signal — return a zero vector so sync proceeds.
|
|
316
|
+
if (input.length === 0)
|
|
317
|
+
return new Float32Array(resolvedDimensions);
|
|
318
|
+
// Solar caps input at 4000 tokens. Rather than fail the whole sync on a
|
|
319
|
+
// single oversized chunk, shrink the input and retry until it fits.
|
|
320
|
+
for (let attempt = 0; attempt < 6; attempt += 1) {
|
|
321
|
+
const response = await fetch(UPSTAGE_API_URL, {
|
|
322
|
+
method: "POST",
|
|
323
|
+
headers: {
|
|
324
|
+
"Content-Type": "application/json",
|
|
325
|
+
Authorization: `Bearer ${apiKey}`,
|
|
326
|
+
},
|
|
327
|
+
body: JSON.stringify({ input, model }),
|
|
328
|
+
});
|
|
329
|
+
if (response.ok) {
|
|
330
|
+
const json = (await response.json());
|
|
331
|
+
const embedding = json.data[0]?.embedding;
|
|
332
|
+
if (!embedding) {
|
|
333
|
+
throw new Error("Upstage Solar API returned no embedding");
|
|
334
|
+
}
|
|
335
|
+
const vector = normalizeVector(embedding);
|
|
336
|
+
if (vector.length !== resolvedDimensions) {
|
|
337
|
+
throw new Error(`Upstage Solar API returned ${vector.length} dimensions; expected ${resolvedDimensions}.`);
|
|
338
|
+
}
|
|
339
|
+
return vector;
|
|
340
|
+
}
|
|
341
|
+
const body = await response.text().catch(() => "");
|
|
342
|
+
if (response.status === 400 &&
|
|
343
|
+
/maximum context length/i.test(body) &&
|
|
344
|
+
input.length > 200) {
|
|
345
|
+
input = input.slice(0, Math.floor(input.length * 0.6));
|
|
346
|
+
continue;
|
|
347
|
+
}
|
|
348
|
+
throw new Error(`Upstage Solar API error: ${response.status} ${response.statusText} ${body.slice(0, 160)}`);
|
|
349
|
+
}
|
|
350
|
+
throw new Error("Upstage Solar API error: input could not be reduced under the 4000-token limit");
|
|
351
|
+
}
|
|
352
|
+
return provider;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Resolve a REAL embedding provider or throw.
|
|
356
|
+
*
|
|
357
|
+
* This is the ONE production factory for the OMS engine. It NEVER falls back to
|
|
358
|
+
* a fake/stub embedder and it NEVER auto-selects a provider based on env key
|
|
359
|
+
* presence (UPSTAGE_API_KEY, etc.). Provider selection is explicit.
|
|
360
|
+
*
|
|
361
|
+
* @throws {Error} When provider/model are missing or unsupported, or when
|
|
362
|
+
* provider-specific auth is missing.
|
|
363
|
+
*/
|
|
364
|
+
export function requireRealEmbeddingProvider(opts = {}) {
|
|
365
|
+
const providerRaw = (opts.provider ?? "").toString().trim();
|
|
366
|
+
const model = (opts.model ?? "").toString().trim();
|
|
367
|
+
if (!providerRaw) {
|
|
368
|
+
throw new Error("OMS embedding provider is not configured. Set OMS_EMBEDDING_PROVIDER " +
|
|
369
|
+
"(e.g. gguf or upstage) and OMS_EMBEDDING_MODEL, then rerun sync.");
|
|
370
|
+
}
|
|
371
|
+
if (!model) {
|
|
372
|
+
throw new Error(`OMS embedding model is not configured for provider "${providerRaw}". ` +
|
|
373
|
+
"Set OMS_EMBEDDING_MODEL and rerun sync.");
|
|
374
|
+
}
|
|
375
|
+
if (providerRaw === "gguf") {
|
|
376
|
+
return createGGUFEmbeddingProvider(model, {
|
|
377
|
+
dimensions: opts.dimensions,
|
|
378
|
+
context: opts.context,
|
|
379
|
+
contextLength: opts.contextLength,
|
|
380
|
+
contextTokens: opts.contextTokens,
|
|
381
|
+
mrlDim: opts.mrlDim,
|
|
382
|
+
normalization: opts.normalization,
|
|
383
|
+
prefixScheme: opts.prefixScheme,
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
if (providerRaw === "upstage") {
|
|
387
|
+
const upstageKey = process.env["UPSTAGE_API_KEY"];
|
|
388
|
+
if (!upstageKey) {
|
|
389
|
+
throw new Error("OMS embedding provider is configured as upstage but UPSTAGE_API_KEY is missing.");
|
|
390
|
+
}
|
|
391
|
+
return createUpstageProvider(upstageKey, model, opts.dimensions, {
|
|
392
|
+
context: opts.context,
|
|
393
|
+
contextLength: opts.contextLength,
|
|
394
|
+
contextTokens: opts.contextTokens,
|
|
395
|
+
mrlDim: opts.mrlDim,
|
|
396
|
+
normalization: opts.normalization,
|
|
397
|
+
prefixScheme: opts.prefixScheme,
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
throw new Error(`OMS embedding provider "${providerRaw}" is unsupported. ` +
|
|
401
|
+
"Supported providers: gguf, upstage.");
|
|
402
|
+
}
|
|
403
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/kernel/engine/embed/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAElD,gFAAgF;AAChF,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAErC;;;;;;;;;GASG;AACH,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAarC,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAE9E;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,MAAyB;IAChD,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,GAAG,CAAC,CAAC;QACjF,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,IAAI,GAAG,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC;IAC7D,OAAO,GAAG,CAAC;AACb,CAAC;AAYD;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,KAAyB;IAClD,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACjE,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,WAAW,EAAE,CAAC;QAC7F,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAY,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,MAAM,GAAG,MAAiC,CAAC;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC/G,IACE,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;YAClD,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC;YACtD,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,CAAC,EAC9C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO;YACL,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC7C,OAAO,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;SACpD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAiD,EAAE,CAAC;IAChE,MAAM,UAAU,GAAG,8FAA8F,CAAC;IAClH,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;YACxD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAC7C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,OAAO,CAAC;QACd,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACnD,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9F,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;IACtE,CAAC;IACD,MAAM,IAAI,KAAK,CACb,uCAAuC,MAAM,qDAAqD,CACnG,CAAC;AACJ,CAAC;AA0BD,SAAS,eAAe,CAAC,KAAyB,EAAE,QAAgB,EAAE,KAAa;IACjF,MAAM,QAAQ,GAAG,KAAK,IAAI,QAAQ,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,8BAA8B,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CACrB,KAAmD,EACnD,aAAiC;IAEjC,MAAM,eAAe,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC;IAC9E,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ;QAC5C,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,aAAa,IAAI,KAAK,EAAE,aAAa,IAAI,aAAa,CAAC;IACpF,OAAO;QACL,UAAU,EAAE,eAAe,CAAC,eAAe,EAAE,yBAAyB,EAAE,YAAY,CAAC;QACrF,aAAa,EAAE,eAAe,CAAC,YAAY,EAAE,6BAA6B,EAAE,gBAAgB,CAAC;KAC9F,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,2BAA2B,CACzC,SAAiB,EACjB,sBAAwD,yBAAyB,EACjF,aAAsB;IAEtB,MAAM,OAAO,GAAG,cAAc,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,iBAAiB,CAChC,OAAO,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CACvF,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,aAAa,GAAG,wBAAwB,CAAC,CAAC;IACrF,sDAAsD;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAE7D,IAAI,IAAI,GAAoB,IAAI,CAAC;IACjC,IAAI,WAAW,GAA6B,IAAI,CAAC;IACjD,IAAI,SAAS,GAAyC,IAAI,CAAC;IAE3D,qEAAqE;IACrE,SAAS,cAAc;QACrB,IAAI,SAAS,KAAK,IAAI;YAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QAChD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC;YACf,IAAI,GAAG,IAAI,CAAC;YACZ,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;iBAC5E,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1D,CAAC,EAAE,cAAc,CAAC,CAAC;IACrB,CAAC;IAED,6DAA6D;IAC7D,KAAK,UAAU,UAAU;QACvB,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,yDAAyD;QACzD,IAAI,WAAW,KAAK,IAAI;YAAE,OAAO,WAAW,CAAC;QAE7C,WAAW,GAAG,CAAC,KAAK,IAAuB,EAAE;YAC3C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CACpC,KAAK,CAAC,sBAAsB,CAAC;gBAC3B,WAAW,EAAE,OAAO,CAAC,aAAa;gBAClC,SAAS,EAAE,OAAO,CAAC,aAAa;aACjC,CAAC,CACH,CACF,CAAC;YACF,IAAI,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,KAAK,EAAE,kBAAkB,SAAS,EAAE;QACpC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,0EAA0E;QAC1E,yCAAyC;QACzC,OAAO,EAAE,OAAO,CAAC,aAAa;QAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,GAAG,CAAC,OAAO,mBAAmB,KAAK,QAAQ,IAAI,mBAAmB,CAAC,MAAM,KAAK,SAAS;YACrF,CAAC,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAAE;YACxC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,mBAAmB,KAAK,QAAQ,IAAI,mBAAmB,CAAC,aAAa,KAAK,SAAS;YAC5F,CAAC,CAAC,EAAE,aAAa,EAAE,mBAAmB,CAAC,aAAa,EAAE;YACtD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,mBAAmB,KAAK,QAAQ,IAAI,mBAAmB,CAAC,YAAY,KAAK,SAAS;YAC3F,CAAC,CAAC,EAAE,YAAY,EAAE,mBAAmB,CAAC,YAAY,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;QAEP,KAAK,CAAC,KAAK,CAAC,IAAY;YACtB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,IAAY;YAC3B,OAAO,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,EAAE,eAAe;KAIzB,CAAC;IAEF,KAAK,UAAU,SAAS,CAAC,IAAY;QACnC,cAAc,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,MAAM,UAAU,EAAE,CAAC;QAC7B,0EAA0E;QAC1E,2EAA2E;QAC3E,wEAAwE;QACxE,oEAAoE;QACpE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;YACnC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,gDAAgD;QAChD,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1C,CAAC,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAChD,2DAA2D;QAC3D,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,2BAA2B,MAAM,CAAC,MAAM,yBAAyB,OAAO,CAAC,UAAU,GAAG,CACvF,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,IAAY;QACtC,OAAO,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,UAAU,eAAe;QAC5B,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,2DAA2D;QAC3D,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC;gBAAC,MAAM,WAAW,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,qCAAqC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,IAAI,CAAC;YACf,IAAI,GAAG,IAAI,CAAC;YACZ,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjF,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,eAAe,GAAG,sCAAsC,CAAC;AAO/D;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,KAAa,EACb,UAAU,GAAG,kBAAkB,EAC/B,WAAuI,EAAE;IAEzI,MAAM,kBAAkB,GAAG,eAAe,CAAC,UAAU,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;IACzF,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC;IAC3F,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG;QACf,KAAK,EAAE,WAAW,KAAK,EAAE;QACzB,UAAU,EAAE,kBAAkB;QAC9B,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAClE,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;QACzD,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrE,GAAG,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC1F,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;QAEvF,KAAK,CAAC,KAAK,CAAC,IAAY;YACtB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,IAAY;YAC3B,OAAO,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;KAQhC,CAAC;IAEH,KAAK,UAAU,YAAY,CAAC,IAAY;QACtC,OAAO,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,UAAU,SAAS,CAAC,IAAY;QACnC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,qEAAqE;QACrE,oEAAoE;QACpE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAEpE,wEAAwE;QACxE,oEAAoE;QACpE,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE;gBAC5C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;iBAClC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;aACvC,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA6B,CAAC;gBACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;gBAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC7D,CAAC;gBACD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;oBACzC,MAAM,IAAI,KAAK,CACb,8BAA8B,MAAM,CAAC,MAAM,yBAAyB,kBAAkB,GAAG,CAC1F,CAAC;gBACJ,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,IACE,QAAQ,CAAC,MAAM,KAAK,GAAG;gBACvB,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpC,KAAK,CAAC,MAAM,GAAG,GAAG,EAClB,CAAC;gBACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;gBACvD,SAAS;YACX,CAAC;YACD,MAAM,IAAI,KAAK,CACb,4BAA4B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC3F,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AA8BD;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAC1C,OAAuC,EAAE;IAEzC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IAEnD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,uEAAuE;YACrE,kEAAkE,CACrE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,uDAAuD,WAAW,KAAK;YACrE,yCAAyC,CAC5C,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,2BAA2B,CAAC,KAAK,EAAE;YACxC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;QACJ,CAAC;QACD,OAAO,qBAAqB,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;YAC/D,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CACb,2BAA2B,WAAW,oBAAoB;QACxD,qCAAqC,CACxC,CAAC;AACJ,CAAC"}
|
|
@@ -17,6 +17,10 @@ export interface EmbeddingIdentity {
|
|
|
17
17
|
readonly provider: string;
|
|
18
18
|
readonly model: string;
|
|
19
19
|
readonly dimensions: number;
|
|
20
|
+
readonly contextLength: number;
|
|
21
|
+
readonly mrlDim: number;
|
|
22
|
+
readonly normalization: string;
|
|
23
|
+
readonly prefixScheme: string;
|
|
20
24
|
readonly fingerprint: string;
|
|
21
25
|
}
|
|
22
26
|
/**
|
|
@@ -43,7 +47,7 @@ export interface EngineStore extends VectorStore {
|
|
|
43
47
|
/** Return every distinct `doc_path` currently stored. */
|
|
44
48
|
listDocPaths(): string[];
|
|
45
49
|
}
|
|
46
|
-
export declare const ENGINE_EMBED_META_VERSION = "oms-embed-meta-
|
|
50
|
+
export declare const ENGINE_EMBED_META_VERSION = "oms-embed-meta-v2";
|
|
47
51
|
/**
|
|
48
52
|
* Open (or create) an engine store at `dbPath` in CORE-ONLY mode.
|
|
49
53
|
*
|
|
@@ -54,6 +58,8 @@ export declare const ENGINE_EMBED_META_VERSION = "oms-embed-meta-v1";
|
|
|
54
58
|
* - upsert() throws
|
|
55
59
|
*/
|
|
56
60
|
export declare function openEngineStoreCore(dbPath: string): EngineStore;
|
|
61
|
+
/** Open a core-only store held entirely in SQLite memory. */
|
|
62
|
+
export declare function openInMemoryEngineStoreCore(): EngineStore;
|
|
57
63
|
/**
|
|
58
64
|
* Open (or create) an engine store at `dbPath` with vector capability.
|
|
59
65
|
*
|
|
@@ -64,3 +70,9 @@ export declare function openEngineStoreCore(dbPath: string): EngineStore;
|
|
|
64
70
|
export declare function openEngineStore(dbPath: string, dimensions: number, opts?: {
|
|
65
71
|
readonly sqliteVecLoader?: SqliteVecLoader;
|
|
66
72
|
}): EngineStore;
|
|
73
|
+
/** Open an existing core store for reads without creating files or schema. */
|
|
74
|
+
export declare function openEngineStoreCoreReadOnly(dbPath: string): EngineStore | null;
|
|
75
|
+
/** Open an existing vector-capable store for reads without creating files or schema. */
|
|
76
|
+
export declare function openEngineStoreReadOnly(dbPath: string, _dimensions: number, opts?: {
|
|
77
|
+
readonly sqliteVecLoader?: SqliteVecLoader;
|
|
78
|
+
}): EngineStore | null;
|