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
package/docs/adapters.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Host Asset Contract
|
|
2
|
+
|
|
3
|
+
Oh My Second Brain keeps shared skills in `assets/skills/` and host-specific runtime assets in explicit directories under `assets/`. There is no adapter bundle directory.
|
|
4
|
+
|
|
5
|
+
| Host | Manifest/config | Host assets | Installation destination |
|
|
6
|
+
|---|---|---|---|
|
|
7
|
+
| Claude Code | Root `.claude-plugin/plugin.json` and `.mcp.json` | `assets/claude/CLAUDE.md`, `assets/claude/hooks/` | Plugin root; guard hooks are installed through `~/.claude/settings.json`. |
|
|
8
|
+
| Codex | Root `.codex-plugin/plugin.json` and `.mcp.codex.json` | `assets/codex/AGENTS.md`, `assets/codex/rules/oms.md` | `~/.codex/plugins/oms/AGENTS.md`, `~/.codex/rules/oms.md`, and `~/.codex/skills/oms-*`. |
|
|
9
|
+
| Hermes | `assets/hermes-manifest.json` | `assets/hermes/SOUL.md`, `assets/hermes/README.md` | `~/.hermes/adapters/oms/`, `~/.hermes/skills/knowledge-management/oms/`, and `~/.hermes/config.yaml`. |
|
|
10
|
+
|
|
11
|
+
Claude's manifest retains its explicit skill array; Codex's manifest retains its single shared skill-directory declaration. Both resolve `./assets/skills/` inside the repository-root plugin.
|
|
12
|
+
|
|
13
|
+
The MCP server is started with `oms mcp`. Claude uses `.mcp.json`, Codex uses `.mcp.codex.json`, and Hermes receives its registration in `~/.hermes/config.yaml`.
|
|
14
|
+
|
|
15
|
+
To add a host, add a clearly named `assets/<host>/` directory for host-only files, preserve shared skills in `assets/skills/`, declare every shipped path in the harness registry, and keep installer destinations explicit.
|
package/docs/install.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Install Oh My Second Brain
|
|
2
2
|
|
|
3
|
-
Oh My Second Brain v0 is distributed as one npm/GitHub-release package that contains the CLI/runtime, the default ontology, host
|
|
3
|
+
Oh My Second Brain v0 is distributed as one npm/GitHub-release package that contains the CLI/runtime, the default ontology, root host assets, host-native skill/rule bundles, and shell installers. Claude Code, Codex, and Hermes install Oh My Second Brain host surfaces backed by the same MCP runtime. Legacy runtime IDs remain `oms` for compatibility.
|
|
4
4
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
|
|
@@ -56,14 +56,14 @@ Runtime selection follows the Ouroboros pattern:
|
|
|
56
56
|
1. Explicit `--runtime` wins.
|
|
57
57
|
2. `auto` detects `claude`, `codex`, and `hermes` on `PATH`.
|
|
58
58
|
3. If nothing is detected, `auto` defaults to Claude Code for conservative first-run behavior; use `--runtime all` to install every host surface.
|
|
59
|
-
4. `all` installs every known
|
|
59
|
+
4. `all` installs every known host surface.
|
|
60
60
|
|
|
61
61
|
## What install writes
|
|
62
62
|
|
|
63
63
|
| Host | Install behavior |
|
|
64
64
|
| --- | --- |
|
|
65
65
|
| Claude Code | Installs the plugin-owned `.mcp.json` surface; removes stale `oms` registrations across local/project/user scopes; with `--execute`, adds the OMS marketplace and installs `oms@oms` through it, falling back to the local plugin path when the marketplace flow can't complete. |
|
|
66
|
-
| Codex | Installs `~/.codex/rules/oms.md`, `~/.codex/skills/oms-*`,
|
|
66
|
+
| Codex | Installs `~/.codex/rules/oms.md`, `~/.codex/skills/oms-*`, installs guidance to `~/.codex/plugins/oms`, and writes a managed `[mcp_servers.oms]` block plus `OMS_AGENT_RUNTIME=codex` env in `~/.codex/config.toml`. |
|
|
67
67
|
| Hermes | Installs `~/.hermes/skills/knowledge-management/oms/`, copies adapter files to `~/.hermes/adapters/oms`, and writes `mcp_servers.oms` in `~/.hermes/config.yaml`. |
|
|
68
68
|
|
|
69
69
|
Host writes keep the legacy `oms` namespace for backward-compatible MCP/skill IDs and are reversible with `oh-my-second-brain uninstall` (or the `oms` alias). Each runtime is installed independently: if one host fails, the others still complete.
|
|
@@ -122,8 +122,8 @@ Setup does not modify vault notes. It writes `.oms/taxonomy.yaml`, preserves exi
|
|
|
122
122
|
Typical printed commands look like:
|
|
123
123
|
|
|
124
124
|
```bash
|
|
125
|
-
claude plugin install /path/to/oh-my-second-brain
|
|
126
|
-
# MCP is declared by the installed plugin in
|
|
125
|
+
claude plugin install /path/to/oh-my-second-brain
|
|
126
|
+
# MCP is declared by the installed plugin in .mcp.json.
|
|
127
127
|
```
|
|
128
128
|
|
|
129
129
|
## Uninstall
|
|
@@ -165,7 +165,7 @@ oh-my-second-brain linkify --vault /path/to/vault --folder notes
|
|
|
165
165
|
oh-my-second-brain linkify --vault /path/to/vault --apply --yes
|
|
166
166
|
```
|
|
167
167
|
|
|
168
|
-
Hosts can do the same note by note through
|
|
168
|
+
Hosts can do the same note by note through `oms_link`: its `suggest` operation is read-only and its `apply` operation writes accepted candidates. Nothing is linked behind your back: new notes are composed already linked, and existing notes change only when you ask.
|
|
169
169
|
|
|
170
170
|
## Verify the install
|
|
171
171
|
|
|
@@ -173,11 +173,10 @@ Hosts can do the same note by note through the `oms_link_suggest` (read-only) an
|
|
|
173
173
|
oh-my-second-brain doctor --vault /path/to/vault
|
|
174
174
|
oh-my-second-brain semantic sync --vault /path/to/vault --collection vault
|
|
175
175
|
oh-my-second-brain semantic query "what should I retrieve?" --vault /path/to/vault
|
|
176
|
-
oh-my-second-brain semantic context
|
|
177
|
-
oh-my-second-brain semantic
|
|
178
|
-
oh-my-second-brain semantic doctor --vault /path/to/vault
|
|
176
|
+
oh-my-second-brain semantic context list --vault /path/to/vault
|
|
177
|
+
oh-my-second-brain semantic status --vault /path/to/vault
|
|
179
178
|
oh-my-second-brain install --runtime all --vault /path/to/vault --dry-run
|
|
180
|
-
claude plugin validate
|
|
179
|
+
claude plugin validate .
|
|
181
180
|
```
|
|
182
181
|
|
|
183
|
-
Inside a host runtime, verify the MCP server by listing
|
|
182
|
+
Inside a host runtime, verify the MCP server by listing its five tools: `oms_write`, `oms_search`, `oms_link`, `oms_status`, and `oms_doctor`. `oms_search` provides retrieval operations, `oms_status` is read-only health/statistics, and `oms_doctor` provides diagnosis or repair operations. OMS does not require the `qmd` binary; `oms semantic status` reports semantic-engine availability.
|
package/package.json
CHANGED
|
@@ -1,26 +1,37 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-second-brain",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Oh My Second Brain: a host-agnostic, user-owned convention layer for Obsidian and plain-markdown knowledge vaults.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"bin": {
|
|
8
8
|
"oh-my-second-brain": "dist/cli/oms.js",
|
|
9
9
|
"oms": "dist/cli/oms.js",
|
|
10
|
-
"oms-guard": "
|
|
11
|
-
"oms-post-guard": "
|
|
10
|
+
"oms-guard": "assets/claude/hooks/oms-guard.mjs",
|
|
11
|
+
"oms-post-guard": "assets/claude/hooks/oms-post-guard.mjs"
|
|
12
12
|
},
|
|
13
|
-
"main": "dist/index.js",
|
|
14
|
-
"types": "dist/index.d.ts",
|
|
13
|
+
"main": "dist/kernel/index.js",
|
|
14
|
+
"types": "dist/kernel/index.d.ts",
|
|
15
15
|
"files": [
|
|
16
16
|
"dist",
|
|
17
|
-
"core",
|
|
18
|
-
"
|
|
17
|
+
"core/AGENTS.md",
|
|
18
|
+
"core/ontology",
|
|
19
|
+
".claude-plugin",
|
|
20
|
+
".codex-plugin",
|
|
21
|
+
".mcp.json",
|
|
22
|
+
".mcp.codex.json",
|
|
23
|
+
"assets",
|
|
24
|
+
"docs/adapters.md",
|
|
19
25
|
"docs/install.md",
|
|
20
|
-
"docs/release.md",
|
|
21
26
|
"scripts/install.sh",
|
|
22
27
|
"scripts/uninstall.sh",
|
|
23
|
-
"
|
|
28
|
+
"ACKNOWLEDGMENTS.md",
|
|
29
|
+
"CHANGELOG.md",
|
|
30
|
+
"CHANGELOG-kernel.md",
|
|
31
|
+
"CHANGELOG-cli.md",
|
|
32
|
+
"CHANGELOG-mcp.md",
|
|
33
|
+
"CHANGELOG-vendors.md",
|
|
34
|
+
"CHANGELOG-assets.md"
|
|
24
35
|
],
|
|
25
36
|
"engines": {
|
|
26
37
|
"node": ">=20"
|
|
@@ -30,6 +41,7 @@
|
|
|
30
41
|
"postbuild": "chmod +x dist/cli/oms.js",
|
|
31
42
|
"lint": "tsc -p tsconfig.json --noEmit",
|
|
32
43
|
"test": "vitest run",
|
|
44
|
+
"check:docs": "node scripts/check-doc-mapping.mjs",
|
|
33
45
|
"audit": "npm audit --omit=dev",
|
|
34
46
|
"release": "node scripts/release.mjs",
|
|
35
47
|
"release:pack": "node scripts/release-pack.mjs",
|
package/adapters/README.md
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# Adapter Contract
|
|
2
|
-
|
|
3
|
-
## Principle
|
|
4
|
-
|
|
5
|
-
Oh My Second Brain's **core** (ontology loading, convention validation, graph/search runtime targets, and MCP server) is written once.
|
|
6
|
-
Each **adapter** absorbs exactly one host's structural differences — manifest schema,
|
|
7
|
-
hook format, invocation sigil, and convention-file name — so adding a new host
|
|
8
|
-
means adding one new adapter directory, not touching core.
|
|
9
|
-
|
|
10
|
-
Per-host structural asymmetry is documented here, **not abstracted away**.
|
|
11
|
-
The goal is legibility: when something breaks on one host, you read its adapter,
|
|
12
|
-
not a shared abstraction layer.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Host Comparison Table
|
|
17
|
-
|
|
18
|
-
| Host | Manifest | Convention file | Sigil | Status |
|
|
19
|
-
|------|----------|----------------|-------|--------|
|
|
20
|
-
| **claude-code** | `.claude-plugin/plugin.json` | `CLAUDE.md` | `/` | REAL installable v0 |
|
|
21
|
-
| **codex** | `.codex-plugin/plugin.json` | `AGENTS.md` | `$` | Native skills + MCP install (v0) |
|
|
22
|
-
| **hermes** | `manifest.json` | `SOUL.md` + context files | (built-in tools) | Native skills + MCP install (v0) |
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Adapter Structure
|
|
27
|
-
|
|
28
|
-
Each adapter lives at `adapters/<host>/` and contains:
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
adapters/<host>/
|
|
32
|
-
<manifest-dir>/
|
|
33
|
-
plugin.json # Host-specific manifest (schema varies per host — see below)
|
|
34
|
-
skills/ # Host-specific skill wrappers/bundles
|
|
35
|
-
<verb>/
|
|
36
|
-
SKILL.md
|
|
37
|
-
CLAUDE.md # OR AGENTS.md OR SOUL.md — convention-file shim for this host
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Per-Host Structural Notes
|
|
43
|
-
|
|
44
|
-
### claude-code (REAL installable v0)
|
|
45
|
-
|
|
46
|
-
Release contract: the npm tarball must include `adapters/claude-code/` because `oms setup --install-claude` prints a packaged adapter path for `claude plugin install`.
|
|
47
|
-
|
|
48
|
-
- **Manifest**: `.claude-plugin/plugin.json`
|
|
49
|
-
- Schema: `{ name, version, description, author, license, keywords, skills: string[] }`
|
|
50
|
-
- `skills` is an **array of directory-path strings** relative to the plugin root (e.g. `"./skills/setup/"`).
|
|
51
|
-
- Each path must contain a `SKILL.md`.
|
|
52
|
-
- **Convention file**: `CLAUDE.md` — append `adapters/claude-code/CLAUDE.md` to your project's `CLAUDE.md`.
|
|
53
|
-
- **Sigil**: `/` (e.g. `/oms-setup`).
|
|
54
|
-
- **Hooks**: `oms install --runtime claude` can upsert OMS guard entries in `~/.claude/settings.json` while preserving existing non-OMS hooks.
|
|
55
|
-
- **Install**: `claude plugin install path/to/adapters/claude-code` or point Claude Code at the adapter directory.
|
|
56
|
-
|
|
57
|
-
### codex (native skills + MCP install v0)
|
|
58
|
-
|
|
59
|
-
- **Manifest**: `.codex-plugin/plugin.json`
|
|
60
|
-
- Schema differs from claude-code: codex declares its skill directory and MCP server manifest directly.
|
|
61
|
-
- Skills are invoked with `$` sigil instead of `/`.
|
|
62
|
-
- **Convention file**: `AGENTS.md` — append `adapters/codex/AGENTS.md` to your project's `AGENTS.md`.
|
|
63
|
-
- **Status**: v0 native install. `oms install --runtime codex` installs `~/.codex/rules/oms.md`, namespaced `~/.codex/skills/oms-*`, a managed `[mcp_servers.oms]` block in `~/.codex/config.toml`, and a copy of the adapter under `~/.codex/plugins/oms`.
|
|
64
|
-
|
|
65
|
-
### hermes (native skills + MCP install v0)
|
|
66
|
-
|
|
67
|
-
- **Manifest**: `manifest.json` (Hermes/Nous Research format — schema TBD).
|
|
68
|
-
- Hermes skills register on agentskills.io; no local manifest equivalent exists yet.
|
|
69
|
-
- **Convention file**: `SOUL.md` + context files — append `adapters/hermes/SOUL.md` to your Hermes session context.
|
|
70
|
-
- **Sigil**: N/A (Hermes uses built-in tools + MCP, not a `/`/`$` sigil system).
|
|
71
|
-
- **Status**: v0 native install. `oms install --runtime hermes` installs the skill bundle under `~/.hermes/skills/knowledge-management/oms/`, registers `mcp_servers.oms` in `~/.hermes/config.yaml`, and keeps an adapter copy under `~/.hermes/adapters/oms`.
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## MCP Backbone
|
|
76
|
-
|
|
77
|
-
The cross-host mechanism is an **MCP server** (`src/mcp/server.ts`) that exposes
|
|
78
|
-
contract validation, retrieve, graph/status, and gated write tools.
|
|
79
|
-
|
|
80
|
-
All three hosts natively support MCP (`.mcp.json` for claude-code and codex; "any MCP server" for Hermes).
|
|
81
|
-
In the current repository, `src/mcp/server.ts` starts a real stdio MCP server via `oms mcp`.
|
|
82
|
-
|
|
83
|
-
The MCP server currently exposes status/read/cache/retrieve/write tools:
|
|
84
|
-
`oms_graph_status`, `oms_graph_build`, `oms_list_concepts`,
|
|
85
|
-
`oms_retrieve_context`, `oms_sync_embeddings`, `oms_get_document`, `oms_multi_get_documents`,
|
|
86
|
-
`oms_retrieve_by_axis`, `oms_lazy_load_note`,
|
|
87
|
-
`oms_validate_contract`, and `write`.
|
|
88
|
-
`write` is gated by path-safety, vault-confinement, and contract validation. The CLI (`oms setup`, `oms install`, `oms uninstall`, `oms doctor`) remains the real surface for lifecycle commands.
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Adding a New Host
|
|
93
|
-
|
|
94
|
-
1. Create `adapters/<host>/`.
|
|
95
|
-
2. Write the host-specific manifest in the correct subdirectory and schema.
|
|
96
|
-
3. Write the convention-file shim (`CLAUDE.md` / `AGENTS.md` / `SOUL.md` / whatever the host uses).
|
|
97
|
-
4. Write skill wrappers that shell out to `oms <verb>` (for lifecycle) or call the MCP server (for write/retrieve).
|
|
98
|
-
5. Document the host's structural differences in this table.
|
|
99
|
-
6. Do **not** modify `core/` or add host-specific logic to shared code.
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oms-compile
|
|
3
|
-
description: Agent-guided concept compile — synthesize a concept wiki page from source materials with incremental skip, provenance weighting, and cascade backlinks.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Skill: oms-compile (Claude Code)
|
|
7
|
-
|
|
8
|
-
Synthesize a concept wiki page from source materials.
|
|
9
|
-
|
|
10
|
-
## Invocation
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
/oms-compile
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## What this skill does
|
|
17
|
-
|
|
18
|
-
Thin pointer to `core/skills/compile`. There is no `oms compile` CLI.
|
|
19
|
-
|
|
20
|
-
1. **Phase A** — load and grade materials; resolve backlinks (pure read).
|
|
21
|
-
2. Skip rewrite if the material SHA is unchanged.
|
|
22
|
-
3. **Phase B** — write the body to `processed/` only.
|
|
23
|
-
4. Pass affected backlinks to the wiki skill so those pages can be marked stale.
|
|
24
|
-
|
|
25
|
-
Provenance order: authored > curated > external-raw.
|
|
26
|
-
Use `oms_retrieve_context` or `oms_get_document` to gather source materials.
|
|
27
|
-
Delete `{dotLlmwiki}/sha-cache.json` to force a full recompile.
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oms-define
|
|
3
|
-
description: Grow the vault convention by adding a metadata field to a concept. Entry point is oms define (roadmap).
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Skill: oms-define (Claude Code)
|
|
7
|
-
|
|
8
|
-
Extend your vault convention field-by-field.
|
|
9
|
-
Each frontmatter key is a unit of convention with a declared `intent`, type, and rules.
|
|
10
|
-
|
|
11
|
-
## Invocation
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
/oms-define
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## What this skill does
|
|
18
|
-
|
|
19
|
-
Intended to shell out to:
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
oms define
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
**Roadmap note:** The `oms define` interactive runtime is not yet implemented in v0.
|
|
26
|
-
Today this skill guides you through the same steps manually (agent-guided).
|
|
27
|
-
|
|
28
|
-
## Agent-guided steps (v0)
|
|
29
|
-
|
|
30
|
-
1. Identify which **concept** to extend (e.g. `literature`, `inbox`).
|
|
31
|
-
2. Choose a new **field name** (snake-case, e.g. `thesis`).
|
|
32
|
-
3. State the field's **intent** — why this knowledge matters.
|
|
33
|
-
4. Choose **type**: `string` | `string[]` | `date` | `url` | `boolean`.
|
|
34
|
-
5. Choose **required**: yes / no.
|
|
35
|
-
6. Optionally set **normalize** (e.g. `lowercase`) or **immutable** (lock after creation).
|
|
36
|
-
7. Append the entry to `vault/.oms/concepts/<concept>.yaml`.
|
|
37
|
-
8. Run `oms doctor` to validate existing notes against the updated schema.
|
|
38
|
-
|
|
39
|
-
## YAML snippet to append
|
|
40
|
-
|
|
41
|
-
```yaml
|
|
42
|
-
fields:
|
|
43
|
-
- name: thesis
|
|
44
|
-
type: string
|
|
45
|
-
required: false
|
|
46
|
-
intent: "The central claim this source makes"
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## When the runtime ships
|
|
50
|
-
|
|
51
|
-
`oms define` will run the same Q&A interactively and write the YAML for you.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oms-distill
|
|
3
|
-
description: Standalone meta-absorption skill — analyzes any target (repo, document, skill, concept) in a clean-room context and produces a structured absorption report with patterns, risks, and attribution.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Skill: oms-distill (Claude Code)
|
|
7
|
-
|
|
8
|
-
Run adversarial absorption analysis on a target and produce a structured report.
|
|
9
|
-
|
|
10
|
-
## Invocation
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
/oms-distill <target-path-or-text>
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## What this skill does
|
|
17
|
-
|
|
18
|
-
Thin pointer to `core/skills/distill`. Vault-agnostic — `OMS_VAULT` is NOT
|
|
19
|
-
required. The target is treated as inert read-only text and is never executed.
|
|
20
|
-
|
|
21
|
-
1. Load the target as inert data only.
|
|
22
|
-
2. Snapshot a content hash before analysis.
|
|
23
|
-
3. Run red-team analysis (read-only).
|
|
24
|
-
4. Write the report: §1 Patterns, §2 Risks, §3 Attribution.
|
|
25
|
-
5. Verify the hash is unchanged. Stop if anything mutated.
|
|
26
|
-
6. Return the report string. Write it only if the user explicitly requests it.
|
|
27
|
-
|
|
28
|
-
No vault write occurs inside distill.
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oms-doctor
|
|
3
|
-
description: Validate vault notes against the Oh My Second Brain convention by running oms doctor.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Skill: oms-doctor (Claude Code)
|
|
7
|
-
|
|
8
|
-
Check every note in your vault against its declared concept schema.
|
|
9
|
-
This skill is **REAL in v0** — it shells out to the fully-implemented CLI.
|
|
10
|
-
|
|
11
|
-
## Invocation
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
/oms-doctor
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## What this skill does
|
|
18
|
-
|
|
19
|
-
Shells out to:
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
oms doctor [--vault <path>]
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
The CLI will:
|
|
26
|
-
1. Load `vault/.oms/` and `vault/.oms/taxonomy.yaml`.
|
|
27
|
-
2. Walk every `.md` note in the vault.
|
|
28
|
-
3. Resolve each note's concept from the taxonomy folder binding.
|
|
29
|
-
4. Validate frontmatter fields against the concept schema.
|
|
30
|
-
5. Print per-note violations (field, rule, message) and total counts.
|
|
31
|
-
6. **Always exits 0** — v0 is advisory only (`onViolation: warn`).
|
|
32
|
-
|
|
33
|
-
## Options
|
|
34
|
-
|
|
35
|
-
| Flag | Description |
|
|
36
|
-
|------|-------------|
|
|
37
|
-
| `--vault <path>` | Path to your Obsidian vault root (default: current directory) |
|
|
38
|
-
|
|
39
|
-
## Example
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
oms doctor --vault ~/Documents/MyVault
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Sample output
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
vault/references/attention.md
|
|
49
|
-
WARN title required Field "title" is required but missing
|
|
50
|
-
WARN source-url type Expected url, got string
|
|
51
|
-
|
|
52
|
-
Checked 12 notes. 2 violations found. (exits 0)
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Roadmap
|
|
56
|
-
|
|
57
|
-
Doctor is fully real in v0. Run it after any `oms setup`, `oms define`,
|
|
58
|
-
or bulk note edit to keep your vault clean.
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oms-link
|
|
3
|
-
description: Two-path note-linking skill — Path A (pre-write): compose a new note body that already carries [[wikilinks]] to existing term notes; Path B (retrofit): add missing links to existing notes via oms linkify or oms_link_apply.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Skill: oms-link (Claude Code)
|
|
7
|
-
|
|
8
|
-
Two-path skill — thin pointer to `core/skills/link`. Requires `OMS_VAULT`.
|
|
9
|
-
|
|
10
|
-
## Invocation
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
/link
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## Which path?
|
|
17
|
-
|
|
18
|
-
Check **before acting**:
|
|
19
|
-
- **Path A (pre-write):** you are about to write the note → learn the term
|
|
20
|
-
vocabulary first, then draft a body that already contains `[[wikilinks]]`.
|
|
21
|
-
- **Path B (retrofit):** the note already exists → `oms linkify` or
|
|
22
|
-
MCP `oms_link_suggest` → `oms_link_apply`.
|
|
23
|
-
|
|
24
|
-
These paths are **mutually exclusive**.
|
|
25
|
-
|
|
26
|
-
## The link universe
|
|
27
|
-
|
|
28
|
-
Only notes bound to the `term` concept in `vault/.oms/taxonomy.yaml` are link
|
|
29
|
-
targets; their surface forms are the basename and the frontmatter `aliases`.
|
|
30
|
-
`0 term note(s) available as link targets` means the vault has no term layer —
|
|
31
|
-
build one with the `wiki` skill first.
|
|
32
|
-
|
|
33
|
-
Three engine rules, not negotiable:
|
|
34
|
-
- **Surface-anchored** — a link exists only where the term literally appears.
|
|
35
|
-
- **First occurrence only** — one link per target note per body.
|
|
36
|
-
- **Ambiguity is reported, never resolved** — `ambiguous: true` plus `rivalPaths`
|
|
37
|
-
means ask the user or skip the span.
|
|
38
|
-
|
|
39
|
-
Frontmatter, code, existing links, headings, URLs, and tags are masked out; a
|
|
40
|
-
"missing" link inside any of them is correct.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Path A — pre-write linking
|
|
45
|
-
|
|
46
|
-
*(Only while drafting, so no retrofit pass is ever needed for this note.)*
|
|
47
|
-
|
|
48
|
-
### Agent-guided steps
|
|
49
|
-
|
|
50
|
-
1. Call MCP `oms_link_suggest` on an existing note in the same folder (or
|
|
51
|
-
`oms linkify --folder <folder>` in report mode) and read the `targetPath`
|
|
52
|
-
list — that is the vault's current term vocabulary.
|
|
53
|
-
2. Draft the body with those exact surface forms, writing `[[wikilinks]]` inline
|
|
54
|
-
at the first mention of each term.
|
|
55
|
-
3. Commit via MCP `write`. Host `Write`/`Edit` never touches vault `.md`.
|
|
56
|
-
4. Re-check with `oms_link_suggest`; zero candidates means the draft was already
|
|
57
|
-
fully linked.
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## Path B — retrofit existing notes
|
|
62
|
-
|
|
63
|
-
*(Only when the note is already on disk. Report first, always.)*
|
|
64
|
-
|
|
65
|
-
### Batch
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
oms linkify --folder notes # report only, writes nothing
|
|
69
|
-
oms linkify --folder notes --apply --yes # rewrite in place
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
`--apply` without `--yes` refuses before reading any note and writes nothing.
|
|
73
|
-
Show the report and get agreement before adding `--yes`. Writes go through the
|
|
74
|
-
capture kernel, so path safety and the concept contract hold.
|
|
75
|
-
|
|
76
|
-
### Single note
|
|
77
|
-
|
|
78
|
-
1. `oms_link_suggest { notePath, folder? }` → candidates + `baseContentHash`.
|
|
79
|
-
2. Present the candidates; drop ambiguous ones the user does not resolve.
|
|
80
|
-
3. `oms_link_apply { notePath, baseContentHash, candidateIds, folder? }` — pass
|
|
81
|
-
back the same `baseContentHash` and the same `folder` scope.
|
|
82
|
-
|
|
83
|
-
`oms_link_apply` refuses without writing on `note-changed`, `candidate-drift`,
|
|
84
|
-
or overlapping candidates. Re-run `oms_link_suggest` for fresh offsets instead
|
|
85
|
-
of retrying stale ids.
|
|
86
|
-
|
|
87
|
-
After a retrofit run, run `oms doctor` (non-blocking, exits 0).
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oms-retrieve
|
|
3
|
-
description: Retrieve knowledge from the vault through declared Oh My Second Brain retrieval views and axes (agent-guided; runtime is roadmap).
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Skill: oms-retrieve (Claude Code)
|
|
7
|
-
|
|
8
|
-
Surface the right notes and fields for a given purpose using the vault's declared retrieval axes and views (인출).
|
|
9
|
-
|
|
10
|
-
## Invocation
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
/oms-retrieve
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## What this skill does
|
|
17
|
-
|
|
18
|
-
Conceptually shells out to:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
oms retrieve
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
**Runtime note:** Retrieval is available through MCP tools. Prefer
|
|
25
|
-
`oms_retrieve_context` for live graph + semantic context retrieval, use
|
|
26
|
-
`oms_sync_embeddings` when the native semantic index must be refreshed, then
|
|
27
|
-
`oms_get_document` or `oms_multi_get_documents` for selected semantic evidence
|
|
28
|
-
or `oms_semantic_query`/`oms_semantic_status` for qmd-compatible follow-ups,
|
|
29
|
-
and `oms_lazy_load_note` for selected vault-note bodies. `oms_retrieve_by_axis`
|
|
30
|
-
remains available for legacy cache-backed axis retrieval.
|
|
31
|
-
|
|
32
|
-
## Typed query interface
|
|
33
|
-
|
|
34
|
-
Pass `semanticSearches` to issue typed sub-queries in a single call:
|
|
35
|
-
|
|
36
|
-
| type | behaviour |
|
|
37
|
-
|---------|--------------------------------------------------|
|
|
38
|
-
| `lex` | BM25 keyword search (exact terms, fast) |
|
|
39
|
-
| `vec` | SQLite-vector semantic search (meaning-based) |
|
|
40
|
-
| `hyde` | Hypothetical-document expansion before search |
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
-
semanticSearches: [
|
|
44
|
-
{ type: "lex", query: "transformer attention" },
|
|
45
|
-
{ type: "vec", query: "self-attention replaces recurrence" },
|
|
46
|
-
{ type: "hyde", query: "a paper about attention mechanisms" }
|
|
47
|
-
]
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Use `semanticScope: "global"` (default) for vault-wide semantic search.
|
|
51
|
-
Use `semanticScope: "graph"` (**gph mode**) to confine semantic candidates
|
|
52
|
-
to the set already selected by the OMS graph traversal.
|
|
53
|
-
|
|
54
|
-
## Agent-guided steps (v0)
|
|
55
|
-
|
|
56
|
-
1. Clarify the user's **retrieval purpose** (synthesize, audit, plan, review, etc.).
|
|
57
|
-
2. Narrow by declared **folder/concept/property/wikilink axes** where possible.
|
|
58
|
-
3. Match the purpose to a declared **retrieval view** (`lenses` in YAML) in `vault/.oms/concepts/*.yaml`.
|
|
59
|
-
4. Call MCP `oms_retrieve_context` with the best available axes and query.
|
|
60
|
-
5. Choose semantic scope: `semanticScope: "global"` for broad vault-wide search;
|
|
61
|
-
`semanticScope: "graph"` (gph mode) when candidates must stay inside the
|
|
62
|
-
selected graph neighbors. Pass typed sub-queries via `semanticSearches`
|
|
63
|
-
using `lex`, `vec`, or `hyde` types as appropriate.
|
|
64
|
-
Pass `semanticMode`, `semanticIntent`, `semanticLex`, `semanticVec`,
|
|
65
|
-
`semanticHyde`, and `semanticMinScore` for additional control.
|
|
66
|
-
Set `embeddingSyncBeforeSearch: true` only when the native semantic
|
|
67
|
-
index must be refreshed before retrieval.
|
|
68
|
-
6. Use `oms_sync_embeddings` for explicit update/embed sync.
|
|
69
|
-
7. Use `oms_semantic_query`, `oms_semantic_status`, `oms_semantic_collections`,
|
|
70
|
-
or `oms_semantic_contexts` for qmd-compatible follow-ups on the native OMS index.
|
|
71
|
-
8. Use read-only `oms_get_document` or `oms_multi_get_documents` to rehydrate
|
|
72
|
-
selected docids, paths, globs, or line ranges.
|
|
73
|
-
9. For each note, return the retrieval-view fields and lazy-load body only when needed.
|
|
74
|
-
10. Return results grouped by concept/folder with retrieval-view frontmatter.
|
|
75
|
-
|
|
76
|
-
## Example
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
Purpose: "Synthesize my transformer papers"
|
|
80
|
-
|
|
81
|
-
→ concept: literature
|
|
82
|
-
→ view: synthesis (YAML key: lenses; fields: [title, thesis, source-url])
|
|
83
|
-
→ scan: vault/references/*.md
|
|
84
|
-
→ output:
|
|
85
|
-
|
|
86
|
-
| title | thesis | source-url |
|
|
87
|
-
|-------|--------|------------|
|
|
88
|
-
| Attention Is All You Need | Self-attention replaces recurrence | https://arxiv.org/abs/1706.03762 |
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## Runtime
|
|
92
|
-
|
|
93
|
-
Use MCP `oms_retrieve_context` for live graph/semantic retrieval. Pass typed
|
|
94
|
-
sub-queries via `semanticSearches` (types: `lex`, `vec`, `hyde`).
|
|
95
|
-
Use `semanticScope: "graph"` (gph mode) to confine semantic candidates to
|
|
96
|
-
graph neighbors. Use MCP `oms_sync_embeddings` for native semantic-index sync.
|
|
97
|
-
Use MCP `oms_get_document` or `oms_multi_get_documents` for document rehydration.
|
|
98
|
-
Use MCP `oms_retrieve_by_axis` only for legacy axis-first cache retrieval.
|
|
99
|
-
Use MCP `oms_lazy_load_note` only after selecting candidate notes.
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oms-setup
|
|
3
|
-
description: Adopt an existing Obsidian vault into the Oh My Second Brain convention by running oms setup.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Skill: oms-setup (Claude Code)
|
|
7
|
-
|
|
8
|
-
Adopt your Obsidian vault into the Oh My Second Brain convention.
|
|
9
|
-
This skill is **REAL in v0** — it shells out to the fully-implemented CLI.
|
|
10
|
-
|
|
11
|
-
## Invocation
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
/oms-setup
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## What this skill does
|
|
18
|
-
|
|
19
|
-
Shells out to:
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
oms setup [--vault <path>] [--yes] [--suggest-fields] [--install-claude]
|
|
23
|
-
oms install [--runtime <auto|all|claude|codex|hermes>] [--vault <path>] [--dry-run] [--execute] [--yes]
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
The CLI will:
|
|
27
|
-
1. Scan your vault's existing top-level folders (does NOT impose a structure).
|
|
28
|
-
2. Interactively ask each folder's intent and concept binding (use `--yes` to accept defaults).
|
|
29
|
-
3. Summarize observed frontmatter fields without changing notes.
|
|
30
|
-
4. Optionally add selected observed fields to concept schemas with `--suggest-fields`.
|
|
31
|
-
5. Ask for retrieval lenses and reject lenses that reference unknown fields.
|
|
32
|
-
6. Write `vault/.oms/taxonomy.yaml` and preserve existing `vault/.oms/concepts/` files while adding missing defaults.
|
|
33
|
-
|
|
34
|
-
## Options
|
|
35
|
-
|
|
36
|
-
| Flag | Description |
|
|
37
|
-
|------|-------------|
|
|
38
|
-
| `--vault <path>` | Path to your Obsidian vault root (default: current directory) |
|
|
39
|
-
| `--yes` | Non-interactive: accept all defaults, no prompts |
|
|
40
|
-
| `--suggest-fields` | Merge observed note frontmatter fields into concept schemas without mutating notes. |
|
|
41
|
-
| `--install-claude` | Legacy setup-only dry-run that prints the Claude Code plugin install command and plugin-owned MCP asset. |
|
|
42
|
-
| `install --runtime <name>` | Install host adapter/MCP registration for `auto`, `all`, `claude`, `codex`, or `hermes`. |
|
|
43
|
-
| `install --dry-run` | Preview host writes without mutating config. |
|
|
44
|
-
| `install --execute` | Allow external host CLIs such as `claude plugin install` to run when available. |
|
|
45
|
-
|
|
46
|
-
## Example
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
# Interactive (recommended first run):
|
|
50
|
-
oms setup --vault ~/Documents/MyVault
|
|
51
|
-
|
|
52
|
-
# Interactive setup with observed frontmatter field suggestions:
|
|
53
|
-
oms setup --vault ~/Documents/MyVault --suggest-fields
|
|
54
|
-
|
|
55
|
-
# Non-interactive (CI / scripted):
|
|
56
|
-
oms setup --vault ~/Documents/MyVault --yes
|
|
57
|
-
|
|
58
|
-
# Preview all host adapter installs:
|
|
59
|
-
oms install --runtime all --vault ~/Documents/MyVault --dry-run
|
|
60
|
-
|
|
61
|
-
# Install all host adapter/MCP registrations:
|
|
62
|
-
oms install --runtime all --vault ~/Documents/MyVault --yes
|
|
63
|
-
|
|
64
|
-
# Also run external host CLIs where available:
|
|
65
|
-
oms install --runtime claude --vault ~/Documents/MyVault --yes --execute
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## After setup
|
|
69
|
-
|
|
70
|
-
Run `/oms-doctor` to validate your existing notes against the convention.
|
|
71
|
-
|
|
72
|
-
## Roadmap
|
|
73
|
-
|
|
74
|
-
Setup plus `oms install`/`oms uninstall` host lifecycle commands are real and release-gated by unpacked npm tarball smoke tests. The plugin-owned MCP asset starts
|
|
75
|
-
the status/read/cache/retrieve/write runtime (`oms_graph_status`, `oms_graph_build`,
|
|
76
|
-
`oms_list_concepts`, `oms_retrieve_context`, `oms_retrieve_by_axis`,
|
|
77
|
-
`oms_lazy_load_note`, `oms_validate_contract`, `write`).
|
|
78
|
-
`write` is gated by path-safety and the kernel-owned contract.
|