oh-my-second-brain 0.9.0 → 0.10.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 +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/CHANGELOG-assets.md +6 -0
- package/CHANGELOG-cli.md +13 -0
- package/CHANGELOG-kernel.md +7 -0
- package/CHANGELOG-mcp.md +6 -0
- package/CHANGELOG-vendors.md +2 -0
- package/CHANGELOG.md +20 -0
- package/README.ko.md +24 -1
- package/README.md +22 -1
- package/assets/hermes-manifest.json +1 -1
- package/assets/skills/search/SKILL.md +1 -0
- package/dist/cli/args.d.ts +3 -4
- package/dist/cli/args.js +36 -15
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/doc-command.d.ts +8 -0
- package/dist/cli/doc-command.js +51 -0
- package/dist/cli/doc-command.js.map +1 -0
- package/dist/cli/engine-session.d.ts +15 -0
- package/dist/cli/engine-session.js +45 -0
- package/dist/cli/engine-session.js.map +1 -0
- package/dist/cli/index-command.d.ts +8 -0
- package/dist/cli/index-command.js +60 -0
- package/dist/cli/index-command.js.map +1 -0
- package/dist/cli/oms.d.ts +1 -1
- package/dist/cli/oms.js +40 -21
- package/dist/cli/oms.js.map +1 -1
- package/dist/cli/search-args.d.ts +13 -0
- package/dist/cli/{semantic-args.js → search-args.js} +48 -13
- package/dist/cli/search-args.js.map +1 -0
- package/dist/cli/search-usage.d.ts +1 -0
- package/dist/cli/search-usage.js +25 -0
- package/dist/cli/search-usage.js.map +1 -0
- package/dist/cli/search.d.ts +10 -0
- package/dist/cli/search.js +71 -0
- package/dist/cli/search.js.map +1 -0
- package/dist/cli/serve-http.d.ts +15 -0
- package/dist/cli/{semantic-http.js → serve-http.js} +69 -54
- package/dist/cli/serve-http.js.map +1 -0
- package/dist/cli/setup-command.d.ts +9 -9
- package/dist/cli/setup-command.js +35 -12
- package/dist/cli/setup-command.js.map +1 -1
- package/dist/cli/usage.js +17 -9
- package/dist/cli/usage.js.map +1 -1
- package/dist/kernel/doctor/service.js +2 -1
- package/dist/kernel/doctor/service.js.map +1 -1
- package/dist/kernel/engine/assemble.d.ts +32 -3
- package/dist/kernel/engine/assemble.js +395 -102
- package/dist/kernel/engine/assemble.js.map +1 -1
- package/dist/kernel/engine/embed/config.d.ts +77 -0
- package/dist/kernel/engine/embed/config.js +308 -0
- package/dist/kernel/engine/embed/config.js.map +1 -0
- package/dist/kernel/engine/embed/deferred.d.ts +19 -14
- package/dist/kernel/engine/embed/deferred.js +27 -17
- package/dist/kernel/engine/embed/deferred.js.map +1 -1
- package/dist/kernel/engine/embed/identity.d.ts +14 -12
- package/dist/kernel/engine/embed/identity.js +36 -7
- package/dist/kernel/engine/embed/identity.js.map +1 -1
- package/dist/kernel/engine/embed/model.d.ts +107 -132
- package/dist/kernel/engine/embed/model.js +568 -289
- package/dist/kernel/engine/embed/model.js.map +1 -1
- package/dist/kernel/engine/embed/provider.d.ts +14 -21
- package/dist/kernel/engine/embed/provider.js +185 -221
- package/dist/kernel/engine/embed/provider.js.map +1 -1
- package/dist/kernel/engine/embed/store.d.ts +3 -1
- package/dist/kernel/engine/embed/store.js +111 -134
- package/dist/kernel/engine/embed/store.js.map +1 -1
- package/dist/kernel/engine/embed/sync.d.ts +17 -8
- package/dist/kernel/engine/embed/sync.js +157 -59
- package/dist/kernel/engine/embed/sync.js.map +1 -1
- package/dist/kernel/engine/mcp/facade.d.ts +9 -6
- package/dist/kernel/engine/mcp/facade.js +225 -24
- package/dist/kernel/engine/mcp/facade.js.map +1 -1
- package/dist/kernel/engine/mcp/query-mapper.d.ts +8 -2
- package/dist/kernel/engine/mcp/query-mapper.js +67 -9
- package/dist/kernel/engine/mcp/query-mapper.js.map +1 -1
- package/dist/kernel/engine/mcp/types.d.ts +42 -0
- package/dist/kernel/engine/paths.d.ts +2 -0
- package/dist/kernel/engine/paths.js +6 -0
- package/dist/kernel/engine/paths.js.map +1 -0
- package/dist/kernel/engine/retrieval/dispatcher.d.ts +27 -6
- package/dist/kernel/engine/retrieval/dispatcher.js +70 -6
- package/dist/kernel/engine/retrieval/dispatcher.js.map +1 -1
- package/dist/kernel/engine/retrieval/generator.d.ts +64 -0
- package/dist/kernel/engine/retrieval/generator.js +319 -0
- package/dist/kernel/engine/retrieval/generator.js.map +1 -0
- package/dist/kernel/engine/retrieval/index.d.ts +6 -4
- package/dist/kernel/engine/retrieval/index.js +3 -3
- package/dist/kernel/engine/retrieval/index.js.map +1 -1
- package/dist/kernel/engine/retrieval/passthrough.test-helper.d.ts +32 -0
- package/dist/kernel/engine/retrieval/passthrough.test-helper.js +35 -0
- package/dist/kernel/engine/retrieval/passthrough.test-helper.js.map +1 -0
- package/dist/kernel/engine/retrieval/reranker.d.ts +12 -17
- package/dist/kernel/engine/retrieval/reranker.js +116 -16
- package/dist/kernel/engine/retrieval/reranker.js.map +1 -1
- package/dist/kernel/engine/retrieval/taxonomy-context.d.ts +24 -0
- package/dist/kernel/engine/retrieval/taxonomy-context.js +96 -0
- package/dist/kernel/engine/retrieval/taxonomy-context.js.map +1 -0
- package/dist/kernel/engine/tracer.d.ts +1 -3
- package/dist/kernel/engine/tracer.js +39 -31
- package/dist/kernel/engine/tracer.js.map +1 -1
- package/dist/kernel/engine/types.d.ts +30 -6
- package/dist/kernel/engine/types.js.map +1 -1
- package/dist/kernel/harness/surface-registry.js +2 -5
- package/dist/kernel/harness/surface-registry.js.map +1 -1
- package/dist/kernel/link/convention-note.js +2 -2
- package/dist/kernel/link/convention-note.js.map +1 -1
- package/dist/kernel/measurement/no-default-contract.d.ts +1 -1
- package/dist/kernel/measurement/no-default-contract.js +2 -2
- package/dist/kernel/measurement/no-default-contract.js.map +1 -1
- package/dist/kernel/searchbackend/engine-search-backend.d.ts +1 -0
- package/dist/kernel/searchbackend/engine-search-backend.js +48 -8
- package/dist/kernel/searchbackend/engine-search-backend.js.map +1 -1
- package/dist/kernel/searchbackend/search-backend.d.ts +3 -1
- package/dist/kernel/searchbackend/search-backend.js +45 -8
- package/dist/kernel/searchbackend/search-backend.js.map +1 -1
- package/dist/kernel/semantic/semantic-engine.d.ts +11 -12
- package/dist/kernel/semantic/semantic-engine.js +35 -50
- package/dist/kernel/semantic/semantic-engine.js.map +1 -1
- package/dist/kernel/semantic/semantic-retrieve-args.d.ts +2 -1
- package/dist/kernel/semantic/semantic-retrieve-args.js +27 -0
- package/dist/kernel/semantic/semantic-retrieve-args.js.map +1 -1
- package/dist/kernel/semantic/semantic-retrieve-schema.d.ts +4 -2
- package/dist/kernel/semantic/semantic-retrieve-schema.js +2 -2
- package/dist/kernel/semantic/semantic-retrieve-schema.js.map +1 -1
- package/dist/kernel/semantic/semantic-retrieve.js +2 -2
- package/dist/kernel/semantic/semantic-retrieve.js.map +1 -1
- package/dist/kernel/semantic/semantic-tool-schemas.js +13 -1
- package/dist/kernel/semantic/semantic-tool-schemas.js.map +1 -1
- package/dist/kernel/setup/service.d.ts +3 -0
- package/dist/kernel/setup/service.js +22 -0
- package/dist/kernel/setup/service.js.map +1 -1
- package/dist/kernel/templates/resolver.d.ts +5 -0
- package/dist/kernel/templates/resolver.js +30 -1
- package/dist/kernel/templates/resolver.js.map +1 -1
- package/dist/mcp/server.js +16 -17
- package/dist/mcp/server.js.map +1 -1
- package/docs/conventions.md +19 -6
- package/docs/install.md +30 -1
- package/docs/verified-target.md +12 -2
- package/package.json +1 -1
- package/dist/cli/semantic-args.d.ts +0 -13
- package/dist/cli/semantic-args.js.map +0 -1
- package/dist/cli/semantic-http.d.ts +0 -11
- package/dist/cli/semantic-http.js.map +0 -1
- package/dist/cli/semantic-usage.d.ts +0 -1
- package/dist/cli/semantic-usage.js +0 -20
- package/dist/cli/semantic-usage.js.map +0 -1
- package/dist/cli/semantic.d.ts +0 -9
- package/dist/cli/semantic.js +0 -189
- package/dist/cli/semantic.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.10.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.10.0"
|
|
41
41
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oms",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Oh My Second Brain convention layer for Obsidian vaults — Codex native rules, skills, and MCP adapter.",
|
|
5
5
|
"_note": "oms install writes Codex MCP config, installs ~/.codex/rules/oms.md, and installs ~/.codex/skills/oms-*.",
|
|
6
6
|
"skills": "./assets/skills/",
|
package/CHANGELOG-assets.md
CHANGED
|
@@ -4,6 +4,12 @@ Skills, agents, templates, and host guidance changes belong here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.10.0] - 2026-09-01
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **The `/search` skill now documents an explicit `strategy` in `oms_search` calls with `op: "query"`.** Its frontmatter is unchanged.
|
|
12
|
+
|
|
7
13
|
## [0.9.0] - 2026-08-31
|
|
8
14
|
|
|
9
15
|
### Changed
|
package/CHANGELOG-cli.md
CHANGED
|
@@ -4,6 +4,19 @@ Changes to the `oms` command surface belong here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.10.0] - 2026-09-01
|
|
8
|
+
|
|
9
|
+
### Breaking
|
|
10
|
+
|
|
11
|
+
- **OMS now has one search taxonomy.** `oms semantic` and the old top-level collection, context, cleanup, and HTTP aliases are removed; use `oms search`, `oms doc get|multi-get`, `oms embed`, and `oms serve`. `oms index` contains exactly `sync|status|cleanup|collections|contexts`; embedding remains the compact top-level `oms embed` command.
|
|
12
|
+
- **Setup model options have changed.** `--embedding-*` is replaced by `--models-default`, `--models-descriptor`, and `--models-no-default`.
|
|
13
|
+
- **The embedding runtime is local-only.** The former Upstage provider path is removed; configured model identities must resolve to verified local GGUF artifacts.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **Search now uses an explicit closed qmd-v2.8.3 expansion strategy.** `--max-queries` is strict, reranking is opt-in, and local model-set descriptors are supported.
|
|
18
|
+
- **`oms serve` exposes only the canonical HTTP endpoints.** `/health`, `/search`, `/get`, and `/multi-get` remain; no query alias or second MCP tool surface is advertised.
|
|
19
|
+
|
|
7
20
|
## [0.9.0] - 2026-08-31
|
|
8
21
|
|
|
9
22
|
### Changed
|
package/CHANGELOG-kernel.md
CHANGED
|
@@ -4,6 +4,13 @@ Domain logic changes belong here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.10.0] - 2026-09-01
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **The kernel now manages model lifecycle explicitly and carries active-template taxonomy context through the canonical engine search path.** It reports unavailable capabilities honestly instead of silently claiming support.
|
|
12
|
+
- **Local model execution now has one strict lifecycle.** Vault model selection outranks setup defaults, GGUF contexts wait for admitted work before disposal, cross-encoder reranking receives bounded note content rather than filenames, and the inconsistent Upstage branch is removed.
|
|
13
|
+
|
|
7
14
|
## [0.9.0] - 2026-08-31
|
|
8
15
|
|
|
9
16
|
### Changed
|
package/CHANGELOG-mcp.md
CHANGED
|
@@ -4,6 +4,12 @@ MCP server tools and resources belong here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.10.0] - 2026-09-01
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **`oms_search` query now accepts the closed `strategy`, `maxQueries`, `rerank`, and `candidateLimit` controls.** Query budgets are strict integers, expansion is not advertised on context retrieval, and these controls remain on the existing tool; no additional public search tool was added.
|
|
12
|
+
|
|
7
13
|
## [0.9.0] - 2026-08-31
|
|
8
14
|
|
|
9
15
|
### Changed
|
package/CHANGELOG-vendors.md
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,26 @@ This aggregate changelog contains changes that span multiple layers.
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [0.10.0] - 2026-09-01
|
|
14
|
+
|
|
15
|
+
### Breaking
|
|
16
|
+
|
|
17
|
+
- **OMS now has one search taxonomy.** `oms semantic` and the old top-level collection, context, cleanup, and HTTP aliases are removed; use `oms search`, `oms doc get|multi-get`, `oms embed`, and `oms serve`. `oms index` contains exactly `sync|status|cleanup|collections|contexts`; embedding remains the compact top-level `oms embed` command.
|
|
18
|
+
- **Setup model options have changed.** `--embedding-*` is replaced by `--models-default`, `--models-descriptor`, and `--models-no-default`.
|
|
19
|
+
- **The embedding runtime is local-only.** The former Upstage provider path is removed; configured model identities must resolve to verified local GGUF artifacts.
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- **Search now uses an explicit closed qmd-v2.8.3 expansion strategy.** `--max-queries` is strict, reranking is opt-in, and local model-set descriptors are supported.
|
|
24
|
+
- **`oms serve` exposes only `/health`, `/search`, `/get`, and `/multi-get`.** It does not add a query alias or a second MCP tool surface.
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- **The kernel makes model lifecycle and capability availability explicit.** The canonical engine path carries active-template taxonomy context into search rather than silently claiming unavailable capabilities.
|
|
29
|
+
- **Model-bearing work is lifecycle-safe and content-aware.** Vault selection outranks setup defaults, GGUF disposal waits for admitted work, and reranking scores bounded note content instead of filenames.
|
|
30
|
+
- **MCP search accepts `strategy`, `maxQueries`, `rerank`, and `candidateLimit` through the existing `oms_search` tool.** No additional public search tool was added.
|
|
31
|
+
- **The `/search` skill now calls `oms_search` with `op: "query"` and an explicit strategy.** Its frontmatter is unchanged.
|
|
32
|
+
|
|
13
33
|
## [0.9.0] - 2026-08-31
|
|
14
34
|
|
|
15
35
|
### Changed
|
package/README.ko.md
CHANGED
|
@@ -34,13 +34,36 @@ oms update 패키지 업데이트 확인/적용 후 어댑터 재조정
|
|
|
34
34
|
oms reconcile 엄격한 전역 볼트 포인터로 호스트 재기록
|
|
35
35
|
oms doctor 템플릿 권위와 파생 상태 진단
|
|
36
36
|
oms lint 깨진 [[wikilink]]와 고아 노트 점검
|
|
37
|
-
oms
|
|
37
|
+
oms search <text> 일반 lexical 검색; --vec, --hyde, --expand, --max-queries 1..32, --rerank은 명시적 선택
|
|
38
|
+
oms embed 색인된 노트의 임베딩 생성
|
|
39
|
+
oms index sync|status|cleanup|collections|contexts
|
|
40
|
+
oms doc get|multi-get
|
|
41
|
+
oms serve 로컬 검색 HTTP 서버 시작
|
|
38
42
|
oms mcp stdio MCP 서버 시작
|
|
39
43
|
oms hook Claude pre/post tool-use 볼트 가드 실행
|
|
40
44
|
```
|
|
41
45
|
|
|
42
46
|
`oh-my-second-brain`이 전체 명령이고 `oms`는 짧은 별칭이다.
|
|
43
47
|
|
|
48
|
+
`oms search <text>`는 lexical-only다. `--vec`, `--hyde`는 각각의 typed
|
|
49
|
+
channel을 선택하고, `--expand`는 G004 expansion을 명시적으로 켜며,
|
|
50
|
+
`--max-queries`는 1부터 32까지의 정수만 받는다. `--rerank`도 opt-in이다.
|
|
51
|
+
`oms embed`가 유일한 embedding 명령이며 `oms index`에는 embedding
|
|
52
|
+
subcommand가 없다.
|
|
53
|
+
|
|
54
|
+
Vector 검색에는 검증된 로컬 embedding capability가 필요하다. 선택 경로는
|
|
55
|
+
완전한 `OMS_EMBEDDING_PROVIDER`/`OMS_EMBEDDING_MODEL` 쌍, vault의
|
|
56
|
+
`.oms/models.json`과 검증된 설치 receipt, 또는 setup-installed default다.
|
|
57
|
+
HyDE에는 resolved generate capability가, reranking에는 resolved rerank
|
|
58
|
+
capability가 필요하다. 각각의 완전한 환경변수 쌍은
|
|
59
|
+
`OMS_GENERATE_PROVIDER`/`OMS_GENERATE_MODEL`과
|
|
60
|
+
`OMS_RERANK_PROVIDER`/`OMS_RERANK_MODEL`이다. 누락되거나 불완전하거나
|
|
61
|
+
설치되지 않은 선택은 크게 실패한다. G004
|
|
62
|
+
expansion은 명시적으로 사용할 수 있는 기능이며, 교체·parity·outperformance를
|
|
63
|
+
주장하지 않는다.
|
|
64
|
+
Setup에서는 로컬 검증 acquisition 정책 하나를 선택한다:
|
|
65
|
+
`--models-default`, `--models-descriptor <path>`, `--models-no-default`.
|
|
66
|
+
|
|
44
67
|
## MCP 도구
|
|
45
68
|
|
|
46
69
|
`oms mcp`는 정확히 다섯 개의 공개 도구를 노출한다:
|
package/README.md
CHANGED
|
@@ -34,13 +34,34 @@ oms update Check/apply a package update and reconcile adapters
|
|
|
34
34
|
oms reconcile Re-stamp hosts from the strict global vault pointer
|
|
35
35
|
oms doctor Diagnose template authority and derived state
|
|
36
36
|
oms lint Check broken [[wikilinks]] and orphan notes
|
|
37
|
-
oms
|
|
37
|
+
oms search <text> Plain lexical search; --vec, --hyde, --expand, --max-queries 1..32, and --rerank are explicit
|
|
38
|
+
oms embed Generate embeddings for indexed notes
|
|
39
|
+
oms index sync|status|cleanup|collections|contexts
|
|
40
|
+
oms doc get|multi-get
|
|
41
|
+
oms serve Start the local search HTTP server
|
|
38
42
|
oms mcp Start the stdio MCP server
|
|
39
43
|
oms hook Run Claude pre/post tool-use vault guards
|
|
40
44
|
```
|
|
41
45
|
|
|
42
46
|
`oh-my-second-brain` is the full command; `oms` is its short alias.
|
|
43
47
|
|
|
48
|
+
`oms search <text>` is lexical-only. `--vec` and `--hyde` select their respective
|
|
49
|
+
typed channels; `--expand` explicitly enables G004 expansion, `--max-queries`
|
|
50
|
+
accepts an integer from 1 through 32, and `--rerank` is opt-in. `oms embed` is
|
|
51
|
+
the sole embedding command; `oms index` has no embedding subcommand.
|
|
52
|
+
|
|
53
|
+
Vector search requires a verified local embedding capability, selected by a
|
|
54
|
+
complete `OMS_EMBEDDING_PROVIDER`/`OMS_EMBEDDING_MODEL` pair, the vault's
|
|
55
|
+
`.oms/models.json` plus its verified installed receipt, or a setup-installed
|
|
56
|
+
default. HyDE also requires a resolved generate capability; reranking requires
|
|
57
|
+
a resolved rerank capability. Their complete environment pairs are
|
|
58
|
+
`OMS_GENERATE_PROVIDER`/`OMS_GENERATE_MODEL` and
|
|
59
|
+
`OMS_RERANK_PROVIDER`/`OMS_RERANK_MODEL`. Missing, incomplete, or uninstalled
|
|
60
|
+
selections fail loudly. G004 expansion is an explicit
|
|
61
|
+
available capability; it makes no replacement, parity, or outperformance claim.
|
|
62
|
+
During setup, choose one local verified acquisition policy:
|
|
63
|
+
`--models-default`, `--models-descriptor <path>`, or `--models-no-default`.
|
|
64
|
+
|
|
44
65
|
## MCP tools
|
|
45
66
|
|
|
46
67
|
`oms mcp` exposes exactly five public tools:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oms",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Oh My Second Brain convention layer for Obsidian vaults — Hermes skill bundle and MCP adapter.",
|
|
5
5
|
"_note": "oms install writes ~/.hermes/config.yaml mcp_servers.oms and installs skills under ~/.hermes/skills/knowledge-management/oms/."
|
|
6
6
|
}
|
|
@@ -19,6 +19,7 @@ Retrieve vault knowledge without changing the vault.
|
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
Plain `query` is projection-independent lexical retrieval and remains available when no embedding provider is configured. Template-managed source files are never returned as notes.
|
|
22
|
+
Expansion is explicit only for `oms_search` `op: "query"` through the closed strategy object and never changes a plain lexical query.
|
|
22
23
|
|
|
23
24
|
Use `oms_search { op: "templates" }` to discover stable template IDs and declared axes. Typed queries use the same derived projection as writes:
|
|
24
25
|
|
package/dist/cli/args.d.ts
CHANGED
|
@@ -23,10 +23,9 @@ export interface ParsedCliArgs {
|
|
|
23
23
|
readonly json: boolean;
|
|
24
24
|
readonly folders: readonly string[];
|
|
25
25
|
readonly conventionNote: boolean;
|
|
26
|
-
readonly
|
|
27
|
-
readonly
|
|
28
|
-
|
|
29
|
-
readonly embeddingDefault: boolean;
|
|
26
|
+
readonly modelsDescriptorPath: string | undefined;
|
|
27
|
+
readonly modelsNoDefault: boolean;
|
|
28
|
+
readonly modelsDefault: boolean;
|
|
30
29
|
readonly unknownFlags: readonly string[];
|
|
31
30
|
readonly error: CliArgumentError | undefined;
|
|
32
31
|
}
|
package/dist/cli/args.js
CHANGED
|
@@ -31,9 +31,9 @@ export function parseCliArgs(argv, cwd = process.cwd()) {
|
|
|
31
31
|
let json = false;
|
|
32
32
|
const folders = [];
|
|
33
33
|
let conventionNote = true;
|
|
34
|
-
let
|
|
35
|
-
let
|
|
36
|
-
let
|
|
34
|
+
let modelsDescriptorPath;
|
|
35
|
+
let modelsNoDefault = false;
|
|
36
|
+
let modelsDefault = false;
|
|
37
37
|
const unknownFlags = [];
|
|
38
38
|
for (let i = 1; i < argv.length; i++) {
|
|
39
39
|
const arg = argv[i];
|
|
@@ -117,20 +117,41 @@ export function parseCliArgs(argv, cwd = process.cwd()) {
|
|
|
117
117
|
else if (arg === "--no-convention-note") {
|
|
118
118
|
conventionNote = false;
|
|
119
119
|
}
|
|
120
|
-
else if (arg === "--
|
|
121
|
-
|
|
120
|
+
else if (arg === "--models-descriptor") {
|
|
121
|
+
if (next === undefined || next === "" || next.startsWith("-")) {
|
|
122
|
+
return parsedArgsWithError("[oms] Missing value for --models-descriptor. Choose one of --models-default, --models-descriptor <path>, or --models-no-default.");
|
|
123
|
+
}
|
|
124
|
+
modelsDescriptorPath = path.resolve(cwd, next);
|
|
122
125
|
i++;
|
|
123
126
|
}
|
|
124
|
-
else if (arg === "--
|
|
125
|
-
|
|
127
|
+
else if (arg === "--models-no-default") {
|
|
128
|
+
modelsNoDefault = true;
|
|
129
|
+
}
|
|
130
|
+
else if (arg === "--models-default") {
|
|
131
|
+
modelsDefault = true;
|
|
126
132
|
}
|
|
127
|
-
else if (arg === "--embedding-
|
|
128
|
-
|
|
133
|
+
else if (arg === "--embedding-descriptor") {
|
|
134
|
+
unknownFlags.push(arg);
|
|
135
|
+
if (next !== undefined && !next.startsWith("--"))
|
|
136
|
+
i++;
|
|
137
|
+
}
|
|
138
|
+
else if (arg === "--embedding-default" || arg === "--embedding-no-default") {
|
|
139
|
+
unknownFlags.push(arg);
|
|
129
140
|
}
|
|
130
141
|
else if (arg !== undefined) {
|
|
131
142
|
unknownFlags.push(arg);
|
|
132
143
|
}
|
|
133
144
|
}
|
|
145
|
+
if (command === "setup") {
|
|
146
|
+
const modelChoices = [
|
|
147
|
+
modelsDescriptorPath !== undefined ? "--models-descriptor" : undefined,
|
|
148
|
+
modelsDefault ? "--models-default" : undefined,
|
|
149
|
+
modelsNoDefault ? "--models-no-default" : undefined,
|
|
150
|
+
].filter((flag) => flag !== undefined);
|
|
151
|
+
if (modelChoices.length > 1) {
|
|
152
|
+
return parsedArgsWithError(`[oms] Mutually exclusive setup model options: ${modelChoices.join(" and ")}. Choose one of --models-default, --models-descriptor <path>, or --models-no-default.`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
134
155
|
return {
|
|
135
156
|
command,
|
|
136
157
|
vault,
|
|
@@ -151,9 +172,9 @@ export function parseCliArgs(argv, cwd = process.cwd()) {
|
|
|
151
172
|
json,
|
|
152
173
|
folders,
|
|
153
174
|
conventionNote,
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
175
|
+
modelsDescriptorPath,
|
|
176
|
+
modelsNoDefault,
|
|
177
|
+
modelsDefault,
|
|
157
178
|
unknownFlags,
|
|
158
179
|
error: undefined,
|
|
159
180
|
};
|
|
@@ -178,9 +199,9 @@ export function parseCliArgs(argv, cwd = process.cwd()) {
|
|
|
178
199
|
json,
|
|
179
200
|
folders,
|
|
180
201
|
conventionNote,
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
202
|
+
modelsDescriptorPath,
|
|
203
|
+
modelsNoDefault,
|
|
204
|
+
modelsDefault,
|
|
184
205
|
unknownFlags,
|
|
185
206
|
error: new CliArgumentError(message),
|
|
186
207
|
};
|
package/dist/cli/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAG/E,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ParsedSearchArgs } from "./search-args.js";
|
|
2
|
+
export interface DocCommandOptions {
|
|
3
|
+
readonly args: ParsedSearchArgs;
|
|
4
|
+
readonly vault: string;
|
|
5
|
+
readonly write: (message: string) => void;
|
|
6
|
+
readonly writeError: (message: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function runDocCommand(options: DocCommandOptions): Promise<number>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { booleanOption, numberOption, printJson, stringOption, targetList, } from "./search-args.js";
|
|
2
|
+
import { runEngineSession } from "./engine-session.js";
|
|
3
|
+
import { searchUsage } from "./search-usage.js";
|
|
4
|
+
export async function runDocCommand(options) {
|
|
5
|
+
const { args, vault, write, writeError } = options;
|
|
6
|
+
const command = args.positional[1];
|
|
7
|
+
const rest = args.positional.slice(2);
|
|
8
|
+
if (command === "get") {
|
|
9
|
+
const target = rest[0];
|
|
10
|
+
if (!target) {
|
|
11
|
+
writeError("Usage: oms doc get <target>");
|
|
12
|
+
return 1;
|
|
13
|
+
}
|
|
14
|
+
return runEngineSession(vault, { write: false }, async (adapter) => {
|
|
15
|
+
const result = await adapter.getDocument({
|
|
16
|
+
vault,
|
|
17
|
+
target,
|
|
18
|
+
collection: stringOption(args, "collection"),
|
|
19
|
+
fromLine: numberOption(args, "fromLine"),
|
|
20
|
+
lineCount: numberOption(args, "lineCount"),
|
|
21
|
+
lineNumbers: booleanOption(args, "lineNumbers"),
|
|
22
|
+
fullPath: booleanOption(args, "fullPath"),
|
|
23
|
+
});
|
|
24
|
+
printJson(write, result);
|
|
25
|
+
return result.available ? 0 : 1;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
if (command === "multi-get") {
|
|
29
|
+
const targets = targetList(rest);
|
|
30
|
+
if (targets.length === 0) {
|
|
31
|
+
writeError("Usage: oms doc multi-get <target...>");
|
|
32
|
+
return 1;
|
|
33
|
+
}
|
|
34
|
+
return runEngineSession(vault, { write: false }, async (adapter) => {
|
|
35
|
+
const result = await adapter.multiGetDocuments({
|
|
36
|
+
vault,
|
|
37
|
+
targets: [...targets],
|
|
38
|
+
collection: stringOption(args, "collection"),
|
|
39
|
+
lineLimit: numberOption(args, "lineLimit"),
|
|
40
|
+
maxBytes: numberOption(args, "maxBytes"),
|
|
41
|
+
lineNumbers: booleanOption(args, "lineNumbers"),
|
|
42
|
+
fullPath: booleanOption(args, "fullPath"),
|
|
43
|
+
});
|
|
44
|
+
printJson(write, result);
|
|
45
|
+
return result.available ? 0 : 1;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
writeError(searchUsage());
|
|
49
|
+
return 1;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=doc-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-command.js","sourceRoot":"","sources":["../../src/cli/doc-command.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,UAAU,GAEX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAShD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA0B;IAC5D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,UAAU,CAAC,6BAA6B,CAAC,CAAC;YAC1C,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACjE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC;gBACvC,KAAK;gBACL,MAAM;gBACN,UAAU,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC;gBAC5C,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC;gBACxC,SAAS,EAAE,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC;gBAC1C,WAAW,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC;gBAC/C,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC;aAC1C,CAAC,CAAC;YACH,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,sCAAsC,CAAC,CAAC;YACnD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACjE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC;gBAC7C,KAAK;gBACL,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;gBACrB,UAAU,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC;gBAC5C,SAAS,EAAE,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC;gBAC1C,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC;gBACxC,WAAW,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC;gBAC/C,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC;aAC1C,CAAC,CAAC;YACH,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { McpEngineAdapter } from "../kernel/engine/mcp/facade.js";
|
|
2
|
+
export interface EngineSessionOptions {
|
|
3
|
+
readonly write: boolean;
|
|
4
|
+
readonly embed?: boolean;
|
|
5
|
+
readonly modelCacheDir?: string;
|
|
6
|
+
readonly modelEnv?: Readonly<Record<string, string | undefined>>;
|
|
7
|
+
}
|
|
8
|
+
export interface EngineSession {
|
|
9
|
+
readonly adapter: McpEngineAdapter;
|
|
10
|
+
dispose(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
/** Fails loudly under ADR-007 before an operation that requires real embeddings. */
|
|
13
|
+
export declare function ensureEmbeddingCapability(vault: string, modelCacheDir?: string, modelEnv?: Readonly<Record<string, string | undefined>>): void;
|
|
14
|
+
export declare function createEngineSession(vault: string, options: EngineSessionOptions): EngineSession;
|
|
15
|
+
export declare function runEngineSession<T>(vault: string, options: EngineSessionOptions, fn: (adapter: McpEngineAdapter) => Promise<T>): Promise<T>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { assembleCoreSemanticEngineReadOnly, assembleEngineReadOnly, assembleEphemeralCoreSemanticEngine, } from "../kernel/engine/assemble.js";
|
|
2
|
+
import { assembleFullSemanticEngine, assembleSemanticEngine, embeddingConfigPresent, } from "../kernel/semantic/semantic-engine.js";
|
|
3
|
+
import { readModelsConfigSync } from "../kernel/engine/embed/config.js";
|
|
4
|
+
import { readInstalledModelsReceiptSync } from "../kernel/engine/embed/model.js";
|
|
5
|
+
/** Fails loudly under ADR-007 before an operation that requires real embeddings. */
|
|
6
|
+
export function ensureEmbeddingCapability(vault, modelCacheDir, modelEnv) {
|
|
7
|
+
if (!embeddingConfigPresent(vault, modelCacheDir, modelEnv)) {
|
|
8
|
+
throw new Error(`Embedding capability is unavailable for ${vault}. Configure OMS_EMBEDDING_PROVIDER and OMS_EMBEDDING_MODEL, declare embed in .oms/models.json, or run oms setup --models-default.`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function createEngineSession(vault, options) {
|
|
12
|
+
if (options.embed === true) {
|
|
13
|
+
ensureEmbeddingCapability(vault, options.modelCacheDir, options.modelEnv);
|
|
14
|
+
const engine = assembleFullSemanticEngine(vault, undefined, options.modelCacheDir, options.modelEnv);
|
|
15
|
+
return { adapter: engine.adapter, dispose: () => engine.dispose() };
|
|
16
|
+
}
|
|
17
|
+
if (options.write) {
|
|
18
|
+
const engine = assembleSemanticEngine(vault, undefined, options.modelCacheDir, options.modelEnv);
|
|
19
|
+
return { adapter: engine.adapter, dispose: () => engine.dispose() };
|
|
20
|
+
}
|
|
21
|
+
const modelInputs = {
|
|
22
|
+
vault,
|
|
23
|
+
modelsConfig: readModelsConfigSync(vault),
|
|
24
|
+
installedModelsReceipt: readInstalledModelsReceiptSync(options.modelCacheDir === undefined ? {} : { cacheDir: options.modelCacheDir }),
|
|
25
|
+
...(options.modelCacheDir === undefined ? {} : { embeddingCacheDir: options.modelCacheDir }),
|
|
26
|
+
...(options.modelEnv === undefined ? {} : { modelEnv: options.modelEnv }),
|
|
27
|
+
};
|
|
28
|
+
const readOnly = embeddingConfigPresent(vault, options.modelCacheDir, options.modelEnv)
|
|
29
|
+
? assembleEngineReadOnly({
|
|
30
|
+
...modelInputs,
|
|
31
|
+
})
|
|
32
|
+
: assembleCoreSemanticEngineReadOnly(modelInputs);
|
|
33
|
+
const engine = readOnly ?? assembleEphemeralCoreSemanticEngine(modelInputs);
|
|
34
|
+
return { adapter: engine.adapter, dispose: () => engine.dispose() };
|
|
35
|
+
}
|
|
36
|
+
export async function runEngineSession(vault, options, fn) {
|
|
37
|
+
const session = createEngineSession(vault, options);
|
|
38
|
+
try {
|
|
39
|
+
return await fn(session.adapter);
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
await session.dispose();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=engine-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-session.js","sourceRoot":"","sources":["../../src/cli/engine-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ParsedSearchArgs } from "./search-args.js";
|
|
2
|
+
export interface IndexCommandOptions {
|
|
3
|
+
readonly args: ParsedSearchArgs;
|
|
4
|
+
readonly vault: string;
|
|
5
|
+
readonly write: (message: string) => void;
|
|
6
|
+
readonly writeError: (message: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function runIndexCommand(options: IndexCommandOptions): Promise<number>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { booleanOption, numberOption, printJson, stringOption, } from "./search-args.js";
|
|
2
|
+
import { runEngineSession } from "./engine-session.js";
|
|
3
|
+
import { searchUsage } from "./search-usage.js";
|
|
4
|
+
export async function runIndexCommand(options) {
|
|
5
|
+
const { args, vault, write, writeError } = options;
|
|
6
|
+
const command = args.positional[1];
|
|
7
|
+
if (command === "sync") {
|
|
8
|
+
return runEngineSession(vault, { write: true, embed: false }, async (adapter) => {
|
|
9
|
+
const result = await adapter.syncEmbeddings({
|
|
10
|
+
vault,
|
|
11
|
+
collection: stringOption(args, "collection"),
|
|
12
|
+
index: stringOption(args, "index"),
|
|
13
|
+
embed: false,
|
|
14
|
+
force: booleanOption(args, "force"),
|
|
15
|
+
chunkStrategy: stringOption(args, "chunkStrategy"),
|
|
16
|
+
maxDocsPerBatch: numberOption(args, "maxDocsPerBatch"),
|
|
17
|
+
maxBatchMb: numberOption(args, "maxBatchMb"),
|
|
18
|
+
});
|
|
19
|
+
printJson(write, result);
|
|
20
|
+
return result.available ? 0 : 1;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
if (command === "status") {
|
|
24
|
+
return runEngineSession(vault, { write: false }, async (adapter) => {
|
|
25
|
+
const result = await adapter.semanticStatus({ vault, index: stringOption(args, "index") });
|
|
26
|
+
printJson(write, result);
|
|
27
|
+
return result.available ? 0 : 1;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (command === "cleanup") {
|
|
31
|
+
return runEngineSession(vault, { write: true }, async (adapter) => {
|
|
32
|
+
const result = await adapter.cleanup({ vault, index: stringOption(args, "index") });
|
|
33
|
+
printJson(write, result);
|
|
34
|
+
return result.available ? 0 : 1;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (command === "collections") {
|
|
38
|
+
return runEngineSession(vault, { write: false }, async (adapter) => {
|
|
39
|
+
const result = adapter.listCollections({ vault, index: stringOption(args, "index") });
|
|
40
|
+
if (!result.available) {
|
|
41
|
+
printJson(write, result);
|
|
42
|
+
return 1;
|
|
43
|
+
}
|
|
44
|
+
const name = args.positional[2];
|
|
45
|
+
printJson(write, { collections: name ? result.collections.filter((collection) => collection.name === name) : result.collections });
|
|
46
|
+
return 0;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
if (command === "contexts") {
|
|
50
|
+
return runEngineSession(vault, { write: false }, async (adapter) => {
|
|
51
|
+
const result = await adapter.listContexts({ vault, index: stringOption(args, "index") });
|
|
52
|
+
printJson(write, result);
|
|
53
|
+
return result.available ? 0 : 1;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
writeError(`[oms] Unknown index subcommand: ${command ?? "(none)"}`);
|
|
57
|
+
writeError(searchUsage());
|
|
58
|
+
return 1;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=index-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-command.js","sourceRoot":"","sources":["../../src/cli/index-command.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/oms.d.ts
CHANGED
|
@@ -5,5 +5,5 @@ export { runDoctor, runLint } from "./doctor-lint.js";
|
|
|
5
5
|
export { runAudit } from "./audit.js";
|
|
6
6
|
export { formatLinkResult, runLink, } from "./link-command.js";
|
|
7
7
|
export { runLinkify } from "./linkify.js";
|
|
8
|
-
export { runSetup, type SetupPrompt,
|
|
8
|
+
export { runSetup, type SetupPrompt, } from "./setup-command.js";
|
|
9
9
|
export { maybePrintUpdateNotice } from "./update-notice.js";
|