oh-my-second-brain 0.2.0 → 0.3.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/.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 +154 -0
- package/CHANGELOG-assets.md +19 -0
- package/CHANGELOG-cli.md +15 -0
- package/CHANGELOG-kernel.md +25 -0
- package/CHANGELOG-mcp.md +26 -0
- package/CHANGELOG-vendors.md +22 -0
- package/CHANGELOG.md +24 -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 +1 -1
- package/dist/cli/args.js +1 -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 +22 -4
- 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.js +20 -9
- package/dist/cli/oms.js.map +1 -1
- package/dist/cli/semantic-args.d.ts +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 +1 -6
- package/dist/cli/semantic.js.map +1 -1
- package/dist/cli/setup-command.d.ts +1 -0
- package/dist/cli/setup-command.js +42 -147
- 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/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 +24 -0
- package/dist/{engine → kernel/engine}/assemble.js +142 -4
- package/dist/kernel/engine/assemble.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.js.map +1 -0
- package/dist/kernel/engine/embed/provider.js.map +1 -0
- package/dist/{engine → kernel/engine}/embed/store.d.ts +8 -0
- package/dist/{engine → kernel/engine}/embed/store.js +212 -8
- package/dist/kernel/engine/embed/store.js.map +1 -0
- package/dist/{engine → kernel/engine}/embed/sync.d.ts +3 -1
- package/dist/{engine → kernel/engine}/embed/sync.js +5 -3
- package/dist/kernel/engine/embed/sync.js.map +1 -0
- package/dist/kernel/engine/graph/builder.js.map +1 -0
- package/dist/kernel/engine/graph/explore.js.map +1 -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 +7 -1
- package/dist/{engine → kernel/engine}/mcp/facade.js +32 -11
- package/dist/kernel/engine/mcp/facade.js.map +1 -0
- package/dist/kernel/engine/mcp/op-mappers.js.map +1 -0
- package/dist/kernel/engine/mcp/query-mapper.js.map +1 -0
- package/dist/{engine → kernel/engine}/mcp/types.d.ts +5 -0
- package/dist/kernel/engine/mcp/types.js.map +1 -0
- package/dist/{engine → kernel/engine}/retrieval/dispatcher.d.ts +1 -1
- package/dist/{engine → kernel/engine}/retrieval/dispatcher.js +8 -6
- package/dist/kernel/engine/retrieval/dispatcher.js.map +1 -0
- package/dist/{engine → kernel/engine}/retrieval/index.d.ts +2 -0
- package/dist/{engine → kernel/engine}/retrieval/index.js +5 -2
- package/dist/kernel/engine/retrieval/index.js.map +1 -0
- package/dist/kernel/engine/retrieval/reranker.js.map +1 -0
- package/dist/kernel/engine/retrieval/rrf.js.map +1 -0
- 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 +1 -1
- 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/{index.d.ts → kernel/index.d.ts} +5 -6
- package/dist/kernel/index.js +12 -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/{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 +67 -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 +47 -0
- package/dist/kernel/searchbackend/search-backend.js +49 -0
- package/dist/kernel/searchbackend/search-backend.js.map +1 -0
- package/dist/{mcp → kernel/semantic}/semantic-engine.d.ts +3 -2
- package/dist/{mcp → kernel/semantic}/semantic-engine.js +5 -5
- package/dist/kernel/semantic/semantic-engine.js.map +1 -0
- package/dist/{mcp → kernel/semantic}/semantic-retrieve-args.d.ts +2 -2
- package/dist/{mcp → kernel/semantic}/semantic-retrieve-args.js +0 -8
- 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/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 +326 -327
- 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 +21 -9
- 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.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.js.map +0 -1
- package/dist/engine/embed/provider.js.map +0 -1
- package/dist/engine/embed/store.js.map +0 -1
- 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.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.map +0 -1
- package/dist/engine/mcp/op-mappers.js.map +0 -1
- 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.js.map +0 -1
- 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.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.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}/embed/identity.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/embed/identity.js +0 -0
- /package/dist/{engine → kernel/engine}/embed/provider.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/embed/provider.js +0 -0
- /package/dist/{engine → kernel/engine}/graph/builder.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/graph/builder.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/node.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/graph/node.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/query-mapper.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/mcp/query-mapper.js +0 -0
- /package/dist/{engine → kernel/engine}/mcp/types.js +0 -0
- /package/dist/{engine → kernel/engine}/retrieval/reranker.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/retrieval/reranker.js +0 -0
- /package/dist/{engine → kernel/engine}/retrieval/rrf.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/retrieval/rrf.js +0 -0
- /package/dist/{engine → kernel/engine}/tracer.d.ts +0 -0
- /package/dist/{engine → kernel/engine}/tracer.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/{update → kernel/update}/update.d.ts +0 -0
- /package/dist/{update → kernel/update}/update.js +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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Concept, FieldType, FolderBinding, OntologyField, OntologyLens, Taxonomy } from "../
|
|
1
|
+
import type { Concept, FieldType, FolderBinding, OntologyField, OntologyLens, Taxonomy } from "../ontology/types.js";
|
|
2
2
|
export interface ConceptDocument {
|
|
3
3
|
readonly filePath: string;
|
|
4
4
|
readonly raw: Record<string, unknown>;
|
|
@@ -58,35 +58,21 @@ export async function readConceptDocuments(omsDir) {
|
|
|
58
58
|
}
|
|
59
59
|
export function buildPromptConcepts(shippedConcepts, localDocuments) {
|
|
60
60
|
const concepts = new Map(shippedConcepts);
|
|
61
|
-
for (const [name, document] of localDocuments)
|
|
61
|
+
for (const [name, document] of localDocuments)
|
|
62
62
|
concepts.set(name, document.concept);
|
|
63
|
-
}
|
|
64
63
|
return concepts;
|
|
65
64
|
}
|
|
66
65
|
export function defaultConceptForFolder(concepts, folder) {
|
|
67
|
-
for (const [name, concept] of concepts)
|
|
66
|
+
for (const [name, concept] of concepts)
|
|
68
67
|
if (concept.folder === folder)
|
|
69
68
|
return name;
|
|
70
|
-
}
|
|
71
69
|
return null;
|
|
72
70
|
}
|
|
73
71
|
export function conceptRefToPromptDefault(concept) {
|
|
74
|
-
|
|
75
|
-
return concept[0] ?? null;
|
|
76
|
-
return concept;
|
|
72
|
+
return Array.isArray(concept) ? (concept[0] ?? null) : concept;
|
|
77
73
|
}
|
|
78
74
|
export function isFieldType(value) {
|
|
79
|
-
|
|
80
|
-
case "string":
|
|
81
|
-
case "url":
|
|
82
|
-
case "date":
|
|
83
|
-
case "list":
|
|
84
|
-
case "number":
|
|
85
|
-
case "boolean":
|
|
86
|
-
return true;
|
|
87
|
-
default:
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
75
|
+
return ["string", "url", "date", "list", "number", "boolean"].includes(value);
|
|
90
76
|
}
|
|
91
77
|
export async function readExistingTaxonomy(omsDir) {
|
|
92
78
|
try {
|
|
@@ -94,20 +80,15 @@ export async function readExistingTaxonomy(omsDir) {
|
|
|
94
80
|
const parsed = yamlParse(raw);
|
|
95
81
|
if (!isRecord(parsed))
|
|
96
82
|
return null;
|
|
97
|
-
const rawFolders = parsed["folders"];
|
|
98
83
|
const folders = {};
|
|
99
|
-
if (isRecord(
|
|
100
|
-
for (const [folder, binding] of Object.entries(
|
|
84
|
+
if (isRecord(parsed["folders"])) {
|
|
85
|
+
for (const [folder, binding] of Object.entries(parsed["folders"])) {
|
|
101
86
|
const parsedBinding = parseFolderBinding(binding);
|
|
102
|
-
if (parsedBinding !== null)
|
|
87
|
+
if (parsedBinding !== null)
|
|
103
88
|
folders[folder] = parsedBinding;
|
|
104
|
-
}
|
|
105
89
|
}
|
|
106
90
|
}
|
|
107
|
-
return {
|
|
108
|
-
version: typeof parsed["version"] === "number" ? parsed["version"] : 0,
|
|
109
|
-
folders,
|
|
110
|
-
};
|
|
91
|
+
return { version: typeof parsed["version"] === "number" ? parsed["version"] : 0, folders };
|
|
111
92
|
}
|
|
112
93
|
catch (error) {
|
|
113
94
|
if (error instanceof Error)
|
|
@@ -117,33 +98,18 @@ export async function readExistingTaxonomy(omsDir) {
|
|
|
117
98
|
}
|
|
118
99
|
export function mergeAdditionalFields(concept, fields) {
|
|
119
100
|
const existing = new Set(concept.fields.map((field) => field.name));
|
|
120
|
-
|
|
121
|
-
return {
|
|
122
|
-
...concept,
|
|
123
|
-
fields: [...concept.fields, ...additions],
|
|
124
|
-
lenses: concept.lenses ?? [],
|
|
125
|
-
};
|
|
101
|
+
return { ...concept, fields: [...concept.fields, ...fields.filter((field) => !existing.has(field.name))], lenses: concept.lenses ?? [] };
|
|
126
102
|
}
|
|
127
103
|
export function mergeAdditionalLenses(concept, lenses) {
|
|
128
104
|
const existing = new Set((concept.lenses ?? []).map((lens) => lens.name));
|
|
129
|
-
|
|
130
|
-
return {
|
|
131
|
-
...concept,
|
|
132
|
-
fields: concept.fields,
|
|
133
|
-
lenses: [...(concept.lenses ?? []), ...additions],
|
|
134
|
-
};
|
|
105
|
+
return { ...concept, fields: concept.fields, lenses: [...(concept.lenses ?? []), ...lenses.filter((lens) => !existing.has(lens.name))] };
|
|
135
106
|
}
|
|
136
107
|
export async function writeConcept(omsDir, concept, existingDocument) {
|
|
137
108
|
const conceptsOutDir = path.join(omsDir, "concepts");
|
|
138
109
|
await mkdir(conceptsOutDir, { recursive: true });
|
|
139
|
-
|
|
140
|
-
...(existingDocument?.raw ?? {}),
|
|
141
|
-
concept: concept.
|
|
142
|
-
|
|
143
|
-
folder: concept.folder,
|
|
144
|
-
fields: concept.fields,
|
|
145
|
-
lenses: concept.lenses ?? [],
|
|
146
|
-
};
|
|
147
|
-
await writeFile(existingDocument?.filePath ?? path.join(conceptsOutDir, `${concept.concept}.yaml`), yamlStringify(document), "utf-8");
|
|
110
|
+
await writeFile(existingDocument?.filePath ?? path.join(conceptsOutDir, `${concept.concept}.yaml`), yamlStringify({
|
|
111
|
+
...(existingDocument?.raw ?? {}), concept: concept.concept, intent: concept.intent, folder: concept.folder,
|
|
112
|
+
fields: concept.fields, lenses: concept.lenses ?? [],
|
|
113
|
+
}), "utf-8");
|
|
148
114
|
}
|
|
149
|
-
//# sourceMappingURL=
|
|
115
|
+
//# sourceMappingURL=documents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../../src/kernel/setup/documents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Concept, FolderBinding, OntologyField, OntologyLens, Taxonomy } from "../ontology/types.js";
|
|
2
|
+
import { type ObservedField, type ObservedFolderSummary } from "./axis.js";
|
|
3
|
+
import { type ConceptDocument } from "./documents.js";
|
|
4
|
+
export interface SetupState {
|
|
5
|
+
readonly vault: string;
|
|
6
|
+
readonly ontologyDir: string;
|
|
7
|
+
readonly omsDir: string;
|
|
8
|
+
readonly folders: readonly string[];
|
|
9
|
+
readonly existingTaxonomy: Taxonomy | null;
|
|
10
|
+
readonly promptConcepts: ReadonlyMap<string, Concept>;
|
|
11
|
+
readonly observedByFolder: ReadonlyMap<string, ObservedFolderSummary>;
|
|
12
|
+
readonly localConceptDocuments: ReadonlyMap<string, ConceptDocument>;
|
|
13
|
+
readonly bundledConceptFiles: readonly string[];
|
|
14
|
+
}
|
|
15
|
+
export interface SetupInputs {
|
|
16
|
+
readonly folderBindings: Readonly<Record<string, FolderBinding>>;
|
|
17
|
+
readonly observedFieldsByConcept?: ReadonlyMap<string, readonly ObservedField[]>;
|
|
18
|
+
readonly additionalFieldsByConcept?: ReadonlyMap<string, readonly OntologyField[]>;
|
|
19
|
+
readonly additionalLensesByConcept?: ReadonlyMap<string, readonly OntologyLens[]>;
|
|
20
|
+
}
|
|
21
|
+
export interface SetupDecision {
|
|
22
|
+
readonly vault: string;
|
|
23
|
+
readonly omsDir: string;
|
|
24
|
+
readonly ontologyDir: string;
|
|
25
|
+
readonly taxonomy: Taxonomy;
|
|
26
|
+
readonly bundledConceptFiles: readonly string[];
|
|
27
|
+
readonly concepts: readonly {
|
|
28
|
+
concept: Concept;
|
|
29
|
+
existingDocument?: ConceptDocument;
|
|
30
|
+
}[];
|
|
31
|
+
}
|
|
32
|
+
export declare function inspectSetup({ vault, ontologyDir }: {
|
|
33
|
+
vault: string;
|
|
34
|
+
ontologyDir: string;
|
|
35
|
+
}): Promise<SetupState>;
|
|
36
|
+
export declare function defaultSetupBinding(state: SetupState, folder: string): FolderBinding;
|
|
37
|
+
export declare function decideSetup(state: SetupState, inputs: SetupInputs): SetupDecision;
|
|
38
|
+
export declare function decideNonInteractiveSetup(state: SetupState, suggestFields: boolean): SetupDecision;
|
|
39
|
+
export declare function applySetup(decision: SetupDecision, { dryRun }?: {
|
|
40
|
+
dryRun?: boolean;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
copiedFiles: readonly string[];
|
|
43
|
+
copyError?: unknown;
|
|
44
|
+
}>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { copyFile, mkdir, readFile, readdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { stringify as yamlStringify } from "yaml";
|
|
4
|
+
import { loadOntology } from "../ontology/loader.js";
|
|
5
|
+
import { collectObservedFields, mergeObservedFieldsIntoConcept } from "./axis.js";
|
|
6
|
+
import { buildPromptConcepts, conceptRefToPromptDefault, defaultConceptForFolder, mergeAdditionalFields, mergeAdditionalLenses, readConceptDocuments, readExistingTaxonomy, writeConcept, } from "./documents.js";
|
|
7
|
+
export async function inspectSetup({ vault, ontologyDir }) {
|
|
8
|
+
const [ontology, observedSummaries, topEntries, existingTaxonomy, localConceptDocuments, conceptEntries] = await Promise.all([
|
|
9
|
+
loadOntology(ontologyDir),
|
|
10
|
+
collectObservedFields({ vault }),
|
|
11
|
+
readdir(vault, { withFileTypes: true }),
|
|
12
|
+
readExistingTaxonomy(path.join(vault, ".oms")),
|
|
13
|
+
readConceptDocuments(path.join(vault, ".oms")),
|
|
14
|
+
readdir(path.join(ontologyDir, "concepts")),
|
|
15
|
+
]);
|
|
16
|
+
return {
|
|
17
|
+
vault, ontologyDir, omsDir: path.join(vault, ".oms"),
|
|
18
|
+
folders: topEntries.filter((entry) => entry.isDirectory() && !entry.name.startsWith(".")).map((entry) => entry.name),
|
|
19
|
+
existingTaxonomy,
|
|
20
|
+
promptConcepts: buildPromptConcepts(ontology.concepts, localConceptDocuments),
|
|
21
|
+
observedByFolder: new Map(observedSummaries.map((summary) => [summary.folder, summary])),
|
|
22
|
+
localConceptDocuments,
|
|
23
|
+
bundledConceptFiles: conceptEntries.filter((file) => file.endsWith(".yaml") || file.endsWith(".yml")),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function defaultSetupBinding(state, folder) {
|
|
27
|
+
const existing = state.existingTaxonomy?.folders[folder];
|
|
28
|
+
return {
|
|
29
|
+
intent: existing?.intent || `${folder.charAt(0).toUpperCase()}${folder.slice(1)}`,
|
|
30
|
+
concept: conceptRefToPromptDefault(existing?.concept ?? null) ?? defaultConceptForFolder(state.promptConcepts, folder),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function decideSetup(state, inputs) {
|
|
34
|
+
const observed = inputs.observedFieldsByConcept ?? new Map();
|
|
35
|
+
const additionalFields = inputs.additionalFieldsByConcept ?? new Map();
|
|
36
|
+
const additionalLenses = inputs.additionalLensesByConcept ?? new Map();
|
|
37
|
+
const names = new Set([...observed.keys(), ...additionalFields.keys(), ...additionalLenses.keys()]);
|
|
38
|
+
const concepts = [...names].flatMap((name) => {
|
|
39
|
+
const concept = state.promptConcepts.get(name);
|
|
40
|
+
if (concept === undefined)
|
|
41
|
+
return [];
|
|
42
|
+
return [{
|
|
43
|
+
concept: mergeAdditionalLenses(mergeAdditionalFields(mergeObservedFieldsIntoConcept(concept, observed.get(name) ?? []), additionalFields.get(name) ?? []), additionalLenses.get(name) ?? []),
|
|
44
|
+
existingDocument: state.localConceptDocuments.get(name),
|
|
45
|
+
}];
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
vault: state.vault, omsDir: state.omsDir, ontologyDir: state.ontologyDir,
|
|
49
|
+
taxonomy: { version: state.existingTaxonomy?.version ?? 0, folders: { ...inputs.folderBindings } },
|
|
50
|
+
bundledConceptFiles: state.bundledConceptFiles,
|
|
51
|
+
concepts,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function decideNonInteractiveSetup(state, suggestFields) {
|
|
55
|
+
const folderBindings = { ...(state.existingTaxonomy?.folders ?? {}) };
|
|
56
|
+
const observedFieldsByConcept = new Map();
|
|
57
|
+
for (const folder of state.folders) {
|
|
58
|
+
const binding = defaultSetupBinding(state, folder);
|
|
59
|
+
folderBindings[folder] = binding;
|
|
60
|
+
if (suggestFields && typeof binding.concept === "string") {
|
|
61
|
+
const fields = state.observedByFolder.get(folder)?.fields;
|
|
62
|
+
if (fields !== undefined)
|
|
63
|
+
observedFieldsByConcept.set(binding.concept, [...(observedFieldsByConcept.get(binding.concept) ?? []), ...fields]);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return decideSetup(state, { folderBindings, observedFieldsByConcept });
|
|
67
|
+
}
|
|
68
|
+
export async function applySetup(decision, { dryRun = false } = {}) {
|
|
69
|
+
if (dryRun)
|
|
70
|
+
return { copiedFiles: [] };
|
|
71
|
+
const conceptsOutDir = path.join(decision.omsDir, "concepts");
|
|
72
|
+
await mkdir(conceptsOutDir, { recursive: true });
|
|
73
|
+
await writeFile(path.join(decision.omsDir, "taxonomy.yaml"), yamlStringify(decision.taxonomy), "utf-8");
|
|
74
|
+
const copiedFiles = [];
|
|
75
|
+
let copyError;
|
|
76
|
+
try {
|
|
77
|
+
for (const file of decision.bundledConceptFiles) {
|
|
78
|
+
const target = path.join(conceptsOutDir, file);
|
|
79
|
+
try {
|
|
80
|
+
await readFile(target, "utf-8");
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (!(error instanceof Error))
|
|
84
|
+
throw error;
|
|
85
|
+
await copyFile(path.join(decision.ontologyDir, "concepts", file), target);
|
|
86
|
+
copiedFiles.push(file);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
copyError = error;
|
|
92
|
+
}
|
|
93
|
+
for (const { concept, existingDocument } of decision.concepts)
|
|
94
|
+
await writeConcept(decision.omsDir, concept, existingDocument);
|
|
95
|
+
return { copiedFiles, copyError };
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/kernel/setup/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/kernel/update/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
* (graph-only context) rather than throwing.
|
|
10
10
|
*
|
|
11
11
|
* After the src/search teardown the morning contract types are the engine
|
|
12
|
-
* contract types (re-exported via src/
|
|
13
|
-
* wrapper only threads the
|
|
12
|
+
* contract types (re-exported via src/kernel/search/semantic-contract.ts), so this
|
|
13
|
+
* wrapper only threads the default vault — no type bridging.
|
|
14
14
|
*/
|
|
15
|
-
import type { McpEngineAdapter } from "../engine/mcp/facade.js";
|
|
16
|
-
import type { MorningSemanticBackend } from "../
|
|
15
|
+
import type { McpEngineAdapter } from "../kernel/engine/mcp/facade.js";
|
|
16
|
+
import type { MorningSemanticBackend } from "../kernel/search/morning.js";
|
|
17
17
|
/**
|
|
18
18
|
* Build a MorningSemanticBackend that routes the five semantic leaf operations
|
|
19
19
|
* through the native engine adapter.
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* (graph-only context) rather than throwing.
|
|
10
10
|
*
|
|
11
11
|
* After the src/search teardown the morning contract types are the engine
|
|
12
|
-
* contract types (re-exported via src/
|
|
13
|
-
* wrapper only threads the
|
|
12
|
+
* contract types (re-exported via src/kernel/search/semantic-contract.ts), so this
|
|
13
|
+
* wrapper only threads the default vault — no type bridging.
|
|
14
14
|
*/
|
|
15
15
|
/**
|
|
16
16
|
* Build a MorningSemanticBackend that routes the five semantic leaf operations
|
|
@@ -25,22 +25,8 @@
|
|
|
25
25
|
*/
|
|
26
26
|
export function makeEngineMorningBackend(adapter, vault) {
|
|
27
27
|
return {
|
|
28
|
-
sync(
|
|
29
|
-
|
|
30
|
-
// asked (syncBeforeSearch). Engine sync is incremental (SHA-256 diff), so
|
|
31
|
-
// even a forced re-sync skips unchanged chunks.
|
|
32
|
-
if (opts.semantic?.syncBeforeSearch !== true)
|
|
33
|
-
return Promise.resolve(undefined);
|
|
34
|
-
return adapter.syncEmbeddings({
|
|
35
|
-
vault: opts.vault ?? vault,
|
|
36
|
-
collection: opts.semantic.collection,
|
|
37
|
-
index: opts.semantic.index,
|
|
38
|
-
embed: opts.semantic.syncEmbed,
|
|
39
|
-
force: opts.semantic.syncForce,
|
|
40
|
-
chunkStrategy: opts.semantic.chunkStrategy,
|
|
41
|
-
maxDocsPerBatch: opts.semantic.syncMaxDocsPerBatch,
|
|
42
|
-
maxBatchMb: opts.semantic.syncMaxBatchMb,
|
|
43
|
-
});
|
|
28
|
+
sync() {
|
|
29
|
+
return Promise.resolve(undefined);
|
|
44
30
|
},
|
|
45
31
|
status(opts) {
|
|
46
32
|
// semanticStatus is synchronous on the adapter; lift it into the async
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-morning-backend.js","sourceRoot":"","sources":["../../src/mcp/engine-morning-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAyB,EAAE,KAAa;IAC/E,OAAO;QACL,IAAI
|
|
1
|
+
{"version":3,"file":"engine-morning-backend.js","sourceRoot":"","sources":["../../src/mcp/engine-morning-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAyB,EAAE,KAAa;IAC/E,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,CAAC,IAAI;YACT,uEAAuE;YACvE,oBAAoB;YACpB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,CAAC,IAAI;YACR,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,WAAW,CAAC,IAAI;YACd,OAAO,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,QAAQ,CAAC,IAAI;YACX,OAAO,OAAO,CAAC,iBAAiB,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxG,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/mcp/link-tools.d.ts
CHANGED
|
@@ -1,78 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*
|
|
5
|
-
* The linkify core (mask → suggest → apply) is pure and dependency-injected; it
|
|
6
|
-
* knows nothing about vaults, ontologies, or the filesystem. This module owns
|
|
7
|
-
* exactly that translation and nothing else, so server.ts stays a dispatcher.
|
|
8
|
-
*
|
|
9
|
-
* Candidate identity is DERIVED, never cached. A candidate id is its body span,
|
|
10
|
-
* and apply re-runs the same deterministic suggest pass over the note as it
|
|
11
|
-
* exists right now. Two consequences that matter: the server holds no
|
|
12
|
-
* cross-call state (a restart changes nothing), and a note edited between
|
|
13
|
-
* suggest and apply is caught by the base-hash check the kernel-facing
|
|
14
|
-
* `applyLinks` performs before any write.
|
|
15
|
-
*/
|
|
16
|
-
import type { WriteTargetSource } from "../conventions/write-protocol.js";
|
|
17
|
-
import type { Ontology } from "../core/ontology/types.js";
|
|
18
|
-
import { type ApplyResult } from "../engine/linkify/apply.js";
|
|
19
|
-
import type { LinkCandidate, TermNote } from "../engine/linkify/types.js";
|
|
1
|
+
import type { ApplyResult } from "../kernel/engine/linkify/apply.js";
|
|
2
|
+
import type { LinkCandidate } from "../kernel/engine/linkify/types.js";
|
|
3
|
+
import { type LinkScope, type LinkWorkflowTarget } from "../kernel/link/workflow.js";
|
|
20
4
|
/** A candidate as the MCP surface reports it: the core shape plus a stable id. */
|
|
21
5
|
export interface IdentifiedCandidate extends LinkCandidate {
|
|
22
|
-
/** Deterministic handle a client passes back to `oms_link_apply`. */
|
|
23
6
|
readonly id: string;
|
|
24
7
|
}
|
|
25
8
|
/** Payload of a successful `oms_link_suggest` call. */
|
|
26
9
|
export interface LinkSuggestion {
|
|
27
10
|
readonly notePath: string;
|
|
28
|
-
/** sha256 of the body the candidates were computed against (apply's token). */
|
|
29
11
|
readonly baseContentHash: string;
|
|
30
12
|
readonly candidateNotes: number;
|
|
31
13
|
readonly candidates: readonly IdentifiedCandidate[];
|
|
32
14
|
}
|
|
33
|
-
/** Everything
|
|
34
|
-
export
|
|
35
|
-
readonly vault: string;
|
|
36
|
-
readonly source: WriteTargetSource;
|
|
37
|
-
readonly ontology: Ontology;
|
|
38
|
-
/** Vault-relative markdown path of the note being linkified. */
|
|
39
|
-
readonly notePath: string;
|
|
40
|
-
}
|
|
15
|
+
/** Everything the MCP link operations need to address a vault note. */
|
|
16
|
+
export type LinkToolTarget = LinkWorkflowTarget;
|
|
41
17
|
/** Restrict the candidate universe to one top-level vault folder. */
|
|
42
|
-
export
|
|
43
|
-
readonly folder?: string | undefined;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Every `term`-bound note in the vault, with its declared surface forms.
|
|
47
|
-
*
|
|
48
|
-
* Concept binding comes from the ontology's folder contract (the same resolver
|
|
49
|
-
* the write kernel uses), NOT from a frontmatter field a note can claim for
|
|
50
|
-
* itself — a note cannot opt into being a link target by asserting it is one.
|
|
51
|
-
*/
|
|
52
|
-
export declare function collectTermNotes(vault: string, ontology: Ontology, scope?: LinkScope): Promise<TermNote[]>;
|
|
53
|
-
/**
|
|
54
|
-
* Propose `[[wikilink]]` insertions for one note against the vault's term notes.
|
|
55
|
-
*
|
|
56
|
-
* Read-only: nothing is written and no state is retained. The returned
|
|
57
|
-
* `baseContentHash` is the caller's optimistic-concurrency token for apply.
|
|
58
|
-
*/
|
|
59
|
-
export declare function suggestLinksForNote(target: LinkToolTarget, scope?: LinkScope): Promise<LinkSuggestion>;
|
|
18
|
+
export type { LinkScope };
|
|
60
19
|
/** Payload of an `oms_link_apply` call: the core result plus what was selected. */
|
|
61
20
|
export interface LinkApplyOutcome {
|
|
62
21
|
readonly notePath: string;
|
|
63
22
|
readonly requestedIds: readonly string[];
|
|
64
|
-
/** Requested ids that still name a live span in the note's current body. */
|
|
65
23
|
readonly resolvedIds: readonly string[];
|
|
66
24
|
readonly result: ApplyResult;
|
|
67
25
|
}
|
|
68
|
-
/**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
* The candidates are recomputed from the note's CURRENT body: ids that no
|
|
72
|
-
* longer name a span simply do not resolve, and a body that drifted since
|
|
73
|
-
* suggest fails the `baseContentHash` check inside `applyLinks` before any
|
|
74
|
-
* write is attempted.
|
|
75
|
-
*/
|
|
26
|
+
/** Invoke the transport-neutral suggestion workflow and retain the MCP contract. */
|
|
27
|
+
export declare function suggestLinksForNote(target: LinkToolTarget, scope?: LinkScope): Promise<LinkSuggestion>;
|
|
28
|
+
/** Invoke the transport-neutral apply workflow and retain the MCP contract. */
|
|
76
29
|
export declare function applyLinksForNote(target: LinkToolTarget, selection: {
|
|
77
30
|
readonly baseContentHash: string;
|
|
78
31
|
readonly candidateIds: readonly string[];
|
package/dist/mcp/link-tools.js
CHANGED
|
@@ -1,135 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* `oms_link_suggest` / `oms_link_apply` tools.
|
|
4
|
-
*
|
|
5
|
-
* The linkify core (mask → suggest → apply) is pure and dependency-injected; it
|
|
6
|
-
* knows nothing about vaults, ontologies, or the filesystem. This module owns
|
|
7
|
-
* exactly that translation and nothing else, so server.ts stays a dispatcher.
|
|
8
|
-
*
|
|
9
|
-
* Candidate identity is DERIVED, never cached. A candidate id is its body span,
|
|
10
|
-
* and apply re-runs the same deterministic suggest pass over the note as it
|
|
11
|
-
* exists right now. Two consequences that matter: the server holds no
|
|
12
|
-
* cross-call state (a restart changes nothing), and a note edited between
|
|
13
|
-
* suggest and apply is caught by the base-hash check the kernel-facing
|
|
14
|
-
* `applyLinks` performs before any write.
|
|
15
|
-
*/
|
|
16
|
-
import { readdir, readFile } from "node:fs/promises";
|
|
17
|
-
import path from "node:path";
|
|
18
|
-
import { safeVaultNotePath, writeNote } from "../capture/safe.js";
|
|
19
|
-
import { parseNote } from "../conventions/frontmatter.js";
|
|
20
|
-
import { resolveConcept } from "../core/ontology/resolver.js";
|
|
21
|
-
import { applyLinks, hashBody } from "../engine/linkify/apply.js";
|
|
22
|
-
import { suggestLinks, TERM_CONCEPT, termBoundNotes } from "../engine/linkify/suggest.js";
|
|
23
|
-
/** A candidate id is the body span it claims — stable across identical bodies. */
|
|
24
|
-
function candidateId(candidate) {
|
|
25
|
-
return `${String(candidate.startOffset)}-${String(candidate.endOffset)}`;
|
|
26
|
-
}
|
|
27
|
-
function identify(candidate) {
|
|
28
|
-
return { ...candidate, id: candidateId(candidate) };
|
|
29
|
-
}
|
|
30
|
-
/** Walk vault markdown, skipping dotted, dependency, and internal directories. */
|
|
31
|
-
async function* walkMarkdown(dir, base) {
|
|
32
|
-
const entries = await readdir(dir, { withFileTypes: true });
|
|
33
|
-
for (const entry of entries) {
|
|
34
|
-
if (entry.name.startsWith(".") || entry.name === "node_modules")
|
|
35
|
-
continue;
|
|
36
|
-
const full = path.join(dir, entry.name);
|
|
37
|
-
if (entry.isDirectory()) {
|
|
38
|
-
yield* walkMarkdown(full, base);
|
|
39
|
-
}
|
|
40
|
-
else if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
41
|
-
yield path.relative(base, full).replace(/\\/g, "/");
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/** Flatten a frontmatter `aliases` value to trimmed non-empty strings. */
|
|
46
|
-
function aliasStrings(value) {
|
|
47
|
-
if (Array.isArray(value))
|
|
48
|
-
return value.flatMap(aliasStrings);
|
|
49
|
-
if (typeof value !== "string")
|
|
50
|
-
return [];
|
|
51
|
-
const trimmed = value.trim();
|
|
52
|
-
return trimmed ? [trimmed] : [];
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Every `term`-bound note in the vault, with its declared surface forms.
|
|
56
|
-
*
|
|
57
|
-
* Concept binding comes from the ontology's folder contract (the same resolver
|
|
58
|
-
* the write kernel uses), NOT from a frontmatter field a note can claim for
|
|
59
|
-
* itself — a note cannot opt into being a link target by asserting it is one.
|
|
60
|
-
*/
|
|
61
|
-
export async function collectTermNotes(vault, ontology, scope = {}) {
|
|
62
|
-
const root = scope.folder === undefined ? vault : path.join(vault, scope.folder);
|
|
63
|
-
const notes = [];
|
|
64
|
-
for await (const notePath of walkMarkdown(root, vault)) {
|
|
65
|
-
const concept = resolveConcept(ontology, notePath);
|
|
66
|
-
if (concept?.concept !== TERM_CONCEPT)
|
|
67
|
-
continue;
|
|
68
|
-
const raw = await readFile(path.join(vault, notePath), "utf-8");
|
|
69
|
-
notes.push({
|
|
70
|
-
path: notePath,
|
|
71
|
-
concept: concept.concept,
|
|
72
|
-
aliases: aliasStrings(parseNote(raw).frontmatter["aliases"]),
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
return termBoundNotes(notes);
|
|
76
|
-
}
|
|
77
|
-
/** Read one vault note's body, refusing unsafe paths and missing files loudly. */
|
|
78
|
-
async function readNoteBody(vault, notePath) {
|
|
79
|
-
const fullPath = safeVaultNotePath(vault, notePath);
|
|
80
|
-
const raw = await readFile(fullPath, "utf-8");
|
|
81
|
-
return {
|
|
82
|
-
normalized: path.relative(vault, fullPath).replace(/\\/g, "/"),
|
|
83
|
-
body: parseNote(raw).body,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Propose `[[wikilink]]` insertions for one note against the vault's term notes.
|
|
88
|
-
*
|
|
89
|
-
* Read-only: nothing is written and no state is retained. The returned
|
|
90
|
-
* `baseContentHash` is the caller's optimistic-concurrency token for apply.
|
|
91
|
-
*/
|
|
1
|
+
import { applyLinksForNote as applyWorkflowLinksForNote, suggestLinksForNote as suggestWorkflowLinksForNote, } from "../kernel/link/workflow.js";
|
|
2
|
+
/** Invoke the transport-neutral suggestion workflow and retain the MCP contract. */
|
|
92
3
|
export async function suggestLinksForNote(target, scope = {}) {
|
|
93
|
-
|
|
94
|
-
const notes = await collectTermNotes(target.vault, target.ontology, scope);
|
|
95
|
-
const candidates = suggestLinks(body, notes, { notePath: normalized });
|
|
96
|
-
return {
|
|
97
|
-
notePath: normalized,
|
|
98
|
-
baseContentHash: hashBody(body),
|
|
99
|
-
candidateNotes: notes.length,
|
|
100
|
-
candidates: candidates.map(identify),
|
|
101
|
-
};
|
|
4
|
+
return suggestWorkflowLinksForNote(target, scope);
|
|
102
5
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Apply the selected candidates to a note and persist through the write kernel.
|
|
105
|
-
*
|
|
106
|
-
* The candidates are recomputed from the note's CURRENT body: ids that no
|
|
107
|
-
* longer name a span simply do not resolve, and a body that drifted since
|
|
108
|
-
* suggest fails the `baseContentHash` check inside `applyLinks` before any
|
|
109
|
-
* write is attempted.
|
|
110
|
-
*/
|
|
6
|
+
/** Invoke the transport-neutral apply workflow and retain the MCP contract. */
|
|
111
7
|
export async function applyLinksForNote(target, selection, scope = {}) {
|
|
112
|
-
|
|
113
|
-
const notes = await collectTermNotes(target.vault, target.ontology, scope);
|
|
114
|
-
const wanted = new Set(selection.candidateIds);
|
|
115
|
-
const accepted = suggestLinks(body, notes, { notePath: normalized }).filter((candidate) => wanted.has(candidateId(candidate)));
|
|
116
|
-
const result = await applyLinks({
|
|
117
|
-
body,
|
|
118
|
-
baseContentHash: selection.baseContentHash,
|
|
119
|
-
accepted,
|
|
120
|
-
writeNote,
|
|
121
|
-
target: {
|
|
122
|
-
target: { vault: target.vault, source: target.source },
|
|
123
|
-
ontology: target.ontology,
|
|
124
|
-
notePath: normalized,
|
|
125
|
-
},
|
|
126
|
-
});
|
|
127
|
-
return {
|
|
128
|
-
notePath: normalized,
|
|
129
|
-
requestedIds: selection.candidateIds,
|
|
130
|
-
resolvedIds: accepted.map(candidateId),
|
|
131
|
-
result,
|
|
132
|
-
};
|
|
8
|
+
return applyWorkflowLinksForNote(target, selection, scope);
|
|
133
9
|
}
|
|
134
10
|
/** The MCP-facing JSON shape of an apply outcome: applied body + receipt, or a typed refusal. */
|
|
135
11
|
export function linkApplyPayload(outcome) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-tools.js","sourceRoot":"","sources":["../../src/mcp/link-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"link-tools.js","sourceRoot":"","sources":["../../src/mcp/link-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,IAAI,yBAAyB,EAC9C,mBAAmB,IAAI,2BAA2B,GAGnD,MAAM,4BAA4B,CAAC;AA6BpC,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAsB,EAAE,QAAmB,EAAE;IACrF,OAAO,2BAA2B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAsB,EACtB,SAAyF,EACzF,QAAmB,EAAE;IAErB,OAAO,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,gBAAgB,CAAC,OAAyB;IACxD,MAAM,MAAM,GAAG;QACb,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,OAAO,MAAM,CAAC,OAAO;QACnB,CAAC,CAAC;YACE,GAAG,MAAM;YACT,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;SACtC;QACH,CAAC,CAAC;YACE,GAAG,MAAM;YACT,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;SAC5B,CAAC;AACR,CAAC"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
2
|
import { type Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
-
import type { WriteTargetSource } from "../conventions/write-protocol.js";
|
|
4
|
-
|
|
3
|
+
import type { WriteTargetSource } from "../kernel/conventions/write-protocol.js";
|
|
4
|
+
import type { Reranker } from "../kernel/engine/retrieval/reranker.js";
|
|
5
|
+
export declare const BASE_SERVER_INSTRUCTIONS = "Oh My Second Brain exposes write, search, link, status, and doctor tools. oms_write and doctor repair operations are gated by a verified vault target (a vault inferred from the current directory is refused); oms_write also enforces vault confinement and contract validation.";
|
|
5
6
|
export declare const omsMcpTools: Tool[];
|
|
6
7
|
export interface OMSMcpServerOptions {
|
|
7
8
|
vault: string;
|
|
9
|
+
/**
|
|
10
|
+
* Real cross-encoder used only for requests that explicitly set
|
|
11
|
+
* `rerank: true`. Without one, those requests fail rather than silently
|
|
12
|
+
* returning the unranked result.
|
|
13
|
+
*/
|
|
14
|
+
reranker?: Reranker;
|
|
8
15
|
/**
|
|
9
16
|
* How the vault was resolved. The write surface trusts every source except
|
|
10
17
|
* `cwd` (the server may have booted in an arbitrary directory - issue #58).
|