oh-my-second-brain 0.15.0 → 0.16.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 +2 -2
- package/.claude-plugin/plugin.json +5 -3
- package/.codex-plugin/plugin.json +2 -2
- package/ACKNOWLEDGMENTS.md +20 -0
- package/CHANGELOG-assets.md +7 -0
- package/CHANGELOG-cli.md +4 -0
- package/CHANGELOG-kernel.md +9 -0
- package/CHANGELOG-mcp.md +4 -0
- package/CHANGELOG-vendors.md +5 -0
- package/CHANGELOG.md +3 -0
- package/README.ko.md +38 -114
- package/README.md +37 -104
- package/agents/oms-reviewer.md +57 -0
- package/assets/claude/CLAUDE.md +58 -24
- package/assets/codex/AGENTS.md +50 -15
- package/assets/codex/agents/oms-reviewer.toml +68 -0
- package/assets/codex/rules/oms.md +35 -44
- package/assets/hermes/README.md +15 -1
- package/assets/hermes/SOUL.md +70 -37
- package/assets/hermes-manifest.json +2 -2
- package/assets/skills/distill/SKILL.md +6 -8
- package/assets/skills/doctor/SKILL.md +12 -12
- package/assets/skills/interview/SKILL.md +88 -0
- package/assets/skills/link/SKILL.md +14 -17
- package/assets/skills/search/SKILL.md +9 -21
- package/assets/skills/status/SKILL.md +9 -21
- package/assets/skills/template/SKILL.md +19 -51
- package/assets/skills/write/SKILL.md +56 -74
- package/dist/cli/args.d.ts +0 -1
- package/dist/cli/args.js +3 -8
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/audit.js +17 -9
- package/dist/cli/audit.js.map +1 -1
- package/dist/cli/host-probe.js +52 -3
- package/dist/cli/host-probe.js.map +1 -1
- package/dist/cli/link-command.js +27 -48
- package/dist/cli/link-command.js.map +1 -1
- package/dist/cli/note-command.js +156 -101
- package/dist/cli/note-command.js.map +1 -1
- package/dist/cli/oms.js +2 -3
- package/dist/cli/oms.js.map +1 -1
- package/dist/cli/setup-command.d.ts +0 -1
- package/dist/cli/setup-command.js +11 -68
- package/dist/cli/setup-command.js.map +1 -1
- package/dist/cli/status-command.js +14 -1
- package/dist/cli/status-command.js.map +1 -1
- package/dist/cli/template-command.js +62 -169
- package/dist/cli/template-command.js.map +1 -1
- package/dist/cli/usage.js +11 -21
- package/dist/cli/usage.js.map +1 -1
- package/dist/kernel/capture/check.d.ts +92 -0
- package/dist/kernel/capture/check.js +375 -0
- package/dist/kernel/capture/check.js.map +1 -0
- package/dist/kernel/capture/guidance.d.ts +108 -0
- package/dist/kernel/capture/guidance.js +373 -0
- package/dist/kernel/capture/guidance.js.map +1 -0
- package/dist/kernel/capture/safe.d.ts +20 -44
- package/dist/kernel/capture/safe.js +40 -571
- package/dist/kernel/capture/safe.js.map +1 -1
- package/dist/kernel/contracts/index.d.ts +1 -1
- package/dist/kernel/conventions/completion-contract.d.ts +225 -0
- package/dist/kernel/conventions/completion-contract.js +760 -0
- package/dist/kernel/conventions/completion-contract.js.map +1 -0
- package/dist/kernel/conventions/frontmatter.js +17 -1
- package/dist/kernel/conventions/frontmatter.js.map +1 -1
- package/dist/kernel/conventions/note-exclude.d.ts +3 -3
- package/dist/kernel/conventions/note-exclude.js +28 -14
- package/dist/kernel/conventions/note-exclude.js.map +1 -1
- package/dist/kernel/conventions/write-contract.d.ts +4 -5
- package/dist/kernel/conventions/write-contract.js +24 -29
- package/dist/kernel/conventions/write-contract.js.map +1 -1
- package/dist/kernel/engine/embed/provider.js +15 -2
- package/dist/kernel/engine/embed/provider.js.map +1 -1
- package/dist/kernel/engine/embed/store.d.ts +1 -1
- package/dist/kernel/engine/embed/store.js +44 -3
- package/dist/kernel/engine/embed/store.js.map +1 -1
- package/dist/kernel/engine/graph/builder.d.ts +10 -9
- package/dist/kernel/engine/graph/builder.js +211 -74
- package/dist/kernel/engine/graph/builder.js.map +1 -1
- package/dist/kernel/engine/graph/node.d.ts +19 -4
- package/dist/kernel/engine/graph/node.js +41 -11
- package/dist/kernel/engine/graph/node.js.map +1 -1
- package/dist/kernel/engine/mcp/facade.js +65 -42
- package/dist/kernel/engine/mcp/facade.js.map +1 -1
- package/dist/kernel/engine/retrieval/taxonomy-context.d.ts +1 -1
- package/dist/kernel/engine/retrieval/taxonomy-context.js +15 -9
- package/dist/kernel/engine/retrieval/taxonomy-context.js.map +1 -1
- package/dist/kernel/engine/retrieval/template-source.d.ts +14 -0
- package/dist/kernel/engine/retrieval/template-source.js +94 -0
- package/dist/kernel/engine/retrieval/template-source.js.map +1 -0
- package/dist/kernel/engine/tracer.js +5 -5
- package/dist/kernel/engine/tracer.js.map +1 -1
- package/dist/kernel/graph/explore.d.ts +3 -1
- package/dist/kernel/graph/explore.js +8 -6
- package/dist/kernel/graph/explore.js.map +1 -1
- package/dist/kernel/harness/reviewer.d.ts +18 -0
- package/dist/kernel/harness/reviewer.js +62 -0
- package/dist/kernel/harness/reviewer.js.map +1 -0
- package/dist/kernel/harness/surface-registry.d.ts +29 -1
- package/dist/kernel/harness/surface-registry.js +85 -52
- package/dist/kernel/harness/surface-registry.js.map +1 -1
- package/dist/kernel/harness/validation.d.ts +2 -2
- package/dist/kernel/harness/validation.js +201 -2
- package/dist/kernel/harness/validation.js.map +1 -1
- package/dist/kernel/install/asset-health.d.ts +52 -1
- package/dist/kernel/install/asset-health.js +253 -1
- package/dist/kernel/install/asset-health.js.map +1 -1
- package/dist/kernel/install/provenance.d.ts +8 -0
- package/dist/kernel/install/provenance.js +17 -0
- package/dist/kernel/install/provenance.js.map +1 -1
- package/dist/kernel/link/workflow.d.ts +24 -37
- package/dist/kernel/link/workflow.js +77 -63
- package/dist/kernel/link/workflow.js.map +1 -1
- package/dist/kernel/search/morning-test-fixtures.d.ts +5 -0
- package/dist/kernel/search/morning-test-fixtures.js +63 -17
- package/dist/kernel/search/morning-test-fixtures.js.map +1 -1
- package/dist/kernel/setup/documents.d.ts +29 -23
- package/dist/kernel/setup/documents.js +19 -14
- package/dist/kernel/setup/documents.js.map +1 -1
- package/dist/kernel/setup/service.d.ts +20 -21
- package/dist/kernel/setup/service.js +134 -31
- package/dist/kernel/setup/service.js.map +1 -1
- package/dist/kernel/templates/approved-vault-fixture.d.ts +40 -0
- package/dist/kernel/templates/approved-vault-fixture.js +84 -0
- package/dist/kernel/templates/approved-vault-fixture.js.map +1 -0
- package/dist/kernel/templates/axes.d.ts +23 -8
- package/dist/kernel/templates/axes.js +138 -40
- package/dist/kernel/templates/axes.js.map +1 -1
- package/dist/kernel/templates/canonical.d.ts +9 -10
- package/dist/kernel/templates/canonical.js +62 -132
- package/dist/kernel/templates/canonical.js.map +1 -1
- package/dist/kernel/templates/census.d.ts +55 -32
- package/dist/kernel/templates/census.js +406 -570
- package/dist/kernel/templates/census.js.map +1 -1
- package/dist/kernel/templates/content-contract.d.ts +11 -153
- package/dist/kernel/templates/content-contract.js +125 -549
- package/dist/kernel/templates/content-contract.js.map +1 -1
- package/dist/kernel/templates/defaults.d.ts +7 -17
- package/dist/kernel/templates/defaults.js +75 -119
- package/dist/kernel/templates/defaults.js.map +1 -1
- package/dist/kernel/templates/doctor.d.ts +12 -13
- package/dist/kernel/templates/doctor.js +73 -254
- package/dist/kernel/templates/doctor.js.map +1 -1
- package/dist/kernel/templates/index.d.ts +14 -21
- package/dist/kernel/templates/index.js +9 -10
- package/dist/kernel/templates/index.js.map +1 -1
- package/dist/kernel/templates/interview-ledger.d.ts +6 -8
- package/dist/kernel/templates/interview-ledger.js +33 -19
- package/dist/kernel/templates/interview-ledger.js.map +1 -1
- package/dist/kernel/templates/interview-service.d.ts +23 -14
- package/dist/kernel/templates/interview-service.js +389 -229
- package/dist/kernel/templates/interview-service.js.map +1 -1
- package/dist/kernel/templates/interview.d.ts +124 -19
- package/dist/kernel/templates/interview.js +512 -749
- package/dist/kernel/templates/interview.js.map +1 -1
- package/dist/kernel/templates/note-index.d.ts +47 -15
- package/dist/kernel/templates/note-index.js +192 -64
- package/dist/kernel/templates/note-index.js.map +1 -1
- package/dist/kernel/templates/operations.d.ts +7 -3
- package/dist/kernel/templates/operations.js +1 -115
- package/dist/kernel/templates/operations.js.map +1 -1
- package/dist/kernel/templates/paths.d.ts +5 -2
- package/dist/kernel/templates/paths.js +40 -2
- package/dist/kernel/templates/paths.js.map +1 -1
- package/dist/kernel/templates/policy.d.ts +42 -87
- package/dist/kernel/templates/policy.js +641 -433
- package/dist/kernel/templates/policy.js.map +1 -1
- package/dist/kernel/templates/resolver.d.ts +45 -59
- package/dist/kernel/templates/resolver.js +372 -956
- package/dist/kernel/templates/resolver.js.map +1 -1
- package/dist/kernel/templates/review-context.d.ts +24 -19
- package/dist/kernel/templates/review-context.js +48 -194
- package/dist/kernel/templates/review-context.js.map +1 -1
- package/dist/kernel/templates/transaction.d.ts +26 -21
- package/dist/kernel/templates/transaction.js +716 -487
- package/dist/kernel/templates/transaction.js.map +1 -1
- package/dist/kernel/templates/types.d.ts +165 -268
- package/dist/kernel/templates/types.js +2 -1
- package/dist/kernel/templates/types.js.map +1 -1
- package/dist/mcp/link-tools.d.ts +14 -17
- package/dist/mcp/link-tools.js +23 -11
- package/dist/mcp/link-tools.js.map +1 -1
- package/dist/mcp/server.js +115 -281
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/template-notice.d.ts +6 -5
- package/dist/mcp/template-notice.js +23 -62
- package/dist/mcp/template-notice.js.map +1 -1
- package/dist/vendors/claude/hook/post-tool-use.d.ts +5 -2
- package/dist/vendors/claude/hook/post-tool-use.js +20 -18
- package/dist/vendors/claude/hook/post-tool-use.js.map +1 -1
- package/dist/vendors/codex/codex.js +264 -32
- package/dist/vendors/codex/codex.js.map +1 -1
- package/dist/vendors/hermes/hermes.js +1 -1
- package/dist/vendors/hermes/hermes.js.map +1 -1
- package/docs/adapters.md +28 -36
- package/docs/architecture.md +74 -116
- package/docs/cli-map.md +33 -55
- package/docs/conventions.md +53 -201
- package/docs/install.md +34 -136
- package/docs/verified-target.md +15 -21
- package/package.json +2 -1
- package/skills/distill/SKILL.md +6 -8
- package/skills/doctor/SKILL.md +12 -12
- package/skills/interview/SKILL.md +88 -0
- package/skills/link/SKILL.md +14 -17
- package/skills/search/SKILL.md +9 -21
- package/skills/status/SKILL.md +9 -21
- package/skills/template/SKILL.md +19 -51
- package/skills/write/SKILL.md +56 -74
- package/dist/cli/linkify.d.ts +0 -22
- package/dist/cli/linkify.js +0 -63
- package/dist/cli/linkify.js.map +0 -1
- package/dist/kernel/templates/compose-add.d.ts +0 -27
- package/dist/kernel/templates/compose-add.js +0 -29
- package/dist/kernel/templates/compose-add.js.map +0 -1
- package/dist/kernel/templates/contract-from-notes.d.ts +0 -32
- package/dist/kernel/templates/contract-from-notes.js +0 -285
- package/dist/kernel/templates/contract-from-notes.js.map +0 -1
- package/dist/kernel/templates/extract.d.ts +0 -30
- package/dist/kernel/templates/extract.js +0 -143
- package/dist/kernel/templates/extract.js.map +0 -1
- package/dist/kernel/templates/migration.d.ts +0 -62
- package/dist/kernel/templates/migration.js +0 -548
- package/dist/kernel/templates/migration.js.map +0 -1
- package/dist/kernel/templates/naming.d.ts +0 -10
- package/dist/kernel/templates/naming.js +0 -47
- package/dist/kernel/templates/naming.js.map +0 -1
- package/dist/kernel/templates/obsidian-core-time.d.ts +0 -19
- package/dist/kernel/templates/obsidian-core-time.js +0 -82
- package/dist/kernel/templates/obsidian-core-time.js.map +0 -1
- package/dist/kernel/templates/reconcile.d.ts +0 -12
- package/dist/kernel/templates/reconcile.js +0 -434
- package/dist/kernel/templates/reconcile.js.map +0 -1
- package/dist/kernel/templates/renderer.d.ts +0 -12
- package/dist/kernel/templates/renderer.js +0 -67
- package/dist/kernel/templates/renderer.js.map +0 -1
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"name": "oms",
|
|
12
12
|
"description": "Oh My Second Brain convention layer for Obsidian vaults — capture, retrieve, and validate knowledge under a declared semantic convention.",
|
|
13
|
-
"version": "0.
|
|
13
|
+
"version": "0.16.0",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "gobeumsu",
|
|
16
16
|
"email": "gobeumsu@gmail.com"
|
|
@@ -37,5 +37,5 @@
|
|
|
37
37
|
]
|
|
38
38
|
}
|
|
39
39
|
],
|
|
40
|
-
"version": "0.
|
|
40
|
+
"version": "0.16.0"
|
|
41
41
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oms",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Oh My Second Brain convention layer for Obsidian vaults —
|
|
3
|
+
"version": "0.16.0",
|
|
4
|
+
"description": "Oh My Second Brain convention layer for Obsidian vaults — eight shared skills and five MCP tools under a user-owned contract.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "gobeumsu"
|
|
7
7
|
},
|
|
@@ -17,10 +17,12 @@
|
|
|
17
17
|
"skills": [
|
|
18
18
|
"./assets/skills/distill/",
|
|
19
19
|
"./assets/skills/doctor/",
|
|
20
|
+
"./assets/skills/interview/",
|
|
20
21
|
"./assets/skills/link/",
|
|
21
22
|
"./assets/skills/search/",
|
|
22
23
|
"./assets/skills/status/",
|
|
23
24
|
"./assets/skills/template/",
|
|
24
25
|
"./assets/skills/write/"
|
|
25
|
-
]
|
|
26
|
+
],
|
|
27
|
+
"agents": ["./agents/oms-reviewer.md"]
|
|
26
28
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oms",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Oh My Second Brain convention layer for Obsidian vaults — Codex native rules, skills, and MCP adapter.",
|
|
5
|
-
"_note": "oms host install writes Codex MCP config and provenance, installs ~/.codex/rules/oms.md, and installs the
|
|
5
|
+
"_note": "oms host install writes Codex MCP config and provenance, installs ~/.codex/rules/oms.md, and installs the eight shared skills under ~/.codex/skills/oms-*.",
|
|
6
6
|
"skills": "./assets/skills/",
|
|
7
7
|
"mcpServers": "./.mcp.codex.json"
|
|
8
8
|
}
|
package/ACKNOWLEDGMENTS.md
CHANGED
|
@@ -6,6 +6,26 @@ oh-my-secondbrain은 아래 공개 작업들의 아이디어와 구현에 빚지
|
|
|
6
6
|
> 우리가 무엇을 흡수했는지(설계 로직·근거)는 `docs/research/*` 에 기록한다.
|
|
7
7
|
> 관리 규칙: [`docs/rules/external-attribution.md`](https://github.com/GoBeromsu/oh-my-second-brain/blob/main/docs/rules/external-attribution.md)
|
|
8
8
|
|
|
9
|
+
## 계약·평가·인터뷰 설계
|
|
10
|
+
|
|
11
|
+
### Ouroboros
|
|
12
|
+
|
|
13
|
+
- **저자 / 기여자**: Q00와 Ouroboros 기여자
|
|
14
|
+
- **URL**: https://github.com/Q00/ouroboros
|
|
15
|
+
- **라이선스**: [MIT](https://github.com/Q00/ouroboros/blob/main/LICENSE)
|
|
16
|
+
- **흡수 종류**: absorbed logic — 설계 아이디어 참고, 코드 직접 이식 없음
|
|
17
|
+
- **배운 점**: 명시적 계약, 작성과 평가의 책임 분리, 기계 검사와 의미 평가의 구분, 실제 산출물의 근거에 기반한 완료 판정.
|
|
18
|
+
- **감사**: Ouroboros의 계약 중심 설계와 단계적 검증에서 많은 것을 배웠다. 그 배움을 사용자가 자신의 지식 체계와 정책을 소유하는 OMS의 철학으로 구체화할 수 있도록 공개해 주신 프로젝트와 기여자분들께 진심으로 감사드린다.
|
|
19
|
+
|
|
20
|
+
### Gajae Code
|
|
21
|
+
|
|
22
|
+
- **저자 / 기여자**: Yeachan-Heo와 Gajae Code 기여자
|
|
23
|
+
- **URL**: https://github.com/Yeachan-Heo/gajae-code
|
|
24
|
+
- **라이선스**: [MIT](https://github.com/Yeachan-Heo/gajae-code/blob/main/LICENSE)
|
|
25
|
+
- **흡수 종류**: absorbed logic — 인터뷰 상호작용 설계 참고, 코드 직접 이식 없음
|
|
26
|
+
- **배운 점**: [deep-interview](https://github.com/Yeachan-Heo/gajae-code/blob/main/packages/coding-agent/src/defaults/gjc/skills/deep-interview/SKILL.md)의 맥락 사전 확인, 한 번에 한 질문, 자유답변의 의도 확인, 결정 기록과 최종 승인.
|
|
27
|
+
- **감사**: 사용자에게 같은 설명을 반복하게 하기보다 이미 표현한 의도를 정리하고 필요한 결정만 확인하는 인터뷰 방식에서 배웠다. OMS의 설정·계약 인터뷰를 구체화하는 데 도움을 준 공개 작업에 감사드린다.
|
|
28
|
+
|
|
9
29
|
## LLM-Wiki 패턴 & 구현체
|
|
10
30
|
|
|
11
31
|
- https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f
|
package/CHANGELOG-assets.md
CHANGED
|
@@ -4,6 +4,13 @@ Skills, agents, templates, and host guidance changes belong here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.16.0] - 2026-09-23
|
|
8
|
+
- Live host-facing docs no longer show a copyable `interview-next` call without `proposals`. Confirming the template notice still starts that mode, but the same proposals array must reach review, answer, and commit.
|
|
9
|
+
- Search, status, and write skills now say `templateNotice.next` is a mode hint, not a replayable `interview-next` CallToolRequest.
|
|
10
|
+
|
|
11
|
+
- Eight shared skills now include a tool-less contract interview. Guidance separates agent-owned note writing from OMS guidance, saved-file checks, and completion using a separate reviewer; search and ordinary note errors do not start configuration interviews. Generated GJC mirrors share the authored skill bytes.
|
|
12
|
+
- Reviewer guidance distinguishes host claims, agent transcription, and OMS-computed digests. Matching role-definition bytes is not proof of a separate launch, enforced tool restrictions, or whole-vault immutability.
|
|
13
|
+
|
|
7
14
|
## [0.15.0] - 2026-09-19
|
|
8
15
|
|
|
9
16
|
- **Host guidance now teaches selected-folder template sources instead of per-file registration or folder modes.** It documents the exact `템플릿에 변경이 있습니다` / `확인하기` / `나중에` notice, host-only deferral, long-lived `templateNotice` results, and the resumable `interview-next` → `interview-answer` → `commit-contracts` flow that publishes only user-confirmed controls. Placement is write-time only (explicit destination, then taxonomy default, then `ask`); source review preserves Markdown bytes and does not invent a registration prerequisite, widget, or host configuration.
|
package/CHANGELOG-cli.md
CHANGED
|
@@ -4,6 +4,10 @@ Changes to the `oms` command surface belong here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.16.0] - 2026-09-23
|
|
8
|
+
|
|
9
|
+
- Host discovery reports the eight actual Codex skill paths and installed reviewer-definition health instead of the retired setup skill. Discovery and installation now resolve relative host-home overrides consistently; definition health is not reviewer execution proof.
|
|
10
|
+
|
|
7
11
|
## [0.15.0] - 2026-09-19
|
|
8
12
|
|
|
9
13
|
- **Breaking: the template CLI now exposes a selected-folder census and linear review flow.** The exact leaves are `scan|list|show|add|update|move|remove|default|check|regenerate-types|review|answer|commit`; `scan` is read-only, `add <folder>` selects source scope, and `add --id <id> --from <file>` remains explicit source authoring rather than contract review. `answer <question-id> --answer <JSON> --census-digest <digest> --ledger-digest <digest|null>` forwards server-returned CAS fields, while `commit` adds the existing dry-run or `--yes --approved-digest` guard. This removes the per-file registration ritual without weakening verified-target writes; note creation considers `--folder <note-folder>` before a taxonomy default and then `ask`, with no template-creation target-folder form.
|
package/CHANGELOG-kernel.md
CHANGED
|
@@ -4,6 +4,15 @@ Domain logic changes belong here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.16.0] - 2026-09-23
|
|
8
|
+
- Guide now binds a saved note to the template it declares when the caller omits `templateId`, matching check. Passing `templateId: null` still uses the default layer only.
|
|
9
|
+
|
|
10
|
+
- Version 4 contracts compose a user-owned property pool, an always-on default layer, and optional additive template constraints. Approved Markdown remains byte-exact; raw source or managed-draft drift reports locally without replacing the approved snapshot. Full derived-projection validation and transaction-generation checks reject inconsistent writing evaluations.
|
|
11
|
+
- Contract publication confines outputs to approved controls and managed drafts, checks exact approval and current-byte preconditions, and supports honest interrupted-publication recovery. A completed publication marker does not make later user draft edits a global reading failure.
|
|
12
|
+
- Search source exclusions and taxonomy intent no longer require a valid writing contract. Missing raw templates or invalid policy cannot block ordinary-note scanning; explicit exclusion and taxonomy errors remain visible.
|
|
13
|
+
- Native embedding diagnostics now use stderr through node-llama-cpp's logger callback, keeping diagnostic output separate from MCP stdout without suppressing warnings. (#133)
|
|
14
|
+
- Native SQLite ABI mismatches report the actual Node executable, version, module ABI and addon path with rebuild guidance. The original loader error remains the cause; unrelated opening errors are not relabeled, and no backend fallback or automatic rebuild occurs. (#139)
|
|
15
|
+
|
|
7
16
|
## [0.15.0] - 2026-09-19
|
|
8
17
|
|
|
9
18
|
- **Breaking: template contracts now reconcile from an explicit selected-folder census instead of per-file registration or auto/manual modes.** Every `.md` beneath the selected scope is classified for add, edit, delete, or rename; source bytes stay in place and only user-confirmed `.oms` controls publish. The two-tier freshness gate hashes raw shared authorities first and then isolates changed templates as pending while preserving unrelated note writes. Metadata and bounded body-node contracts (with per-node requiredness/order) replace opaque body assumptions; anchored resumable questions and a locked CAS preserve unaffected answers. Historical ledger census is not blanket stale rejection: current request CAS and per-answer anchors govern validity. Ambiguous repeated body nodes remain contextualized, missing required-body rules require explicit disposition, and placement is optional during review then resolves at note creation by explicit destination, taxonomy default, or `ask`.
|
package/CHANGELOG-mcp.md
CHANGED
|
@@ -4,6 +4,10 @@ MCP server tools and resources belong here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.16.0] - 2026-09-23
|
|
8
|
+
- Host-facing docs no longer show a copyable `interview-next` call without `proposals`. Confirming the template notice still starts that mode, but the same proposals array must reach review, answer, and commit.
|
|
9
|
+
- The machine template notice `next` field is a mode hint (`skill: interview`, `mode: interview-next`), not a replayable CallToolRequest. OMS still does not invent proposals; `확인하기` enters `/interview`.
|
|
10
|
+
|
|
7
11
|
## [0.15.0] - 2026-09-19
|
|
8
12
|
|
|
9
13
|
- The bundled MCP SDK now resolves `hono` 4.13.8, clearing the moderate advisory group that affected its HTTP transport's body and query parsing. Only the lockfile moves; no declared dependency is added or changed.
|
package/CHANGELOG-vendors.md
CHANGED
|
@@ -4,6 +4,11 @@ Per-host adapter and installer changes belong here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.16.0] - 2026-09-23
|
|
8
|
+
|
|
9
|
+
- Codex installs an optional provenance-owned reviewer role while preserving unowned collisions; a genuine generic separate subagent remains valid without custom-role discovery. Dry-run skill paths now match the eight installed shared skills.
|
|
10
|
+
- Hermes guidance uses its native fresh-conversation delegation with inherited tools and explicit non-modification instructions, without claiming unavailable sandbox enforcement.
|
|
11
|
+
|
|
7
12
|
## [0.15.0] - 2026-09-19
|
|
8
13
|
|
|
9
14
|
- **Claude, Codex, and Hermes guidance now aligns with folder-sourced template contracts.** Each native host surface explains selected-folder census without per-file registration or folder modes, the exact minimal notice and host-only `나중에`, and the resumable `interview-next` → `interview-answer` → `commit-contracts` flow. Review preserves source bytes and publishes only user-confirmed controls; affected-template pending remains scoped while shared-authority failures stay fail-closed globally. Note creation uses explicit folder, taxonomy default, then `ask`, without changing the host-specific skill/tool asymmetry.
|
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,9 @@ This aggregate changelog contains changes that span multiple layers.
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [0.16.0] - 2026-09-23
|
|
14
|
+
- **Breaking: OMS is a user-owned contract and completion harness, not a note writer or template renderer.** Version 4 of `.oms/template-policy.json` is the only approved structure and meaning: an always-on empty default layer, optional templates that only add or tighten, and unmanaged frontmatter left unchecked. Agents write and repair notes. OMS guides, checks the saved file, and completes from a separate host review. Search stays read-only even when the contract is missing or mid-publish. Contract meaning enters only through explicit `proposals` on `interview-next`, `interview-answer`, and `commit-contracts`; a recorded answer whose proposals were omitted is refused rather than dropped. The public surface is eight skills (`interview` and `template` are tool-less), five MCP tools, and fourteen CLI families. Retired v3 registration, note-write, link-apply, and renderer paths are deleted, not aliased. The machine template notice `next` field is a mode hint into `/interview`, not a replayable CallToolRequest.
|
|
15
|
+
|
|
13
16
|
## [0.15.0] - 2026-09-19
|
|
14
17
|
|
|
15
18
|
- **Breaking: a selected template folder, not a per-file registration step, is what makes a template usable.** Every `.md` beneath a folder you explicitly select is a census candidate tracked by content hash, so adding, editing, deleting, or renaming a source is picked up without registering each file and without the retired auto/manual folder modes. This spans layers deliberately: the kernel owns the census, contract derivation, interview ledger, and guarded reconcile; the CLI gains `oms template review|answer|commit`; MCP gains the matching `interview-next`, `interview-answer`, and `commit-contracts` modes plus the notice carrier; and the shared skills and host guidance describe one vocabulary. The five MCP tools and seven skills are unchanged.
|
package/README.ko.md
CHANGED
|
@@ -1,124 +1,64 @@
|
|
|
1
1
|
# Oh My Second Brain
|
|
2
2
|
|
|
3
|
-
Oh My Second Brain(`oms`)은 기존 Obsidian
|
|
3
|
+
Oh My Second Brain(`oms`)은 기존 Obsidian·Markdown 볼트를 AI 호스트와 연결하되 노트의 소유권은 가져가지 않는다. 볼트는 계속 평문 Markdown이고, Obsidian이 사령탑으로 남는다. OMS가 꺼져 있어도 노트는 사람이 읽고 고칠 수 있는 파일이다. OMS는 속성·폴더·heading의 의미를 스스로 만들어내지 않는다.
|
|
4
4
|
|
|
5
5
|
## 템플릿·온톨로지 볼트 모델
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
- 각 템플릿은 경로·digest와 독립적인 안정적 `templateId`를 가지며, 볼트 전체의 `BaseContract` 하나를 상속한다.
|
|
9
|
-
- `.obsidian/types.json`은 읽기 전용 타입 권위다.
|
|
10
|
-
- 사용자 소유 온톨로지는 계속 활성 상태다. `.oms/template-policy.json`은 노트·필드 의미와 필수값, 형식, 허용값, 기본값, 이름 규칙, 정체성, 바인딩을 기록한다.
|
|
11
|
-
- `.oms/taxonomy.json`은 폴더·링크 의미와 배치를 소유하며, 작성된 폴더 의미는 `folder-ontology` 검색 축으로 노출된다. runtime의 유일한 권위다.
|
|
12
|
-
- `.oms/types.json`은 쓰기·검색용 검증된 파생 projection이다. 직접 편집하지 않는다.
|
|
7
|
+
의미는 사용자에게 남는다. `.oms/template-policy.json` version 4가 승인된 구조이자 의미다. 속성 pool이 type, format, intent를 기록한다. 항상 켜져 있는 default 계층은 비어 있는 상태로 시작해 모든 노트에 적용된다. 선택적인 개별 템플릿은 필드·heading·의미 기준을 추가하거나 좁힐 수만 있고, default를 제거하거나 약화시킬 수 없다. 개별 템플릿이 없는 노트는 그 default 아래의 정상 노트다. 관리되지 않는 frontmatter는 보존하며 검사하지 않는다.
|
|
13
8
|
|
|
14
|
-
|
|
9
|
+
제품은 속성 이름·폴더·페르소나를 하드코딩하지 않고 Inbox fallback도 없다. 폐기된 것은 노트 정체성으로서의 `concept`와 번들 runtime 기본값이지, 사용자가 서술하는 의미 계층으로서의 온톨로지가 아니다. `.oms/taxonomy.json`은 배치와 폴더·링크의 의미를 기록한다. `.obsidian/types.json`은 읽기 전용 관측값이다. `.oms/types.json`(`oms.types.v2`)은 파생 projection이며 두 번째 권위가 아니다. version 3은 지원하지 않는다. 자동 변환도, 호환 reader도 없다.
|
|
15
10
|
|
|
16
|
-
|
|
11
|
+
노트 파일을 쓰고 고치는 주체는 에이전트다. 쓰기 전에 OMS는 승인된 Markdown, 유효 계약, task binding을 돌려준다. 그다음 디스크에 저장된 바이트를 검사한다. 완료 판정에는 같은 입력에 대한 호스트의 별도 리뷰가 필요하다. 지시 기반(instruction-only) 별도 리뷰도 유효하다. 리뷰어 파일의 바이트가 일치한다는 사실은 호스트가 그 역할을 실제로 실행했다는 증거가 아니다. 기계 검사 통과, 스스로 발급한 PASS, digest는 그 리뷰가 아니며, digest는 인증이 아니라 내용 무결성이다. 계약 설정은 사용자가 정확한 diff를 승인할 때만 compare-and-swap으로 바뀐다. 자동 보정은 사용자가 켜지 않는 한 꺼져 있다. 재시도 예산은 사용자가 정하는 유한한 0 이상의 정수이며 기본값은 2, 0도 허용하고 별도의 상한 3은 없다. 검색은 그 판정을 기다리지 않는다.
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
migration을 제안한다. 노트 타입 기본값을 번들로 강요하지 않으며 노트를
|
|
20
|
-
수정하지 않는다.
|
|
13
|
+
승인된 Markdown은 BOM과 원래 줄바꿈을 포함한 정확한 UTF-8 스냅샷이다. 관리 draft를 편집해도 그 스냅샷은 대체되지 않는다. OMS는 Templater, JavaScript, 전용 token 언어를 해석하거나 실행하지 않는다.
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
oms setup --vault /path/to/vault --dry-run
|
|
24
|
-
oms setup --vault /path/to/vault --yes --approved-digest <표시된-digest>
|
|
25
|
-
```
|
|
15
|
+
ADR-014는 ADR-013을 대체한다. [ACKNOWLEDGMENTS](./ACKNOWLEDGMENTS.md)는 Ouroboros와 Gajae Code의 deep-interview를 설계 아이디어로 밝힌다. 이는 runtime 복제도 연구 결과도 아니다. 저장소의 도식은 설명용 스케치이며 G002 Excalidraw 산출물이 아니다. 이 문서들은 승인된 아키텍처 기록이지 host smoke 결과나 제품 gate 통과가 아니다.
|
|
26
16
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
## 템플릿 흐름
|
|
30
|
-
|
|
31
|
-
명시적으로 선택한 템플릿 폴더 아래의 모든 `.md`는 템플릿 원본
|
|
32
|
-
후보가 된다. review는 원본을 검증하고 같은 위치의 바이트를 보존하며,
|
|
33
|
-
파일별 등록 절차나 auto/manual 폴더 mode는 필요하지 않다. OMS는
|
|
34
|
-
메타데이터 계약(frontmatter key·type·requiredness·`filledBy`)과 제한된
|
|
35
|
-
본문 구조(ATX heading, fence code block, fence 밖의 ordered/unordered list
|
|
36
|
-
run, `<!-- oms:content -->`, 문서 순서/EOL/BOM/final-newline)를 함께
|
|
37
|
-
도출한다. paragraph, setext heading, 모든 Markdown을 강제한다고 주장하지
|
|
38
|
-
않는다. 원본이 바뀌면 의존하는 템플릿만 pending이 되므로 다른 템플릿
|
|
39
|
-
쓰기는 계속 가능하며, shared authority 변경이나 불일치는 볼트 전체를
|
|
40
|
-
fail-closed 한다.
|
|
41
|
-
|
|
42
|
-
선택한 폴더의 원본이 바뀌면 호스트에 처음 표시할 알림은 정확히
|
|
43
|
-
`템플릿에 변경이 있습니다`이며, 동작은 정확히 `확인하기`와 `나중에`다.
|
|
44
|
-
처음 알림에는 템플릿 이름·hash·change class를 표시하지 않는다.
|
|
45
|
-
`나중에`는 host-only로 server를 호출하지 않고 interview ledger도 바꾸지
|
|
46
|
-
않는다. `확인하기`는 MCP `write { op: "template", mode: "interview-next" }`로
|
|
47
|
-
선형 resumable interview를 시작한다. 서버가 반환한 다음 질문을 따라
|
|
48
|
-
진행하고 영향 없는 confirmed answer는 보존한다. 모든 필요한 질문 뒤에는
|
|
49
|
-
정확한 최종 digest를 보여주고 사용자가 승인한 경우에만
|
|
50
|
-
`mode: "commit-contracts"`로 `.oms` control만 publish한다. self-approve하지
|
|
51
|
-
않는다. `status`와 search는 계속 읽기 전용이며 boot instruction이 stale한
|
|
52
|
-
long-lived host도 반환된 `templateNotice`를 표시해야 한다.
|
|
53
|
-
|
|
54
|
-
정확한 CLI review 흐름은 다음과 같다.
|
|
17
|
+
권위 모델은 [아키텍처](./docs/architecture.md), 볼트 파일은 [컨벤션](./docs/conventions.md), leaf 목록은 [CLI 맵](./docs/cli-map.md)에 있다.
|
|
55
18
|
|
|
56
|
-
|
|
57
|
-
oms template review
|
|
58
|
-
oms template answer <question-id> --answer <JSON> --census-digest <digest> --ledger-digest <digest|null>
|
|
59
|
-
oms template commit --census-digest <digest> --ledger-digest <digest|null> --dry-run
|
|
60
|
-
oms template commit --census-digest <digest> --ledger-digest <digest|null> --yes --approved-digest <digest>
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
answer는 서버가 반환한 question과 CAS 값을 사용한다. commit은 같은 CAS
|
|
64
|
-
값과 기존 dry-run 또는 yes/approved-digest guard를 함께 사용한다.
|
|
19
|
+
## 설정
|
|
65
20
|
|
|
66
|
-
|
|
21
|
+
`oms setup`은 비어 있는 version 4 policy를 제안한다. 노트 타입 기본값을 번들로 넣지 않고 노트를 수정하지도 않는다. 게시는 설정 interview를 거쳐 사용자가 승인한 diff만 기록한다. 모델 수명주기는 setup 시절 플래그가 아니라 `oms model install|select|waive|status`다.
|
|
67
22
|
|
|
68
|
-
```
|
|
69
|
-
oms
|
|
23
|
+
```bash
|
|
24
|
+
oms setup --vault /path/to/vault --dry-run
|
|
25
|
+
oms setup --vault /path/to/vault --yes --approved-digest <digest>
|
|
70
26
|
```
|
|
71
27
|
|
|
72
|
-
노트
|
|
73
|
-
|
|
28
|
+
interview leaf는 `oms template review --proposals`, `oms template answer`, `oms template commit`이다. 서버가 돌려준 question과 compare-and-swap 값을 그대로 전달하고, 세 호출 모두에 같은 `proposals`를 보낸다. parameter 이름을 만들어내지 않는다. 일반 질문, 알 수 없는 노트 값, 노트 오류, 관리되지 않는 속성, 검색은 그 interview를 시작하지 않는다.
|
|
29
|
+
|
|
30
|
+
호스트 알림 문구는 정확히 `템플릿에 변경이 있습니다`이고 동작은 `확인하기`와 `나중에` 둘뿐이다. 처음 알림에는 템플릿 이름·hash·change class를 표시하지 않는다. `나중에`는 host-only이며 서버를 호출하지 않는다. `확인하기`는 `write { op: "template", mode: "interview-next", proposals }`로 한 번에 한 질문씩 진행하는 resumable interview를 시작한다.
|
|
74
31
|
|
|
75
32
|
## CLI
|
|
76
33
|
|
|
77
34
|
```text
|
|
78
|
-
oms setup 기존 볼트 템플릿 탐색 및 채택
|
|
79
|
-
oms template scan|list|show|add|update|move|remove|default|check|regenerate-types|review|answer|commit
|
|
80
|
-
oms note create|append|update|audit|backfill|get
|
|
81
|
-
oms link check|suggest|apply 노트 wikilink 점검·제안·적용
|
|
82
35
|
oms bridge add|remove|status 저장소-볼트 target bridge 관리
|
|
83
|
-
oms search query|context 명시적 query 실행 또는 구조화 context 조회
|
|
84
|
-
oms index sync|embed|repair|status|clean 파생 검색 상태 관리
|
|
85
36
|
oms graph build|status 노트 그래프 생성 또는 조회
|
|
37
|
+
oms hook pre|post pre/post-tool-use hook 실행
|
|
86
38
|
oms host install|remove|sync|status 호스트 asset과 MCP 등록 관리
|
|
87
|
-
oms
|
|
39
|
+
oms index sync|embed|repair|status|clean 파생 검색 상태 관리
|
|
40
|
+
oms link suggest|check 노트 wikilink 제안·점검
|
|
88
41
|
oms model install|select|waive|status 로컬 모델 선택 관리
|
|
42
|
+
oms note guide|check|complete|audit|get 노트 안내·검사·완료·감사·조회
|
|
43
|
+
oms package check|update OMS 패키지 확인 또는 업데이트
|
|
44
|
+
oms search query|context 명시적 query 실행 또는 구조화 context 조회
|
|
89
45
|
oms serve mcp|http stdio MCP 또는 로컬 HTTP 서버 시작
|
|
90
|
-
oms
|
|
46
|
+
oms setup 비어 있는 version 4 policy 제안
|
|
91
47
|
oms status 읽기 전용 종합 상태 표시
|
|
48
|
+
oms template scan|list|show|check|regenerate-types|review|answer|commit
|
|
92
49
|
```
|
|
93
50
|
|
|
94
|
-
`oh-my-second-brain`은 전체 명령이고 `oms`는 짧은 별칭이다.
|
|
51
|
+
`oh-my-second-brain`은 전체 명령이고 `oms`는 짧은 별칭이다. 이 열네 개 family, 여덟 개 skill, 다섯 개 MCP 도구는 서로 다른 세 집합이다. leaf 대응은 [CLI 맵](./docs/cli-map.md)에 있다.
|
|
95
52
|
|
|
96
53
|
### 도움말 계약
|
|
97
54
|
|
|
98
|
-
인식된 모든 명령은 `--help`와 `-h`를 받아들이며, exit 0으로 종료하고
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
typed
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
Embedding은 명시적으로 `oms index embed`를 사용하며 sync와 repair는
|
|
106
|
-
서로 다른 index mode다. `oms index status --view status|collections|contexts`는
|
|
107
|
-
세 읽기 전용 view를 모두 보존하고, `oms index clean`은 제거 가능한 파생
|
|
108
|
-
상태를 정리한다.
|
|
109
|
-
|
|
110
|
-
Vector 검색에는 검증된 로컬 embedding capability가 필요하다. 선택 경로는
|
|
111
|
-
완전한 `OMS_EMBEDDING_PROVIDER`/`OMS_EMBEDDING_MODEL` 쌍, vault의
|
|
112
|
-
`.oms/models.json`과 검증된 설치 receipt, 또는 setup-installed default다.
|
|
113
|
-
HyDE에는 resolved generate capability가, reranking에는 resolved rerank
|
|
114
|
-
capability가 필요하다. 각각의 완전한 환경변수 쌍은
|
|
115
|
-
`OMS_GENERATE_PROVIDER`/`OMS_GENERATE_MODEL`과
|
|
116
|
-
`OMS_RERANK_PROVIDER`/`OMS_RERANK_MODEL`이다. 누락되거나 불완전하거나
|
|
117
|
-
설치되지 않은 선택은 크게 실패한다. G004
|
|
118
|
-
expansion은 명시적으로 사용할 수 있는 기능이며, 교체·parity·outperformance를
|
|
119
|
-
주장하지 않는다.
|
|
120
|
-
Setup에서는 로컬 검증 acquisition 정책 하나를 선택한다:
|
|
121
|
-
`--models-default`, `--models-descriptor <path>`, `--models-no-default`.
|
|
55
|
+
인식된 모든 명령은 `--help`와 `-h`를 받아들이며, exit 0으로 종료하고 부작용을 수행하지 않는다. 알 수 없는 명령에 `--help`를 함께 주면 exit 1로 종료한다.
|
|
56
|
+
|
|
57
|
+
`oms search query <text>`는 lexical-only다. `--vec`와 `--hyde`는 각각의 channel을 선택하고, `--expand`는 G004 expansion을 명시적으로 켜며, `--max-queries`는 1부터 32까지의 정수만 받는다. `--rerank`도 opt-in이다. `oms search context`는 별도의 구조화 context 표면이다. Embedding은 `oms index embed`이며 sync와 repair는 서로 다른 index mode다. `oms index status --view status|collections|contexts`는 세 읽기 전용 view를 모두 보존하고, `oms index clean`은 제거 가능한 파생 상태를 정리한다.
|
|
58
|
+
|
|
59
|
+
lexical, vector, HyDE, typed-axis 질의는 템플릿에 결속되지 않았거나 계약을 어겼거나 미완성인 노트도 계속 포함한다. 계약이 없거나 손상되어도 검색은 멈추지 않는다. Vector 검색에는 완전한 `OMS_EMBEDDING_PROVIDER`/`OMS_EMBEDDING_MODEL` 쌍이 필요하다. HyDE에는 `OMS_GENERATE_PROVIDER`/`OMS_GENERATE_MODEL`이, reranking에는 `OMS_RERANK_PROVIDER`/`OMS_RERANK_MODEL`이 추가로 필요하다. 누락되거나 불완전하거나 설치되지 않은 선택은 크게 실패한다. G004 expansion은 명시적으로 선택할 때만 쓰이며 교체·parity·outperformance를 주장하지 않는다.
|
|
60
|
+
|
|
61
|
+
`guide`는 노트를 쓰지 않는다. 에이전트가 파일을 저장한 뒤 `check`가 그 파일을 읽고, 별도 리뷰 후 `complete`가 같은 입력을 다시 읽는다. create, append, update, backfill은 노트 동작이 아니다. link apply도 동작이 아니다. template add, update, move, remove, default도 동작이 아니다. 폐기된 그 동작들을 위한 version 3 변환, 노트 renderer, 호환 경로는 없다.
|
|
122
62
|
|
|
123
63
|
## MCP 도구
|
|
124
64
|
|
|
@@ -126,18 +66,11 @@ Setup에서는 로컬 검증 acquisition 정책 하나를 선택한다:
|
|
|
126
66
|
|
|
127
67
|
`write` · `search` · `link` · `status` · `doctor`
|
|
128
68
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
쓰기는 하나의 `ResolvedTemplate`을 해석해 create, append, update를 수행한다. 템플릿 변경, projection 재생성, 한 노트 정체성 backfill은 검증된 target과 명시적 승인 digest가 필요하다. `status`와 모든 검색 동작은 읽기 전용이다.
|
|
69
|
+
여덟 skill(`distill`, `doctor`, `interview`, `link`, `search`, `status`, `template`, `write`)은 호스트 워크플로다. `interview`와 `template`은 도구가 없다.
|
|
132
70
|
|
|
133
|
-
|
|
134
|
-
`interview-next`, `interview-answer`, `commit-contracts` mode를 사용한다.
|
|
135
|
-
정확한 CLI 대응은 `oms template review`, `oms template answer`,
|
|
136
|
-
`oms template commit`이다. answer는 서버가 반환한 question, request, CAS
|
|
137
|
-
field를 그대로 사용하며 parameter 이름을 만들지 않는다. 질문이 0개면
|
|
138
|
-
곧바로 최종 확인으로 간다.
|
|
71
|
+
다섯 도구는 그 skill의 부분집합이고, 어느 쪽도 열네 개 CLI family와 같지 않다. 세부 기능은 다섯 도구의 `op` 값으로 남는다.
|
|
139
72
|
|
|
140
|
-
|
|
73
|
+
`write`는 interview 답변과 승인된 계약 게시가 관리 상태를 바꾸기 때문에 쓰기 posture를 유지한다. `guide`, `check`, `complete`는 볼트 바이트를 쓰지 않는다. 계약 review는 `op: "template"`의 `interview-next`, `interview-answer`, `commit-contracts` mode만 사용한다. `status`와 모든 검색 동작은 읽기 전용이며 완료를 대신 판정하지 않는다. `doctor` 도구는 control과 index를 진단하며 노트를 backfill하지 않는다.
|
|
141
74
|
|
|
142
75
|
## 설치
|
|
143
76
|
|
|
@@ -148,21 +81,12 @@ npm install -g oh-my-second-brain
|
|
|
148
81
|
oms host install --runtime all --vault /path/to/vault --yes
|
|
149
82
|
```
|
|
150
83
|
|
|
151
|
-
Gajae-Code에서는 npm 패키지를 marketplace plugin으로 설치한다: `gjc plugin install oms@oms`. GJC는 패키지 루트의 `skills/` convention path에서
|
|
84
|
+
Gajae-Code에서는 npm 패키지를 marketplace plugin으로 설치한다: `gjc plugin install oms@oms`. GJC는 패키지 루트의 `skills/` convention path에서 여덟 개 OMS skill을 발견한다.
|
|
152
85
|
|
|
153
|
-
호스트 설치는 canonical 볼트를
|
|
154
|
-
`${XDG_CONFIG_HOME:-~/.config}/oms/vault.json`에 기록하고 각 관리형
|
|
155
|
-
등록에 `oms serve mcp --vault /path/to/vault`를 넣는다.
|
|
156
|
-
`oms host install|remove|sync|status`만 이 서명된 포인터로 호스트 통합을
|
|
157
|
-
관리한다.
|
|
158
|
-
`oms package update`는 패키지만 업데이트하고 호스트를 암묵적으로
|
|
159
|
-
동기화하지 않는다. `oms host sync`는 별도로 실행한다.
|
|
86
|
+
호스트 설치는 canonical 볼트를 `${XDG_CONFIG_HOME:-~/.config}/oms/vault.json`에 기록하고 각 관리형 등록에 `oms serve mcp --vault /path/to/vault`를 넣는다. `oms host install|remove|sync|status`만 이 서명된 포인터로 호스트 통합을 관리한다. `oms package update`는 패키지만 업데이트하고 호스트를 암묵적으로 동기화하지 않는다. `oms host sync`는 별도로 실행한다.
|
|
160
87
|
|
|
161
|
-
런타임
|
|
162
|
-
우선순위는 명시적 target, 로컬 볼트 control, bridge, `OMS_VAULT`, 그리고
|
|
163
|
-
안전한 읽기 전용 fallback으로서의 cwd 순서다. 변경 작업은 cwd fallback을
|
|
164
|
-
사용할 수 없다.
|
|
88
|
+
런타임 target 해석은 호스트 관리 포인터를 읽지 않는다. 우선순위는 명시적 target, 로컬 볼트 control, bridge, `OMS_VAULT`, 그리고 읽기 전용 fallback으로서의 cwd 순서다. cwd fallback에서는 계약 게시와 파생 상태 보정을 할 수 없다.
|
|
165
89
|
|
|
166
|
-
`OMS_VAULT`는 명시적·로컬·bridge target이 없을 때 사용하는
|
|
90
|
+
`OMS_VAULT`는 명시적·로컬·bridge target이 없을 때 사용하는 환경변수 fallback이다.
|
|
167
91
|
|
|
168
92
|
자세한 내용은 [설치](./docs/install.md), [아키텍처](./docs/architecture.md), [컨벤션](./docs/conventions.md), [검증된 target](./docs/verified-target.md)을 참고한다.
|
package/README.md
CHANGED
|
@@ -1,121 +1,64 @@
|
|
|
1
1
|
# Oh My Second Brain
|
|
2
2
|
|
|
3
|
-
Oh My Second Brain (`oms`) connects an existing Obsidian or Markdown vault to AI hosts without taking ownership of its notes. The vault remains plain Markdown.
|
|
3
|
+
Oh My Second Brain (`oms`) connects an existing Obsidian or Markdown vault to AI hosts without taking ownership of its notes. The vault remains plain Markdown. Obsidian stays the command center: the notes are still files a person can read and edit when OMS is not running. OMS does not invent the meaning of a property, a folder, or a heading.
|
|
4
4
|
|
|
5
5
|
## Template and ontology vault model
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- Each template has a stable `templateId`, independent of its path and digest, and inherits one vault-wide `BaseContract`.
|
|
9
|
-
- `.obsidian/types.json` is read-only type authority.
|
|
10
|
-
- The user-owned ontology remains active: `.oms/template-policy.json` records note/field meaning alongside requiredness, formats, allowed values, defaults, naming, identity, and bindings.
|
|
11
|
-
- `.oms/taxonomy.json` records folder/link meaning and owns placement; authored folder intents are exposed through the `folder-ontology` search axis. It is the sole runtime authority.
|
|
12
|
-
- `.oms/types.json` is a validated derived write/search projection. Never hand-edit it.
|
|
7
|
+
Meaning stays with the user. Version 4 of `.oms/template-policy.json` is the approved structure and meaning. A property pool records type, format, and intent. An always-on default layer starts empty and applies to every note. An optional individual template may only add or tighten fields, headings, and semantic criteria. It cannot remove or weaken the default. A note with no individual template is an ordinary note under that default. Unmanaged frontmatter is kept and is not checked.
|
|
13
8
|
|
|
14
|
-
The retired
|
|
9
|
+
The product hardcodes no property names, folders, or personas, and it has no Inbox fallback. What was retired is `concept` as note identity and bundled runtime defaults, not ontology as the user's account of meaning. `.oms/taxonomy.json` records placement and what folders and links mean. `.obsidian/types.json` is a read-only observation. `.oms/types.json` (`oms.types.v2`) is a derived projection, not a second authority. Version 3 is unsupported: there is no migration and no compatibility reader.
|
|
15
10
|
|
|
16
|
-
|
|
11
|
+
The agent writes and repairs note files. Before that write, OMS returns the approved Markdown, the effective contract, and a task binding. It then checks the bytes saved on disk. Completion requires a separate host review of those same inputs. A separate instruction-only review is valid. Matching reviewer-file bytes are not proof the host launched that role. A machine pass, a self-issued PASS, or a digest is not that review, and a digest is content integrity rather than authentication. Contract configuration changes only when the user approves the exact diff, by compare-and-swap. Repair is off unless the user enables it. The retry budget is that user's finite nonnegative integer, default 2, including 0, with no separate cap of 3. Search does not wait on that review.
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
template folders and proposes migration. It ships no note-type defaults and
|
|
20
|
-
never modifies notes.
|
|
13
|
+
Approved Markdown is the exact UTF-8 snapshot, including any BOM and the original line endings. Editing the managed draft does not replace that snapshot. OMS does not parse or execute Templater, JavaScript, or a private token language.
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
oms setup --vault /path/to/vault --dry-run
|
|
24
|
-
oms setup --vault /path/to/vault --yes --approved-digest <shown-digest>
|
|
25
|
-
```
|
|
15
|
+
ADR-014 supersedes ADR-013. [ACKNOWLEDGMENTS](./ACKNOWLEDGMENTS.md) credits Ouroboros and Gajae Code's deep-interview as design ideas. Those credits are not a copied runtime and not a research result. Diagrams in this repository are explanatory sketches. They are not the G002 Excalidraw artifact. These pages record the approved architecture. They are not a host-smoke result and not a product-gate pass.
|
|
26
16
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
## Template workflow
|
|
30
|
-
|
|
31
|
-
An explicitly selected template folder makes every `.md` beneath it a template
|
|
32
|
-
source candidate. Review verifies the source and preserves its bytes in place;
|
|
33
|
-
no per-file registration or auto/manual folder mode is required. OMS derives
|
|
34
|
-
both metadata (frontmatter keys, types, requiredness, and `filledBy`) and a
|
|
35
|
-
bounded body structure (ATX headings, fenced code blocks, ordered/unordered
|
|
36
|
-
list runs outside fences, `<!-- oms:content -->`, and document
|
|
37
|
-
order/EOL/BOM/final-newline details). It does not claim to enforce paragraphs,
|
|
38
|
-
setext headings, or all Markdown. A changed source makes only its dependent
|
|
39
|
-
template pending, so unrelated writes remain available; shared-authority
|
|
40
|
-
changes or mismatches fail closed for the whole vault.
|
|
41
|
-
|
|
42
|
-
When a selected-folder source changes, the initial host notice is exactly
|
|
43
|
-
`템플릿에 변경이 있습니다` with exactly `확인하기` and `나중에`; it names no
|
|
44
|
-
template and shows no hash or change class. `나중에` is host-only and makes no
|
|
45
|
-
server call or ledger mutation. `확인하기` starts a linear, resumable interview
|
|
46
|
-
through MCP `write { op: "template", mode: "interview-next" }`. Continue with
|
|
47
|
-
the server-returned next question, preserving unaffected confirmed answers.
|
|
48
|
-
After all necessary questions, show the exact final digest and publish only
|
|
49
|
-
`.oms` controls after the user approves it with `mode: "commit-contracts"`; never
|
|
50
|
-
self-approve. `status` and search remain read-only, and long-lived hosts
|
|
51
|
-
surface a returned `templateNotice` even when boot instructions are stale.
|
|
52
|
-
|
|
53
|
-
The exact CLI review flow is:
|
|
17
|
+
The authority model is in [architecture](./docs/architecture.md). Vault files are in [conventions](./docs/conventions.md). Leaves are in [the CLI map](./docs/cli-map.md).
|
|
54
18
|
|
|
55
|
-
|
|
56
|
-
oms template review
|
|
57
|
-
oms template answer <question-id> --answer <JSON> --census-digest <digest> --ledger-digest <digest|null>
|
|
58
|
-
oms template commit --census-digest <digest> --ledger-digest <digest|null> --dry-run
|
|
59
|
-
oms template commit --census-digest <digest> --ledger-digest <digest|null> --yes --approved-digest <digest>
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Answer uses the server-returned question and CAS values. Commit uses the same
|
|
63
|
-
CAS values plus the existing dry-run or yes/approved-digest guard.
|
|
19
|
+
## Setup
|
|
64
20
|
|
|
65
|
-
|
|
21
|
+
`oms setup` proposes an empty version-4 policy. It ships no note-type defaults and never modifies notes. Publication goes through the config interview and writes only the user-approved diff. Model lifecycle is `oms model install|select|waive|status`, not a setup-era model flag.
|
|
66
22
|
|
|
67
|
-
```
|
|
68
|
-
oms
|
|
23
|
+
```bash
|
|
24
|
+
oms setup --vault /path/to/vault --dry-run
|
|
25
|
+
oms setup --vault /path/to/vault --yes --approved-digest <digest>
|
|
69
26
|
```
|
|
70
27
|
|
|
71
|
-
|
|
72
|
-
|
|
28
|
+
The interview leaves are `oms template review --proposals`, `oms template answer`, and `oms template commit`. Forward the question and compare-and-swap fields the server returns, and send the same `proposals` on every call. Do not invent parameter names. A general question, an unknown note value, a note error, an unmanaged property, or a search does not start that interview.
|
|
29
|
+
|
|
30
|
+
The host notice text is exactly `템플릿에 변경이 있습니다` and its actions are exactly `확인하기` and `나중에`. The first notice shows no template name, hash, or change class. `나중에` is host-only and makes no server call. `확인하기` starts a resumable one-question interview at `write { op: "template", mode: "interview-next", proposals }`.
|
|
73
31
|
|
|
74
32
|
## CLI
|
|
75
33
|
|
|
76
34
|
```text
|
|
77
|
-
oms setup Discover and adopt existing vault templates
|
|
78
|
-
oms template scan|list|show|add|update|move|remove|default|check|regenerate-types|review|answer|commit
|
|
79
|
-
oms note create|append|update|audit|backfill|get
|
|
80
|
-
oms link check|suggest|apply Check, suggest, or apply note wikilinks
|
|
81
35
|
oms bridge add|remove|status Manage repository-to-vault target bridges
|
|
82
|
-
oms search query|context Run an explicit query or retrieve structured context
|
|
83
|
-
oms index sync|embed|repair|status|clean Manage derived search state
|
|
84
36
|
oms graph build|status Build or inspect the note graph
|
|
37
|
+
oms hook pre|post Run pre- or post-tool-use hooks
|
|
85
38
|
oms host install|remove|sync|status Manage host assets and MCP registrations
|
|
86
|
-
oms
|
|
39
|
+
oms index sync|embed|repair|status|clean Manage derived search state
|
|
40
|
+
oms link suggest|check Suggest or check note wikilinks
|
|
87
41
|
oms model install|select|waive|status Manage local model selection
|
|
42
|
+
oms note guide|check|complete|audit|get Guide, check, complete, audit, or read a note
|
|
43
|
+
oms package check|update Check or update the OMS package
|
|
44
|
+
oms search query|context Run an explicit query or retrieve structured context
|
|
88
45
|
oms serve mcp|http Start the stdio MCP or local HTTP server
|
|
89
|
-
oms
|
|
46
|
+
oms setup Propose an empty version-4 policy
|
|
90
47
|
oms status Show the read-only aggregate status
|
|
48
|
+
oms template scan|list|show|check|regenerate-types|review|answer|commit
|
|
91
49
|
```
|
|
92
50
|
|
|
93
|
-
`oh-my-second-brain` is the full command; `oms` is its short alias.
|
|
51
|
+
`oh-my-second-brain` is the full command; `oms` is its short alias. These fourteen families, the eight skills, and the five MCP tools are three different sets. The leaf map is [the CLI map](./docs/cli-map.md).
|
|
94
52
|
|
|
95
53
|
### Help contract
|
|
96
54
|
|
|
97
|
-
Every recognized command accepts `--help` and `-h`, exits 0, and performs no
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
`
|
|
104
|
-
explicitly `oms index embed`; sync and repair are distinct index modes.
|
|
105
|
-
`oms index status --view status|collections|contexts` preserves all three
|
|
106
|
-
read-only views, while `oms index clean` removes eligible derived state.
|
|
107
|
-
|
|
108
|
-
Vector search requires a verified local embedding capability, selected by a
|
|
109
|
-
complete `OMS_EMBEDDING_PROVIDER`/`OMS_EMBEDDING_MODEL` pair, the vault's
|
|
110
|
-
`.oms/models.json` plus its verified installed receipt, or a setup-installed
|
|
111
|
-
default. HyDE also requires a resolved generate capability; reranking requires
|
|
112
|
-
a resolved rerank capability. Their complete environment pairs are
|
|
113
|
-
`OMS_GENERATE_PROVIDER`/`OMS_GENERATE_MODEL` and
|
|
114
|
-
`OMS_RERANK_PROVIDER`/`OMS_RERANK_MODEL`. Missing, incomplete, or uninstalled
|
|
115
|
-
selections fail loudly. G004 expansion is an explicit
|
|
116
|
-
available capability; it makes no replacement, parity, or outperformance claim.
|
|
117
|
-
During setup, choose one local verified acquisition policy:
|
|
118
|
-
`--models-default`, `--models-descriptor <path>`, or `--models-no-default`.
|
|
55
|
+
Every recognized command accepts `--help` and `-h`, exits 0, and performs no side effects. An unknown command combined with `--help` exits 1.
|
|
56
|
+
|
|
57
|
+
A plain `oms search query <text>` is lexical-only. `--vec` and `--hyde` select their respective channels; `--expand` explicitly enables G004 expansion, `--max-queries` accepts an integer from 1 through 32, and `--rerank` is opt-in. `oms search context` is the separate structured-context surface. Embedding is `oms index embed`; sync and repair are distinct index modes. `oms index status --view status|collections|contexts` preserves all three read-only views, while `oms index clean` removes eligible derived state.
|
|
58
|
+
|
|
59
|
+
Lexical, vector, HyDE, and typed-axis queries still include unbound, invalid, and incomplete notes. A missing or damaged contract does not stop search. Vector search requires a complete `OMS_EMBEDDING_PROVIDER`/`OMS_EMBEDDING_MODEL` pair. HyDE also requires `OMS_GENERATE_PROVIDER`/`OMS_GENERATE_MODEL`. Reranking requires `OMS_RERANK_PROVIDER`/`OMS_RERANK_MODEL`. Missing, incomplete, or uninstalled selections fail loudly. G004 expansion is an explicit available capability; it makes no replacement, parity, or outperformance claim.
|
|
60
|
+
|
|
61
|
+
`guide` does not write the note. After the agent saves the file, `check` reads that file. `complete` reads it again after a separate review. Create, append, update, and backfill are not note operations. Link apply is not an operation. Template add, update, move, remove, and default are not operations. There is no version-3 migration, note renderer, or compatibility path for those retired operations.
|
|
119
62
|
|
|
120
63
|
## MCP tools
|
|
121
64
|
|
|
@@ -123,18 +66,11 @@ During setup, choose one local verified acquisition policy:
|
|
|
123
66
|
|
|
124
67
|
`write` · `search` · `link` · `status` · `doctor`
|
|
125
68
|
|
|
126
|
-
The
|
|
127
|
-
|
|
128
|
-
Writes resolve one `ResolvedTemplate` and support create, append, and update. Template mutation, projection regeneration, and one-note identity backfill require a verified target and explicit approval digest. `status` and every search operation are read-only.
|
|
69
|
+
The eight skills (`distill`, `doctor`, `interview`, `link`, `search`, `status`, `template`, `write`) are host workflows. `interview` and `template` are tool-less.
|
|
129
70
|
|
|
130
|
-
|
|
131
|
-
`interview-next`, `interview-answer`, and `commit-contracts` modes. The exact
|
|
132
|
-
CLI counterparts are `oms template review`, `oms template answer`, and
|
|
133
|
-
`oms template commit`. Answer submissions use the server-returned question,
|
|
134
|
-
request, and CAS fields; hosts must not invent parameter names. A zero-question
|
|
135
|
-
response proceeds directly to final confirmation.
|
|
71
|
+
The five tools are a subset of those skills, and neither set is the fourteen CLI families. Detail capabilities remain `op` values under the five tools.
|
|
136
72
|
|
|
137
|
-
|
|
73
|
+
`write` keeps a write posture because interview answers and approved contract publication change managed state. `guide`, `check`, and `complete` write no vault bytes. Contract review uses `op: "template"` with `interview-next`, `interview-answer`, and `commit-contracts` only. `status` and every search operation are read-only and do not decide completion. The `doctor` tool diagnoses controls and indexes; it does not backfill notes.
|
|
138
74
|
|
|
139
75
|
## Install
|
|
140
76
|
|
|
@@ -145,15 +81,12 @@ npm install -g oh-my-second-brain
|
|
|
145
81
|
oms host install --runtime all --vault /path/to/vault --yes
|
|
146
82
|
```
|
|
147
83
|
|
|
148
|
-
For Gajae-Code, install the npm package as a marketplace plugin: `gjc plugin install oms@oms`. GJC discovers the
|
|
84
|
+
For Gajae-Code, install the npm package as a marketplace plugin: `gjc plugin install oms@oms`. GJC discovers the eight OMS skills at the package-root `skills/` convention path.
|
|
149
85
|
|
|
150
86
|
Host installation records the canonical vault in `${XDG_CONFIG_HOME:-~/.config}/oms/vault.json` and stamps `oms serve mcp --vault /path/to/vault` into each managed host entry. `oms host install|remove|sync|status` use that signed pointer only to maintain host integrations. `oms package update` updates the package but never syncs hosts implicitly; run `oms host sync` separately.
|
|
151
87
|
|
|
152
|
-
Runtime
|
|
153
|
-
Its precedence is explicit target, local vault controls, bridge, `OMS_VAULT`,
|
|
154
|
-
then cwd only as a safe read-only fallback. Mutations cannot use the cwd
|
|
155
|
-
fallback.
|
|
88
|
+
Runtime target resolution never reads the host-maintenance pointer. Its precedence is explicit target, local vault controls, bridge, `OMS_VAULT`, then the current directory only as a safe read-only fallback. Control and derived-state mutations cannot use that fallback. Note `guide`, `check`, and `complete` read rather than write ordinary notes; their task binding, contract publication, and derived-state repair still require a verified target.
|
|
156
89
|
|
|
157
90
|
`OMS_VAULT` is the supported environment fallback when no explicit, local, or bridge target exists.
|
|
158
91
|
|
|
159
|
-
See [installation](./docs/install.md), [architecture](./docs/architecture.md), [conventions](./docs/conventions.md), and [verified targets](./docs/verified-target.md).
|
|
92
|
+
See [installation](./docs/install.md), [architecture](./docs/architecture.md), [conventions](./docs/conventions.md), [the CLI map](./docs/cli-map.md), [host assets](./docs/adapters.md), and [verified targets](./docs/verified-target.md).
|