oh-my-second-brain 0.1.8 → 0.2.0
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/CHANGELOG.md +89 -0
- package/README.ko.md +127 -0
- package/README.md +128 -0
- package/adapters/README.md +8 -8
- package/adapters/claude-code/.claude-plugin/plugin.json +3 -2
- package/adapters/claude-code/.mcp.json +8 -0
- package/adapters/claude-code/CLAUDE.md +5 -6
- package/adapters/claude-code/skills/compile/SKILL.md +10 -35
- package/adapters/claude-code/skills/distill/SKILL.md +6 -26
- package/adapters/claude-code/skills/link/SKILL.md +87 -0
- package/adapters/claude-code/skills/retrieve/SKILL.md +4 -7
- package/adapters/claude-code/skills/setup/SKILL.md +5 -6
- package/adapters/claude-code/skills/uninstall/SKILL.md +1 -1
- package/adapters/claude-code/skills/wiki/SKILL.md +49 -24
- package/adapters/claude-code/skills/write/SKILL.md +16 -0
- package/adapters/codex/.codex-plugin/plugin.json +1 -1
- package/adapters/codex/AGENTS.md +2 -2
- package/adapters/codex/rules/oms.md +1 -1
- package/adapters/codex/skills/oms-compile/SKILL.md +7 -9
- package/adapters/codex/skills/oms-distill/SKILL.md +4 -9
- package/adapters/codex/skills/oms-link/SKILL.md +35 -0
- package/adapters/codex/skills/oms-retrieve/SKILL.md +5 -6
- package/adapters/codex/skills/oms-wiki/SKILL.md +28 -8
- package/adapters/codex/skills/oms-write/SKILL.md +10 -0
- package/adapters/hermes/README.md +3 -1
- package/adapters/hermes/SOUL.md +2 -3
- package/adapters/hermes/manifest.json +1 -1
- package/adapters/hermes/skills/compile/SKILL.md +5 -7
- package/adapters/hermes/skills/distill/SKILL.md +1 -3
- package/adapters/hermes/skills/link/SKILL.md +18 -0
- package/adapters/hermes/skills/retrieve/SKILL.md +5 -6
- package/adapters/hermes/skills/setup/SKILL.md +5 -2
- package/adapters/hermes/skills/wiki/SKILL.md +4 -2
- package/adapters/hermes/skills/write/SKILL.md +10 -0
- package/core/AGENTS.md +4 -2
- package/core/agents/librarian.md +3 -2
- package/core/ontology/concepts/term.yaml +12 -0
- package/core/ontology/taxonomy.yaml +3 -0
- package/core/skills/compile/SKILL.md +19 -18
- package/core/skills/distill/SKILL.md +13 -24
- package/core/skills/link/SKILL.md +130 -0
- package/core/skills/retrieve/SKILL.md +0 -1
- package/core/skills/setup/SKILL.md +12 -14
- package/core/skills/vault-lint/SKILL.md +1 -1
- package/core/skills/wiki/SKILL.md +109 -30
- package/core/skills/write/SKILL.md +15 -0
- package/dist/capture/safe.d.ts +61 -1
- package/dist/capture/safe.js +489 -66
- package/dist/capture/safe.js.map +1 -1
- package/dist/cli/args.d.ts +29 -0
- package/dist/cli/args.js +156 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/audit.d.ts +6 -0
- package/dist/cli/audit.js +93 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/claude-install-plan.d.ts +10 -0
- package/dist/cli/claude-install-plan.js +26 -0
- package/dist/cli/claude-install-plan.js.map +1 -0
- package/dist/cli/doctor-lint.d.ts +11 -0
- package/dist/cli/doctor-lint.js +86 -0
- package/dist/cli/doctor-lint.js.map +1 -0
- package/dist/cli/global-writeback.d.ts +31 -0
- package/dist/cli/global-writeback.js +73 -0
- package/dist/cli/global-writeback.js.map +1 -0
- package/dist/cli/host-commands.d.ts +30 -0
- package/dist/cli/host-commands.js +89 -0
- package/dist/cli/host-commands.js.map +1 -0
- package/dist/cli/link-command.d.ts +9 -0
- package/dist/cli/link-command.js +47 -0
- package/dist/cli/link-command.js.map +1 -0
- package/dist/cli/linkify.d.ts +23 -0
- package/dist/cli/linkify.js +118 -0
- package/dist/cli/linkify.js.map +1 -0
- package/dist/cli/oms.d.ts +8 -32
- package/dist/cli/oms.js +100 -703
- package/dist/cli/oms.js.map +1 -1
- package/dist/cli/semantic-args.d.ts +1 -2
- package/dist/cli/semantic-args.js +4 -7
- package/dist/cli/semantic-args.js.map +1 -1
- package/dist/cli/semantic-http.d.ts +0 -3
- package/dist/cli/semantic-http.js +40 -45
- package/dist/cli/semantic-http.js.map +1 -1
- package/dist/cli/semantic-usage.js +10 -9
- package/dist/cli/semantic-usage.js.map +1 -1
- package/dist/cli/semantic.js +99 -137
- package/dist/cli/semantic.js.map +1 -1
- package/dist/cli/setup-command.d.ts +11 -0
- package/dist/cli/setup-command.js +196 -0
- package/dist/cli/setup-command.js.map +1 -0
- package/dist/cli/setup-documents.d.ts +15 -0
- package/dist/cli/setup-documents.js +149 -0
- package/dist/cli/setup-documents.js.map +1 -0
- package/dist/cli/update-notice.d.ts +10 -0
- package/dist/cli/update-notice.js +42 -0
- package/dist/cli/update-notice.js.map +1 -0
- package/dist/cli/usage.d.ts +4 -0
- package/dist/cli/usage.js +102 -0
- package/dist/cli/usage.js.map +1 -0
- package/dist/conventions/lint.js +12 -33
- package/dist/conventions/lint.js.map +1 -1
- package/dist/conventions/report.d.ts +62 -0
- package/dist/conventions/report.js +217 -0
- package/dist/conventions/report.js.map +1 -0
- package/dist/conventions/validate.d.ts +1 -1
- package/dist/conventions/vault-walk.d.ts +38 -0
- package/dist/conventions/vault-walk.js +80 -0
- package/dist/conventions/vault-walk.js.map +1 -0
- package/dist/conventions/write-contract.d.ts +27 -0
- package/dist/conventions/write-contract.js +91 -0
- package/dist/conventions/write-contract.js.map +1 -0
- package/dist/conventions/write-protocol.d.ts +39 -0
- package/dist/conventions/write-protocol.js +44 -0
- package/dist/conventions/write-protocol.js.map +1 -0
- package/dist/core/ontology/loader.d.ts +2 -0
- package/dist/{ontology → core/ontology}/loader.js +11 -20
- package/dist/core/ontology/loader.js.map +1 -0
- package/dist/core/ontology/resolver.d.ts +2 -0
- package/dist/{ontology → core/ontology}/resolver.js +1 -15
- package/dist/core/ontology/resolver.js.map +1 -0
- package/dist/core/ontology/types.d.ts +47 -0
- package/dist/core/ontology/types.js +2 -0
- package/dist/core/ontology/types.js.map +1 -0
- package/dist/core/runtime/assets.d.ts +20 -0
- package/dist/core/runtime/assets.js +66 -0
- package/dist/core/runtime/assets.js.map +1 -0
- package/dist/engine/assemble.d.ts +28 -72
- package/dist/engine/assemble.js +77 -61
- package/dist/engine/assemble.js.map +1 -1
- package/dist/engine/conventions/vault-lint.d.ts +30 -2
- package/dist/engine/conventions/vault-lint.js +93 -97
- package/dist/engine/conventions/vault-lint.js.map +1 -1
- package/dist/engine/embed/deferred.d.ts +3 -4
- package/dist/engine/embed/deferred.js +10 -7
- package/dist/engine/embed/deferred.js.map +1 -1
- package/dist/engine/embed/identity.d.ts +11 -0
- package/dist/engine/embed/identity.js +15 -0
- package/dist/engine/embed/identity.js.map +1 -0
- package/dist/engine/embed/provider.d.ts +12 -13
- package/dist/engine/embed/provider.js +30 -27
- package/dist/engine/embed/provider.js.map +1 -1
- package/dist/engine/embed/store.d.ts +48 -27
- package/dist/engine/embed/store.js +281 -98
- package/dist/engine/embed/store.js.map +1 -1
- package/dist/engine/embed/sync.d.ts +17 -47
- package/dist/engine/embed/sync.js +233 -69
- package/dist/engine/embed/sync.js.map +1 -1
- package/dist/engine/graph/builder.d.ts +1 -1
- package/dist/engine/graph/builder.js +1 -1
- package/dist/engine/graph/explore.d.ts +2 -2
- package/dist/engine/graph/explore.js +0 -0
- package/dist/engine/graph/resolver.d.ts +17 -0
- package/dist/engine/graph/resolver.js +46 -11
- package/dist/engine/graph/resolver.js.map +1 -1
- package/dist/engine/linkify/apply.d.ts +56 -0
- package/dist/engine/linkify/apply.js +65 -0
- package/dist/engine/linkify/apply.js.map +1 -0
- package/dist/engine/linkify/josa.d.ts +58 -0
- package/dist/engine/linkify/josa.js +133 -0
- package/dist/engine/linkify/josa.js.map +1 -0
- package/dist/engine/linkify/mask.d.ts +29 -0
- package/dist/engine/linkify/mask.js +173 -0
- package/dist/engine/linkify/mask.js.map +1 -0
- package/dist/engine/linkify/suggest.d.ts +52 -0
- package/dist/engine/linkify/suggest.js +181 -0
- package/dist/engine/linkify/suggest.js.map +1 -0
- package/dist/engine/linkify/types.d.ts +68 -0
- package/dist/engine/linkify/types.js +12 -0
- package/dist/engine/linkify/types.js.map +1 -0
- package/dist/engine/mcp/facade.d.ts +12 -18
- package/dist/engine/mcp/facade.js +30 -80
- package/dist/engine/mcp/facade.js.map +1 -1
- package/dist/engine/mcp/op-mappers.d.ts +3 -9
- package/dist/engine/mcp/op-mappers.js +2 -30
- package/dist/engine/mcp/op-mappers.js.map +1 -1
- package/dist/engine/mcp/types.d.ts +5 -29
- package/dist/engine/tracer.js +6 -2
- package/dist/engine/tracer.js.map +1 -1
- package/dist/engine/types.d.ts +8 -3
- package/dist/graph/cache.d.ts +1 -11
- package/dist/graph/cache.js +1 -44
- package/dist/graph/cache.js.map +1 -1
- package/dist/graph/explore.js +88 -137
- package/dist/graph/explore.js.map +1 -1
- package/dist/harness/surface-registry.d.ts +56 -0
- package/dist/harness/surface-registry.js +397 -0
- package/dist/harness/surface-registry.js.map +1 -0
- package/dist/harness/validation.d.ts +9 -0
- package/dist/harness/validation.js +201 -0
- package/dist/harness/validation.js.map +1 -0
- package/dist/hook/post-tool-use.js +2 -2
- package/dist/hook/post-tool-use.js.map +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/install/adapter-source.d.ts +14 -0
- package/dist/install/adapter-source.js +45 -0
- package/dist/install/adapter-source.js.map +1 -0
- package/dist/install/claude-hooks.d.ts +13 -0
- package/dist/install/claude-hooks.js +411 -0
- package/dist/install/claude-hooks.js.map +1 -0
- package/dist/install/claude-marketplace.d.ts +44 -0
- package/dist/install/claude-marketplace.js +89 -0
- package/dist/install/claude-marketplace.js.map +1 -0
- package/dist/install/claude.d.ts +4 -0
- package/dist/install/claude.js +216 -0
- package/dist/install/claude.js.map +1 -0
- package/dist/install/codex.d.ts +24 -0
- package/dist/install/codex.js +193 -0
- package/dist/install/codex.js.map +1 -0
- package/dist/install/common.d.ts +34 -0
- package/dist/install/common.js +122 -0
- package/dist/install/common.js.map +1 -0
- package/dist/install/hermes.d.ts +4 -0
- package/dist/install/hermes.js +78 -0
- package/dist/install/hermes.js.map +1 -0
- package/dist/install/hosts.d.ts +6 -56
- package/dist/install/hosts.js +65 -610
- package/dist/install/hosts.js.map +1 -1
- package/dist/install/types.d.ts +34 -0
- package/dist/install/types.js +2 -0
- package/dist/install/types.js.map +1 -0
- package/dist/link/convention-note.d.ts +10 -0
- package/dist/link/convention-note.js +59 -0
- package/dist/link/convention-note.js.map +1 -0
- package/dist/link/global-config.d.ts +22 -0
- package/dist/link/global-config.js +69 -0
- package/dist/link/global-config.js.map +1 -0
- package/dist/link/link.d.ts +101 -0
- package/dist/link/link.js +265 -0
- package/dist/link/link.js.map +1 -0
- package/dist/mcp/engine-morning-backend.d.ts +12 -17
- package/dist/mcp/engine-morning-backend.js +25 -131
- package/dist/mcp/engine-morning-backend.js.map +1 -1
- package/dist/mcp/link-tools.d.ts +81 -0
- package/dist/mcp/link-tools.js +157 -0
- package/dist/mcp/link-tools.js.map +1 -0
- package/dist/mcp/semantic-engine.d.ts +32 -0
- package/dist/mcp/semantic-engine.js +52 -0
- package/dist/mcp/semantic-engine.js.map +1 -0
- package/dist/mcp/semantic-retrieve-args.d.ts +1 -5
- package/dist/mcp/semantic-retrieve-args.js +1 -26
- package/dist/mcp/semantic-retrieve-args.js.map +1 -1
- package/dist/mcp/semantic-retrieve-schema.d.ts +0 -14
- package/dist/mcp/semantic-retrieve-schema.js +0 -5
- package/dist/mcp/semantic-retrieve-schema.js.map +1 -1
- package/dist/mcp/semantic-retrieve.d.ts +12 -18
- package/dist/mcp/semantic-retrieve.js +40 -71
- package/dist/mcp/semantic-retrieve.js.map +1 -1
- package/dist/mcp/semantic-tool-schemas.js +7 -24
- package/dist/mcp/semantic-tool-schemas.js.map +1 -1
- package/dist/mcp/server.d.ts +7 -0
- package/dist/mcp/server.js +224 -162
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/update-notice.d.ts +51 -0
- package/dist/mcp/update-notice.js +196 -0
- package/dist/mcp/update-notice.js.map +1 -0
- package/dist/ontology/active.d.ts +7 -0
- package/dist/ontology/active.js +41 -0
- package/dist/ontology/active.js.map +1 -0
- package/dist/retrieve/morning.d.ts +10 -18
- package/dist/retrieve/morning.js +2 -26
- package/dist/retrieve/morning.js.map +1 -1
- package/dist/retrieve/semantic-contract.d.ts +10 -0
- package/dist/retrieve/semantic-contract.js +2 -0
- package/dist/retrieve/semantic-contract.js.map +1 -0
- package/dist/setup/axis.d.ts +22 -3
- package/dist/setup/axis.js +82 -35
- package/dist/setup/axis.js.map +1 -1
- package/dist/update/update.d.ts +12 -0
- package/dist/update/update.js +2 -2
- package/dist/update/update.js.map +1 -1
- package/docs/install.md +43 -7
- package/docs/release.md +109 -17
- package/package.json +11 -3
- package/scripts/install.sh +1 -1
- package/adapters/claude-code/skills/capture/SKILL.md +0 -50
- package/adapters/codex/skills/oms-capture/SKILL.md +0 -16
- package/adapters/hermes/skills/capture/SKILL.md +0 -16
- package/core/skills/capture/SKILL.md +0 -50
- package/dist/adapt/HostAdapter.d.ts +0 -21
- package/dist/adapt/HostAdapter.js +0 -10
- package/dist/adapt/HostAdapter.js.map +0 -1
- package/dist/adapt/claudeCode.d.ts +0 -9
- package/dist/adapt/claudeCode.js +0 -15
- package/dist/adapt/claudeCode.js.map +0 -1
- package/dist/adapt/codex.d.ts +0 -9
- package/dist/adapt/codex.js +0 -15
- package/dist/adapt/codex.js.map +0 -1
- package/dist/adapt/hermes.d.ts +0 -9
- package/dist/adapt/hermes.js +0 -15
- package/dist/adapt/hermes.js.map +0 -1
- package/dist/cli/semantic-metadata-commands.d.ts +0 -3
- package/dist/cli/semantic-metadata-commands.js +0 -115
- package/dist/cli/semantic-metadata-commands.js.map +0 -1
- package/dist/engine/compile/cascade.d.ts +0 -35
- package/dist/engine/compile/cascade.js +0 -59
- package/dist/engine/compile/cascade.js.map +0 -1
- package/dist/engine/compile/cot.d.ts +0 -30
- package/dist/engine/compile/cot.js +0 -153
- package/dist/engine/compile/cot.js.map +0 -1
- package/dist/engine/compile/phases.d.ts +0 -47
- package/dist/engine/compile/phases.js +0 -101
- package/dist/engine/compile/phases.js.map +0 -1
- package/dist/engine/compile/provenance.d.ts +0 -45
- package/dist/engine/compile/provenance.js +0 -103
- package/dist/engine/compile/provenance.js.map +0 -1
- package/dist/engine/compile/sha-cache.d.ts +0 -42
- package/dist/engine/compile/sha-cache.js +0 -86
- package/dist/engine/compile/sha-cache.js.map +0 -1
- package/dist/engine/compile/types.d.ts +0 -71
- package/dist/engine/compile/types.js +0 -9
- package/dist/engine/compile/types.js.map +0 -1
- package/dist/engine/compile/worker.d.ts +0 -47
- package/dist/engine/compile/worker.js +0 -75
- package/dist/engine/compile/worker.js.map +0 -1
- package/dist/engine/distill/analyzer.d.ts +0 -51
- package/dist/engine/distill/analyzer.js +0 -279
- package/dist/engine/distill/analyzer.js.map +0 -1
- package/dist/engine/distill/clean-room.d.ts +0 -46
- package/dist/engine/distill/clean-room.js +0 -131
- package/dist/engine/distill/clean-room.js.map +0 -1
- package/dist/engine/distill/report.d.ts +0 -23
- package/dist/engine/distill/report.js +0 -107
- package/dist/engine/distill/report.js.map +0 -1
- package/dist/engine/distill/types.d.ts +0 -89
- package/dist/engine/distill/types.js +0 -9
- package/dist/engine/distill/types.js.map +0 -1
- package/dist/engine/embed/pull.d.ts +0 -51
- package/dist/engine/embed/pull.js +0 -90
- package/dist/engine/embed/pull.js.map +0 -1
- package/dist/engine/graph/community.d.ts +0 -38
- package/dist/engine/graph/community.js +0 -122
- package/dist/engine/graph/community.js.map +0 -1
- package/dist/engine/index.d.ts +0 -5
- package/dist/engine/index.js +0 -2
- package/dist/engine/index.js.map +0 -1
- package/dist/engine/mcp/index.d.ts +0 -15
- package/dist/engine/mcp/index.js +0 -19
- package/dist/engine/mcp/index.js.map +0 -1
- package/dist/engine/mcp/retrieve-mapper.d.ts +0 -38
- package/dist/engine/mcp/retrieve-mapper.js +0 -96
- package/dist/engine/mcp/retrieve-mapper.js.map +0 -1
- package/dist/engine/setup/ambiguity.d.ts +0 -39
- package/dist/engine/setup/ambiguity.js +0 -50
- package/dist/engine/setup/ambiguity.js.map +0 -1
- package/dist/engine/setup/types.d.ts +0 -71
- package/dist/engine/setup/types.js +0 -22
- package/dist/engine/setup/types.js.map +0 -1
- package/dist/engine/setup/writer.d.ts +0 -32
- package/dist/engine/setup/writer.js +0 -77
- package/dist/engine/setup/writer.js.map +0 -1
- package/dist/engine/wiki/collection.d.ts +0 -91
- package/dist/engine/wiki/collection.js +0 -188
- package/dist/engine/wiki/collection.js.map +0 -1
- package/dist/engine/wiki/ledger.d.ts +0 -59
- package/dist/engine/wiki/ledger.js +0 -130
- package/dist/engine/wiki/ledger.js.map +0 -1
- package/dist/engine/wiki/lint.d.ts +0 -38
- package/dist/engine/wiki/lint.js +0 -186
- package/dist/engine/wiki/lint.js.map +0 -1
- package/dist/engine/wiki/navigation.d.ts +0 -40
- package/dist/engine/wiki/navigation.js +0 -83
- package/dist/engine/wiki/navigation.js.map +0 -1
- package/dist/engine/wiki/types.d.ts +0 -54
- package/dist/engine/wiki/types.js +0 -7
- package/dist/engine/wiki/types.js.map +0 -1
- package/dist/ontology/loader.d.ts +0 -13
- package/dist/ontology/loader.js.map +0 -1
- package/dist/ontology/resolver.d.ts +0 -13
- package/dist/ontology/resolver.js.map +0 -1
- package/dist/ontology/types.d.ts +0 -72
- package/dist/ontology/types.js +0 -12
- package/dist/ontology/types.js.map +0 -1
- package/dist/retrieve/embedding-sync.d.ts +0 -3
- package/dist/retrieve/embedding-sync.js +0 -21
- package/dist/retrieve/embedding-sync.js.map +0 -1
- package/dist/runtime/assets.d.ts +0 -7
- package/dist/runtime/assets.js +0 -13
- package/dist/runtime/assets.js.map +0 -1
- package/dist/search/semantic-collections.d.ts +0 -32
- package/dist/search/semantic-collections.js +0 -68
- package/dist/search/semantic-collections.js.map +0 -1
- package/dist/search/semantic-contexts.d.ts +0 -21
- package/dist/search/semantic-contexts.js +0 -28
- package/dist/search/semantic-contexts.js.map +0 -1
- package/dist/search/semantic-diagnostics.d.ts +0 -16
- package/dist/search/semantic-diagnostics.js +0 -110
- package/dist/search/semantic-diagnostics.js.map +0 -1
- package/dist/search/semantic-documents.d.ts +0 -3
- package/dist/search/semantic-documents.js +0 -150
- package/dist/search/semantic-documents.js.map +0 -1
- package/dist/search/semantic-embedding-hash.d.ts +0 -3
- package/dist/search/semantic-embedding-hash.js +0 -30
- package/dist/search/semantic-embedding-hash.js.map +0 -1
- package/dist/search/semantic-embedding-provider.d.ts +0 -9
- package/dist/search/semantic-embedding-provider.js +0 -58
- package/dist/search/semantic-embedding-provider.js.map +0 -1
- package/dist/search/semantic-index-build.d.ts +0 -13
- package/dist/search/semantic-index-build.js +0 -101
- package/dist/search/semantic-index-build.js.map +0 -1
- package/dist/search/semantic-index-core.d.ts +0 -21
- package/dist/search/semantic-index-core.js +0 -106
- package/dist/search/semantic-index-core.js.map +0 -1
- package/dist/search/semantic-index-io.d.ts +0 -19
- package/dist/search/semantic-index-io.js +0 -214
- package/dist/search/semantic-index-io.js.map +0 -1
- package/dist/search/semantic-index-types.d.ts +0 -50
- package/dist/search/semantic-index-types.js +0 -2
- package/dist/search/semantic-index-types.js.map +0 -1
- package/dist/search/semantic-index.d.ts +0 -4
- package/dist/search/semantic-index.js +0 -4
- package/dist/search/semantic-index.js.map +0 -1
- package/dist/search/semantic-listing.d.ts +0 -12
- package/dist/search/semantic-listing.js +0 -64
- package/dist/search/semantic-listing.js.map +0 -1
- package/dist/search/semantic-maintenance-shared.d.ts +0 -15
- package/dist/search/semantic-maintenance-shared.js +0 -43
- package/dist/search/semantic-maintenance-shared.js.map +0 -1
- package/dist/search/semantic-maintenance-types.d.ts +0 -103
- package/dist/search/semantic-maintenance-types.js +0 -2
- package/dist/search/semantic-maintenance-types.js.map +0 -1
- package/dist/search/semantic-maintenance.d.ts +0 -4
- package/dist/search/semantic-maintenance.js +0 -5
- package/dist/search/semantic-maintenance.js.map +0 -1
- package/dist/search/semantic-provider-types.d.ts +0 -34
- package/dist/search/semantic-provider-types.js +0 -2
- package/dist/search/semantic-provider-types.js.map +0 -1
- package/dist/search/semantic-query-types.d.ts +0 -83
- package/dist/search/semantic-query-types.js +0 -2
- package/dist/search/semantic-query-types.js.map +0 -1
- package/dist/search/semantic-query.d.ts +0 -2
- package/dist/search/semantic-query.js +0 -188
- package/dist/search/semantic-query.js.map +0 -1
- package/dist/search/semantic-sqlite-db.d.ts +0 -18
- package/dist/search/semantic-sqlite-db.js +0 -87
- package/dist/search/semantic-sqlite-db.js.map +0 -1
- package/dist/search/semantic-sqlite-query.d.ts +0 -2
- package/dist/search/semantic-sqlite-query.js +0 -128
- package/dist/search/semantic-sqlite-query.js.map +0 -1
- package/dist/search/semantic-sqlite-read.d.ts +0 -5
- package/dist/search/semantic-sqlite-read.js +0 -104
- package/dist/search/semantic-sqlite-read.js.map +0 -1
- package/dist/search/semantic-sqlite-write.d.ts +0 -7
- package/dist/search/semantic-sqlite-write.js +0 -66
- package/dist/search/semantic-sqlite-write.js.map +0 -1
- package/dist/search/semantic-store.d.ts +0 -15
- package/dist/search/semantic-store.js +0 -17
- package/dist/search/semantic-store.js.map +0 -1
- package/dist/search/semantic-sync-types.d.ts +0 -47
- package/dist/search/semantic-sync-types.js +0 -2
- package/dist/search/semantic-sync-types.js.map +0 -1
- package/dist/search/semantic-sync.d.ts +0 -13
- package/dist/search/semantic-sync.js +0 -131
- package/dist/search/semantic-sync.js.map +0 -1
- package/dist/search/semantic-test-fixtures.d.ts +0 -1
- package/dist/search/semantic-test-fixtures.js +0 -38
- package/dist/search/semantic-test-fixtures.js.map +0 -1
- package/dist/search/semantic-token.d.ts +0 -25
- package/dist/search/semantic-token.js +0 -114
- package/dist/search/semantic-token.js.map +0 -1
- package/dist/search/semantic-types.d.ts +0 -5
- package/dist/search/semantic-types.js +0 -2
- package/dist/search/semantic-types.js.map +0 -1
- package/dist/search/semantic.d.ts +0 -6
- package/dist/search/semantic.js +0 -6
- package/dist/search/semantic.js.map +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type UpdateRunner } from "../update/update.js";
|
|
2
|
+
/**
|
|
3
|
+
* Boot-time update nudge for the MCP server.
|
|
4
|
+
*
|
|
5
|
+
* The hot path (`cachedUpdateNotice`) only reads a small JSON cache; it never
|
|
6
|
+
* touches the network and never throws. The registry query lives in
|
|
7
|
+
* `refreshUpdateNoticeCache`, scheduled detached from the serve path so a slow
|
|
8
|
+
* or offline registry cannot delay or fail server startup. Nothing here writes
|
|
9
|
+
* stdout: stdout is the JSON-RPC transport.
|
|
10
|
+
*/
|
|
11
|
+
export type UpdateChannel = "stable" | "prerelease";
|
|
12
|
+
export interface CachedUpdateNoticeOptions {
|
|
13
|
+
readonly installedVersion: string;
|
|
14
|
+
readonly env?: Readonly<Record<string, string | undefined>>;
|
|
15
|
+
readonly now?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface RefreshUpdateNoticeCacheOptions extends CachedUpdateNoticeOptions {
|
|
18
|
+
readonly runner?: UpdateRunner;
|
|
19
|
+
readonly timeoutMs?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function updateNoticeCachePath(env?: Readonly<Record<string, string | undefined>>): string;
|
|
22
|
+
export declare function updateChannelOf(installedVersion: string): UpdateChannel;
|
|
23
|
+
/**
|
|
24
|
+
* Reads the cached latest version for the installed channel and renders a
|
|
25
|
+
* one-line nudge when that version is newer and the stamp is within the 24h
|
|
26
|
+
* TTL. Freshness is per channel, so a stable refresh never makes an older
|
|
27
|
+
* prerelease stamp look current. Returns null on every failure or suppression.
|
|
28
|
+
*/
|
|
29
|
+
export declare function cachedUpdateNotice(options: CachedUpdateNoticeOptions): string | null;
|
|
30
|
+
/**
|
|
31
|
+
* Performs ONE bounded registry query and stores the result under the
|
|
32
|
+
* installed channel's stamp, preserving the other channel's stamp. Awaitable
|
|
33
|
+
* for tests; production calls it detached via `scheduleUpdateNoticeRefresh`.
|
|
34
|
+
* Fails open: any error leaves the cache untouched and resolves normally.
|
|
35
|
+
*/
|
|
36
|
+
export declare function refreshUpdateNoticeCache(options: RefreshUpdateNoticeCacheOptions): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Serve-path entrypoint: starts at most one detached refresh per process. Never
|
|
39
|
+
* awaited by the caller, so startup latency is unaffected.
|
|
40
|
+
*
|
|
41
|
+
* Skips the registry entirely while the installed channel's stamp is still
|
|
42
|
+
* within the TTL: a fresh cache already answers the boot-time question, so
|
|
43
|
+
* every serve boot inside that window costs zero subprocesses. Returns the
|
|
44
|
+
* detached promise when a refresh was started and null when none was needed,
|
|
45
|
+
* so tests can await the background work without a timer.
|
|
46
|
+
*/
|
|
47
|
+
export declare function scheduleUpdateNoticeRefresh(options: RefreshUpdateNoticeCacheOptions): Promise<void> | null;
|
|
48
|
+
/** Clears the per-process refresh lock. Test-only seam. */
|
|
49
|
+
export declare function __resetUpdateNoticeRefreshLockForTests(): void;
|
|
50
|
+
/** Appends the nudge to the server's base instructions as a single extra line. */
|
|
51
|
+
export declare function buildServerInstructions(baseInstructions: string, nudge: string | null): string;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { closeSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { compareVersions, resolveLatestVersion } from "../update/update.js";
|
|
5
|
+
const CACHE_FILE_NAME = "update-notice-cache.json";
|
|
6
|
+
const CACHE_TTL_MS = 24 * 60 * 60 * 1000;
|
|
7
|
+
const REFRESH_TIMEOUT_MS = 4_000;
|
|
8
|
+
const PACKAGE_NAME = "oh-my-second-brain";
|
|
9
|
+
let refreshStarted = false;
|
|
10
|
+
function isRecord(value) {
|
|
11
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
12
|
+
}
|
|
13
|
+
function noticeSuppressed(env) {
|
|
14
|
+
return env["OMS_UPDATE_NOTICE"] === "0" || env["OMS_NO_UPDATE_NOTICE"] === "1";
|
|
15
|
+
}
|
|
16
|
+
export function updateNoticeCachePath(env = process.env) {
|
|
17
|
+
const stateDir = env["OMS_AUTO_UPDATE_STATE_DIR"];
|
|
18
|
+
const dir = stateDir !== undefined && stateDir.length > 0 ? stateDir : path.join(os.homedir(), ".oms");
|
|
19
|
+
return path.join(dir, CACHE_FILE_NAME);
|
|
20
|
+
}
|
|
21
|
+
export function updateChannelOf(installedVersion) {
|
|
22
|
+
return installedVersion.includes("-") ? "prerelease" : "stable";
|
|
23
|
+
}
|
|
24
|
+
function parseStamp(value) {
|
|
25
|
+
if (!isRecord(value))
|
|
26
|
+
return null;
|
|
27
|
+
const latestVersion = value["latestVersion"];
|
|
28
|
+
const checkedAt = value["checkedAt"];
|
|
29
|
+
if (typeof latestVersion !== "string" || latestVersion.length === 0)
|
|
30
|
+
return null;
|
|
31
|
+
if (typeof checkedAt !== "number" || !Number.isFinite(checkedAt))
|
|
32
|
+
return null;
|
|
33
|
+
return { latestVersion, checkedAt };
|
|
34
|
+
}
|
|
35
|
+
function readCache(cachePath) {
|
|
36
|
+
let raw;
|
|
37
|
+
try {
|
|
38
|
+
raw = readFileSync(cachePath, "utf-8");
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof Error)
|
|
42
|
+
return null;
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
let parsed;
|
|
46
|
+
try {
|
|
47
|
+
parsed = JSON.parse(raw);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (error instanceof SyntaxError)
|
|
51
|
+
return null;
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
if (!isRecord(parsed) || parsed["version"] !== 1 || !isRecord(parsed["channels"]))
|
|
55
|
+
return null;
|
|
56
|
+
const channels = {};
|
|
57
|
+
for (const channel of ["stable", "prerelease"]) {
|
|
58
|
+
const stamp = parseStamp(parsed["channels"][channel]);
|
|
59
|
+
if (stamp !== null)
|
|
60
|
+
channels[channel] = stamp;
|
|
61
|
+
}
|
|
62
|
+
return { version: 1, channels };
|
|
63
|
+
}
|
|
64
|
+
/** True when the channel's stamp exists and is within the 24h TTL. */
|
|
65
|
+
function stampIsFresh(stamp, now) {
|
|
66
|
+
if (stamp === undefined)
|
|
67
|
+
return false;
|
|
68
|
+
const age = now - stamp.checkedAt;
|
|
69
|
+
return age >= 0 && age <= CACHE_TTL_MS;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Reads the cached latest version for the installed channel and renders a
|
|
73
|
+
* one-line nudge when that version is newer and the stamp is within the 24h
|
|
74
|
+
* TTL. Freshness is per channel, so a stable refresh never makes an older
|
|
75
|
+
* prerelease stamp look current. Returns null on every failure or suppression.
|
|
76
|
+
*/
|
|
77
|
+
export function cachedUpdateNotice(options) {
|
|
78
|
+
const env = options.env ?? process.env;
|
|
79
|
+
if (noticeSuppressed(env))
|
|
80
|
+
return null;
|
|
81
|
+
const cache = readCache(updateNoticeCachePath(env));
|
|
82
|
+
if (cache === null)
|
|
83
|
+
return null;
|
|
84
|
+
const stamp = cache.channels[updateChannelOf(options.installedVersion)];
|
|
85
|
+
if (stamp === undefined)
|
|
86
|
+
return null;
|
|
87
|
+
if (!stampIsFresh(stamp, options.now ?? Date.now()))
|
|
88
|
+
return null;
|
|
89
|
+
if (compareVersions(options.installedVersion, stamp.latestVersion) >= 0)
|
|
90
|
+
return null;
|
|
91
|
+
return `Update available for Oh My Second Brain: ${options.installedVersion} -> ${stamp.latestVersion}. Run \`oms update --yes\` to update and refresh host adapters.`;
|
|
92
|
+
}
|
|
93
|
+
function reclaimStaleLock(lockPath) {
|
|
94
|
+
let lockedAt;
|
|
95
|
+
try {
|
|
96
|
+
lockedAt = statSync(lockPath).mtimeMs;
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
if (error instanceof Error)
|
|
100
|
+
return;
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
if (Date.now() - lockedAt > CACHE_TTL_MS)
|
|
104
|
+
rmSync(lockPath, { force: true });
|
|
105
|
+
}
|
|
106
|
+
function writeCacheAtomically(cachePath, cache) {
|
|
107
|
+
const dir = path.dirname(cachePath);
|
|
108
|
+
mkdirSync(dir, { recursive: true });
|
|
109
|
+
// Cross-process serialization: whoever creates the lock wins this round; a
|
|
110
|
+
// loser simply skips the write, because a missed refresh is harmless. A lock
|
|
111
|
+
// left behind by a killed process is reclaimed once it is older than the TTL,
|
|
112
|
+
// so a crash cannot silence update checks forever.
|
|
113
|
+
const lockPath = `${cachePath}.lock`;
|
|
114
|
+
reclaimStaleLock(lockPath);
|
|
115
|
+
const lockFd = openSync(lockPath, "wx");
|
|
116
|
+
const tempPath = `${cachePath}.${process.pid}.tmp`;
|
|
117
|
+
try {
|
|
118
|
+
writeFileSync(tempPath, `${JSON.stringify(cache)}\n`, "utf-8");
|
|
119
|
+
renameSync(tempPath, cachePath);
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
rmSync(tempPath, { force: true });
|
|
123
|
+
closeSync(lockFd);
|
|
124
|
+
unlinkSync(lockPath);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Performs ONE bounded registry query and stores the result under the
|
|
129
|
+
* installed channel's stamp, preserving the other channel's stamp. Awaitable
|
|
130
|
+
* for tests; production calls it detached via `scheduleUpdateNoticeRefresh`.
|
|
131
|
+
* Fails open: any error leaves the cache untouched and resolves normally.
|
|
132
|
+
*/
|
|
133
|
+
export async function refreshUpdateNoticeCache(options) {
|
|
134
|
+
const env = options.env ?? process.env;
|
|
135
|
+
if (noticeSuppressed(env))
|
|
136
|
+
return;
|
|
137
|
+
const cachePath = updateNoticeCachePath(env);
|
|
138
|
+
try {
|
|
139
|
+
const latest = await resolveLatestVersion({
|
|
140
|
+
packageName: PACKAGE_NAME,
|
|
141
|
+
timeoutMs: options.timeoutMs ?? REFRESH_TIMEOUT_MS,
|
|
142
|
+
runner: options.runner,
|
|
143
|
+
latestVersion: env["OMS_UPDATE_LATEST_VERSION"],
|
|
144
|
+
});
|
|
145
|
+
if (!latest.ok)
|
|
146
|
+
return;
|
|
147
|
+
const existing = readCache(cachePath);
|
|
148
|
+
writeCacheAtomically(cachePath, {
|
|
149
|
+
version: 1,
|
|
150
|
+
channels: {
|
|
151
|
+
...existing?.channels,
|
|
152
|
+
[updateChannelOf(options.installedVersion)]: {
|
|
153
|
+
latestVersion: latest.version,
|
|
154
|
+
checkedAt: options.now ?? Date.now(),
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
if (error instanceof Error)
|
|
161
|
+
return;
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Serve-path entrypoint: starts at most one detached refresh per process. Never
|
|
167
|
+
* awaited by the caller, so startup latency is unaffected.
|
|
168
|
+
*
|
|
169
|
+
* Skips the registry entirely while the installed channel's stamp is still
|
|
170
|
+
* within the TTL: a fresh cache already answers the boot-time question, so
|
|
171
|
+
* every serve boot inside that window costs zero subprocesses. Returns the
|
|
172
|
+
* detached promise when a refresh was started and null when none was needed,
|
|
173
|
+
* so tests can await the background work without a timer.
|
|
174
|
+
*/
|
|
175
|
+
export function scheduleUpdateNoticeRefresh(options) {
|
|
176
|
+
if (refreshStarted)
|
|
177
|
+
return null;
|
|
178
|
+
const env = options.env ?? process.env;
|
|
179
|
+
if (noticeSuppressed(env))
|
|
180
|
+
return null;
|
|
181
|
+
const cache = readCache(updateNoticeCachePath(env));
|
|
182
|
+
const stamp = cache?.channels[updateChannelOf(options.installedVersion)];
|
|
183
|
+
if (stampIsFresh(stamp, options.now ?? Date.now()))
|
|
184
|
+
return null;
|
|
185
|
+
refreshStarted = true;
|
|
186
|
+
return refreshUpdateNoticeCache(options);
|
|
187
|
+
}
|
|
188
|
+
/** Clears the per-process refresh lock. Test-only seam. */
|
|
189
|
+
export function __resetUpdateNoticeRefreshLockForTests() {
|
|
190
|
+
refreshStarted = false;
|
|
191
|
+
}
|
|
192
|
+
/** Appends the nudge to the server's base instructions as a single extra line. */
|
|
193
|
+
export function buildServerInstructions(baseInstructions, nudge) {
|
|
194
|
+
return nudge === null ? baseInstructions : `${baseInstructions}\n${nudge}`;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=update-notice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-notice.js","sourceRoot":"","sources":["../../src/mcp/update-notice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Ontology } from "../core/ontology/types.js";
|
|
2
|
+
export type ActiveOntologySource = "vault" | "bundled";
|
|
3
|
+
export interface ActiveOntology {
|
|
4
|
+
readonly ontology: Ontology;
|
|
5
|
+
readonly source: ActiveOntologySource;
|
|
6
|
+
}
|
|
7
|
+
export declare function resolveActiveOntology(vault: string): Promise<ActiveOntology>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { stat } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { resolveBundledAssetPaths } from "../core/runtime/assets.js";
|
|
4
|
+
import { loadOntology } from "../core/ontology/loader.js";
|
|
5
|
+
const bundledAssets = resolveBundledAssetPaths();
|
|
6
|
+
async function pathKind(target) {
|
|
7
|
+
try {
|
|
8
|
+
const info = await stat(target);
|
|
9
|
+
if (info.isFile())
|
|
10
|
+
return "file";
|
|
11
|
+
if (info.isDirectory())
|
|
12
|
+
return "directory";
|
|
13
|
+
return "other";
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
17
|
+
return "missing";
|
|
18
|
+
}
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export async function resolveActiveOntology(vault) {
|
|
23
|
+
const localOntologyDir = path.join(vault, ".oms");
|
|
24
|
+
const omsKind = await pathKind(localOntologyDir);
|
|
25
|
+
if (omsKind === "missing") {
|
|
26
|
+
return { ontology: await loadOntology(bundledAssets.ontologyDir), source: "bundled" };
|
|
27
|
+
}
|
|
28
|
+
if (omsKind !== "directory") {
|
|
29
|
+
throw new Error("Local .oms exists but is not a directory.");
|
|
30
|
+
}
|
|
31
|
+
const taxonomyKind = await pathKind(path.join(localOntologyDir, "taxonomy.yaml"));
|
|
32
|
+
const conceptsKind = await pathKind(path.join(localOntologyDir, "concepts"));
|
|
33
|
+
if (taxonomyKind === "missing" && conceptsKind === "missing") {
|
|
34
|
+
return { ontology: await loadOntology(bundledAssets.ontologyDir), source: "bundled" };
|
|
35
|
+
}
|
|
36
|
+
if (taxonomyKind !== "file" || conceptsKind !== "directory") {
|
|
37
|
+
throw new Error("Local .oms ontology is incomplete; expected .oms/taxonomy.yaml and .oms/concepts/.");
|
|
38
|
+
}
|
|
39
|
+
return { ontology: await loadOntology(localOntologyDir), source: "vault" };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=active.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active.js","sourceRoot":"","sources":["../../src/ontology/active.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAU1D,MAAM,aAAa,GAAG,wBAAwB,EAAE,CAAC;AAEjD,KAAK,UAAU,QAAQ,CAAC,MAAc;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,MAAM,CAAC;QACjC,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,WAAW,CAAC;QAC3C,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAAa;IACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACxF,CAAC;IACD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC;IAClF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;IAE7E,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACxF,CAAC;IACD,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;IACxG,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7E,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type GraphExploreNode, type GraphExploreOptions, type GraphExploreResult } from "../graph/explore.js";
|
|
2
|
-
import {
|
|
2
|
+
import type { SemanticDocument, SemanticDocumentResult, SemanticEmbeddingSyncResult, SemanticGetOptions, SemanticHitEvidence, SemanticMultiGetOptions, SemanticProviderStatus, SemanticQueryOptions, SemanticQueryResult, SemanticSearchHit, SemanticStatusOptions } from "./semantic-contract.js";
|
|
3
3
|
export type MorningHitSource = "oms-seed" | "oms-neighbor" | "oms-semantic";
|
|
4
4
|
export type SemanticFusionScope = "global" | "graph";
|
|
5
5
|
export type SemanticHydrateMode = "none" | "top" | "all" | "targets";
|
|
@@ -22,8 +22,6 @@ export interface MorningRetrieveOptions extends GraphExploreOptions {
|
|
|
22
22
|
readonly lineNumbers?: boolean;
|
|
23
23
|
readonly fullPath?: boolean;
|
|
24
24
|
readonly index?: string;
|
|
25
|
-
readonly storage?: SemanticQueryOptions["storage"];
|
|
26
|
-
readonly modelPath?: string;
|
|
27
25
|
readonly chunkStrategy?: string;
|
|
28
26
|
readonly candidateLimit?: number;
|
|
29
27
|
readonly noRerank?: boolean;
|
|
@@ -41,8 +39,6 @@ export interface MorningRetrieveOptions extends GraphExploreOptions {
|
|
|
41
39
|
readonly syncPull?: boolean;
|
|
42
40
|
readonly syncMaxDocsPerBatch?: number;
|
|
43
41
|
readonly syncMaxBatchMb?: number;
|
|
44
|
-
readonly syncStorage?: SemanticQueryOptions["storage"];
|
|
45
|
-
readonly syncModelPath?: string;
|
|
46
42
|
};
|
|
47
43
|
}
|
|
48
44
|
export interface MorningRetrieveHit {
|
|
@@ -77,15 +73,17 @@ export interface MorningRetrieveResult {
|
|
|
77
73
|
* Pluggable semantic backend for the morning retrieval flow.
|
|
78
74
|
*
|
|
79
75
|
* Abstracts the five semantic leaf operations so the caller chooses the
|
|
80
|
-
* implementation without morning.ts knowing which one it is
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
76
|
+
* implementation without morning.ts knowing which one it is. After the
|
|
77
|
+
* src/search teardown there is a single implementation —
|
|
78
|
+
* makeEngineMorningBackend(...) (src/mcp/engine-morning-backend.ts), which wraps
|
|
79
|
+
* the native engine adapter (vec-capable when a model is configured, lex +
|
|
80
|
+
* file-based document reads otherwise). The backend is injected by the caller so
|
|
81
|
+
* morning.ts stays free of any engine-assembly policy and has no module cycle
|
|
82
|
+
* back into src/mcp.
|
|
85
83
|
*
|
|
86
84
|
* query + getDocument + multiGet MUST come from the SAME backend: the engine
|
|
87
85
|
* emits real-path docids that only its own file-based hydration resolves, so a
|
|
88
|
-
* split backend
|
|
86
|
+
* split backend would strand every hit.
|
|
89
87
|
*/
|
|
90
88
|
export interface MorningSemanticBackend {
|
|
91
89
|
readonly sync: (opts: MorningRetrieveOptions) => Promise<SemanticEmbeddingSyncResult | undefined>;
|
|
@@ -94,10 +92,4 @@ export interface MorningSemanticBackend {
|
|
|
94
92
|
readonly getDocument: (opts: SemanticGetOptions) => Promise<SemanticDocumentResult>;
|
|
95
93
|
readonly multiGet: (opts: SemanticMultiGetOptions) => Promise<SemanticDocumentResult>;
|
|
96
94
|
}
|
|
97
|
-
|
|
98
|
-
* Default semantic backend: the mature, model-free src/search layer (SHA-1
|
|
99
|
-
* hash embeddings + JSON/SQLite store). Used by the CLI and by any caller that
|
|
100
|
-
* does not inject an engine-backed backend, so non-MCP paths are unchanged.
|
|
101
|
-
*/
|
|
102
|
-
export declare const defaultMorningSemanticBackend: MorningSemanticBackend;
|
|
103
|
-
export declare function retrieveMorningContext(opts: MorningRetrieveOptions, backend?: MorningSemanticBackend): Promise<MorningRetrieveResult>;
|
|
95
|
+
export declare function retrieveMorningContext(opts: MorningRetrieveOptions, backend: MorningSemanticBackend): Promise<MorningRetrieveResult>;
|
package/dist/retrieve/morning.js
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
1
|
import { exploreLocalGraph, } from "../graph/explore.js";
|
|
2
|
-
import { getSemanticDocument, multiGetSemanticDocuments, querySemanticStore, readSemanticStatus, } from "../search/semantic.js";
|
|
3
|
-
import { syncRetrieveEmbeddings } from "./embedding-sync.js";
|
|
4
|
-
/**
|
|
5
|
-
* Default semantic backend: the mature, model-free src/search layer (SHA-1
|
|
6
|
-
* hash embeddings + JSON/SQLite store). Used by the CLI and by any caller that
|
|
7
|
-
* does not inject an engine-backed backend, so non-MCP paths are unchanged.
|
|
8
|
-
*/
|
|
9
|
-
export const defaultMorningSemanticBackend = {
|
|
10
|
-
sync: (opts) => syncRetrieveEmbeddings(opts),
|
|
11
|
-
status: (opts) => readSemanticStatus(opts),
|
|
12
|
-
query: (opts) => querySemanticStore(opts),
|
|
13
|
-
getDocument: (opts) => getSemanticDocument(opts),
|
|
14
|
-
multiGet: (opts) => multiGetSemanticDocuments(opts),
|
|
15
|
-
};
|
|
16
2
|
function graphHit(source, node) {
|
|
17
3
|
return {
|
|
18
4
|
source,
|
|
@@ -67,8 +53,6 @@ function semanticQueryOptions(opts) {
|
|
|
67
53
|
lineNumbers: opts.semantic?.lineNumbers,
|
|
68
54
|
fullPath: opts.semantic?.fullPath,
|
|
69
55
|
index: opts.semantic?.index,
|
|
70
|
-
storage: opts.semantic?.storage,
|
|
71
|
-
modelPath: opts.semantic?.modelPath,
|
|
72
56
|
chunkStrategy: opts.semantic?.chunkStrategy,
|
|
73
57
|
candidateLimit: opts.semantic?.candidateLimit,
|
|
74
58
|
noRerank: opts.semantic?.noRerank,
|
|
@@ -97,22 +81,16 @@ async function hydrateSemanticHits(opts, hits, backend) {
|
|
|
97
81
|
lineCount: opts.semantic.hydrateLineCount,
|
|
98
82
|
lineNumbers: opts.semantic.lineNumbers,
|
|
99
83
|
fullPath: opts.semantic.fullPath,
|
|
100
|
-
index: opts.semantic.index,
|
|
101
|
-
storage: opts.semantic.storage,
|
|
102
|
-
modelPath: opts.semantic.modelPath,
|
|
103
84
|
});
|
|
104
85
|
return result.available ? result.documents : [];
|
|
105
86
|
}
|
|
106
87
|
const result = await backend.multiGet({
|
|
107
88
|
vault: opts.vault,
|
|
108
|
-
targets,
|
|
89
|
+
targets: [...targets],
|
|
109
90
|
lineLimit: opts.semantic?.hydrateLineLimit,
|
|
110
91
|
maxBytes: opts.semantic?.hydrateMaxBytes,
|
|
111
92
|
lineNumbers: opts.semantic?.lineNumbers,
|
|
112
93
|
fullPath: opts.semantic?.fullPath,
|
|
113
|
-
index: opts.semantic?.index,
|
|
114
|
-
storage: opts.semantic?.storage,
|
|
115
|
-
modelPath: opts.semantic?.modelPath,
|
|
116
94
|
});
|
|
117
95
|
return result.available ? result.documents : [];
|
|
118
96
|
}
|
|
@@ -131,8 +109,6 @@ async function loadSemantic(opts, backend) {
|
|
|
131
109
|
const status = await backend.status({
|
|
132
110
|
vault: opts.vault,
|
|
133
111
|
index: opts.semantic?.index,
|
|
134
|
-
storage: opts.semantic?.storage,
|
|
135
|
-
modelPath: opts.semantic?.modelPath,
|
|
136
112
|
});
|
|
137
113
|
if (!status.available) {
|
|
138
114
|
return { status, sync, hits: [] };
|
|
@@ -143,7 +119,7 @@ async function loadSemantic(opts, backend) {
|
|
|
143
119
|
}
|
|
144
120
|
return { status, sync, hits: queryResult.hits };
|
|
145
121
|
}
|
|
146
|
-
export async function retrieveMorningContext(opts, backend
|
|
122
|
+
export async function retrieveMorningContext(opts, backend) {
|
|
147
123
|
const graph = await exploreLocalGraph(opts);
|
|
148
124
|
const semantic = await loadSemantic(opts, backend);
|
|
149
125
|
const semanticHits = filteredSemanticHits(opts, graph, semantic.hits);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"morning.js","sourceRoot":"","sources":["../../src/retrieve/morning.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAIlB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"morning.js","sourceRoot":"","sources":["../../src/retrieve/morning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic surface contract.
|
|
3
|
+
*
|
|
4
|
+
* After the src/search teardown (follow-up to #34) the engine MCP adapter layer
|
|
5
|
+
* is the single source of truth for the OMS semantic surface. These domain-named
|
|
6
|
+
* aliases re-export the canonical engine contract types so the morning retrieval
|
|
7
|
+
* layer and the CLI/MCP option builders stay decoupled from the engine's
|
|
8
|
+
* `Mcp`-prefixed names without re-declaring a parallel type set.
|
|
9
|
+
*/
|
|
10
|
+
export type { McpSemanticSearchMode as SemanticSearchMode, McpSemanticSearchFormat as SemanticSearchFormat, McpSemanticTypedSearchType as SemanticTypedSearchType, McpSemanticTypedSearch as SemanticTypedSearch, McpStatusOptions as SemanticStatusOptions, McpSemanticQueryOptions as SemanticQueryOptions, McpSemanticHitEvidence as SemanticHitEvidence, McpSemanticSearchHit as SemanticSearchHit, McpSemanticQueryResult as SemanticQueryResult, McpSemanticEmbeddingSyncOptions as SemanticEmbeddingSyncOptions, McpSemanticEmbeddingSyncResult as SemanticEmbeddingSyncResult, McpSemanticProviderStatus as SemanticProviderStatus, McpSemanticDocument as SemanticDocument, McpSemanticDocumentResult as SemanticDocumentResult, McpSemanticGetOptions as SemanticGetOptions, McpSemanticMultiGetOptions as SemanticMultiGetOptions, } from "../engine/mcp/types.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-contract.js","sourceRoot":"","sources":["../../src/retrieve/semantic-contract.ts"],"names":[],"mappings":""}
|
package/dist/setup/axis.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Concept, FieldType, OntologyLens } from "../ontology/types.js";
|
|
1
|
+
import type { Concept, FieldType, Ontology, OntologyLens } from "../core/ontology/types.js";
|
|
2
2
|
export interface ObservedField {
|
|
3
3
|
readonly name: string;
|
|
4
4
|
readonly type: FieldType;
|
|
@@ -9,9 +9,28 @@ export interface ObservedFolderSummary {
|
|
|
9
9
|
readonly fields: readonly ObservedField[];
|
|
10
10
|
readonly warnings: readonly string[];
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
interface ObservedScanOptions {
|
|
13
13
|
readonly vault: string;
|
|
14
|
+
readonly ontology?: Ontology;
|
|
15
|
+
readonly folder?: string;
|
|
16
|
+
readonly excludeGlobs?: readonly string[];
|
|
14
17
|
readonly maxFilesPerFolder?: number;
|
|
15
|
-
}
|
|
18
|
+
}
|
|
19
|
+
export declare function collectObservedFields(opts: ObservedScanOptions): Promise<readonly ObservedFolderSummary[]>;
|
|
20
|
+
/** One frontmatter value observed outside a field's declared `enum`. */
|
|
21
|
+
export interface ObservedFieldValueDrift {
|
|
22
|
+
readonly folder: string;
|
|
23
|
+
readonly field: string;
|
|
24
|
+
readonly value: string;
|
|
25
|
+
readonly count: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Scan the vault for string values that violate declared enum constraints,
|
|
29
|
+
* grouped by folder/field/value with a frequency count.
|
|
30
|
+
*/
|
|
31
|
+
export declare function collectObservedFieldValues(opts: ObservedScanOptions & {
|
|
32
|
+
readonly ontology: Ontology;
|
|
33
|
+
}): Promise<readonly ObservedFieldValueDrift[]>;
|
|
16
34
|
export declare function mergeObservedFieldsIntoConcept(concept: Concept, observedFields: readonly ObservedField[]): Concept;
|
|
17
35
|
export declare function parseLensDefinitions(input: string, knownFields: ReadonlySet<string>): readonly OntologyLens[];
|
|
36
|
+
export {};
|