From 19c7203d6a5dea0eece823f47cfe6f1749f5ce7f Mon Sep 17 00:00:00 2001 From: Jean-Baptiste THERY Date: Thu, 2 Jul 2026 02:54:17 +0700 Subject: [PATCH 1/5] docs: show npm/npx in user-facing command examples, expand mise to Rust pnpm is only relevant to contributors building this monorepo (already covered in CONTRIBUTING.md); people consuming the published @jcode.labs/mimir and @jcode.labs/mimir-tts packages may use any package manager. Flip the README, docs/agent-integration.md, docs/troubleshooting.md, and the per-package READMEs to lead with npm/npx, keeping pnpm as a documented alternative only where it was already explicitly labeled as such. Also pin Rust via mise.toml (only needed for packages/mimir-app's Tauri shell, previously undocumented), add a `bootstrap` script (`mise install && pnpm install`) as the one-command onboarding path, and drop the now-redundant dtolnay/rust-toolchain step from native-app-build.yml in favor of mise installing both Node and Rust. --- .github/workflows/native-app-build.yml | 15 +--- AGENTS.md | 16 ++-- CONTRIBUTING.md | 11 +-- README.md | 100 ++++++++++++------------- docs/agent-integration.md | 38 +++++----- docs/troubleshooting.md | 40 +++++----- mise.toml | 1 + package.json | 1 + packages/mimir-core/README.md | 28 +++---- packages/mimir-tts/README.md | 8 +- 10 files changed, 128 insertions(+), 130 deletions(-) diff --git a/.github/workflows/native-app-build.yml b/.github/workflows/native-app-build.yml index 095dc0f..8e0ff54 100644 --- a/.github/workflows/native-app-build.yml +++ b/.github/workflows/native-app-build.yml @@ -41,7 +41,7 @@ jobs: echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo "$HOME/.local/share/mise/shims" >> "$GITHUB_PATH" - - name: Install pinned Node via mise + - name: Install pinned Node and Rust via mise run: mise install - name: Set up pnpm @@ -49,9 +49,6 @@ jobs: corepack enable corepack prepare pnpm@11.9.0 --activate - - name: Set up Rust - uses: dtolnay/rust-toolchain@stable - - name: Install dependencies run: pnpm install --frozen-lockfile @@ -88,7 +85,7 @@ jobs: echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo "$HOME/.local/share/mise/shims" >> "$GITHUB_PATH" - - name: Install pinned Node via mise + - name: Install pinned Node and Rust via mise run: mise install - name: Set up pnpm @@ -96,9 +93,6 @@ jobs: corepack enable corepack prepare pnpm@11.9.0 --activate - - name: Set up Rust - uses: dtolnay/rust-toolchain@stable - - name: Install dependencies run: pnpm install --frozen-lockfile @@ -136,7 +130,7 @@ jobs: echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo "$HOME/.local/share/mise/shims" >> "$GITHUB_PATH" - - name: Install pinned Node via mise + - name: Install pinned Node and Rust via mise shell: bash run: mise install @@ -146,9 +140,6 @@ jobs: corepack enable corepack prepare pnpm@11.9.0 --activate - - name: Set up Rust - uses: dtolnay/rust-toolchain@stable - - name: Install dependencies run: pnpm install --frozen-lockfile diff --git a/AGENTS.md b/AGENTS.md index a09d851..11c40c3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -154,15 +154,19 @@ `KB_PDF_OCR_COMMAND` and `KB_IMAGE_OCR_COMMAND` remain legacy aliases only. - Keep the repository as a simple pnpm workspace monorepo. Add Turbo only if multiple packages or apps start needing task caching/orchestration beyond `pnpm --filter`. -- The Node.js version is pinned once, in `mise.toml` (via [mise](https://mise.jdx.dev/)). Bump the - version there only, not as a hardcoded `node-version` in individual workflow steps. CI - (`ci.yml`, `native-app-build.yml`) installs mise with the official `curl https://mise.run | sh` - script in a plain `run:` step, not the `jdx/mise-action` marketplace action — this repo's Actions - permissions are restricted to `actions/*`, `github/codeql-action/*`, and verified creators, and +- The Node.js and Rust versions are each pinned once, in `mise.toml` (via + [mise](https://mise.jdx.dev/)); Rust is only used by `packages/mimir-app`'s Tauri shell. Bump + versions there only, not as a hardcoded `node-version` in individual workflow steps. Run `pnpm + bootstrap` (`mise install && pnpm install`) for one-command onboarding. CI (`ci.yml`, + `native-app-build.yml`) installs mise with the official `curl https://mise.run | sh` script in a + plain `run:` step, not the `jdx/mise-action` marketplace action — this repo's Actions permissions + are restricted to `actions/*`, `github/codeql-action/*`, and verified creators, and `jdx/mise-action` does not qualify. `npm-publish.yml` keeps `actions/setup-node` instead, because that step also wires the npm registry `.npmrc` for publishing; keep its `node-version` in sync with `mise.toml` by hand. pnpm stays pinned via Corepack through `packageManager` in - `package.json`, not duplicated in `mise.toml`. + `package.json`, not duplicated in `mise.toml`. Keep mise scoped to toolchain-version pinning — + it is not a package manager or task runner here, so don't mirror `package.json` scripts as mise + tasks; that would just create a second source of truth for no benefit. - Keep Mimir core free of Ollama. `embeddingProvider: "local-hash"` supports ingestion, search, MCP, and cited retrieval without a model server, but it must not be described as equivalent to semantic retrieval. `embeddingProvider: "transformers"` is the optional semantic embedding path. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e03b215..d56fd0a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,16 +4,17 @@ Mimir is an open-source project under the MIT License. Issues and pull requests ## Development -This repo pins its Node.js version with [mise](https://mise.jdx.dev/) (see `mise.toml`), the same -version CI uses. Install mise, then: +This repo pins its Node.js and Rust versions with [mise](https://mise.jdx.dev/) (see `mise.toml`), +the same versions CI uses; Rust is only needed if you're working on `packages/mimir-app`'s Tauri +shell. Install mise, then run the single onboarding command: ```bash -mise install -pnpm install +pnpm bootstrap pnpm validate ``` -Without mise, any Node.js 20+ and pnpm install works too. +`pnpm bootstrap` runs `mise install && pnpm install`. Without mise, any Node.js 20+ and pnpm install +works too — just run `pnpm install` directly. `pnpm validate` runs Biome, a dependency security audit, TypeScript, Vitest, the production CLI/MCP smoke test, and npm package metadata checks. diff --git a/README.md b/README.md index f3eef92..10fd316 100644 --- a/README.md +++ b/README.md @@ -81,11 +81,11 @@ The fastest useful path is to install Mimir in the repository, wire it into the already use, then ask that agent questions grounded in local files: ```bash -pnpm add -D @jcode.labs/mimir -pnpm exec mimir setup -pnpm exec mimir install-agent --agents claude,codex,kimi,opencode,cline -pnpm exec mimir doctor --fix -pnpm exec mimir research "release readiness and risks" --compact +npm install --save-dev @jcode.labs/mimir +npx mimir setup +npx mimir install-agent --agents claude,codex,kimi,opencode,cline +npx mimir doctor --fix +npx mimir research "release readiness and risks" --compact # Claude Code claude mcp add-json --scope local mimir "$(cat .mimir/claude-mcp-server.json)" @@ -216,22 +216,22 @@ release verification, and an external security review. The package is public. Users do not need a JCode Labs account or npm token to install it. -With pnpm: +With npm: ```bash -pnpm add -D @jcode.labs/mimir +npm install --save-dev @jcode.labs/mimir ``` -With npm: +With pnpm: ```bash -npm install --save-dev @jcode.labs/mimir +pnpm add -D @jcode.labs/mimir ``` Install the standalone TTS package only when you want to use it directly: ```bash -pnpm add -D @jcode.labs/mimir-tts +npm install --save-dev @jcode.labs/mimir-tts ``` Maintainer tokens are only needed to publish new versions. @@ -242,7 +242,7 @@ Initialize a repository, install the portable agent kit, run readiness checks, a when supported files are already present: ```bash -pnpm exec mimir setup +npx mimir setup ``` Fresh setup keeps local state under one ignored `.mimir/` folder: @@ -268,18 +268,18 @@ Fresh setup keeps local state under one ignored `.mimir/` folder: ``` It detects the repository package manager and writes the MCP helper files with the right command: -`pnpm exec mimir serve-mcp`, `npx mimir serve-mcp`, `yarn exec mimir serve-mcp`, or `bunx mimir serve-mcp`. +`npx mimir serve-mcp`, `pnpm exec mimir serve-mcp`, `yarn exec mimir serve-mcp`, or `bunx mimir serve-mcp`. When a repository needs a wrapper script or only a subset of agent helpers, make that explicit during setup: ```bash -pnpm exec mimir setup --agents claude,codex --mcp-name project-docs --mcp-command ./scripts/serve-mcp.sh +npx mimir setup --agents claude,codex --mcp-name project-docs --mcp-command ./scripts/serve-mcp.sh ``` For the usual agent-first workflow, expose Mimir to the coding assistants used in the repository: ```bash -pnpm exec mimir install-agent --agents claude,codex,kimi,opencode,cline +npx mimir install-agent --agents claude,codex,kimi,opencode,cline ``` Then wire the agent you use. Claude Code, Codex, and Cline follow the standard MCP shapes from their @@ -309,13 +309,13 @@ context. Check readiness at any time: ```bash -pnpm exec mimir doctor +npx mimir doctor ``` If files are missing from the index, stale, or the setup is incomplete, run: ```bash -pnpm exec mimir doctor --fix +npx mimir doctor --fix ``` `doctor --fix` performs safe repairs: missing scaffolding, Git ignore entries, agent kit install, and @@ -342,8 +342,8 @@ Put supported files under `.mimir/raw/`: Build the local index: ```bash -pnpm exec mimir ingest -pnpm exec mimir doctor +npx mimir ingest +npx mimir doctor ``` When the index is ready, `mimir doctor` prints `ready=true`. `mimir ingest` and `mimir audit` also report @@ -353,45 +353,45 @@ or the file name looks like a secret/private key. List skipped paths explicitly: ```bash -pnpm exec mimir audit --unsupported +npx mimir audit --unsupported ``` Summarize recent metadata-only usage without exposing raw queries or local paths: ```bash -pnpm exec mimir usage-report --days 7 +npx mimir usage-report --days 7 ``` Retrieve exact passages: ```bash -pnpm exec mimir search "approval for offline operation" +npx mimir search "approval for offline operation" ``` Return cited retrieval context for an agent or model: ```bash -pnpm exec mimir ask "What evidence supports offline operation?" +npx mimir ask "What evidence supports offline operation?" ``` Run an audit-backed multi-query research pass before a broad synthesis or implementation task: ```bash -pnpm exec mimir research "release readiness and risks" --compact +npx mimir research "release readiness and risks" --compact ``` Measure recall against a golden query file: ```bash -pnpm exec mimir evaluate --golden golden-queries.json +npx mimir evaluate --golden golden-queries.json ``` For private dogfooding, keep the real corpus and golden query file outside Git or under an ignored local path, then use a threshold that matches the evaluation phase: ```bash -pnpm exec mimir --project-root /path/to/workspace ingest -pnpm exec mimir --project-root /path/to/workspace evaluate --golden .mimir/evaluations/golden-queries.json --fail-under 0.8 --json +npx mimir --project-root /path/to/workspace ingest +npx mimir --project-root /path/to/workspace evaluate --golden .mimir/evaluations/golden-queries.json --fail-under 0.8 --json ``` The JSON report includes the active `embeddingProvider` and `embeddingModel`, so you can compare @@ -400,12 +400,12 @@ default local-hash recall with a private Transformers semantic run without stori Mimir does not synthesize an LLM answer. It returns cited local passages; your chosen agent or model does the writing around those passages. -With npm, use `npx` after installing the package: +With pnpm, use `pnpm exec` after installing the package: ```bash -npx mimir setup -npx mimir doctor -npx mimir search "approval for offline operation" +pnpm exec mimir setup +pnpm exec mimir doctor +pnpm exec mimir search "approval for offline operation" ``` ## Choose A Retrieval Mode @@ -428,9 +428,9 @@ lexical/hash-based, not semantic. Commands: ```bash -pnpm exec mimir ingest -pnpm exec mimir search "offline retrieval approval" -pnpm exec mimir ask "What evidence supports offline operation?" +npx mimir ingest +npx mimir search "offline retrieval approval" +npx mimir ask "What evidence supports offline operation?" ``` `mimir ask` always returns cited retrieved passages instead of a generated synthesis. You can pass those @@ -454,9 +454,9 @@ Use this when you want better semantic retrieval while keeping Mimir core free o Commands: ```bash -pnpm exec mimir models pull --enable -pnpm exec mimir ingest -pnpm exec mimir ask "Which passages support offline operation?" +npx mimir models pull --enable +npx mimir ingest +npx mimir ask "Which passages support offline operation?" ``` `mimir models pull` intentionally allows a one-time download from Hugging Face into @@ -472,9 +472,9 @@ Mimir ships with portable agent skills and a standard MCP server. Use `mimir setup` for the normal path, or install only the agent layer later: ```bash -pnpm exec mimir install-skill -pnpm exec mimir install-skill --agents claude,codex --mcp-command ./scripts/serve-mcp.sh -pnpm exec mimir install-agent --agents claude,codex,kimi,opencode,cline +npx mimir install-skill +npx mimir install-skill --agents claude,codex --mcp-command ./scripts/serve-mcp.sh +npx mimir install-agent --agents claude,codex,kimi,opencode,cline ``` The bundled skill is also directly installable from this repository with the @@ -506,7 +506,7 @@ cat .mimir/cline-mcp.json Start the MCP server from the repository root when a compatible agent needs tool access: ```bash -pnpm exec mimir serve-mcp +npx mimir serve-mcp ``` The MCP server exposes `mimir_status`, `mimir_search`, `mimir_ask`, `mimir_research`, @@ -524,9 +524,9 @@ Mimir includes a plug-and-play text-to-speech path for listenable summaries. For the same quality path as the global Voice Forge skill, install `edge-tts` and render MP3: ```bash -pnpm exec mimir audio --doctor +npx mimir audio --doctor pipx install edge-tts -pnpm exec mimir audio /tmp/MIMIR-SUMMARY-project.txt \ +npx mimir audio /tmp/MIMIR-SUMMARY-project.txt \ --engine edge \ --out .mimir/audio/project-summary.mp3 ``` @@ -539,7 +539,7 @@ By default, `mimir audio` uses the Transformers.js WAV path. For confidential or preload Transformers.js-compatible model files with non-sensitive text, then render WAV offline: ```bash -pnpm exec mimir audio /tmp/MIMIR-SUMMARY-project.txt \ +npx mimir audio /tmp/MIMIR-SUMMARY-project.txt \ --engine transformers \ --offline \ --model-path .mimir/models/tts \ @@ -549,8 +549,8 @@ pnpm exec mimir audio /tmp/MIMIR-SUMMARY-project.txt \ Use the standalone package directly: ```bash -pnpm exec mimir-tts doctor --json -pnpm exec mimir-tts render /tmp/MIMIR-SUMMARY-project.txt \ +npx mimir-tts doctor --json +npx mimir-tts render /tmp/MIMIR-SUMMARY-project.txt \ --engine edge \ --out .mimir/audio/project-summary.mp3 ``` @@ -602,13 +602,13 @@ Mimir is designed for private repositories and sensitive local evidence. Run: ```bash -pnpm exec mimir security-audit --strict +npx mimir security-audit --strict ``` Remove the generated vector index: ```bash -pnpm exec mimir destroy-index --yes +npx mimir destroy-index --yes ``` `destroy-index` does not securely erase SSD or copy-on-write storage. For strong deletion @@ -660,7 +660,7 @@ Custom UTF-8 text extensions can be enabled without changing code: Or through: ```bash -MIMIR_INCLUDE_EXTENSIONS=".transcript,.evidence" pnpm exec mimir ingest +MIMIR_INCLUDE_EXTENSIONS=".transcript,.evidence" npx mimir ingest ``` Audio/video files and formats that are not listed are not useful to Mimir as-is. They can still be @@ -789,13 +789,13 @@ The full public TypeScript API reference lives in Use `mimir doctor` first. It is the shortest path to the next useful action: ```bash -pnpm exec mimir doctor +npx mimir doctor ``` Use `doctor --fix` when you want Mimir to repair safe setup issues automatically: ```bash -pnpm exec mimir doctor --fix +npx mimir doctor --fix ``` Common fixes for empty indexes, weak search, strict security audit failures, and TTS setup live in diff --git a/docs/agent-integration.md b/docs/agent-integration.md index 95de0ea..9aa257f 100644 --- a/docs/agent-integration.md +++ b/docs/agent-integration.md @@ -5,22 +5,22 @@ Mimir ships with portable agent skills and a standard MCP server. If `mimir setup` was not used, install the agent kit into a repository: ```bash -pnpm exec mimir install-skill +npx mimir install-skill ``` By default this writes helper files for every supported agent. To keep a repository focused on only the agents it uses, pass a comma-separated target list: ```bash -pnpm exec mimir setup --agents claude,codex -pnpm exec mimir install-skill --agents claude,codex +npx mimir setup --agents claude,codex +npx mimir install-skill --agents claude,codex ``` If an agent must launch Mimir through a repository wrapper, generate the MCP helpers with that command: ```bash -pnpm exec mimir setup --agents claude,codex --mcp-name project-docs --mcp-command ./scripts/serve-mcp.sh +npx mimir setup --agents claude,codex --mcp-name project-docs --mcp-command ./scripts/serve-mcp.sh ``` This creates: @@ -54,9 +54,9 @@ read the generated `.mimir/README.md` and use the MCP config snippet. For native discovery in a specific agent, install only the agent you use: ```bash -pnpm exec mimir install-agent --agents claude -pnpm exec mimir install-agent --agents kimi -pnpm exec mimir install-agent --agents claude,codex,kimi,opencode,cline +npx mimir install-agent --agents claude +npx mimir install-agent --agents kimi +npx mimir install-agent --agents claude,codex,kimi,opencode,cline ``` By default, `install-agent` writes project-scope skill folders as links back to `.mimir/skills/`. @@ -74,7 +74,7 @@ That keeps one original version of every skill. Add `--scope user` for global in Start the MCP server from the repository root: ```bash -pnpm exec mimir serve-mcp +npx mimir serve-mcp ``` For a repository-level protocol smoke test, run the synthetic demo client: @@ -104,8 +104,8 @@ usage summaries and uses the returned citations. From the target repository root: ```bash -pnpm exec mimir setup --agents claude -pnpm exec mimir install-agent --agents claude +npx mimir setup --agents claude +npx mimir install-agent --agents claude claude mcp add-json --scope local mimir "$(cat .mimir/claude-mcp-server.json)" ``` @@ -119,8 +119,8 @@ config. From the target repository root: ```bash -pnpm exec mimir setup --agents codex -pnpm exec mimir install-agent --agents codex +npx mimir setup --agents codex +npx mimir install-agent --agents codex cat .mimir/codex-mcp.toml ``` @@ -133,8 +133,8 @@ skills. From the target repository root: ```bash -pnpm exec mimir setup --agents kimi -pnpm exec mimir install-agent --agents kimi +npx mimir setup --agents kimi +npx mimir install-agent --agents kimi kimi --mcp-config-file .mimir/kimi-mcp.json ``` @@ -148,8 +148,8 @@ Kimi's global MCP file if you intentionally want a global setup. If you prefer n From the target repository root: ```bash -pnpm exec mimir setup --agents opencode -pnpm exec mimir install-agent --agents opencode +npx mimir setup --agents opencode +npx mimir install-agent --agents opencode cat .mimir/opencode.jsonc ``` @@ -160,8 +160,8 @@ Copy or merge the generated snippet into the OpenCode config layer you use for t From the target repository root: ```bash -pnpm exec mimir setup --agents cline -pnpm exec mimir install-agent --agents cline +npx mimir setup --agents cline +npx mimir install-agent --agents cline cat .mimir/cline-mcp.json ``` @@ -194,5 +194,5 @@ Git. Print the bundled skill path from the installed package: ```bash -pnpm exec mimir skill-path +npx mimir skill-path ``` diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 33cb792..3c30061 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -3,13 +3,13 @@ Use `mimir doctor` first. It is the shortest path to the next useful action: ```bash -pnpm exec mimir doctor +npx mimir doctor ``` Use `doctor --fix` when you want Mimir to repair safe setup issues automatically: ```bash -pnpm exec mimir doctor --fix +npx mimir doctor --fix ``` ## `mimir doctor` Says The Project Is Not Initialized @@ -17,8 +17,8 @@ pnpm exec mimir doctor --fix Run: ```bash -pnpm exec mimir setup -pnpm exec mimir doctor +npx mimir setup +npx mimir doctor ``` Commit only safe scaffolding if this is a real repository. Do not commit local Mimir state, env @@ -30,8 +30,8 @@ Check that supported files exist under `.mimir/raw/`: ```bash find .mimir/raw -maxdepth 2 -type f -pnpm exec mimir ingest -pnpm exec mimir doctor +npx mimir ingest +npx mimir doctor ``` If documents live elsewhere, add one path per line to `.mimir/sources.txt`. Relative paths resolve from @@ -40,7 +40,7 @@ the project root. If files exist but are not supported yet, inspect the skipped inventory: ```bash -pnpm exec mimir audit --unsupported +npx mimir audit --unsupported ``` Then follow the per-file recommendation: convert unsupported binaries to a supported format, @@ -117,14 +117,14 @@ working offline: When remote download is acceptable, preload the configured embedding model first: ```bash -pnpm exec mimir models pull --enable +npx mimir models pull --enable ``` Switching providers requires a full re-ingest: ```bash -pnpm exec mimir ingest --rebuild -pnpm exec mimir doctor +npx mimir ingest --rebuild +npx mimir doctor ``` ## `mimir audit` Reports Missing Or Stale Files @@ -132,14 +132,14 @@ pnpm exec mimir doctor Run: ```bash -pnpm exec mimir ingest -pnpm exec mimir audit +npx mimir ingest +npx mimir audit ``` Or let doctor perform the safe incremental update: ```bash -pnpm exec mimir doctor --fix +npx mimir doctor --fix ``` Mimir incrementally reuses unchanged indexed rows on normal `mimir ingest`. Use `mimir ingest --rebuild` @@ -158,8 +158,8 @@ Read the warning lines. Common causes: Run the safe repair command if Git ignore entries are missing: ```bash -pnpm exec mimir doctor --fix -pnpm exec mimir security-audit --strict +npx mimir doctor --fix +npx mimir security-audit --strict ``` ## MP3 Audio Fails Without `--engine edge` @@ -167,7 +167,7 @@ pnpm exec mimir security-audit --strict This is intentional. MP3 output uses online Edge TTS and requires explicit consent: ```bash -pnpm exec mimir audio /tmp/summary.txt \ +npx mimir audio /tmp/summary.txt \ --engine edge \ --out .mimir/audio/summary.mp3 ``` @@ -175,7 +175,7 @@ pnpm exec mimir audio /tmp/summary.txt \ For confidential or offline work, use WAV: ```bash -pnpm exec mimir audio /tmp/summary.txt \ +npx mimir audio /tmp/summary.txt \ --engine transformers \ --offline \ --out .mimir/audio/summary.wav @@ -187,7 +187,7 @@ Install the external CLI: ```bash pipx install edge-tts -pnpm exec mimir audio --doctor +npx mimir audio --doctor ``` Only use Edge TTS when sending narration text to the online service is acceptable. @@ -201,7 +201,7 @@ For a first online setup, use non-sensitive text: ```bash printf 'Mimir offline speech preload check.' > /tmp/mimir-tts-preload.txt -pnpm exec mimir-tts render /tmp/mimir-tts-preload.txt \ +npx mimir-tts render /tmp/mimir-tts-preload.txt \ --engine transformers \ --allow-remote-models \ --model-path .mimir/models/tts \ @@ -211,7 +211,7 @@ pnpm exec mimir-tts render /tmp/mimir-tts-preload.txt \ Then reuse the cached files with: ```bash -pnpm exec mimir-tts render /tmp/mimir-tts-preload.txt \ +npx mimir-tts render /tmp/mimir-tts-preload.txt \ --offline \ --model-path .mimir/models/tts \ --out .mimir/audio/offline-check.wav diff --git a/mise.toml b/mise.toml index 3a63642..adaabaf 100644 --- a/mise.toml +++ b/mise.toml @@ -1,5 +1,6 @@ [tools] node = "22" +rust = "stable" [settings] experimental = true diff --git a/package.json b/package.json index 2214cd1..08ed80f 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "license": "MIT", "packageManager": "pnpm@11.9.0", "scripts": { + "bootstrap": "mise install && pnpm install", "audit:security": "pnpm audit --audit-level moderate", "build": "pnpm --filter @jcode.labs/mimir-ui build && pnpm --filter @jcode.labs/mimir-app build && pnpm --filter @jcode.labs/mimir-landing build && pnpm --filter @jcode.labs/mimir-license-webhook build && pnpm --filter @jcode.labs/mimir-tts build && pnpm --filter @jcode.labs/mimir build", "check": "pnpm --filter @jcode.labs/mimir-ui check && pnpm --filter @jcode.labs/mimir-app check && pnpm --filter @jcode.labs/mimir-landing check && pnpm --filter @jcode.labs/mimir-license-webhook check && pnpm --filter @jcode.labs/mimir-tts check && pnpm --filter @jcode.labs/mimir check", diff --git a/packages/mimir-core/README.md b/packages/mimir-core/README.md index 7946320..6b810ee 100644 --- a/packages/mimir-core/README.md +++ b/packages/mimir-core/README.md @@ -34,15 +34,15 @@ evidence. ## Install ```bash -pnpm add -D @jcode.labs/mimir +npm install --save-dev @jcode.labs/mimir ``` ## Quick Start ```bash -pnpm exec mimir setup -pnpm exec mimir install-agent --agents claude,codex,kimi,opencode,cline -pnpm exec mimir doctor --fix +npx mimir setup +npx mimir install-agent --agents claude,codex,kimi,opencode,cline +npx mimir doctor --fix # Claude Code claude mcp add-json --scope local mimir "$(cat .mimir/claude-mcp-server.json)" @@ -60,7 +60,7 @@ cat .mimir/opencode.jsonc cat .mimir/cline-mcp.json ``` -Use `pnpm exec mimir setup --agents claude,codex --mcp-command ./scripts/serve-mcp.sh` when a +Use `npx mimir setup --agents claude,codex --mcp-command ./scripts/serve-mcp.sh` when a repository should generate only selected MCP helpers or launch through a local wrapper. By default, Mimir keeps local config, raw documents, generated indexes, access logs, models, reports, @@ -70,27 +70,27 @@ text. `mimir setup` adds the matching Git ignore entry for local Mimir state. The primary workflow is agent-first: Claude Code, Codex, Kimi, OpenCode, Cline, or another MCP-capable assistant asks Mimir for cited local context, then writes or reasons from those -citations. For terminal checks, use `pnpm exec mimir search "your question"` or -`pnpm exec mimir ask "your question"`. For broader implementation or review work, use -`pnpm exec mimir research "your topic" --compact` before asking the agent to synthesize. +citations. For terminal checks, use `npx mimir search "your question"` or +`npx mimir ask "your question"`. For broader implementation or review work, use +`npx mimir research "your topic" --compact` before asking the agent to synthesize. -Run `pnpm exec mimir doctor --fix` later to repair missing setup or rebuild stale indexes. -For better semantic Q&A, run `pnpm exec mimir models pull --enable`, then run -`pnpm exec mimir ingest --rebuild`. +Run `npx mimir doctor --fix` later to repair missing setup or rebuild stale indexes. +For better semantic Q&A, run `npx mimir models pull --enable`, then run +`npx mimir ingest --rebuild`. ## Entry Points - CLI: `mimir` - Library import: `@jcode.labs/mimir` -- MCP server: `pnpm exec mimir serve-mcp` -- Bundled skills: `pnpm exec mimir setup` or `pnpm exec mimir install-skill` +- MCP server: `npx mimir serve-mcp` +- Bundled skills: `npx mimir setup` or `npx mimir install-skill` The public TypeScript API reference is maintained in the root repository at [`docs/api-reference.md`](https://github.com/jcode-works/jcode-mimir/blob/main/docs/api-reference.md). ## Main Agent Setup -After `pnpm exec mimir setup`, use `pnpm exec mimir install-agent --agents claude`, `--agents kimi`, +After `npx mimir setup`, use `npx mimir install-agent --agents claude`, `--agents kimi`, `--agents cline`, or a comma-separated list for native agent skill discovery. Native agent folders link back to `.mimir/skills/` by default so there is one original skill source. Mimir Core also generates MCP helpers for Claude Code, Codex, Kimi, OpenCode, and Cline under `.mimir/`. See the diff --git a/packages/mimir-tts/README.md b/packages/mimir-tts/README.md index 8a17896..f86e024 100644 --- a/packages/mimir-tts/README.md +++ b/packages/mimir-tts/README.md @@ -25,15 +25,15 @@ Transformers.js path. ## Install ```bash -pnpm add -D @jcode.labs/mimir-tts +npm install --save-dev @jcode.labs/mimir-tts ``` ## Quick Start ```bash -pnpm exec mimir-tts doctor --json -pnpm exec mimir-tts render /tmp/summary.txt --offline --out .mimir/audio/summary.wav -pnpm exec mimir-tts render /tmp/summary.txt --engine edge --out .mimir/audio/summary.mp3 +npx mimir-tts doctor --json +npx mimir-tts render /tmp/summary.txt --offline --out .mimir/audio/summary.wav +npx mimir-tts render /tmp/summary.txt --engine edge --out .mimir/audio/summary.mp3 ``` The default engine is `transformers` for offline/confidential WAV output. Use `--engine edge` only From 448a1f97d0b332810ba1c81dd7134797805c97c8 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste THERY Date: Thu, 2 Jul 2026 02:55:45 +0700 Subject: [PATCH 2/5] docs: add audio mini-learning use case to README Mention mimir audio's spoken-summary path in the Developer Use Cases table, alongside the existing use cases, not as the headline feature. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 10fd316..d23cf0b 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ spread across repositories, specifications, exports, and synced folders. | Code from a specification or `cahier des charges` | Turn a local PRD, tender response, client brief, or engineering spec into an implementation plan, acceptance checklist, and cited change guidance. | | Work from a downloaded Google Drive folder | Point Mimir at files synced locally through Google Drive for desktop, then let the agent retrieve context without uploading the corpus to a hosted RAG service. | | Onboard to a legacy codebase | Ask where a flow is implemented, which modules own a responsibility, which docs explain a behavior, and what to read before changing risky code. | +| Turn a dense document into a listenable mini-learning | Generate a short spoken summary (MP3/WAV) from cited passages with `mimir audio`, to review a spec, architecture doc, or research pass hands-free instead of only reading dense text. | | Keep multiple agents on the same evidence | Install the same project skills and MCP server for Claude Code, Codex, Kimi Code CLI, OpenCode, and Cline so each tool retrieves from the same local index. | | Research before implementation | Run an audit-backed multi-query pass over specs, docs, and code references before asking an agent to plan a feature, migration, or review. | | Prepare implementation and review work | Generate cited task breakdowns, migration notes, release checklists, QA plans, and code-review context from the same local sources the team uses. | From f8224b08fb63086e0a54ba6c78af1733c9c34ec4 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste THERY Date: Thu, 2 Jul 2026 03:25:06 +0700 Subject: [PATCH 3/5] feat(setup): add semantic setup preload --- .gitnexusignore | 26 +++ AGENTS.md | 31 +++- CLAUDE.md | 18 +- README.md | 164 +++++++++++++---- SECURITY-HARDENING.md | 42 +++-- docs/agent-integration.md | 10 +- docs/api-reference.md | 41 ++++- docs/cli-reference.md | 4 + docs/getting-started.md | 8 - docs/offline-tts-preload.md | 6 +- docs/troubleshooting.md | 25 ++- docs/ux-dx-audit.md | 58 ------ packages/mimir-core/dist/cli.js | 59 ++++++ packages/mimir-core/dist/cli.js.map | 2 +- packages/mimir-core/dist/defaults.d.ts | 3 +- packages/mimir-core/dist/defaults.d.ts.map | 2 +- packages/mimir-core/dist/defaults.js | 3 +- packages/mimir-core/dist/defaults.js.map | 2 +- packages/mimir-core/dist/files.d.ts.map | 2 +- packages/mimir-core/dist/files.js | 145 +++++++++------ packages/mimir-core/dist/files.js.map | 2 +- packages/mimir-core/dist/index.d.ts | 4 +- packages/mimir-core/dist/index.d.ts.map | 2 +- packages/mimir-core/dist/index.js | 1 + packages/mimir-core/dist/index.js.map | 2 +- packages/mimir-core/dist/init.d.ts.map | 2 +- packages/mimir-core/dist/init.js | 8 +- packages/mimir-core/dist/init.js.map | 2 +- packages/mimir-core/dist/mcp.d.ts.map | 2 +- packages/mimir-core/dist/mcp.js | 12 +- packages/mimir-core/dist/mcp.js.map | 2 +- packages/mimir-core/dist/security.d.ts.map | 2 +- packages/mimir-core/dist/security.js | 5 +- packages/mimir-core/dist/security.js.map | 2 +- packages/mimir-core/dist/setup.d.ts | 8 + packages/mimir-core/dist/setup.d.ts.map | 2 +- packages/mimir-core/dist/setup.js | 14 ++ packages/mimir-core/dist/setup.js.map | 2 +- packages/mimir-core/dist/sources.d.ts | 16 ++ packages/mimir-core/dist/sources.d.ts.map | 1 + packages/mimir-core/dist/sources.js | 77 ++++++++ packages/mimir-core/dist/sources.js.map | 1 + .../skills/mimir-audio-summary/SKILL.md | 8 +- packages/mimir-core/skills/mimir/SKILL.md | 38 +++- packages/mimir-core/src/cli.ts | 69 +++++++ packages/mimir-core/src/defaults.ts | 3 +- packages/mimir-core/src/files.test.ts | 70 ++++++++ packages/mimir-core/src/files.ts | 170 ++++++++++++------ packages/mimir-core/src/index.ts | 8 +- packages/mimir-core/src/init.ts | 8 +- packages/mimir-core/src/mcp.test.ts | 23 ++- packages/mimir-core/src/mcp.ts | 14 +- packages/mimir-core/src/security.test.ts | 17 +- packages/mimir-core/src/security.ts | 5 +- packages/mimir-core/src/setup.test.ts | 35 +++- packages/mimir-core/src/setup.ts | 22 +++ packages/mimir-core/src/sources.test.ts | 65 +++++++ packages/mimir-core/src/sources.ts | 105 +++++++++++ packages/mimir-landing/package.json | 8 +- .../scripts/astro-no-telemetry.mjs | 27 +++ packages/mimir-tts/README.md | 8 +- packages/mimir-tts/dist/cli.js | 1 + packages/mimir-tts/dist/cli.js.map | 2 +- packages/mimir-tts/dist/index.d.ts | 2 + packages/mimir-tts/dist/index.d.ts.map | 2 +- packages/mimir-tts/dist/index.js | 5 +- packages/mimir-tts/dist/index.js.map | 2 +- packages/mimir-tts/src/cli.ts | 1 + packages/mimir-tts/src/index.test.ts | 24 +++ packages/mimir-tts/src/index.ts | 6 +- 70 files changed, 1256 insertions(+), 312 deletions(-) create mode 100644 .gitnexusignore delete mode 100644 docs/getting-started.md delete mode 100644 docs/ux-dx-audit.md create mode 100644 packages/mimir-core/dist/sources.d.ts create mode 100644 packages/mimir-core/dist/sources.d.ts.map create mode 100644 packages/mimir-core/dist/sources.js create mode 100644 packages/mimir-core/dist/sources.js.map create mode 100644 packages/mimir-core/src/sources.test.ts create mode 100644 packages/mimir-core/src/sources.ts create mode 100644 packages/mimir-landing/scripts/astro-no-telemetry.mjs diff --git a/.gitnexusignore b/.gitnexusignore new file mode 100644 index 0000000..faa241e --- /dev/null +++ b/.gitnexusignore @@ -0,0 +1,26 @@ +# GitNexus exclusions. Keep the code graph focused on source, tests, docs, and scripts. + +# Dependencies and package-manager state +node_modules/ +.pnpm-store/ + +# Local generated Mimir state and agent exposure folders +.mimir/ +.kb/ +.agents/ +.claude/ +.codex/ +.gitnexus/ + +# Build outputs and generated package artifacts +packages/*/dist/ +packages/*/.astro/ +packages/*/.output/ +packages/*/target/ +packages/*/src-tauri/target/ +coverage/ + +# Local release/download artifacts +artifacts/ +*.tgz +*.pid diff --git a/AGENTS.md b/AGENTS.md index 11c40c3..c59078d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -17,7 +17,8 @@ generated agent configs, landing copy, and setup guidance should use `mimir ...` commands. - `mimir init` and `mimir install-skill` must keep generated local Mimir state ignored in target repositories. By default, add one `.mimir/` entry to the target repository `.gitignore`; `.kb/` - and `private/**` are legacy-only compatibility paths. + and `private/` are legacy-only compatibility paths. `security-audit` should still accept older + `private/**` entries. - Keep confidentiality features low-friction: local-hash retrieval by default, optional Transformers.js embeddings with remote model loading disabled by default, redaction before indexing, metadata-only access logs, bounded MCP retrieval, configurable text-extension ingestion, @@ -31,6 +32,9 @@ - Keep first-run UX centered on `mimir setup` for full onboarding and `mimir doctor --fix` for safe repairs. `mimir init`, `mimir install-skill`, and `mimir ingest` remain available as explicit lower-level commands. +- Keep monorepo source onboarding simple: `.mimir/sources.txt` accepts paths, glob patterns, and + `!` exclusions, and `mimir sources add/list` is the CLI surface for updating it without manual + editing. - Keep product documentation canonical in the root `README.md`. Package README files under `packages/*/README.md` are intentionally minimal npm entrypoints and must link clearly to the GitHub root README because npm displays package README files separately. @@ -71,7 +75,10 @@ packages/mimir-landing` for the Astro landing surface; do not duplicate landing-local UI components when an export from `@jcode.labs/mimir-ui` fits. - `packages/mimir-landing` is the Astro static landing package. It must stay telemetry-free by - default; do not add PostHog. If analytics are needed later, prefer Cloudflare Web Analytics. + default; do not add PostHog. Run Astro through + `packages/mimir-landing/scripts/astro-no-telemetry.mjs` so local dev, check, preview, and build + commands set `ASTRO_TELEMETRY_DISABLED=1`. If analytics are needed later, prefer Cloudflare Web + Analytics. - The landing deploy target is Cloudflare Workers Static Assets through `packages/mimir-landing/wrangler.jsonc` and the canonical domain `mimir.jcode.works`. Keep Cloudflare account IDs, tokens, and analytics secrets out of the repository; use local dry-runs @@ -128,8 +135,9 @@ Voice Forge quality only when online TTS is explicitly acceptable, and keep generated audio under ignored local Mimir state. - Keep offline TTS preload explicit: use non-sensitive text for the first remote-model render that - warms `.mimir/models/tts`, then use `--offline` for confidential narration. The operational guide - lives in `docs/offline-tts-preload.md`. + warms `.mimir/models/tts`, pass `--allow-remote-models` only for that preload, then use `--offline` + for confidential narration. Remote TTS model loading must stay disabled by default. The + operational guide lives in `docs/offline-tts-preload.md`. - Keep report generation separate from core retrieval. The `mimir-markdown-report` skill writes cited Markdown reports under ignored `.mimir/reports/` by default and must distinguish evidence, inference, uncertainty, missing documents, and professional-review items. @@ -221,6 +229,12 @@ General principles (KISS, DRY, YAGNI, SOLID) as applied in this codebase. Match - `packages/mimir-core/src/defaults.ts` owns shared default paths, provider defaults, and generated-state ignore constants. Keep config/init/security/gitignore aligned through this module instead of copying literals. +- `packages/mimir-core/src/sources.ts` owns the `.mimir/sources.txt` management API used by + `mimir sources add/list`; file discovery itself remains in `files.ts`. +- `packages/mimir-core/src/skill.ts` owns agent skill installation and the per-agent + `agentHelpers`/MCP config generation (`AgentHelperFile`) behind `mimir setup` and + `mimir install-skill`/`install-agent`. Add a new agent target through `SUPPORTED_AGENT_TARGETS` + and its helper builder here, not by hand-listing agents in `cli.ts`. - `packages/mimir-core/src/ingest.ts` parses supported files, chunks text, embeds chunks, and rebuilds the local LanceDB table. Normal ingest is incremental and reuses rows whose checksum/provider/model still match; `--rebuild` forces a full re-index. @@ -230,6 +244,10 @@ General principles (KISS, DRY, YAGNI, SOLID) as applied in this codebase. Match supported by default; convert them to `.xlsx`, CSV, PDF, HTML, or text before ingesting. - `packages/mimir-core/src/query.ts` performs hybrid retrieval (vector candidates plus bounded lexical BM25 scoring) and returns cited retrieval context; LLM synthesis belongs outside Mimir core. +- `packages/mimir-core/src/research.ts` runs the audit-backed multi-query research pass behind + `mimir research`, combining `query.ts` search results with `ingest.ts` audit coverage. +- `packages/mimir-core/src/evaluate.ts` scores retrieval recall against a golden query file behind + `mimir evaluate`, for the local recall gate described above. - `packages/mimir-core/src/mcp.ts` exposes Mimir as an MCP stdio server for agents. - `packages/mimir-tts` is the standalone TTS package used by `mimir audio`; it uses `edge-tts` for high-quality MP3 when available and Transformers.js for offline WAV rendering. @@ -261,6 +279,9 @@ General principles (KISS, DRY, YAGNI, SOLID) as applied in this codebase. Match config layers, `.mimir/kimi-mcp.json` for Kimi, `.mimir/opencode.jsonc` for OpenCode, and `.mimir/cline-mcp.json` for Cline. Keep `--agents` available on setup/install-skill so a target repository can generate only the helpers it uses and remove stale unselected helpers. +- `mimir setup --semantic` is the first-run opt-in path for higher-quality semantic retrieval. It + may download the configured Transformers.js embedding model once, then must leave + `transformersAllowRemoteModels` false for normal confidential indexing. - Keep `--mcp-name`, `--mcp-command`, and repeatable `--mcp-arg` available on setup/install-skill so repositories can generate MCP helper files for a stable server name or local wrapper script without post-processing `.mimir/`. @@ -279,7 +300,7 @@ General principles (KISS, DRY, YAGNI, SOLID) as applied in this codebase. Match # GitNexus — Code Intelligence -This project is indexed by GitNexus as **jcode-mimir** (2559 symbols, 4274 relationships, 218 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. +This project is indexed by GitNexus as **jcode-mimir** (2825 symbols, 4708 relationships, 241 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. > If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first. diff --git a/CLAUDE.md b/CLAUDE.md index 9c5184e..ab92be6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,6 +9,7 @@ non-obvious traps that matter when editing here, without duplicating `AGENTS.md` ## Commands ```bash +pnpm bootstrap # mise install (pinned Node/Rust) && pnpm install pnpm build # builds UI, app frontend, landing, TTS, then Mimir Core pnpm check # typecheck UI/app/landing/TTS/core pnpm dev:app # run the Vite frontend for the Tauri shell @@ -46,9 +47,10 @@ output in the same commit, or CI fails. This is the single easiest mistake to ma - Landing package: unpublished workspace package `@jcode.labs/mimir-landing`. - App package: unpublished workspace package `@jcode.labs/mimir-app`. - CLI binary: **`mimir`** (`packages/mimir-core/bin.mimir` -> `packages/mimir-core/dist/cli.js`). - The `kb` binary remains only as a legacy compatibility alias. Commands: `init`, `ingest`, - `models pull`, `search`, `ask`, `audit`, `status`, `security-audit`, `destroy-index`, `audio`, - `doctor`, `serve-mcp`, `skill-path`, `install-skill`. + The `kb` binary remains only as a legacy compatibility alias. Commands: `init`, `setup`, `ingest`, + `sources add`, `sources list`, `models pull`, `search`, `ask`, `research`, `evaluate`, `audit`, + `usage-report`, `status`, `security-audit`, `destroy-index`, `audio`, `doctor`, `serve-mcp`, + `skill-path`, `install-skill`, `install-agent`. - TTS CLI binary: **`mimir-tts`** (`packages/mimir-tts/dist/cli.js`). Commands: `doctor`, `render`. - Project config/state in the target repo: **`.mimir/`** (`config.json`, `sources.txt`, `raw/`, `storage/`, `access.log`, `skills/`, reports, audio, and model caches). **`.kb/`** and @@ -56,7 +58,8 @@ output in the same commit, or CI fails. This is the single easiest mistake to ma - Environment overrides: **`MIMIR_*`** (e.g. `MIMIR_EMBEDDING_PROVIDER`, `MIMIR_CHUNK_SIZE`). **`KB_*`** aliases remain only for existing automation. - MCP tools exposed to agents: **`mimir_*`** (`mimir_status`, `mimir_search`, `mimir_ask`, - `mimir_audit`, `mimir_security_audit`). + `mimir_research`, `mimir_audit`, `mimir_evaluate`, `mimir_usage_report`, + `mimir_security_audit`). ## Architecture and data flow @@ -99,8 +102,9 @@ Key behaviors to keep in mind before editing: - **Two embedding providers, not interchangeable at runtime.** `local-hash` (default) is a 384-dim sha256 lexical embedding — fully offline, no model, *not semantic*. `transformers` lazily `import()`s `@huggingface/transformers` with `allowRemoteModels` off by default. `mimir models pull` - is the explicit one-time remote-download path for preloading the configured embedding model. The - two providers produce different vectors, so **switching providers requires `mimir ingest --rebuild`**. + and `mimir setup --semantic` are the explicit one-time remote-download paths for preloading the + configured embedding model. The two providers produce different vectors, so **switching providers + requires `mimir ingest --rebuild`**. - **Ingest is incremental by default.** It reuses rows whose checksum, embedding provider, and model still match, then overwrites the LanceDB table with reused + rebuilt rows. Use `--rebuild` to force every supported file through parsing, redaction, chunking, and embedding again. @@ -126,7 +130,7 @@ lives in `AGENTS.md`. The workflow publishes `@jcode.labs/mimir-tts` before `@jc # GitNexus — Code Intelligence -This project is indexed by GitNexus as **jcode-mimir** (2559 symbols, 4274 relationships, 218 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. +This project is indexed by GitNexus as **jcode-mimir** (2825 symbols, 4708 relationships, 241 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. > If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first. diff --git a/README.md b/README.md index d23cf0b..9718cbd 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,8 @@ already use, then ask that agent questions grounded in local files: ```bash npm install --save-dev @jcode.labs/mimir npx mimir setup +# Optional: download a Transformers.js embedding model once and enable higher-quality semantic retrieval. +npx mimir setup --semantic npx mimir install-agent --agents claude,codex,kimi,opencode,cline npx mimir doctor --fix npx mimir research "release readiness and risks" --compact @@ -131,6 +133,27 @@ The public source and commercial distribution boundary is tracked in [`docs/commercial-distribution.md`](./docs/commercial-distribution.md). No checkout URL, production download URL, customer data, or license secret is committed to this repository. +## Documentation + +Use this README as the entrypoint, then jump into the focused docs when you need command tables, +agent wiring, API shapes, security details, or app packaging rules: + +| Document | Use it for | +| --- | --- | +| [`docs/cli-reference.md`](./docs/cli-reference.md) | Complete `mimir` and `mimir-tts` command reference. | +| [`docs/api-reference.md`](./docs/api-reference.md) | Public TypeScript API, setup options, semantic model preload, and MCP tool inputs. | +| [`docs/agent-integration.md`](./docs/agent-integration.md) | Claude Code, Codex, Kimi Code CLI, OpenCode, and Cline setup. | +| [`docs/troubleshooting.md`](./docs/troubleshooting.md) | Empty indexes, weak search, strict security audit warnings, and audio preload fixes. | +| [`SECURITY-HARDENING.md`](./SECURITY-HARDENING.md) | Threat model, offline operation, release verification, and higher-assurance deployment notes. | +| [`docs/offline-tts-preload.md`](./docs/offline-tts-preload.md) | Preload and verify the offline Transformers.js TTS cache. | +| [`docs/fr-eu-sovereign-positioning.md`](./docs/fr-eu-sovereign-positioning.md) | Bounded FR/EU sovereignty, GDPR, AI Act, and legal-vertical positioning. | +| [`docs/source-boundary.md`](./docs/source-boundary.md) | What the public MIT repository contains and what must stay outside Git. | +| [`docs/commercial-distribution.md`](./docs/commercial-distribution.md) | Public-safe commercial distribution rules for signed builds, licenses, and support. | +| [`docs/app-sidecar-architecture.md`](./docs/app-sidecar-architecture.md) | Desktop app sidecar and native bridge constraints. | +| [`docs/app-distribution.md`](./docs/app-distribution.md) | Direct-download native app packaging and release preflight. | +| [`docs/payment-webhook-architecture.md`](./docs/payment-webhook-architecture.md) | Future checkout, webhook, and local-license architecture. | +| [`llms.txt`](./llms.txt) | LLM-oriented documentation index for tools such as Context7. | + ## Open Source Mimir is a public open-source project under the MIT License. It is designed to be inspectable, @@ -243,7 +266,12 @@ Initialize a repository, install the portable agent kit, run readiness checks, a when supported files are already present: ```bash +# Fast start: no model download, fully local lexical/hash retrieval. npx mimir setup + +# Higher-quality natural-language retrieval: one-time Transformers.js model download, +# then remote model loading stays disabled for normal confidential indexing. +npx mimir setup --semantic ``` Fresh setup keeps local state under one ignored `.mimir/` folder: @@ -340,6 +368,64 @@ Put supported files under `.mimir/raw/`: requirements.docx ``` +For monorepos or downloaded local folders, list extra paths or glob patterns in `.mimir/sources.txt`. +Relative entries resolve from the Mimir project root, and `!` excludes matched files: + +```bash +npx mimir sources add "../apps/*/README.md" "../apps/*/docs/**/*.{md,mdx}" +npx mimir sources add "!../apps/**/node_modules/**" +npx mimir sources list +``` + +```plain text +../apps/*/README.md +../apps/*/docs/**/*.{md,mdx} +../packages/*/architecture/**/*.md +!../apps/**/node_modules/** +``` + +### Team Workflow With A Shared Private Corpus + +For a team of 10 developers, keep Git as the reproducible setup layer and keep the corpus in an +approved private source. Each developer materializes the same corpus locally, then builds their own +local Mimir index. + +```plain text +Git repository + README.md + mimir.config.example.json + mimir-sources.example.txt + scripts/sync-corpus.sh + +Ignored local state on each developer machine + .mimir/config.json + .mimir/sources.txt + .mimir/raw/ or data/private-corpus/ + .mimir/storage/ + .mimir/access.log + .mimir/models/ +``` + +If your team uses Google Drive, Dropbox, SharePoint, S3, rsync, an encrypted ZIP, or another private +source, write a small project script that syncs into an ignored local folder and then ingests: + +```bash +#!/usr/bin/env bash +set -euo pipefail + +mkdir -p .mimir/raw +# Example only: replace this with your approved private sync command. +# rclone copy "team-drive:Project Knowledge" .mimir/raw --drive-export-formats docx,xlsx,pptx,pdf + +npx mimir ingest +npx mimir doctor +``` + +Commit the script and instructions, not the synced files. The same pattern works without Google +Drive: every developer downloads the same approved archive or mirror into the same ignored path, then +runs `npx mimir ingest`. Mimir compares checksums and reuses unchanged rows, so refreshes stay +incremental. + Build the local index: ```bash @@ -455,16 +541,19 @@ Use this when you want better semantic retrieval while keeping Mimir core free o Commands: ```bash +npx mimir setup --semantic +# Or later: npx mimir models pull --enable npx mimir ingest npx mimir ask "Which passages support offline operation?" ``` -`mimir models pull` intentionally allows a one-time download from Hugging Face into -`embeddingModelPath`. With `--enable`, it also switches `.mimir/config.json` to -`embeddingProvider: "transformers"` while keeping `transformersAllowRemoteModels` false for -confidential or air-gapped indexing. Re-run `mimir ingest --rebuild` after changing embedding -provider or model so stored vectors match the active configuration. +`mimir setup --semantic` is the first-run shortcut. It intentionally allows a one-time download from +Hugging Face into `embeddingModelPath`, switches `.mimir/config.json` to `embeddingProvider: +"transformers"`, and leaves `transformersAllowRemoteModels` false for normal confidential indexing. +Use `mimir models pull --enable` when you want to make the same choice later. Re-run +`mimir ingest --rebuild` after changing embedding provider or model so stored vectors match the +active configuration. ## Agent Skills And MCP @@ -592,6 +681,8 @@ Mimir is designed for private repositories and sensitive local evidence. - No LLM generation in core: Mimir returns cited context for the agent/runtime you choose. - Local-hash by default: no model runtime is required for the default retrieval path. - Transformers.js remote model loading is disabled by default. +- Optional Transformers.js model downloads require an explicit preload command or + `--allow-remote-models`; confidential runs should use already cached local model files. - Redaction before indexing: common secrets and identifiers are redacted before chunks are embedded and stored. - Metadata-only access logs: query hashes and action metadata are logged, not raw queries. @@ -685,7 +776,11 @@ under a source directory. ## Configuration Reference -Default `.mimir/config.json`: +Most users should start with `mimir setup` and let `mimir doctor` explain what is missing. Edit +`.mimir/config.json` only when you need to change source paths, retrieval mode, chunking, privacy +limits, or local extractors. + +Default `.mimir/config.json` for a fresh project: ```json { @@ -751,6 +846,8 @@ Environment overrides: Legacy `KB_*` aliases remain accepted for existing automation. +### External Extractors + `pdfOcrCommand` is opt-in and only runs when normal PDF text extraction returns no text. `imageOcrCommand` is also opt-in; image files are treated as supported only when it is configured. `legacyWordCommand` is opt-in; `.doc` files are treated as supported only when it is configured. @@ -758,21 +855,24 @@ External text commands are executed from the target project root without a shell `MIMIR_PDF_PATH`, `MIMIR_IMAGE_PATH`, or `MIMIR_LEGACY_WORD_PATH`, replace `{input}` placeholders with the source path, and must print UTF-8 text to stdout. -## CLI Reference +## Command And API Reference Mimir ships two CLIs: -- `mimir`: the main local RAG, MCP, skills, security, and audio command. `kb` remains a legacy alias for compatibility. +- `mimir`: the main local RAG, MCP, skills, security, and audio command. `kb` remains a legacy alias + for compatibility. - `mimir-tts`: the standalone text-to-speech renderer used by `mimir audio`. Most users start with `mimir setup`, `mimir doctor`, `mimir ingest`, `mimir search`, `mimir ask`, -`mimir research`, and `mimir security-audit`. Use `mimir models pull --enable` before semantic -offline ingestion when remote model download is acceptable, and `mimir ingest --rebuild` after -switching embedding provider or model. +`mimir research`, and `mimir security-audit`. -The full command and option table lives in [`docs/cli-reference.md`](./docs/cli-reference.md). +Use `mimir setup --semantic` during first setup, or `mimir models pull --enable` later, when a +one-time Transformers.js model download is acceptable and you want higher-quality semantic retrieval. +Run `mimir ingest --rebuild` after switching embedding provider or model. -## Library API +Full command table: [`docs/cli-reference.md`](./docs/cli-reference.md). + +The TypeScript API mirrors the CLI for applications and sidecars: ```ts import { ask, ingest, search } from "@jcode.labs/mimir" @@ -782,10 +882,9 @@ const results = await search("vendor invoice status") const answer = await ask("What documents support the project timeline?") ``` -The full public TypeScript API reference lives in -[`docs/api-reference.md`](./docs/api-reference.md). +Full API reference: [`docs/api-reference.md`](./docs/api-reference.md). -## Troubleshooting +## Troubleshooting And Validation Use `mimir doctor` first. It is the shortest path to the next useful action: @@ -802,6 +901,10 @@ npx mimir doctor --fix Common fixes for empty indexes, weak search, strict security audit failures, and TTS setup live in [`docs/troubleshooting.md`](./docs/troubleshooting.md). +For release or integration work in this repository, `pnpm validate` is the full local gate. It covers +Biome, dependency security audit, TypeScript, Vitest, build output, production CLI/MCP smoke tests, +npm package metadata, semantic-release wiring, and release artifacts. + ## Dependency Footprint Mimir can run retrieval without a model runtime. Some runtime dependencies remain because they own @@ -809,13 +912,17 @@ core features: | Dependency | Why it remains | | --- | --- | -| `@huggingface/transformers` | Optional local semantic embeddings and offline TTS. | +| `@huggingface/transformers` | Optional local semantic embeddings and offline TTS; remote model loading is disabled unless explicitly enabled for preload. | | LanceDB | Local vector storage and nearest-neighbor retrieval. | | MCP SDK | MCP server for compatible agents. | | fast-glob | Safe source-file discovery. | | unpdf, mammoth, read-excel-file, html-to-text, yaml, fflate | Document parsing for PDF, Office, HTML, YAML, OpenDocument, and EPUB files. | | commander, zod, picocolors | CLI, config validation, readable terminal output. | +Direct runtime dependency scans do not show analytics SDKs or product telemetry calls. The Astro +landing package uses a wrapper that sets `ASTRO_TELEMETRY_DISABLED=1` for dev, check, preview, and +build commands. + Removing more dependencies is possible only by dropping features or replacing them with smaller internal implementations. The current low-friction path is dependency-light at runtime for users who choose `local-hash`, while preserving richer parsing, MCP support, and optional semantic embeddings. @@ -843,7 +950,7 @@ node ../../dist/cli.js audit The example uses the default local-hash retrieval mode, so it can run without downloading an embedding or chat model. -## Development +## Development And Release Install and validate the monorepo: @@ -902,27 +1009,6 @@ pnpm build pnpm --dir packages/mimir-core pack ``` -## Supporting Documents - -- [`SECURITY-HARDENING.md`](./SECURITY-HARDENING.md): threat model, offline operation, release - verification, and high-assurance deployment notes. -- [`docs/api-reference.md`](./docs/api-reference.md): public TypeScript API functions, result types, - and MCP tool inputs. -- [`docs/fr-eu-sovereign-positioning.md`](./docs/fr-eu-sovereign-positioning.md): bounded FR/EU - sovereignty, GDPR, AI Act, and legal-vertical positioning. -- [`docs/source-boundary.md`](./docs/source-boundary.md): what the public MIT repository contains, - and what must stay outside Git. -- [`docs/commercial-distribution.md`](./docs/commercial-distribution.md): public-safe commercial - distribution rules for signed builds, licenses, and support. -- [`docs/offline-tts-preload.md`](./docs/offline-tts-preload.md): preload and verify the offline - Transformers.js TTS cache before rendering confidential audio. -- [`docs/payment-webhook-architecture.md`](./docs/payment-webhook-architecture.md): direct-download - checkout, webhook, and local-license architecture for future commercial app distribution. -- [`docs/ux-dx-audit.md`](./docs/ux-dx-audit.md): current UX/DX findings, fixes, and remaining - product risks. -- [`llms.txt`](./llms.txt): LLM-oriented index of this repository's documentation, following the - [llms.txt](https://llmstxt.org/) convention; consumed by tools like Context7. - ## License MIT (c) Jean-Baptiste Thery. diff --git a/SECURITY-HARDENING.md b/SECURITY-HARDENING.md index 73057e7..7a2257c 100644 --- a/SECURITY-HARDENING.md +++ b/SECURITY-HARDENING.md @@ -19,13 +19,15 @@ built to minimize data movement, but it is not a certified high-assurance system oversized, and secret-like skipped files. - Metadata-only access logs: access logs contain action metadata and query hashes, not raw queries or retrieved text. -- Generated local state is ignored by Git: `.kb/`, `.mimir/`, and `private/**` are ignored by - default. +- Generated local state is ignored by Git: `.mimir/` is ignored by default, while legacy `.kb/` and + `private/` paths are recognized when encountered. - MCP is read-focused: destructive tools are not exposed over MCP, and MCP retrieval is capped by `mcpMaxTopK`. -- Optional audio summaries use `kb audio` / `@jcode.labs/mimir-tts`. Transformers.js WAV is the +- Optional audio summaries use `mimir audio` / `@jcode.labs/mimir-tts`. Transformers.js WAV is the default offline/confidential path and does not require Python, ffmpeg, Piper, XTTS, or a local TTS - server. Edge MP3 gives the highest quality only when online TTS is explicitly acceptable. + server. Remote TTS model downloads are disabled by default and must be explicitly allowed for a + non-sensitive preload. Edge MP3 gives the highest quality only when online TTS is explicitly + acceptable. - Optional Markdown reports use the bundled `mimir-markdown-report` skill and should be written under `.mimir/reports/` by default. - npm releases are published with provenance from the protected GitHub Actions workflow. @@ -67,15 +69,15 @@ Move the generated tarballs from `release-artifacts/` into the offline environme ```bash pnpm add -D ./jcode.labs-mimir-tts-.tgz ./jcode.labs-mimir-.tgz -pnpm exec kb setup -pnpm exec kb doctor --fix -pnpm exec kb audit --unsupported +pnpm exec mimir setup +pnpm exec mimir doctor --fix +pnpm exec mimir audit --unsupported ``` For semantic embeddings, preload the Transformers.js-compatible embedding model files inside the offline environment under the configured `embeddingModelPath`. For audio, preload the TTS model files under `.mimir/models/tts` and render with -`pnpm exec kb audio --engine transformers --offline`. +`pnpm exec mimir audio --engine transformers --offline`. ## Zero Network Posture @@ -108,13 +110,13 @@ Transformers.js may download model files from Hugging Face during model loading. Run: ```bash -pnpm exec kb security-audit --strict +pnpm exec mimir security-audit --strict ``` Also run: ```bash -pnpm exec kb audit --unsupported +pnpm exec mimir audit --unsupported ``` This exposes local relative paths for files that were skipped because the extension is unsupported, @@ -159,14 +161,15 @@ Default ingestion guardrails: - `ingestConcurrency`: four parse/chunk workers by default; - `embeddingBatchSize`: 32 chunks per embedding batch by default; - checksum-based stale detection for supported files; -- unsupported/skipped file reporting through `kb ingest`, `kb audit`, and `kb audit --unsupported`. +- unsupported/skipped file reporting through `mimir ingest`, `mimir audit`, and + `mimir audit --unsupported`. These are configurable, but raising limits increases local memory and parsing risk. ## Optional Audio Summaries -`kb install-skill` installs an optional `mimir-audio-summary` skill. It is designed for listenable -briefings from a local Mimir index. The default renderer is `kb audio`, backed by +`mimir install-skill` installs an optional `mimir-audio-summary` skill. It is designed for listenable +briefings from a local Mimir index. The default renderer is `mimir audio`, backed by `@jcode.labs/mimir-tts`. Confidentiality defaults: @@ -175,9 +178,9 @@ Confidentiality defaults: - generated MP3 or WAV audio should be written under `.mimir/audio/`; - `.mimir/` is ignored by Git; - Transformers.js WAV does not require Python, ffmpeg, Piper, XTTS, or a local TTS server; -- the first online-enabled Transformers render may download public model weights into - `.mimir/models/tts`, but the narration text is processed locally; -- `--engine transformers --offline` disables remote model loading and requires preloaded model +- Transformers remote model loading is disabled by default and requires `--allow-remote-models` for + a non-sensitive preload into `.mimir/models/tts`; +- `--engine transformers --offline` keeps remote model loading disabled and requires preloaded model files. - Edge MP3 uses the online Edge TTS service through the external `edge-tts` CLI and should be used only when sending the narration text to that service is acceptable. @@ -187,9 +190,10 @@ document. ## Optional Markdown Reports -`kb install-skill` also installs `mimir-markdown-report`. Reports generated from private evidence are -derived confidential documents. Keep them under `.mimir/reports/` by default, cite source paths and -chunk numbers, and do not commit them unless the user explicitly asks for a sanitized tracked report. +`mimir install-skill` also installs `mimir-markdown-report`. Reports generated from private evidence +are derived confidential documents. Keep them under `.mimir/reports/` by default, cite source paths +and chunk numbers, and do not commit them unless the user explicitly asks for a sanitized tracked +report. ## MCP Hardening diff --git a/docs/agent-integration.md b/docs/agent-integration.md index 9aa257f..a1dbb8b 100644 --- a/docs/agent-integration.md +++ b/docs/agent-integration.md @@ -109,9 +109,10 @@ npx mimir install-agent --agents claude claude mcp add-json --scope local mimir "$(cat .mimir/claude-mcp-server.json)" ``` -Claude Code provides the active project path to MCP servers through `CLAUDE_PROJECT_DIR`; Mimir uses -that value when serving MCP, so the same installed npm package can work inside each repository where -`mimir setup` was run. Keep the MCP scope local unless you intentionally want to share the server +Claude Code provides the active project path to MCP servers through `CLAUDE_PROJECT_DIR`. Mimir uses +that value only when the server working directory does not already point at a configured Mimir +project. This keeps subfolder knowledge bases inside larger workspaces from being overridden by the +umbrella repository path. Keep the MCP scope local unless you intentionally want to share the server config. ## Codex @@ -169,7 +170,8 @@ Cline can discover project skills from `.cline/skills/`. Add the generated MCP J `mcpServers` in Cline's MCP configuration when tool access is needed. For other MCP clients that cannot set `cwd`, set `MIMIR_PROJECT_ROOT=/absolute/path/to/repository` -when launching `mimir serve-mcp`. +when launching `mimir serve-mcp`. `MIMIR_PROJECT_ROOT` always wins over `cwd` and agent-provided +project environment variables. ## Agent Demo diff --git a/docs/api-reference.md b/docs/api-reference.md index 0cc97ca..7960d05 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -12,7 +12,7 @@ context. Use named imports only: ```ts -import { ask, doctor, ingest, search, securityAudit } from "@jcode.labs/mimir" +import { addSourceEntries, ask, doctor, ingest, search, securityAudit } from "@jcode.labs/mimir" ``` Most project-scoped functions accept an optional `cwd` pointing at the target workspace. If omitted, @@ -49,12 +49,14 @@ Returns `string[]` with relative paths created or updated. Runs the normal first-run workflow: initialize the project, install the portable agent kit, run doctor, and auto-ingest only when supported files are present and the privacy posture has no -warnings. +warnings. Pass `semantic: true` to intentionally preload the configured Transformers.js embedding +model and switch the workspace to higher-quality semantic retrieval during setup. ```ts import { setupProject } from "@jcode.labs/mimir" -const result = await setupProject({ cwd: "/path/to/workspace", ingest: true }) +const result = await setupProject({ cwd: "/path/to/workspace", ingest: true, semantic: true }) +console.log(result.semantic?.model.embeddingModelPath) ``` Use `agents`, `mcpServerName`, `mcpCommand`, and `mcpArgs` when setup should generate only selected @@ -75,6 +77,7 @@ Useful result fields: | --- | --- | | `created` | Relative scaffolding files created by setup. | | `agentKit` | Paths to generated skills and MCP helper files. | +| `semantic` | Semantic model preload and config result when `semantic: true`; otherwise `null`. | | `ingested` | `IngestResult` when auto-ingest ran; otherwise `null`. | | `doctor` | Final readiness report. | | `nextSteps` | User-facing next actions. | @@ -92,6 +95,31 @@ const config = await loadConfig("/path/to/workspace/subdir") console.log(config.projectRoot) ``` +### `listSourceEntries(cwd?)` + +Reads `.mimir/sources.txt` and returns active non-comment entries. + +```ts +import { listSourceEntries } from "@jcode.labs/mimir" + +const sources = await listSourceEntries("/path/to/workspace") +console.log(sources.entries) +``` + +### `addSourceEntries(options)` + +Adds paths, glob patterns, or `!` exclusion patterns to `.mimir/sources.txt` without duplicating +existing entries. This is the programmatic equivalent of `mimir sources add`. + +```ts +import { addSourceEntries } from "@jcode.labs/mimir" + +await addSourceEntries({ + cwd: "/path/to/workspace", + entries: ["../apps/*/README.md", "../apps/*/docs/**/*.md", "!../apps/**/node_modules/**"], +}) +``` + ## Ingestion And Retrieval ### `ingest(options?)` @@ -223,7 +251,8 @@ await enableSemanticEmbeddings("/path/to/workspace") await ingest({ cwd: "/path/to/workspace", rebuild: true }) ``` -The CLI shortcut `mimir models pull --enable` combines model preload with this config update. +The CLI shortcut `mimir models pull --enable` combines model preload with this config update. The +first-run CLI shortcut is `mimir setup --semantic`. ## Readiness And Safety @@ -355,6 +384,10 @@ import { serveMcp } from "@jcode.labs/mimir" await serveMcp("/path/to/workspace") ``` +When `cwd` is omitted, the server resolves the root from `MIMIR_PROJECT_ROOT`, then from the current +working directory if it contains a Mimir config, then from agent-provided project environment such as +`CLAUDE_PROJECT_DIR`, and finally from `process.cwd()`. + MCP tools exposed by the server: | Tool | Input | diff --git a/docs/cli-reference.md b/docs/cli-reference.md index 7492abd..8be066d 100644 --- a/docs/cli-reference.md +++ b/docs/cli-reference.md @@ -10,11 +10,14 @@ Mimir ships two CLIs: | Command | Use it when | | --- | --- | | `mimir setup` | Initialize Mimir, install the agent kit, run doctor, and ingest when safe. | +| `mimir setup --semantic` | Run first setup and explicitly download the configured Transformers.js embedding model for higher-quality semantic retrieval. | | `mimir init` | Create `.mimir/config.json`, `.mimir/sources.txt`, `.mimir/raw/`, and Git ignore rules. | | `mimir doctor` | Diagnose setup, index freshness, security warnings, and the next command to run. | | `mimir doctor --fix` | Create missing scaffolding, install skills/MCP config, and update stale indexes when safe. | | `mimir models pull` | Download the configured Transformers.js embedding model into `embeddingModelPath`. | | `mimir models pull --enable` | Download the embedding model and switch Mimir config to safe Transformers embeddings. | +| `mimir sources add "../apps/*/docs/**/*.md"` | Add source paths, glob patterns, or `!` exclusions to `.mimir/sources.txt`. | +| `mimir sources list` | List active extra source entries from `.mimir/sources.txt`. | | `mimir ingest` | Parse changed source files, redact, chunk, embed, and update the local LanceDB index. | | `mimir ingest --rebuild` | Force a full re-index, required after switching embedding provider or model. | | `mimir audit` | Check whether supported source files are missing from or stale in the index. | @@ -63,6 +66,7 @@ Mimir ships two CLIs: | `--mcp-name ` | `setup`, `install-skill` | Set the MCP server name used in generated helper files. | | `--mcp-command ` | `setup`, `install-skill` | Use a repository wrapper or custom executable as the generated MCP stdio command. | | `--mcp-arg ` | `setup`, `install-skill` | Add one argument to `--mcp-command`; repeat for multiple arguments. Use `--mcp-arg=--flag` for dash-prefixed values. | +| `--semantic` | `setup` | Explicitly download the configured Transformers.js embedding model once, enable `embeddingProvider: "transformers"`, and keep remote model loading disabled for normal indexing. | | `--top-k ` | `search`, `ask`, `research`, `evaluate` | Number of passages to return or keep. | | `--fail-under ` | `evaluate` | Exit non-zero only when recall is below a threshold from `0` to `1`; without this option evaluation remains strict and fails on any miss. | | `--days ` | `usage-report` | Number of recent days to include in the metadata-only usage summary. | diff --git a/docs/getting-started.md b/docs/getting-started.md deleted file mode 100644 index 27e83bc..0000000 --- a/docs/getting-started.md +++ /dev/null @@ -1,8 +0,0 @@ -# Getting Started - -The canonical getting-started guide now lives in the root README: - -https://github.com/jcode-works/jcode-mimir#quick-start - -Keep product documentation in the root README so GitHub and npm readers land on the same source of -truth. diff --git a/docs/offline-tts-preload.md b/docs/offline-tts-preload.md index 71baeb1..483e715 100644 --- a/docs/offline-tts-preload.md +++ b/docs/offline-tts-preload.md @@ -1,8 +1,8 @@ # Offline TTS Preload -`mimir audio --offline` disables remote model downloads. It only works after the -Transformers.js TTS model has already been cached under `.mimir/models/tts` or the path passed with -`--model-path`. +`mimir audio` and `mimir-tts` disable remote model downloads by default. `--offline` keeps that +network posture explicit and only works after the Transformers.js TTS model has already been cached +under `.mimir/models/tts` or the path passed with `--model-path`. Use this workflow when you want confidential audio summaries to render without network access. diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 3c30061..d06ea83 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -34,8 +34,14 @@ npx mimir ingest npx mimir doctor ``` -If documents live elsewhere, add one path per line to `.mimir/sources.txt`. Relative paths resolve from -the project root. +If documents live elsewhere, add paths or glob patterns with `mimir sources add` or edit +`.mimir/sources.txt`. Relative entries resolve from the project root, and `!` excludes matched files: + +```plain text +../apps/*/README.md +../apps/*/docs/**/*.md +!../apps/**/node_modules/** +``` If files exist but are not supported yet, inspect the skipped inventory: @@ -102,8 +108,9 @@ files become supported only when `legacyWordCommand` is configured. The default `local-hash` provider is dependency-light and offline, but it is lexical/hash retrieval, not semantic retrieval. -For better semantic retrieval, configure Transformers.js embeddings and preload the model when -working offline: +For better semantic retrieval, choose Transformers.js embeddings during setup or preload the model +later. This requires an explicit one-time model download, but natural-language search quality is +usually better than the default lexical/hash mode. ```json { @@ -114,7 +121,13 @@ working offline: } ``` -When remote download is acceptable, preload the configured embedding model first: +When remote download is acceptable during first setup, use: + +```bash +npx mimir setup --semantic +``` + +Or preload the configured embedding model later: ```bash npx mimir models pull --enable @@ -151,7 +164,7 @@ discard and recreate the whole local index. Read the warning lines. Common causes: - `.mimir/` is not ignored by Git. -- Legacy projects using `.kb/` or `private/**` are missing the matching legacy Git ignore entries. +- Legacy projects using `.kb/`, `private/`, or `private/**` are missing the matching legacy Git ignore entries. - Redaction was disabled. - Transformers.js remote model loading was enabled. diff --git a/docs/ux-dx-audit.md b/docs/ux-dx-audit.md deleted file mode 100644 index d492365..0000000 --- a/docs/ux-dx-audit.md +++ /dev/null @@ -1,58 +0,0 @@ -# UX/DX Audit - -This audit covers Mimir as a CLI/library/MCP product. There is no browser UI; product UX is the -developer and agent workflow around installation, indexing, querying, safety, audio, and release. - -## Evidence Reviewed - -- Root product README: `README.md` -- npm package entrypoint READMEs: `packages/mimir-core/README.md`, `packages/mimir-tts/README.md` -- CLI implementation: `packages/mimir-core/src/cli.ts` -- TTS implementation: `packages/mimir-tts/src/index.ts` -- Agent skills: `packages/mimir-core/skills/**/SKILL.md` -- Security docs: `SECURITY-HARDENING.md`, `SECURITY.md` -- Release workflow: `.github/workflows/ci.yml`, `.github/workflows/npm-publish.yml` -- Runtime smoke path through a temporary repository - -## UX Findings - -| Area | Finding | Status | -| --- | --- | --- | -| First run | `mimir init` created useful files but did not tell users what to do next. | Fixed: `mimir init` now prints next steps. | -| Readiness | Users had to combine `status`, `audit`, and `security-audit` manually. | Fixed: `mimir doctor` summarizes readiness and next steps. | -| Local clutter | First-run setup spread user state across `private/`, `.kb/`, and `.mimir/`. | Fixed: fresh projects keep config, raw documents, storage, access logs, models, reports, audio, and agent helpers under one ignored `.mimir/` folder. | -| Generated helper files | `.mimir/raw/README.md` was indexed and could pollute retrieval results. | Fixed: generated raw README is skipped by source discovery. | -| Audio confidentiality | `auto` could select online Edge TTS when installed. | Fixed: default path is Transformers.js WAV; Edge MP3 requires `--engine edge`. | -| Documentation shape | The package README had too much tutorial, reference, and explanation mixed together. | Fixed: the root README is canonical; package README files are minimal npm entrypoints. | -| Agent onboarding | `install-skill` installed files but gave limited operational guidance. | Fixed: command output now prints agent next steps and Claude Code/Codex MCP snippets. | -| Ingestion visibility | Unsupported files were ignored silently, which made users overestimate coverage. | Fixed: `ingest`, `audit`, and `audit --unsupported` report skipped files by reason. | -| Report generation | Users had audio summaries but no dedicated Markdown-report workflow. | Fixed: `mimir-markdown-report` skill writes cited reports under ignored local state. | -| Stale detection | Audit compared paths but did not detect changed file content. | Fixed: audit now uses stored checksums to flag stale indexed content. | -| Semantic model preload | Users had to infer how to warm the Transformers.js cache. | Fixed: `mimir models pull` downloads the configured embedding model into `embeddingModelPath`. | -| TTS model preload | Users had to infer how `--offline` relates to the Transformers.js TTS cache. | Fixed: `docs/offline-tts-preload.md` documents non-sensitive preload, offline verification, and air-gapped transfer. | - -## DX Findings - -| Area | Finding | Status | -| --- | --- | --- | -| Local validation | `pnpm validate` already covers lint, dependency security audit, typecheck, tests, build, smoke, package checks, semantic-release wiring, and artifacts. | Good. | -| Release safety | npm publish is protected by CI, environment approval, provenance, and semantic-release versioning from Conventional Commits. | Good. | -| API clarity | Core exports are small and named, but the README only shows a minimal API snippet. | Fixed: `docs/api-reference.md` documents the public TypeScript API and result types. | -| MCP reference | Tool names and an agent demo prompt are documented, but tool schemas are not deeply documented. | Improved: `docs/api-reference.md` documents the MCP tool names and input shapes. | -| Error guidance | Common setup and audio errors were not centralized. | Fixed in the root README troubleshooting section. | -| Dist workflow | `dist/` is committed and documented in `CLAUDE.md`; this is unusual but CI-enforced. | Good for this repo, but keep documenting it. | - -## Remaining Product Risks - -- `local-hash` is intentionally low-friction but not semantic. The docs must continue to say this - clearly so users do not overtrust retrieval quality. -- MCP access is read-focused but still exposes private retrieved passages to the connected agent. - Team/RBAC support remains out of scope. -- `audit --unsupported` intentionally lists relative paths only; users still need to avoid pasting - sensitive path names into public issue reports. -- The library API is usable and now documented, but examples should grow with real external usage. - -## Recommended Next Pass - -1. Add example-driven API guides once real external library usage appears. -2. Add richer MCP client examples if users integrate non-Claude/Codex agents. diff --git a/packages/mimir-core/dist/cli.js b/packages/mimir-core/dist/cli.js index 1b6f268..adbbbe2 100755 --- a/packages/mimir-core/dist/cli.js +++ b/packages/mimir-core/dist/cli.js @@ -18,6 +18,7 @@ import { securityAudit } from "./security.js"; import { enableSemanticEmbeddings } from "./semantic-config.js"; import { setupProject } from "./setup.js"; import { bundledSkillPath, installAgentSkills, installSkill, parseAgentTargets, SUPPORTED_AGENT_TARGETS, } from "./skill.js"; +import { addSourceEntries, listSourceEntries } from "./sources.js"; import { countRows } from "./store.js"; import { VERSION } from "./version.js"; const SEARCH_TEXT_PREVIEW_LENGTH = 900; @@ -93,6 +94,7 @@ program .option("--mcp-name ", "MCP server name used in generated config.", "mimir") .option("--mcp-command ", "Custom MCP stdio command for generated helper files.") .option("--mcp-arg ", "Argument for --mcp-command. Repeat for multiple arguments.", collectOptionValue, []) + .option("--semantic", "Download the configured Transformers.js embedding model and enable higher-quality semantic retrieval.") .option("--no-ingest", "Skip automatic indexing even when supported files are present.") .option("--json", "Print machine-readable JSON.") .action(async (options, command) => { @@ -103,6 +105,7 @@ program agents: parseAgentTargets(options.agents), mcpServerName: options.mcpName, }; + addOption(setupOptions, "semantic", options.semantic); addOption(setupOptions, "ingest", options.ingest); addOption(setupOptions, "mcpCommand", options.mcpCommand); if (options.mcpArg.length > 0) { @@ -141,6 +144,50 @@ program console.log(` 3. Run \`${doctorCommand.display}\``); console.log(` 4. Query with \`${searchCommand.display}\``); }); +const sourcesCommand = program + .command("sources") + .description("Manage extra source paths and glob patterns in .mimir/sources.txt."); +sourcesCommand + .command("list") + .description("List extra source paths and glob patterns.") + .option("--json", "Print machine-readable JSON.") + .action(async (options, command) => { + const cwd = projectRoot(command); + const result = await listSourceEntries(cwd); + if (options.json) { + console.log(JSON.stringify(result, null, 2)); + return; + } + console.log(`sourcesFile=${path.relative(cwd, result.sourcesFile) || result.sourcesFile}`); + if (result.entries.length === 0) { + console.log("No extra source entries."); + console.log('Add one with `mimir sources add "../apps/*/docs/**/*.md"`.'); + return; + } + for (const entry of result.entries) { + console.log(` - ${entry}`); + } +}); +sourcesCommand + .command("add") + .description("Add extra source paths or glob patterns.") + .argument("", "Source paths, glob patterns, or ! exclusion patterns.") + .option("--json", "Print machine-readable JSON.") + .action(async (entries, options, command) => { + const cwd = projectRoot(command); + const result = await addSourceEntries({ cwd, entries }); + if (options.json) { + console.log(JSON.stringify(result, null, 2)); + return; + } + console.log(`sourcesFile=${path.relative(cwd, result.sourcesFile) || result.sourcesFile}`); + for (const entry of result.added) { + console.log(pc.green(`added ${entry}`)); + } + for (const entry of result.skipped) { + console.log(pc.dim(`skipped existing ${entry}`)); + } +}); program .command("ingest") .description("Parse changed documents, redact, chunk, embed locally, and update LanceDB.") @@ -817,6 +864,18 @@ function printSetup(result, title) { } console.log(` - agent setup guide: ${result.agentKit.agentSetupPath}`); console.log(""); + if (result.semantic) { + console.log(pc.cyan("Semantic retrieval:")); + console.log(" - enabled for higher-quality natural-language retrieval"); + console.log(` - embedding model: ${result.semantic.model.embeddingModel}`); + console.log(` - model path: ${result.semantic.model.embeddingModelPath}`); + console.log(" - remote model loading after setup: false"); + } + else { + console.log(pc.cyan("Semantic retrieval:")); + console.log(" - skipped; default local-hash retrieval is fully local but not semantic. Run `mimir setup --semantic` or `mimir models pull --enable` when a one-time model download is acceptable."); + } + console.log(""); console.log(pc.cyan("Index:")); if (result.ingested) { console.log(` - ingested indexedFiles=${result.ingested.indexedFiles} rebuiltFiles=${result.ingested.rebuiltFiles} reusedFiles=${result.ingested.reusedFiles} chunks=${result.ingested.chunks} skippedFiles=${result.ingested.skippedFiles} emptyTextFiles=${result.ingested.emptyTextFiles.length} errors=${result.ingested.errors.length}`); diff --git a/packages/mimir-core/dist/cli.js.map b/packages/mimir-core/dist/cli.js.map index 6c02f89..6ea846f 100644 --- a/packages/mimir-core/dist/cli.js.map +++ b/packages/mimir-core/dist/cli.js.map @@ -1 +1 @@ -{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/mimir-core/dist/defaults.d.ts b/packages/mimir-core/dist/defaults.d.ts index 4df19ba..2575106 100644 --- a/packages/mimir-core/dist/defaults.d.ts +++ b/packages/mimir-core/dist/defaults.d.ts @@ -8,7 +8,8 @@ export declare const LEGACY_CONFIG_PATH = ".kb/config.json"; export declare const DEFAULT_SKILL_TARGET_DIR = ".mimir/skills"; export declare const MIMIR_GITIGNORE_ENTRY = ".mimir/"; export declare const LEGACY_KB_GITIGNORE_ENTRY = ".kb/"; -export declare const LEGACY_PRIVATE_GITIGNORE_ENTRY = "private/**"; +export declare const LEGACY_PRIVATE_GITIGNORE_ENTRY = "private/"; +export declare const LEGACY_PRIVATE_GITIGNORE_FALLBACK_ENTRY = "private/**"; export declare const DEFAULT_CONFIG: Omit; export declare const LEGACY_DEFAULT_CONFIG: Omit; //# sourceMappingURL=defaults.d.ts.map \ No newline at end of file diff --git a/packages/mimir-core/dist/defaults.d.ts.map b/packages/mimir-core/dist/defaults.d.ts.map index b319290..9ca7078 100644 --- a/packages/mimir-core/dist/defaults.d.ts.map +++ b/packages/mimir-core/dist/defaults.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,eAAO,MAAM,SAAS,WAAW,CAAA;AACjC,eAAO,MAAM,aAAa,QAAQ,CAAA;AAClC,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAC3C,eAAO,MAAM,aAAa,eAAqB,CAAA;AAC/C,eAAO,MAAM,WAAW,uBAA6B,CAAA;AACrD,eAAO,MAAM,kBAAkB,oBAAiC,CAAA;AAChE,eAAO,MAAM,wBAAwB,kBAAwB,CAAA;AAE7D,eAAO,MAAM,qBAAqB,YAAkB,CAAA;AACpD,eAAO,MAAM,yBAAyB,SAAsB,CAAA;AAC5D,eAAO,MAAM,8BAA8B,eAA6B,CAAA;AAExE,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CA8BtD,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAM7D,CAAA"} \ No newline at end of file +{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,eAAO,MAAM,SAAS,WAAW,CAAA;AACjC,eAAO,MAAM,aAAa,QAAQ,CAAA;AAClC,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAC3C,eAAO,MAAM,aAAa,eAAqB,CAAA;AAC/C,eAAO,MAAM,WAAW,uBAA6B,CAAA;AACrD,eAAO,MAAM,kBAAkB,oBAAiC,CAAA;AAChE,eAAO,MAAM,wBAAwB,kBAAwB,CAAA;AAE7D,eAAO,MAAM,qBAAqB,YAAkB,CAAA;AACpD,eAAO,MAAM,yBAAyB,SAAsB,CAAA;AAC5D,eAAO,MAAM,8BAA8B,aAA2B,CAAA;AACtE,eAAO,MAAM,uCAAuC,eAA6B,CAAA;AAEjF,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CA8BtD,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAM7D,CAAA"} \ No newline at end of file diff --git a/packages/mimir-core/dist/defaults.js b/packages/mimir-core/dist/defaults.js index cf3ef9c..9310e02 100644 --- a/packages/mimir-core/dist/defaults.js +++ b/packages/mimir-core/dist/defaults.js @@ -7,7 +7,8 @@ export const LEGACY_CONFIG_PATH = `${LEGACY_KB_DIR}/config.json`; export const DEFAULT_SKILL_TARGET_DIR = `${MIMIR_DIR}/skills`; export const MIMIR_GITIGNORE_ENTRY = `${MIMIR_DIR}/`; export const LEGACY_KB_GITIGNORE_ENTRY = `${LEGACY_KB_DIR}/`; -export const LEGACY_PRIVATE_GITIGNORE_ENTRY = `${LEGACY_PRIVATE_DIR}/**`; +export const LEGACY_PRIVATE_GITIGNORE_ENTRY = `${LEGACY_PRIVATE_DIR}/`; +export const LEGACY_PRIVATE_GITIGNORE_FALLBACK_ENTRY = `${LEGACY_PRIVATE_DIR}/**`; export const DEFAULT_CONFIG = { rawDir: MIMIR_RAW_DIR, storageDir: `${MIMIR_DIR}/storage`, diff --git a/packages/mimir-core/dist/defaults.js.map b/packages/mimir-core/dist/defaults.js.map index edb676f..42013ee 100644 --- a/packages/mimir-core/dist/defaults.js.map +++ b/packages/mimir-core/dist/defaults.js.map @@ -1 +1 @@ -{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAA;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAA;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAA;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,SAAS,MAAM,CAAA;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,SAAS,cAAc,CAAA;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,aAAa,cAAc,CAAA;AAChE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,SAAS,SAAS,CAAA;AAE7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,SAAS,GAAG,CAAA;AACpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,aAAa,GAAG,CAAA;AAC5D,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,kBAAkB,KAAK,CAAA;AAExE,MAAM,CAAC,MAAM,cAAc,GAAgC;IACzD,MAAM,EAAE,aAAa;IACrB,UAAU,EAAE,GAAG,SAAS,UAAU;IAClC,WAAW,EAAE,GAAG,SAAS,cAAc;IACvC,aAAa,EAAE,GAAG,SAAS,aAAa;IACxC,kBAAkB,EAAE,GAAG,SAAS,SAAS;IACzC,SAAS,EAAE,QAAQ;IACnB,iBAAiB,EAAE,YAAY;IAC/B,cAAc,EAAE,qCAAqC;IACrD,6BAA6B,EAAE,KAAK;IACpC,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,EAAE;KACb;IACD,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,EAAE;IACd,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,UAAU;IACxB,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,EAAE,EAAE;IACtB,iBAAiB,EAAE,EAAE;IACrB,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,OAAO;IAC1B,iBAAiB,EAAE,EAAE;IACrB,mBAAmB,EAAE,OAAO;CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAgC;IAChE,GAAG,cAAc;IACjB,MAAM,EAAE,kBAAkB;IAC1B,UAAU,EAAE,GAAG,aAAa,UAAU;IACtC,WAAW,EAAE,GAAG,aAAa,cAAc;IAC3C,aAAa,EAAE,GAAG,aAAa,aAAa;CAC7C,CAAA"} \ No newline at end of file +{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAA;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAA;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAA;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,SAAS,MAAM,CAAA;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,SAAS,cAAc,CAAA;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,aAAa,cAAc,CAAA;AAChE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,SAAS,SAAS,CAAA;AAE7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,SAAS,GAAG,CAAA;AACpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,aAAa,GAAG,CAAA;AAC5D,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,kBAAkB,GAAG,CAAA;AACtE,MAAM,CAAC,MAAM,uCAAuC,GAAG,GAAG,kBAAkB,KAAK,CAAA;AAEjF,MAAM,CAAC,MAAM,cAAc,GAAgC;IACzD,MAAM,EAAE,aAAa;IACrB,UAAU,EAAE,GAAG,SAAS,UAAU;IAClC,WAAW,EAAE,GAAG,SAAS,cAAc;IACvC,aAAa,EAAE,GAAG,SAAS,aAAa;IACxC,kBAAkB,EAAE,GAAG,SAAS,SAAS;IACzC,SAAS,EAAE,QAAQ;IACnB,iBAAiB,EAAE,YAAY;IAC/B,cAAc,EAAE,qCAAqC;IACrD,6BAA6B,EAAE,KAAK;IACpC,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,EAAE;KACb;IACD,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,EAAE;IACd,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,UAAU;IACxB,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,EAAE,EAAE;IACtB,iBAAiB,EAAE,EAAE;IACrB,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,OAAO;IAC1B,iBAAiB,EAAE,EAAE;IACrB,mBAAmB,EAAE,OAAO;CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAgC;IAChE,GAAG,cAAc;IACjB,MAAM,EAAE,kBAAkB;IAC1B,UAAU,EAAE,GAAG,aAAa,UAAU;IACtC,WAAW,EAAE,GAAG,aAAa,cAAc;IAC3C,aAAa,EAAE,GAAG,aAAa,aAAa;CAC7C,CAAA"} \ No newline at end of file diff --git a/packages/mimir-core/dist/files.d.ts.map b/packages/mimir-core/dist/files.d.ts.map index 5a9e091..24571e2 100644 --- a/packages/mimir-core/dist/files.d.ts.map +++ b/packages/mimir-core/dist/files.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,MAAM,EACN,iBAAiB,EAEjB,UAAU,EACV,eAAe,EAChB,MAAM,YAAY,CAAA;AAoEnB,eAAO,MAAM,4BAA4B,aA8EvC,CAAA;AAEF,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAE3E;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA8FnF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAO/D;AASD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,iBAAiB,EAAE,GAChC,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAW7C"} \ No newline at end of file +{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,MAAM,EACN,iBAAiB,EAEjB,UAAU,EACV,eAAe,EAChB,MAAM,YAAY,CAAA;AAiFnB,eAAO,MAAM,4BAA4B,aA8EvC,CAAA;AAEF,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAE3E;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA8HnF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAO/D;AASD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,iBAAiB,EAAE,GAChC,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAW7C"} \ No newline at end of file diff --git a/packages/mimir-core/dist/files.js b/packages/mimir-core/dist/files.js index 4233439..8a7fdf3 100644 --- a/packages/mimir-core/dist/files.js +++ b/packages/mimir-core/dist/files.js @@ -69,6 +69,8 @@ const DEFAULT_SUPPORTED_FILE_NAMES = new Set([ "procfile", "rakefile", ]); +const DEFAULT_FAST_GLOB_IGNORES = ["**/.git/**", "**/node_modules/**", "**/.kb/**", "**/.mimir/**"]; +const GLOB_PATTERN_CHARS = /[*?[{]/u; export const DEFAULT_SUPPORTED_EXTENSIONS = new Set([ ".atom", ".adoc", @@ -152,11 +154,58 @@ export async function listSourceFiles(config) { return (await inventorySourceFiles(config)).supportedFiles; } export async function inventorySourceFiles(config) { - const roots = await sourceRoots(config); + const inputs = await sourceInputs(config); const files = new Map(); const skippedFiles = new Map(); let discoveredFiles = 0; - for (const root of roots) { + const recordSourceFile = async (absolutePath, info, source) => { + const relativePath = path.relative(config.projectRoot, absolutePath); + if (GENERATED_SOURCE_READMES.has(relativePath)) { + return; + } + discoveredFiles += 1; + const extension = path.extname(absolutePath).toLowerCase(); + const skipped = skippedSourceFile(absolutePath, relativePath, source, extension, info.size); + if (skipped) { + skippedFiles.set(absolutePath, skipped); + return; + } + if (!isSupportedSourceFile(absolutePath, extension, config)) { + const normalizedExtension = extension || NO_EXTENSION; + skippedFiles.set(absolutePath, { + relativePath, + source, + extension: normalizedExtension, + bytes: info.size, + reason: "unsupported-extension", + recommendation: skippedRecommendation("unsupported-extension", normalizedExtension), + }); + return; + } + if (info.size > config.maxFileBytes) { + const normalizedExtension = extension || NO_EXTENSION; + skippedFiles.set(absolutePath, { + relativePath, + source, + extension: normalizedExtension, + bytes: info.size, + reason: "oversized", + recommendation: skippedRecommendation("oversized", normalizedExtension), + }); + return; + } + const buffer = await readFile(absolutePath); + files.set(absolutePath, { + absolutePath, + relativePath, + source, + extension, + bytes: info.size, + mtimeMs: info.mtimeMs, + checksum: createHash("sha256").update(buffer).digest("hex"), + }); + }; + for (const root of inputs.roots) { if (!existsSync(root)) { continue; } @@ -168,7 +217,7 @@ export async function inventorySourceFiles(config) { onlyFiles: true, dot: true, followSymbolicLinks: false, - ignore: ["**/.git/**", "**/node_modules/**", "**/.kb/**", "**/.mimir/**"], + ignore: DEFAULT_FAST_GLOB_IGNORES, objectMode: true, stats: true, unique: true, @@ -176,55 +225,33 @@ export async function inventorySourceFiles(config) { : [{ path: root, stats: { size: rootInfo.size, mtimeMs: rootInfo.mtimeMs } }]; for (const entry of entries) { const absolutePath = path.isAbsolute(entry.path) ? entry.path : path.resolve(root, entry.path); - const relativePath = path.relative(config.projectRoot, absolutePath); - if (GENERATED_SOURCE_READMES.has(relativePath)) { - continue; - } - discoveredFiles += 1; - const extension = path.extname(absolutePath).toLowerCase(); const info = entry.stats ?? (await stat(absolutePath)); + const relativePath = path.relative(config.projectRoot, absolutePath); const source = rootInfo.isDirectory() ? path.relative(root, absolutePath) || path.basename(absolutePath) : relativePath || path.basename(absolutePath); - const skipped = skippedSourceFile(absolutePath, relativePath, source, extension, info.size); - if (skipped) { - skippedFiles.set(absolutePath, skipped); - continue; - } - if (!isSupportedSourceFile(absolutePath, extension, config)) { - const normalizedExtension = extension || NO_EXTENSION; - skippedFiles.set(absolutePath, { - relativePath, - source, - extension: normalizedExtension, - bytes: info.size, - reason: "unsupported-extension", - recommendation: skippedRecommendation("unsupported-extension", normalizedExtension), - }); - continue; - } - if (info.size > config.maxFileBytes) { - const normalizedExtension = extension || NO_EXTENSION; - skippedFiles.set(absolutePath, { - relativePath, - source, - extension: normalizedExtension, - bytes: info.size, - reason: "oversized", - recommendation: skippedRecommendation("oversized", normalizedExtension), - }); - continue; - } - const buffer = await readFile(absolutePath); - files.set(absolutePath, { - absolutePath, - relativePath, - source, - extension, - bytes: info.size, - mtimeMs: info.mtimeMs, - checksum: createHash("sha256").update(buffer).digest("hex"), - }); + await recordSourceFile(absolutePath, info, source); + } + } + if (inputs.patterns.length > 0) { + const entries = (await fg(inputs.patterns, { + cwd: config.projectRoot, + absolute: true, + onlyFiles: true, + dot: true, + followSymbolicLinks: false, + ignore: [...DEFAULT_FAST_GLOB_IGNORES, ...inputs.ignorePatterns], + objectMode: true, + stats: true, + unique: true, + })); + for (const entry of entries) { + const absolutePath = path.isAbsolute(entry.path) + ? entry.path + : path.resolve(config.projectRoot, entry.path); + const info = entry.stats ?? (await stat(absolutePath)); + const relativePath = path.relative(config.projectRoot, absolutePath); + await recordSourceFile(absolutePath, info, relativePath || path.basename(absolutePath)); } } return { @@ -259,10 +286,12 @@ export function summarizeUnsupportedExtensions(skippedFiles) { .sort(([a], [b]) => a.localeCompare(b)) .map(([extension, count]) => ({ extension, count })); } -async function sourceRoots(config) { +async function sourceInputs(config) { const roots = [config.rawDir]; + const patterns = []; + const ignorePatterns = []; if (!existsSync(config.sourcesFile)) { - return roots; + return { roots, patterns, ignorePatterns }; } const content = await readFile(config.sourcesFile, "utf8"); for (const line of content.split(/\r?\n/u)) { @@ -270,9 +299,23 @@ async function sourceRoots(config) { if (!trimmed || trimmed.startsWith("#")) { continue; } + if (trimmed.startsWith("!")) { + ignorePatterns.push(sourcePattern(config.projectRoot, trimmed.slice(1).trim())); + continue; + } + if (GLOB_PATTERN_CHARS.test(trimmed)) { + patterns.push(sourcePattern(config.projectRoot, trimmed)); + continue; + } roots.push(path.isAbsolute(trimmed) ? trimmed : path.resolve(config.projectRoot, trimmed)); } - return roots; + return { roots, patterns, ignorePatterns }; +} +function sourcePattern(projectRoot, input) { + if (path.isAbsolute(input)) { + return path.relative(projectRoot, input).replaceAll(path.sep, "/"); + } + return input.replaceAll(path.sep, "/"); } function skippedSourceFile(absolutePath, relativePath, source, extension, bytes) { const baseName = path.basename(absolutePath).toLowerCase(); diff --git a/packages/mimir-core/dist/files.js.map b/packages/mimir-core/dist/files.js.map index 0d0c604..273c5b8 100644 --- a/packages/mimir-core/dist/files.js.map +++ b/packages/mimir-core/dist/files.js.map @@ -1 +1 @@ -{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/mimir-core/dist/index.d.ts b/packages/mimir-core/dist/index.d.ts index 255dfcc..4eb4042 100644 --- a/packages/mimir-core/dist/index.d.ts +++ b/packages/mimir-core/dist/index.d.ts @@ -14,10 +14,12 @@ export { redactText } from "./redaction.js"; export { compactResearchReport, compactSearchResults, research } from "./research.js"; export { securityAudit } from "./security.js"; export { enableSemanticEmbeddings } from "./semantic-config.js"; -export type { SetupOptions, SetupResult } from "./setup.js"; +export type { SetupOptions, SetupResult, SetupSemanticResult } from "./setup.js"; export { setupProject } from "./setup.js"; export type { AgentHelperFile, AgentInstallMode, AgentInstallScope, AgentSkillInstallation, AgentTarget, InstallAgentSkillsOptions, InstallAgentSkillsResult, InstallSkillOptions, InstallSkillResult, } from "./skill.js"; export { bundledSkillPath, installAgentSkills, installSkill, parseAgentTargets, SUPPORTED_AGENT_TARGETS, } from "./skill.js"; +export type { AddSourceEntriesOptions, AddSourceEntriesResult, SourceEntriesResult, } from "./sources.js"; +export { addSourceEntries, listSourceEntries } from "./sources.js"; export type { AccessLogAction, AccessLogUsageOptions, AccessLogUsageReport, AskResult, AuditReport, CodeEvidence, CompactSearchResult, Config, DestroyIndexResult, DoctorReport, EvaluationCaseResult, EvaluationOptions, EvaluationResult, GoldenQuery, IngestResult, ResearchEvidence, ResearchOptions, ResearchReport, SearchResult, SecurityAuditReport, SourceDiagnostics, SourceDuplicateCandidate, SourcePathCandidate, } from "./types.js"; export { VERSION } from "./version.js"; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/mimir-core/dist/index.d.ts.map b/packages/mimir-core/dist/index.d.ts.map index 45cafd5..16e93ce 100644 --- a/packages/mimir-core/dist/index.d.ts.map +++ b/packages/mimir-core/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAClE,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"} \ No newline at end of file diff --git a/packages/mimir-core/dist/index.js b/packages/mimir-core/dist/index.js index c1f3f97..450a9eb 100644 --- a/packages/mimir-core/dist/index.js +++ b/packages/mimir-core/dist/index.js @@ -15,5 +15,6 @@ export { securityAudit } from "./security.js"; export { enableSemanticEmbeddings } from "./semantic-config.js"; export { setupProject } from "./setup.js"; export { bundledSkillPath, installAgentSkills, installSkill, parseAgentTargets, SUPPORTED_AGENT_TARGETS, } from "./skill.js"; +export { addSourceEntries, listSourceEntries } from "./sources.js"; export { VERSION } from "./version.js"; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/mimir-core/dist/index.js.map b/packages/mimir-core/dist/index.js.map index 5bd3f05..4506683 100644 --- a/packages/mimir-core/dist/index.js.map +++ b/packages/mimir-core/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEnC,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAYzC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AA0BnB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEnC,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAYzC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AAMnB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AA0BlE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"} \ No newline at end of file diff --git a/packages/mimir-core/dist/init.d.ts.map b/packages/mimir-core/dist/init.d.ts.map index daa8be1..01fdf25 100644 --- a/packages/mimir-core/dist/init.d.ts.map +++ b/packages/mimir-core/dist/init.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAYA,wBAAsB,WAAW,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAiDxE"} \ No newline at end of file +{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAYA,wBAAsB,WAAW,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuDxE"} \ No newline at end of file diff --git a/packages/mimir-core/dist/init.js b/packages/mimir-core/dist/init.js index b9f16d6..dd6bf84 100644 --- a/packages/mimir-core/dist/init.js +++ b/packages/mimir-core/dist/init.js @@ -21,7 +21,13 @@ export async function initProject(cwd = process.cwd()) { const sourcesPath = path.resolve(root, hasLegacyConfig && !hasConfig ? LEGACY_DEFAULT_CONFIG.sourcesFile : DEFAULT_CONFIG.sourcesFile); if (!existsSync(sourcesPath)) { await mkdir(path.dirname(sourcesPath), { recursive: true }); - await writeFile(sourcesPath, "# Optional extra source paths, one per line. Relative paths resolve from the project root.\n", "utf8"); + await writeFile(sourcesPath, [ + "# Optional extra source paths or glob patterns, one per line.", + "# Relative paths resolve from the project root. Prefix glob exclusions with !.", + "# Example: ../apps/*/docs/**/*.md", + "# Example: !../apps/**/node_modules/**", + "", + ].join("\n"), "utf8"); created.push(path.relative(root, sourcesPath)); } if (!hasConfig && !hasLegacyConfig) { diff --git a/packages/mimir-core/dist/init.js.map b/packages/mimir-core/dist/init.js.map index 752a2dd..b861870 100644 --- a/packages/mimir-core/dist/init.js.map +++ b/packages/mimir-core/dist/init.js.map @@ -1 +1 @@ -{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/mimir-core/dist/mcp.d.ts.map b/packages/mimir-core/dist/mcp.d.ts.map index 7128916..7b2bc27 100644 --- a/packages/mimir-core/dist/mcp.d.ts.map +++ b/packages/mimir-core/dist/mcp.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAsCA,wBAAsB,QAAQ,CAAC,GAAG,SAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgJ3E;AAED,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,SAAgB,GACvB,MAAM,CAER"} \ No newline at end of file +{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAuCA,wBAAsB,QAAQ,CAAC,GAAG,SAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgJ3E;AAED,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,SAAgB,GACvB,MAAM,CAWR"} \ No newline at end of file diff --git a/packages/mimir-core/dist/mcp.js b/packages/mimir-core/dist/mcp.js index 1ab26d9..6e765cf 100644 --- a/packages/mimir-core/dist/mcp.js +++ b/packages/mimir-core/dist/mcp.js @@ -1,9 +1,10 @@ +import { existsSync } from "node:fs"; import path from "node:path"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; import { accessLogUsageReport } from "./access-log.js"; -import { loadConfig } from "./config.js"; +import { findProjectConfig, loadConfig } from "./config.js"; import { evaluateGoldenQueries } from "./evaluate.js"; import { audit } from "./ingest.js"; import { ask, search } from "./query.js"; @@ -133,7 +134,14 @@ export async function serveMcp(cwd = resolveMcpProjectRoot()) { await server.connect(new StdioServerTransport()); } export function resolveMcpProjectRoot(env = process.env, fallback = process.cwd()) { - return env.MIMIR_PROJECT_ROOT ?? env.CLAUDE_PROJECT_DIR ?? fallback; + if (env.MIMIR_PROJECT_ROOT) { + return env.MIMIR_PROJECT_ROOT; + } + const fallbackConfig = findProjectConfig(fallback); + if (existsSync(fallbackConfig.configPath)) { + return fallbackConfig.projectRoot; + } + return env.CLAUDE_PROJECT_DIR ?? fallback; } function textResult(value) { return { diff --git a/packages/mimir-core/dist/mcp.js.map b/packages/mimir-core/dist/mcp.js.map index f9e8044..aa7105f 100644 --- a/packages/mimir-core/dist/mcp.js.map +++ b/packages/mimir-core/dist/mcp.js.map @@ -1 +1 @@ -{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAA;AAEF,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAA;AAEF,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IAC1D,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAA;AAEF,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAA;AAEF,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAA;AAEF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAG,GAAG,qBAAqB,EAAE;IAC1D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO;KACjB,CAAC,CAAA;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,0DAA0D;QACvE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,EACD,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;QACpC,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,6BAA6B,EAAE,MAAM,CAAC,6BAA6B;YACnE,aAAa,EAAE,KAAK;YACpB,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;YAC1C,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,aAAa;SACd,CAAA;QAED,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE,qBAAqB;KACnC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;QACnE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACtE,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CACxF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,8FAA8F;QAChG,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC9C,MAAM,eAAe,GAAmC,EAAE,GAAG,EAAE,CAAA;QAC/D,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAChD,SAAS,CAAC,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;QACrD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACrE,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,EACD,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CACzC,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;QAC1F,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC;QACD,MAAM,aAAa,GAAG,SAAS,CAAA;QAC/B,OAAO,UAAU,CAAC;YAChB,GAAG,MAAM;YACT,aAAa;YACb,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,aAAa;SACvC,CAAC,CAAA;IACJ,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,sEAAsE;QACnF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,EACD,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,CACjD,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE,sBAAsB;KACpC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,MAAM,OAAO,GAA+C,EAAE,GAAG,EAAE,CAAA;QACnE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;QACrB,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAA;IACxD,CAAC,CACF,CAAA;IAED,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAyB,OAAO,CAAC,GAAG,EACpC,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;IAExB,OAAO,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,kBAAkB,IAAI,QAAQ,CAAA;AACrE,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACrC;SACF;KACF,CAAA;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAAW,EACX,IAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IACpE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;AACnC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,GAAW,EACX,UAAkB,EAClB,IAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG;QACb,GAAG;QACH,UAAU,EAAE,yBAAyB,CAAC,GAAG,EAAE,UAAU,CAAC;QACtD,OAAO,EAAE,MAAM,CAAC,UAAU;KAC3B,CAAA;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAA;AAC/D,CAAC;AAED,SAAS,yBAAyB,CAAC,GAAW,EAAE,UAAkB;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IACtD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChG,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;IACrF,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,SAAS,SAAS,CAChB,MAAS,EACT,GAAM,EACN,KAAuB;IAEvB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACrB,CAAC;AACH,CAAC"} \ No newline at end of file +{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAA;AAEF,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAA;AAEF,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IAC1D,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAA;AAEF,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAA;AAEF,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAA;AAEF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAG,GAAG,qBAAqB,EAAE;IAC1D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO;KACjB,CAAC,CAAA;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,0DAA0D;QACvE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,EACD,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;QACpC,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,6BAA6B,EAAE,MAAM,CAAC,6BAA6B;YACnE,aAAa,EAAE,KAAK;YACpB,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;YAC1C,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,aAAa;SACd,CAAA;QAED,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE,qBAAqB;KACnC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;QACnE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACtE,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CACxF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,8FAA8F;QAChG,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC9C,MAAM,eAAe,GAAmC,EAAE,GAAG,EAAE,CAAA;QAC/D,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAChD,SAAS,CAAC,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;QACrD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACrE,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,EACD,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CACzC,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;QAC1F,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC;QACD,MAAM,aAAa,GAAG,SAAS,CAAA;QAC/B,OAAO,UAAU,CAAC;YAChB,GAAG,MAAM;YACT,aAAa;YACb,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,aAAa;SACvC,CAAC,CAAA;IACJ,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,sEAAsE;QACnF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,EACD,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,CACjD,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE,sBAAsB;KACpC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,MAAM,OAAO,GAA+C,EAAE,GAAG,EAAE,CAAA;QACnE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;QACrB,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAA;IACxD,CAAC,CACF,CAAA;IAED,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAyB,OAAO,CAAC,GAAG,EACpC,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;IAExB,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,kBAAkB,CAAA;IAC/B,CAAC;IAED,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAClD,IAAI,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,OAAO,cAAc,CAAC,WAAW,CAAA;IACnC,CAAC;IAED,OAAO,GAAG,CAAC,kBAAkB,IAAI,QAAQ,CAAA;AAC3C,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACrC;SACF;KACF,CAAA;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAAW,EACX,IAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IACpE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;AACnC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,GAAW,EACX,UAAkB,EAClB,IAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG;QACb,GAAG;QACH,UAAU,EAAE,yBAAyB,CAAC,GAAG,EAAE,UAAU,CAAC;QACtD,OAAO,EAAE,MAAM,CAAC,UAAU;KAC3B,CAAA;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAA;AAC/D,CAAC;AAED,SAAS,yBAAyB,CAAC,GAAW,EAAE,UAAkB;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IACtD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChG,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;IACrF,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,SAAS,SAAS,CAChB,MAAS,EACT,GAAM,EACN,KAAuB;IAEvB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACrB,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/mimir-core/dist/security.d.ts.map b/packages/mimir-core/dist/security.d.ts.map index d87e672..90ff434 100644 --- a/packages/mimir-core/dist/security.d.ts.map +++ b/packages/mimir-core/dist/security.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,wBAAsB,aAAa,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA8ErF"} \ No newline at end of file +{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,wBAAsB,aAAa,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgFrF"} \ No newline at end of file diff --git a/packages/mimir-core/dist/security.js b/packages/mimir-core/dist/security.js index a042ae7..47665fd 100644 --- a/packages/mimir-core/dist/security.js +++ b/packages/mimir-core/dist/security.js @@ -2,14 +2,15 @@ import { existsSync } from "node:fs"; import { readFile } from "node:fs/promises"; import path from "node:path"; import { loadConfig } from "./config.js"; -import { LEGACY_KB_DIR, LEGACY_KB_GITIGNORE_ENTRY, LEGACY_PRIVATE_DIR, LEGACY_PRIVATE_GITIGNORE_ENTRY, MIMIR_GITIGNORE_ENTRY, } from "./defaults.js"; +import { LEGACY_KB_DIR, LEGACY_KB_GITIGNORE_ENTRY, LEGACY_PRIVATE_DIR, LEGACY_PRIVATE_GITIGNORE_ENTRY, LEGACY_PRIVATE_GITIGNORE_FALLBACK_ENTRY, MIMIR_GITIGNORE_ENTRY, } from "./defaults.js"; export async function securityAudit(cwd = process.cwd()) { const config = await loadConfig(cwd); const gitignore = await readGitignore(config.projectRoot); const warnings = []; const legacyKbIgnored = hasGitignoreEntry(gitignore, LEGACY_KB_GITIGNORE_ENTRY); const mimirIgnored = hasGitignoreEntry(gitignore, MIMIR_GITIGNORE_ENTRY); - const legacyPrivateIgnored = hasGitignoreEntry(gitignore, LEGACY_PRIVATE_GITIGNORE_ENTRY); + const legacyPrivateIgnored = hasGitignoreEntry(gitignore, LEGACY_PRIVATE_GITIGNORE_ENTRY) || + hasGitignoreEntry(gitignore, LEGACY_PRIVATE_GITIGNORE_FALLBACK_ENTRY); const usesLegacyKb = [config.storageDir, config.sourcesFile, config.accessLogPath].some((filePath) => usesProjectDirectory(config.projectRoot, filePath, LEGACY_KB_DIR)); const usesLegacyPrivate = usesProjectDirectory(config.projectRoot, config.rawDir, LEGACY_PRIVATE_DIR); const storageGitIgnored = isPathIgnored(config.projectRoot, config.storageDir, gitignore); diff --git a/packages/mimir-core/dist/security.js.map b/packages/mimir-core/dist/security.js.map index 28af94e..a689d3c 100644 --- a/packages/mimir-core/dist/security.js.map +++ b/packages/mimir-core/dist/security.js.map @@ -1 +1 @@ -{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/mimir-core/dist/setup.d.ts b/packages/mimir-core/dist/setup.d.ts index 4addf45..54a3e9c 100644 --- a/packages/mimir-core/dist/setup.d.ts +++ b/packages/mimir-core/dist/setup.d.ts @@ -1,21 +1,29 @@ +import { type PullEmbeddingModelResult } from "./embeddings.js"; import { type PackageManager } from "./package-manager.js"; +import { type EnableSemanticEmbeddingsResult } from "./semantic-config.js"; import { type AgentTarget, type InstallSkillResult } from "./skill.js"; import type { DoctorReport, IngestResult } from "./types.js"; export interface SetupOptions { cwd?: string; targetDir?: string; ingest?: boolean; + semantic?: boolean; agents?: readonly AgentTarget[]; mcpServerName?: string; mcpCommand?: string; mcpArgs?: readonly string[]; } +export interface SetupSemanticResult { + model: PullEmbeddingModelResult; + config: EnableSemanticEmbeddingsResult; +} export interface SetupResult { projectRoot: string; packageManager: PackageManager; runCommand: string; created: string[]; agentKit: InstallSkillResult; + semantic: SetupSemanticResult | null; ingested: IngestResult | null; doctor: DoctorReport; nextSteps: string[]; diff --git a/packages/mimir-core/dist/setup.d.ts.map b/packages/mimir-core/dist/setup.d.ts.map index da6614d..f223750 100644 --- a/packages/mimir-core/dist/setup.d.ts.map +++ b/packages/mimir-core/dist/setup.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAgB,MAAM,YAAY,CAAA;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE5D,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAwCnF"} \ No newline at end of file +{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,wBAAwB,EAAsB,MAAM,iBAAiB,CAAA;AAGnF,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,KAAK,8BAA8B,EAA4B,MAAM,sBAAsB,CAAA;AACpG,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAgB,MAAM,YAAY,CAAA;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE5D,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,wBAAwB,CAAA;IAC/B,MAAM,EAAE,8BAA8B,CAAA;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACpC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CA0CnF"} \ No newline at end of file diff --git a/packages/mimir-core/dist/setup.js b/packages/mimir-core/dist/setup.js index 74a9947..4f4373d 100644 --- a/packages/mimir-core/dist/setup.js +++ b/packages/mimir-core/dist/setup.js @@ -1,8 +1,11 @@ import path from "node:path"; +import { loadConfig } from "./config.js"; import { doctor } from "./doctor.js"; +import { pullEmbeddingModel } from "./embeddings.js"; import { ingest } from "./ingest.js"; import { initProject } from "./init.js"; import { mimirCommand } from "./package-manager.js"; +import { enableSemanticEmbeddings } from "./semantic-config.js"; import { installSkill } from "./skill.js"; export async function setupProject(options = {}) { const cwd = path.resolve(options.cwd ?? process.cwd()); @@ -24,6 +27,7 @@ export async function setupProject(options = {}) { installOptions.mcpArgs = options.mcpArgs; } const agentKit = await installSkill(installOptions); + const semantic = options.semantic ? await setupSemanticEmbeddings(cwd) : null; let report = await doctor(cwd); let ingested = null; if (options.ingest !== false && canAutoIngest(report)) { @@ -37,11 +41,21 @@ export async function setupProject(options = {}) { runCommand: command.display, created, agentKit, + semantic, ingested, doctor: report, nextSteps: setupNextSteps(report), }; } +async function setupSemanticEmbeddings(cwd) { + const config = await loadConfig(cwd); + const model = await pullEmbeddingModel(config); + const semanticConfig = await enableSemanticEmbeddings(cwd); + return { + model, + config: semanticConfig, + }; +} function canAutoIngest(report) { return (report.supportedFiles > 0 && report.securityWarnings.length === 0 && diff --git a/packages/mimir-core/dist/setup.js.map b/packages/mimir-core/dist/setup.js.map index 7c6a328..259d10a 100644 --- a/packages/mimir-core/dist/setup.js.map +++ b/packages/mimir-core/dist/setup.js.map @@ -1 +1 @@ -{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAuB,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAA6C,YAAY,EAAE,MAAM,YAAY,CAAA;AAwBpF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAwB,EAAE;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,cAAc,GAAuC,EAAE,GAAG,EAAE,CAAA;IAClE,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,cAAc,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IAC9C,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,cAAc,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACxC,cAAc,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;IACtD,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,cAAc,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC1C,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,CAAA;IACnD,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,QAAQ,GAAwB,IAAI,CAAA;IAExC,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,QAAQ,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAChC,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEnD,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,UAAU,EAAE,OAAO,CAAC,OAAO;QAC3B,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC;KAClC,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAoB;IACzC,OAAO,CACL,MAAM,CAAC,cAAc,GAAG,CAAC;QACzB,MAAM,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;QACpC,CAAC,MAAM,CAAC,aAAa,KAAK,CAAC,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CACvF,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAoB;IAC1C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO;YACL,uEAAuE;YACvE,sGAAsG;YACtG,4FAA4F;SAC7F,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,CAAA;AACzB,CAAC"} \ No newline at end of file +{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/mimir-core/dist/sources.d.ts b/packages/mimir-core/dist/sources.d.ts new file mode 100644 index 0000000..28d0bf3 --- /dev/null +++ b/packages/mimir-core/dist/sources.d.ts @@ -0,0 +1,16 @@ +export interface SourceEntriesResult { + sourcesFile: string; + entries: string[]; +} +export interface AddSourceEntriesOptions { + cwd?: string; + entries: readonly string[]; +} +export interface AddSourceEntriesResult { + sourcesFile: string; + added: string[]; + skipped: string[]; +} +export declare function listSourceEntries(cwd?: string): Promise; +export declare function addSourceEntries(options: AddSourceEntriesOptions): Promise; +//# sourceMappingURL=sources.d.ts.map \ No newline at end of file diff --git a/packages/mimir-core/dist/sources.d.ts.map b/packages/mimir-core/dist/sources.d.ts.map new file mode 100644 index 0000000..f61e194 --- /dev/null +++ b/packages/mimir-core/dist/sources.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../src/sources.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,wBAAsB,iBAAiB,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAOzF;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CA+BjC"} \ No newline at end of file diff --git a/packages/mimir-core/dist/sources.js b/packages/mimir-core/dist/sources.js new file mode 100644 index 0000000..24dbfc5 --- /dev/null +++ b/packages/mimir-core/dist/sources.js @@ -0,0 +1,77 @@ +import { existsSync } from "node:fs"; +import { mkdir, readFile, writeFile } from "node:fs/promises"; +import path from "node:path"; +import { loadConfig } from "./config.js"; +const SOURCES_FILE_HEADER = [ + "# Optional extra source paths or glob patterns, one per line.", + "# Relative paths resolve from the project root. Prefix glob exclusions with !.", + "# Example: ../apps/*/docs/**/*.md", + "# Example: !../apps/**/node_modules/**", + "", +]; +export async function listSourceEntries(cwd = process.cwd()) { + const config = await loadConfig(cwd); + const content = await readSourcesFile(config.sourcesFile); + return { + sourcesFile: config.sourcesFile, + entries: content ? parseSourceEntries(content) : [], + }; +} +export async function addSourceEntries(options) { + const entries = normalizeRequestedEntries(options.entries); + if (entries.length === 0) { + throw new Error("At least one source path or glob is required."); + } + const config = await loadConfig(options.cwd); + const content = await readSourcesFile(config.sourcesFile); + const existingEntries = new Set(content ? parseSourceEntries(content) : []); + const added = []; + const skipped = []; + for (const entry of entries) { + if (existingEntries.has(entry)) { + skipped.push(entry); + continue; + } + existingEntries.add(entry); + added.push(entry); + } + if (added.length > 0) { + await mkdir(path.dirname(config.sourcesFile), { recursive: true }); + await writeFile(config.sourcesFile, nextSourcesFileContent(content, added), "utf8"); + } + return { + sourcesFile: config.sourcesFile, + added, + skipped, + }; +} +async function readSourcesFile(sourcesFile) { + if (!existsSync(sourcesFile)) { + return null; + } + return readFile(sourcesFile, "utf8"); +} +function parseSourceEntries(content) { + return content + .split(/\r?\n/u) + .map((line) => line.trim()) + .filter((line) => line.length > 0 && !line.startsWith("#")); +} +function normalizeRequestedEntries(entries) { + const normalized = []; + const seen = new Set(); + for (const entry of entries) { + const trimmed = entry.trim(); + if (!trimmed || seen.has(trimmed)) { + continue; + } + seen.add(trimmed); + normalized.push(trimmed); + } + return normalized; +} +function nextSourcesFileContent(currentContent, added) { + const base = currentContent === null ? SOURCES_FILE_HEADER.join("\n") : currentContent.trimEnd(); + return `${base ? `${base}\n` : ""}${added.join("\n")}\n`; +} +//# sourceMappingURL=sources.js.map \ No newline at end of file diff --git a/packages/mimir-core/dist/sources.js.map b/packages/mimir-core/dist/sources.js.map new file mode 100644 index 0000000..7560bf9 --- /dev/null +++ b/packages/mimir-core/dist/sources.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sources.js","sourceRoot":"","sources":["../src/sources.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/mimir-core/skills/mimir-audio-summary/SKILL.md b/packages/mimir-core/skills/mimir-audio-summary/SKILL.md index f5d6926..d465bda 100644 --- a/packages/mimir-core/skills/mimir-audio-summary/SKILL.md +++ b/packages/mimir-core/skills/mimir-audio-summary/SKILL.md @@ -111,10 +111,10 @@ pnpm exec mimir audio /tmp/MIMIR-SUMMARY-.txt \ --out .mimir/audio/MIMIR-SUMMARY-.wav ``` -The Transformers.js path does not require Python, ffmpeg, Piper, XTTS, or a local TTS server. The -first non-offline Transformers render can download public model files into `.mimir/models/tts`, but -the narration text is processed locally. Preload with a synthetic non-sensitive sentence first; the -repository guide is `docs/offline-tts-preload.md`. +The Transformers.js path does not require Python, ffmpeg, Piper, XTTS, or a local TTS server. Remote +model downloads are disabled by default and require `--allow-remote-models` for an explicit +non-sensitive preload into `.mimir/models/tts`. Preload with a synthetic non-sensitive sentence +first; the repository guide is `docs/offline-tts-preload.md`. Use the voice-forge helper only when the user explicitly wants XTTS, macOS `say`, or Piper: diff --git a/packages/mimir-core/skills/mimir/SKILL.md b/packages/mimir-core/skills/mimir/SKILL.md index d2f06da..a6f481f 100644 --- a/packages/mimir-core/skills/mimir/SKILL.md +++ b/packages/mimir-core/skills/mimir/SKILL.md @@ -29,7 +29,7 @@ Default project layout: ## Data Safety - Do not commit raw documents, secrets, tax IDs, scans, bank documents, tokens, or generated vector stores. -- Keep `.mimir/` ignored by Git. Legacy projects using `private/**` or `.kb/` must keep those paths +- Keep `.mimir/` ignored by Git. Legacy projects using `private/`, `private/**`, or `.kb/` must keep those paths ignored too. - Treat `mimir search`, `mimir ask`, `mimir research`, and MCP results as sensitive because they can contain private source passages even when redaction is enabled. @@ -55,6 +55,8 @@ If Mimir is not installed: ```bash pnpm add -D @jcode.labs/mimir pnpm exec mimir setup +# Optional: one-time model download for higher-quality semantic retrieval. +pnpm exec mimir setup --semantic ``` When the repository should expose only specific agent helpers or must launch MCP through a local @@ -69,6 +71,8 @@ If the package manager is npm: ```bash npm install --save-dev @jcode.labs/mimir npx mimir setup +# Optional: one-time model download for higher-quality semantic retrieval. +npx mimir setup --semantic ``` Use `status`, `audit`, and `security-audit` for deeper checks after `doctor` explains the current @@ -115,10 +119,18 @@ Optional semantic embedding mode: ``` This uses Transformers.js for embeddings only. Keep `transformersAllowRemoteModels` false for -air-gapped or confidential work and preload model files under `embeddingModelPath`: +air-gapped or confidential work and preload model files under `embeddingModelPath`. Use the +first-run shortcut when a one-time download is acceptable: ```bash -pnpm exec mimir models pull +pnpm exec mimir setup --semantic +pnpm exec mimir ingest --rebuild +``` + +Or enable it later: + +```bash +pnpm exec mimir models pull --enable pnpm exec mimir ingest --rebuild ``` @@ -144,6 +156,23 @@ the security audit should not show warnings before relying on Mimir for sensitiv Default retrieval is tuned for broader recall (`topK: 8`, `chunkOverlap: 200`). Keep MCP retrieval bounded by `mcpMaxTopK`, and raise `--top-k` only when the first results are too narrow. +For monorepos, keep raw confidential files local and list useful repo docs through `.mimir/sources.txt`. +Entries can be paths or glob patterns relative to the Mimir project root, with `!` exclusions: + +```plain text +../apps/*/README.md +../apps/*/docs/**/*.md +!../apps/**/node_modules/** +``` + +Use the CLI when you want agents or setup scripts to update the file without manual editing: + +```bash +pnpm exec mimir sources add "../apps/*/README.md" "../apps/*/docs/**/*.md" +pnpm exec mimir sources add "!../apps/**/node_modules/**" +pnpm exec mimir sources list +``` + ## Query Workflow Use search when you need exact source passages: @@ -231,7 +260,8 @@ For OpenCode, merge `.mimir/opencode.jsonc` into the OpenCode config layer used For Cline, add `.mimir/cline-mcp.json` under `mcpServers` in Cline's MCP configuration. For other MCP clients that cannot set `cwd`, set `MIMIR_PROJECT_ROOT=/absolute/path/to/repository` -when launching `mimir serve-mcp`. +when launching `mimir serve-mcp`. `MIMIR_PROJECT_ROOT` is the strongest signal; otherwise a +configured current working directory wins before agent-provided project environment variables. Available MCP tools: diff --git a/packages/mimir-core/src/cli.ts b/packages/mimir-core/src/cli.ts index 8387e29..f176d8a 100644 --- a/packages/mimir-core/src/cli.ts +++ b/packages/mimir-core/src/cli.ts @@ -26,6 +26,7 @@ import { parseAgentTargets, SUPPORTED_AGENT_TARGETS, } from "./skill.js" +import { addSourceEntries, listSourceEntries } from "./sources.js" import { countRows } from "./store.js" import type { ResearchReport } from "./types.js" import { VERSION } from "./version.js" @@ -124,6 +125,10 @@ program collectOptionValue, [], ) + .option( + "--semantic", + "Download the configured Transformers.js embedding model and enable higher-quality semantic retrieval.", + ) .option("--no-ingest", "Skip automatic indexing even when supported files are present.") .option("--json", "Print machine-readable JSON.") .action( @@ -134,6 +139,7 @@ program mcpName: string mcpCommand?: string mcpArg: string[] + semantic?: boolean ingest?: boolean json?: boolean }, @@ -146,6 +152,7 @@ program agents: parseAgentTargets(options.agents), mcpServerName: options.mcpName, } + addOption(setupOptions, "semantic", options.semantic) addOption(setupOptions, "ingest", options.ingest) addOption(setupOptions, "mcpCommand", options.mcpCommand) if (options.mcpArg.length > 0) { @@ -187,6 +194,55 @@ program console.log(` 4. Query with \`${searchCommand.display}\``) }) +const sourcesCommand = program + .command("sources") + .description("Manage extra source paths and glob patterns in .mimir/sources.txt.") + +sourcesCommand + .command("list") + .description("List extra source paths and glob patterns.") + .option("--json", "Print machine-readable JSON.") + .action(async (options: { json?: boolean }, command: Command) => { + const cwd = projectRoot(command) + const result = await listSourceEntries(cwd) + if (options.json) { + console.log(JSON.stringify(result, null, 2)) + return + } + + console.log(`sourcesFile=${path.relative(cwd, result.sourcesFile) || result.sourcesFile}`) + if (result.entries.length === 0) { + console.log("No extra source entries.") + console.log('Add one with `mimir sources add "../apps/*/docs/**/*.md"`.') + return + } + for (const entry of result.entries) { + console.log(` - ${entry}`) + } + }) + +sourcesCommand + .command("add") + .description("Add extra source paths or glob patterns.") + .argument("", "Source paths, glob patterns, or ! exclusion patterns.") + .option("--json", "Print machine-readable JSON.") + .action(async (entries: string[], options: { json?: boolean }, command: Command) => { + const cwd = projectRoot(command) + const result = await addSourceEntries({ cwd, entries }) + if (options.json) { + console.log(JSON.stringify(result, null, 2)) + return + } + + console.log(`sourcesFile=${path.relative(cwd, result.sourcesFile) || result.sourcesFile}`) + for (const entry of result.added) { + console.log(pc.green(`added ${entry}`)) + } + for (const entry of result.skipped) { + console.log(pc.dim(`skipped existing ${entry}`)) + } + }) + program .command("ingest") .description("Parse changed documents, redact, chunk, embed locally, and update LanceDB.") @@ -1058,6 +1114,19 @@ function printSetup(result: Awaited>, title: str } console.log(` - agent setup guide: ${result.agentKit.agentSetupPath}`) console.log("") + if (result.semantic) { + console.log(pc.cyan("Semantic retrieval:")) + console.log(" - enabled for higher-quality natural-language retrieval") + console.log(` - embedding model: ${result.semantic.model.embeddingModel}`) + console.log(` - model path: ${result.semantic.model.embeddingModelPath}`) + console.log(" - remote model loading after setup: false") + } else { + console.log(pc.cyan("Semantic retrieval:")) + console.log( + " - skipped; default local-hash retrieval is fully local but not semantic. Run `mimir setup --semantic` or `mimir models pull --enable` when a one-time model download is acceptable.", + ) + } + console.log("") console.log(pc.cyan("Index:")) if (result.ingested) { console.log( diff --git a/packages/mimir-core/src/defaults.ts b/packages/mimir-core/src/defaults.ts index 19948a2..877f0f0 100644 --- a/packages/mimir-core/src/defaults.ts +++ b/packages/mimir-core/src/defaults.ts @@ -10,7 +10,8 @@ export const DEFAULT_SKILL_TARGET_DIR = `${MIMIR_DIR}/skills` export const MIMIR_GITIGNORE_ENTRY = `${MIMIR_DIR}/` export const LEGACY_KB_GITIGNORE_ENTRY = `${LEGACY_KB_DIR}/` -export const LEGACY_PRIVATE_GITIGNORE_ENTRY = `${LEGACY_PRIVATE_DIR}/**` +export const LEGACY_PRIVATE_GITIGNORE_ENTRY = `${LEGACY_PRIVATE_DIR}/` +export const LEGACY_PRIVATE_GITIGNORE_FALLBACK_ENTRY = `${LEGACY_PRIVATE_DIR}/**` export const DEFAULT_CONFIG: Omit = { rawDir: MIMIR_RAW_DIR, diff --git a/packages/mimir-core/src/files.test.ts b/packages/mimir-core/src/files.test.ts index 48a3c11..d86e223 100644 --- a/packages/mimir-core/src/files.test.ts +++ b/packages/mimir-core/src/files.test.ts @@ -193,4 +193,74 @@ describe("listSourceFiles", () => { ], ) }) + + it("indexes glob sources with exclusions for monorepo documentation", async () => { + const root = await mkdtemp(path.join(os.tmpdir(), "mimir-source-glob-")) + tempDirs.push(root) + + await mkdir(path.join(root, ".mimir"), { recursive: true }) + await mkdir(path.join(root, ".mimir", "raw"), { recursive: true }) + await mkdir(path.join(root, "apps", "front", "docs", "private"), { recursive: true }) + await mkdir(path.join(root, "apps", "back", "docs"), { recursive: true }) + await writeFile( + path.join(root, ".mimir", "sources.txt"), + ["apps/*/README.md", "apps/*/docs/**/*.md", "!apps/*/docs/private/**", ""].join("\n"), + "utf8", + ) + await writeFile(path.join(root, "apps", "front", "README.md"), "front readme\n", "utf8") + await writeFile(path.join(root, "apps", "front", "docs", "feature.md"), "front docs\n", "utf8") + await writeFile( + path.join(root, "apps", "front", "docs", "private", "secret.md"), + "private docs\n", + "utf8", + ) + await writeFile(path.join(root, "apps", "back", "README.md"), "back readme\n", "utf8") + await writeFile(path.join(root, "apps", "back", "docs", "api.md"), "back docs\n", "utf8") + + const files = await listSourceFiles(testConfig(root)) + + expect(files.map((file) => file.relativePath)).toEqual([ + "apps/back/docs/api.md", + "apps/back/README.md", + "apps/front/docs/feature.md", + "apps/front/README.md", + ]) + expect(files.map((file) => file.source)).toEqual([ + "apps/back/docs/api.md", + "apps/back/README.md", + "apps/front/docs/feature.md", + "apps/front/README.md", + ]) + }) + + it("indexes parent-relative glob sources from a nested knowledge base", async () => { + const monorepo = await mkdtemp(path.join(os.tmpdir(), "mimir-monorepo-glob-")) + tempDirs.push(monorepo) + const root = path.join(monorepo, "team-knowledge") + + await mkdir(path.join(root, ".mimir"), { recursive: true }) + await mkdir(path.join(root, ".mimir", "raw"), { recursive: true }) + await mkdir(path.join(monorepo, "apps", "admin", "docs"), { recursive: true }) + await mkdir(path.join(monorepo, "apps", "portal", "docs"), { recursive: true }) + await writeFile( + path.join(root, ".mimir", "sources.txt"), + ["../apps/*/README.md", "../apps/*/docs/**/*.md", "!../apps/*/docs/private/**", ""].join( + "\n", + ), + "utf8", + ) + await writeFile(path.join(monorepo, "apps", "admin", "README.md"), "admin readme\n", "utf8") + await writeFile(path.join(monorepo, "apps", "admin", "docs", "ops.md"), "admin docs\n", "utf8") + await writeFile(path.join(monorepo, "apps", "portal", "README.md"), "portal readme\n", "utf8") + await writeFile(path.join(monorepo, "apps", "portal", "docs", "ux.md"), "portal docs\n", "utf8") + + const files = await listSourceFiles(testConfig(root)) + + expect(files.map((file) => file.relativePath)).toEqual([ + "../apps/admin/docs/ops.md", + "../apps/admin/README.md", + "../apps/portal/docs/ux.md", + "../apps/portal/README.md", + ]) + }) }) diff --git a/packages/mimir-core/src/files.ts b/packages/mimir-core/src/files.ts index 6957c2b..ac0f137 100644 --- a/packages/mimir-core/src/files.ts +++ b/packages/mimir-core/src/files.ts @@ -77,6 +77,19 @@ const DEFAULT_SUPPORTED_FILE_NAMES = new Set([ "procfile", "rakefile", ]) +const DEFAULT_FAST_GLOB_IGNORES = ["**/.git/**", "**/node_modules/**", "**/.kb/**", "**/.mimir/**"] +const GLOB_PATTERN_CHARS = /[*?[{]/u + +interface SourceInputs { + roots: string[] + patterns: string[] + ignorePatterns: string[] +} + +interface SourceEntryStats { + size: number + mtimeMs: number +} export const DEFAULT_SUPPORTED_EXTENSIONS = new Set([ ".atom", @@ -163,12 +176,69 @@ export async function listSourceFiles(config: Config): Promise { } export async function inventorySourceFiles(config: Config): Promise { - const roots = await sourceRoots(config) + const inputs = await sourceInputs(config) const files = new Map() const skippedFiles = new Map() let discoveredFiles = 0 - for (const root of roots) { + const recordSourceFile = async ( + absolutePath: string, + info: SourceEntryStats, + source: string, + ): Promise => { + const relativePath = path.relative(config.projectRoot, absolutePath) + if (GENERATED_SOURCE_READMES.has(relativePath)) { + return + } + discoveredFiles += 1 + + const extension = path.extname(absolutePath).toLowerCase() + const skipped = skippedSourceFile(absolutePath, relativePath, source, extension, info.size) + + if (skipped) { + skippedFiles.set(absolutePath, skipped) + return + } + + if (!isSupportedSourceFile(absolutePath, extension, config)) { + const normalizedExtension = extension || NO_EXTENSION + skippedFiles.set(absolutePath, { + relativePath, + source, + extension: normalizedExtension, + bytes: info.size, + reason: "unsupported-extension", + recommendation: skippedRecommendation("unsupported-extension", normalizedExtension), + }) + return + } + + if (info.size > config.maxFileBytes) { + const normalizedExtension = extension || NO_EXTENSION + skippedFiles.set(absolutePath, { + relativePath, + source, + extension: normalizedExtension, + bytes: info.size, + reason: "oversized", + recommendation: skippedRecommendation("oversized", normalizedExtension), + }) + return + } + + const buffer = await readFile(absolutePath) + files.set(absolutePath, { + absolutePath, + relativePath, + source, + extension, + bytes: info.size, + mtimeMs: info.mtimeMs, + checksum: createHash("sha256").update(buffer).digest("hex"), + }) + } + + for (const root of inputs.roots) { if (!existsSync(root)) { continue } @@ -181,7 +251,7 @@ export async function inventorySourceFiles(config: Config): Promise config.maxFileBytes) { - const normalizedExtension = extension || NO_EXTENSION - skippedFiles.set(absolutePath, { - relativePath, - source, - extension: normalizedExtension, - bytes: info.size, - reason: "oversized", - recommendation: skippedRecommendation("oversized", normalizedExtension), - }) - continue - } + if (inputs.patterns.length > 0) { + const entries = (await fg(inputs.patterns, { + cwd: config.projectRoot, + absolute: true, + onlyFiles: true, + dot: true, + followSymbolicLinks: false, + ignore: [...DEFAULT_FAST_GLOB_IGNORES, ...inputs.ignorePatterns], + objectMode: true, + stats: true, + unique: true, + })) as Array<{ path: string; stats?: { size: number; mtimeMs: number } }> - const buffer = await readFile(absolutePath) - files.set(absolutePath, { - absolutePath, - relativePath, - source, - extension, - bytes: info.size, - mtimeMs: info.mtimeMs, - checksum: createHash("sha256").update(buffer).digest("hex"), - }) + for (const entry of entries) { + const absolutePath = path.isAbsolute(entry.path) + ? entry.path + : path.resolve(config.projectRoot, entry.path) + const info = entry.stats ?? (await stat(absolutePath)) + const relativePath = path.relative(config.projectRoot, absolutePath) + await recordSourceFile(absolutePath, info, relativePath || path.basename(absolutePath)) } } @@ -289,10 +334,12 @@ export function summarizeUnsupportedExtensions( .map(([extension, count]) => ({ extension, count })) } -async function sourceRoots(config: Config): Promise { +async function sourceInputs(config: Config): Promise { const roots = [config.rawDir] + const patterns: string[] = [] + const ignorePatterns: string[] = [] if (!existsSync(config.sourcesFile)) { - return roots + return { roots, patterns, ignorePatterns } } const content = await readFile(config.sourcesFile, "utf8") @@ -301,10 +348,25 @@ async function sourceRoots(config: Config): Promise { if (!trimmed || trimmed.startsWith("#")) { continue } + if (trimmed.startsWith("!")) { + ignorePatterns.push(sourcePattern(config.projectRoot, trimmed.slice(1).trim())) + continue + } + if (GLOB_PATTERN_CHARS.test(trimmed)) { + patterns.push(sourcePattern(config.projectRoot, trimmed)) + continue + } roots.push(path.isAbsolute(trimmed) ? trimmed : path.resolve(config.projectRoot, trimmed)) } - return roots + return { roots, patterns, ignorePatterns } +} + +function sourcePattern(projectRoot: string, input: string): string { + if (path.isAbsolute(input)) { + return path.relative(projectRoot, input).replaceAll(path.sep, "/") + } + return input.replaceAll(path.sep, "/") } function skippedSourceFile( diff --git a/packages/mimir-core/src/index.ts b/packages/mimir-core/src/index.ts index 36f3167..84da31c 100644 --- a/packages/mimir-core/src/index.ts +++ b/packages/mimir-core/src/index.ts @@ -14,7 +14,7 @@ export { redactText } from "./redaction.js" export { compactResearchReport, compactSearchResults, research } from "./research.js" export { securityAudit } from "./security.js" export { enableSemanticEmbeddings } from "./semantic-config.js" -export type { SetupOptions, SetupResult } from "./setup.js" +export type { SetupOptions, SetupResult, SetupSemanticResult } from "./setup.js" export { setupProject } from "./setup.js" export type { AgentHelperFile, @@ -34,6 +34,12 @@ export { parseAgentTargets, SUPPORTED_AGENT_TARGETS, } from "./skill.js" +export type { + AddSourceEntriesOptions, + AddSourceEntriesResult, + SourceEntriesResult, +} from "./sources.js" +export { addSourceEntries, listSourceEntries } from "./sources.js" export type { AccessLogAction, AccessLogUsageOptions, diff --git a/packages/mimir-core/src/init.ts b/packages/mimir-core/src/init.ts index abe3800..f209f6b 100644 --- a/packages/mimir-core/src/init.ts +++ b/packages/mimir-core/src/init.ts @@ -36,7 +36,13 @@ export async function initProject(cwd = process.cwd()): Promise { await mkdir(path.dirname(sourcesPath), { recursive: true }) await writeFile( sourcesPath, - "# Optional extra source paths, one per line. Relative paths resolve from the project root.\n", + [ + "# Optional extra source paths or glob patterns, one per line.", + "# Relative paths resolve from the project root. Prefix glob exclusions with !.", + "# Example: ../apps/*/docs/**/*.md", + "# Example: !../apps/**/node_modules/**", + "", + ].join("\n"), "utf8", ) created.push(path.relative(root, sourcesPath)) diff --git a/packages/mimir-core/src/mcp.test.ts b/packages/mimir-core/src/mcp.test.ts index b852406..e1ba9d6 100644 --- a/packages/mimir-core/src/mcp.test.ts +++ b/packages/mimir-core/src/mcp.test.ts @@ -1,8 +1,26 @@ -import { describe, expect, it } from "vitest" +import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises" +import os from "node:os" +import path from "node:path" +import { afterEach, describe, expect, it } from "vitest" import { resolveMcpProjectRoot } from "./mcp.js" +const tempDirs: string[] = [] + +afterEach(async () => { + for (const dir of tempDirs.splice(0)) { + await rm(dir, { recursive: true, force: true }) + } +}) + describe("resolveMcpProjectRoot", () => { - it("prefers explicit Mimir roots, then Claude Code project roots, then cwd", () => { + it("prefers explicit Mimir roots, then configured cwd roots, then Claude Code project roots", async () => { + const root = await mkdtemp(path.join(os.tmpdir(), "mimir-mcp-root-")) + tempDirs.push(root) + const nested = path.join(root, "nested") + await mkdir(path.join(root, ".mimir"), { recursive: true }) + await mkdir(nested, { recursive: true }) + await writeFile(path.join(root, ".mimir", "config.json"), "{}\n", "utf8") + expect( resolveMcpProjectRoot( { @@ -12,6 +30,7 @@ describe("resolveMcpProjectRoot", () => { "/repo/cwd", ), ).toBe("/repo/mimir") + expect(resolveMcpProjectRoot({ CLAUDE_PROJECT_DIR: "/repo/claude" }, nested)).toBe(root) expect(resolveMcpProjectRoot({ CLAUDE_PROJECT_DIR: "/repo/claude" }, "/repo/cwd")).toBe( "/repo/claude", ) diff --git a/packages/mimir-core/src/mcp.ts b/packages/mimir-core/src/mcp.ts index b779f8f..4b73c7e 100644 --- a/packages/mimir-core/src/mcp.ts +++ b/packages/mimir-core/src/mcp.ts @@ -1,9 +1,10 @@ +import { existsSync } from "node:fs" import path from "node:path" import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js" import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js" import { z } from "zod" import { accessLogUsageReport } from "./access-log.js" -import { loadConfig } from "./config.js" +import { findProjectConfig, loadConfig } from "./config.js" import { evaluateGoldenQueries } from "./evaluate.js" import { audit } from "./ingest.js" import { ask, search } from "./query.js" @@ -186,7 +187,16 @@ export function resolveMcpProjectRoot( env: NodeJS.ProcessEnv = process.env, fallback = process.cwd(), ): string { - return env.MIMIR_PROJECT_ROOT ?? env.CLAUDE_PROJECT_DIR ?? fallback + if (env.MIMIR_PROJECT_ROOT) { + return env.MIMIR_PROJECT_ROOT + } + + const fallbackConfig = findProjectConfig(fallback) + if (existsSync(fallbackConfig.configPath)) { + return fallbackConfig.projectRoot + } + + return env.CLAUDE_PROJECT_DIR ?? fallback } function textResult(value: unknown): { content: Array<{ type: "text"; text: string }> } { diff --git a/packages/mimir-core/src/security.test.ts b/packages/mimir-core/src/security.test.ts index d305cd4..2fbd5ae 100644 --- a/packages/mimir-core/src/security.test.ts +++ b/packages/mimir-core/src/security.test.ts @@ -54,7 +54,7 @@ describe("securityAudit", () => { expect(report.gitignore.legacyPrivateIgnored).toBe(false) expect(report.warnings).toContain(".mimir/ is not ignored by Git.") expect(report.warnings).not.toContain(".kb/ is not ignored by Git.") - expect(report.warnings).not.toContain("private/** is not ignored by Git.") + expect(report.warnings).not.toContain("private/ is not ignored by Git.") }) it("keeps legacy .kb and private warnings when a legacy config uses those paths", async () => { @@ -68,6 +68,19 @@ describe("securityAudit", () => { expect(report.gitignore.mimirIgnored).toBe(true) expect(report.warnings).toContain(".kb/ is not ignored by Git.") - expect(report.warnings).toContain("private/** is not ignored by Git.") + expect(report.warnings).toContain("private/ is not ignored by Git.") + }) + + it("accepts legacy private/** gitignore entries", async () => { + const root = await mkdtemp(path.join(os.tmpdir(), "mimir-security-")) + tempDirs.push(root) + await mkdir(path.join(root, ".kb"), { recursive: true }) + await writeFile(path.join(root, ".kb", "config.json"), "{}\n", "utf8") + await writeFile(path.join(root, ".gitignore"), ".mimir/\n.kb/\nprivate/**\n", "utf8") + + const report = await securityAudit(root) + + expect(report.gitignore.legacyPrivateIgnored).toBe(true) + expect(report.warnings).not.toContain("private/ is not ignored by Git.") }) }) diff --git a/packages/mimir-core/src/security.ts b/packages/mimir-core/src/security.ts index 4b5b4cd..9fb455f 100644 --- a/packages/mimir-core/src/security.ts +++ b/packages/mimir-core/src/security.ts @@ -7,6 +7,7 @@ import { LEGACY_KB_GITIGNORE_ENTRY, LEGACY_PRIVATE_DIR, LEGACY_PRIVATE_GITIGNORE_ENTRY, + LEGACY_PRIVATE_GITIGNORE_FALLBACK_ENTRY, MIMIR_GITIGNORE_ENTRY, } from "./defaults.js" import type { SecurityAuditReport } from "./types.js" @@ -18,7 +19,9 @@ export async function securityAudit(cwd = process.cwd()): Promise usesProjectDirectory(config.projectRoot, filePath, LEGACY_KB_DIR), ) diff --git a/packages/mimir-core/src/setup.test.ts b/packages/mimir-core/src/setup.test.ts index 3f563f9..785d092 100644 --- a/packages/mimir-core/src/setup.test.ts +++ b/packages/mimir-core/src/setup.test.ts @@ -2,9 +2,14 @@ import { existsSync } from "node:fs" import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises" import os from "node:os" import path from "node:path" -import { afterEach, describe, expect, it } from "vitest" +import { afterEach, describe, expect, it, vi } from "vitest" import { setupProject } from "./setup.js" +vi.mock("@huggingface/transformers", () => ({ + env: {}, + pipeline: async () => async () => ({}), +})) + const tempDirs: string[] = [] afterEach(async () => { @@ -26,11 +31,39 @@ describe("setupProject", () => { expect(result.created).toContain(path.join(".mimir", "config.json")) expect(result.doctor.initialized).toBe(true) expect(result.doctor.agentKitInstalled).toBe(true) + expect(result.semantic).toBeNull() expect(result.ingested).toBeNull() expect(mcpConfig.mcpServers.mimir.command).toBe("pnpm") expect(mcpConfig.mcpServers.mimir.args).toEqual(["exec", "mimir", "serve-mcp"]) }) + it("can preload and enable semantic embeddings during setup", async () => { + const root = await mkdtemp(path.join(os.tmpdir(), "mimir-setup-semantic-")) + tempDirs.push(root) + + const result = await setupProject({ cwd: root, ingest: false, semantic: true }) + const config = JSON.parse(await readFile(path.join(root, ".mimir", "config.json"), "utf8")) as { + embeddingProvider: string + embeddingModelPath: string + transformersAllowRemoteModels: boolean + } + + expect(result.semantic).toMatchObject({ + model: { + embeddingModel: "mixedbread-ai/mxbai-embed-xsmall-v1", + embeddingModelPath: path.join(root, ".mimir/models"), + }, + config: { + embeddingProvider: "transformers", + embeddingModelPath: ".mimir/models", + transformersAllowRemoteModels: false, + }, + }) + expect(config.embeddingProvider).toBe("transformers") + expect(config.embeddingModelPath).toBe(".mimir/models") + expect(config.transformersAllowRemoteModels).toBe(false) + }) + it("auto-ingests supported files when the privacy posture is clean", async () => { const root = await mkdtemp(path.join(os.tmpdir(), "mimir-setup-")) tempDirs.push(root) diff --git a/packages/mimir-core/src/setup.ts b/packages/mimir-core/src/setup.ts index e93f8d0..f656c9c 100644 --- a/packages/mimir-core/src/setup.ts +++ b/packages/mimir-core/src/setup.ts @@ -1,8 +1,11 @@ import path from "node:path" +import { loadConfig } from "./config.js" import { doctor } from "./doctor.js" +import { type PullEmbeddingModelResult, pullEmbeddingModel } from "./embeddings.js" import { ingest } from "./ingest.js" import { initProject } from "./init.js" import { mimirCommand, type PackageManager } from "./package-manager.js" +import { type EnableSemanticEmbeddingsResult, enableSemanticEmbeddings } from "./semantic-config.js" import { type AgentTarget, type InstallSkillResult, installSkill } from "./skill.js" import type { DoctorReport, IngestResult } from "./types.js" @@ -10,18 +13,25 @@ export interface SetupOptions { cwd?: string targetDir?: string ingest?: boolean + semantic?: boolean agents?: readonly AgentTarget[] mcpServerName?: string mcpCommand?: string mcpArgs?: readonly string[] } +export interface SetupSemanticResult { + model: PullEmbeddingModelResult + config: EnableSemanticEmbeddingsResult +} + export interface SetupResult { projectRoot: string packageManager: PackageManager runCommand: string created: string[] agentKit: InstallSkillResult + semantic: SetupSemanticResult | null ingested: IngestResult | null doctor: DoctorReport nextSteps: string[] @@ -47,6 +57,7 @@ export async function setupProject(options: SetupOptions = {}): Promise { + const config = await loadConfig(cwd) + const model = await pullEmbeddingModel(config) + const semanticConfig = await enableSemanticEmbeddings(cwd) + return { + model, + config: semanticConfig, + } +} + function canAutoIngest(report: DoctorReport): boolean { return ( report.supportedFiles > 0 && diff --git a/packages/mimir-core/src/sources.test.ts b/packages/mimir-core/src/sources.test.ts new file mode 100644 index 0000000..36a4261 --- /dev/null +++ b/packages/mimir-core/src/sources.test.ts @@ -0,0 +1,65 @@ +import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises" +import os from "node:os" +import path from "node:path" +import { afterEach, describe, expect, it } from "vitest" +import { addSourceEntries, listSourceEntries } from "./sources.js" + +const tempDirs: string[] = [] + +afterEach(async () => { + for (const dir of tempDirs.splice(0)) { + await rm(dir, { recursive: true, force: true }) + } +}) + +describe("source entries", () => { + it("creates the sources file and adds path or glob entries without duplicates", async () => { + const root = await mkdtemp(path.join(os.tmpdir(), "mimir-sources-")) + tempDirs.push(root) + + const result = await addSourceEntries({ + cwd: root, + entries: ["../apps/*/README.md", "../apps/*/docs/**/*.md", "../apps/*/README.md"], + }) + + expect(result.added).toEqual(["../apps/*/README.md", "../apps/*/docs/**/*.md"]) + expect(result.skipped).toEqual([]) + await expect(readFile(path.join(root, ".mimir", "sources.txt"), "utf8")).resolves.toContain( + "../apps/*/docs/**/*.md\n", + ) + + const second = await addSourceEntries({ + cwd: root, + entries: ["../apps/*/README.md", "!../apps/**/node_modules/**"], + }) + + expect(second.added).toEqual(["!../apps/**/node_modules/**"]) + expect(second.skipped).toEqual(["../apps/*/README.md"]) + await expect(listSourceEntries(root)).resolves.toEqual({ + sourcesFile: path.join(root, ".mimir", "sources.txt"), + entries: ["../apps/*/README.md", "../apps/*/docs/**/*.md", "!../apps/**/node_modules/**"], + }) + }) + + it("preserves existing comments while listing only active entries", async () => { + const root = await mkdtemp(path.join(os.tmpdir(), "mimir-sources-")) + tempDirs.push(root) + await mkdir(path.join(root, ".mimir"), { recursive: true }) + await writeFile( + path.join(root, ".mimir", "sources.txt"), + "# Existing notes\n\n../docs/**/*.md\n", + "utf8", + ) + + await expect(listSourceEntries(root)).resolves.toEqual({ + sourcesFile: path.join(root, ".mimir", "sources.txt"), + entries: ["../docs/**/*.md"], + }) + + await addSourceEntries({ cwd: root, entries: ["../apps/*/README.md"] }) + + await expect(readFile(path.join(root, ".mimir", "sources.txt"), "utf8")).resolves.toBe( + "# Existing notes\n\n../docs/**/*.md\n../apps/*/README.md\n", + ) + }) +}) diff --git a/packages/mimir-core/src/sources.ts b/packages/mimir-core/src/sources.ts new file mode 100644 index 0000000..70d3319 --- /dev/null +++ b/packages/mimir-core/src/sources.ts @@ -0,0 +1,105 @@ +import { existsSync } from "node:fs" +import { mkdir, readFile, writeFile } from "node:fs/promises" +import path from "node:path" +import { loadConfig } from "./config.js" + +const SOURCES_FILE_HEADER = [ + "# Optional extra source paths or glob patterns, one per line.", + "# Relative paths resolve from the project root. Prefix glob exclusions with !.", + "# Example: ../apps/*/docs/**/*.md", + "# Example: !../apps/**/node_modules/**", + "", +] + +export interface SourceEntriesResult { + sourcesFile: string + entries: string[] +} + +export interface AddSourceEntriesOptions { + cwd?: string + entries: readonly string[] +} + +export interface AddSourceEntriesResult { + sourcesFile: string + added: string[] + skipped: string[] +} + +export async function listSourceEntries(cwd = process.cwd()): Promise { + const config = await loadConfig(cwd) + const content = await readSourcesFile(config.sourcesFile) + return { + sourcesFile: config.sourcesFile, + entries: content ? parseSourceEntries(content) : [], + } +} + +export async function addSourceEntries( + options: AddSourceEntriesOptions, +): Promise { + const entries = normalizeRequestedEntries(options.entries) + if (entries.length === 0) { + throw new Error("At least one source path or glob is required.") + } + + const config = await loadConfig(options.cwd) + const content = await readSourcesFile(config.sourcesFile) + const existingEntries = new Set(content ? parseSourceEntries(content) : []) + const added: string[] = [] + const skipped: string[] = [] + + for (const entry of entries) { + if (existingEntries.has(entry)) { + skipped.push(entry) + continue + } + existingEntries.add(entry) + added.push(entry) + } + + if (added.length > 0) { + await mkdir(path.dirname(config.sourcesFile), { recursive: true }) + await writeFile(config.sourcesFile, nextSourcesFileContent(content, added), "utf8") + } + + return { + sourcesFile: config.sourcesFile, + added, + skipped, + } +} + +async function readSourcesFile(sourcesFile: string): Promise { + if (!existsSync(sourcesFile)) { + return null + } + return readFile(sourcesFile, "utf8") +} + +function parseSourceEntries(content: string): string[] { + return content + .split(/\r?\n/u) + .map((line) => line.trim()) + .filter((line) => line.length > 0 && !line.startsWith("#")) +} + +function normalizeRequestedEntries(entries: readonly string[]): string[] { + const normalized: string[] = [] + const seen = new Set() + for (const entry of entries) { + const trimmed = entry.trim() + if (!trimmed || seen.has(trimmed)) { + continue + } + seen.add(trimmed) + normalized.push(trimmed) + } + return normalized +} + +function nextSourcesFileContent(currentContent: string | null, added: readonly string[]): string { + const base = currentContent === null ? SOURCES_FILE_HEADER.join("\n") : currentContent.trimEnd() + return `${base ? `${base}\n` : ""}${added.join("\n")}\n` +} diff --git a/packages/mimir-landing/package.json b/packages/mimir-landing/package.json index 2b4f026..767c4e2 100644 --- a/packages/mimir-landing/package.json +++ b/packages/mimir-landing/package.json @@ -6,12 +6,12 @@ "type": "module", "license": "MIT", "scripts": { - "build": "astro check && astro build", + "build": "node scripts/astro-no-telemetry.mjs check && node scripts/astro-no-telemetry.mjs build", "cf:dry-run": "pnpm build && wrangler deploy --dry-run", "cf:preview": "pnpm build && wrangler dev --local --port 8787", - "check": "astro check", - "dev": "astro dev", - "preview": "astro preview" + "check": "node scripts/astro-no-telemetry.mjs check", + "dev": "node scripts/astro-no-telemetry.mjs dev", + "preview": "node scripts/astro-no-telemetry.mjs preview" }, "dependencies": { "@astrojs/check": "^0.9.9", diff --git a/packages/mimir-landing/scripts/astro-no-telemetry.mjs b/packages/mimir-landing/scripts/astro-no-telemetry.mjs new file mode 100644 index 0000000..42237c7 --- /dev/null +++ b/packages/mimir-landing/scripts/astro-no-telemetry.mjs @@ -0,0 +1,27 @@ +#!/usr/bin/env node +import { spawn } from "node:child_process" + +const args = process.argv.slice(2) + +if (args.length === 0) { + console.error("usage: astro-no-telemetry [...args]") + process.exitCode = 1 +} else { + const command = process.platform === "win32" ? "astro.cmd" : "astro" + const child = spawn(command, args, { + stdio: "inherit", + env: { + ...process.env, + ASTRO_TELEMETRY_DISABLED: "1", + }, + }) + + child.on("error", (error) => { + console.error(error instanceof Error ? error.message : String(error)) + process.exitCode = 1 + }) + + child.on("close", (code) => { + process.exitCode = code ?? 1 + }) +} diff --git a/packages/mimir-tts/README.md b/packages/mimir-tts/README.md index f86e024..30a292d 100644 --- a/packages/mimir-tts/README.md +++ b/packages/mimir-tts/README.md @@ -20,7 +20,8 @@ It supports two explicit paths: - Edge TTS MP3 for higher-quality online narration when sending the text to Edge TTS is acceptable. It does not require Python, ffmpeg, Piper, XTTS, or a local model server for the default -Transformers.js path. +Transformers.js path. Remote model downloads are disabled by default; use `--allow-remote-models` +only for an explicit non-sensitive preload. ## Install @@ -39,8 +40,9 @@ npx mimir-tts render /tmp/summary.txt --engine edge --out .mimir/audio/summary.m The default engine is `transformers` for offline/confidential WAV output. Use `--engine edge` only when sending narration text to online Edge TTS is acceptable. -For fully offline use, preload the Transformers.js model with non-sensitive text before rendering -confidential narration. See the root `docs/offline-tts-preload.md` guide. +For first-time setup, preload the Transformers.js model with non-sensitive text and +`--allow-remote-models` before rendering confidential narration. See the root +`docs/offline-tts-preload.md` guide. ## License diff --git a/packages/mimir-tts/dist/cli.js b/packages/mimir-tts/dist/cli.js index ed74440..797b4b9 100755 --- a/packages/mimir-tts/dist/cli.js +++ b/packages/mimir-tts/dist/cli.js @@ -34,6 +34,7 @@ async function runDoctor(args) { printKeyValue("defaultEngine", report.defaultEngine); printKeyValue("defaultModel", report.defaultModel); printKeyValue("defaultModelPath", report.defaultModelPath); + printKeyValue("defaultAllowRemoteModels", String(report.defaultAllowRemoteModels)); printKeyValue("edgeTtsAvailable", String(report.edgeTtsAvailable)); printKeyValue("edgeDefaultVoice", report.edgeDefaultVoice); printKeyValue("transformersAvailable", String(report.transformersAvailable)); diff --git a/packages/mimir-tts/dist/cli.js.map b/packages/mimir-tts/dist/cli.js.map index d2bc776..d36a53c 100644 --- a/packages/mimir-tts/dist/cli.js.map +++ b/packages/mimir-tts/dist/cli.js.map @@ -1 +1 @@ -{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/mimir-tts/dist/index.d.ts b/packages/mimir-tts/dist/index.d.ts index 56070e5..0293de9 100644 --- a/packages/mimir-tts/dist/index.d.ts +++ b/packages/mimir-tts/dist/index.d.ts @@ -2,6 +2,7 @@ export declare const DEFAULT_TTS_MODEL = "Xenova/mms-tts-fra"; export declare const DEFAULT_TTS_MODEL_PATH = ".mimir/models/tts"; export declare const DEFAULT_AUDIO_DIR = ".mimir/audio"; export declare const DEFAULT_TTS_ENGINE = "transformers"; +export declare const DEFAULT_TTS_ALLOW_REMOTE_MODELS = false; export declare const DEFAULT_EDGE_VOICE = "fr-FR-DeniseNeural"; export declare const DEFAULT_EDGE_RATE = "+0%"; export type TtsEngine = "auto" | "edge" | "transformers"; @@ -50,6 +51,7 @@ export interface DoctorReport { defaultEngine: TtsEngine; defaultModel: string; defaultModelPath: string; + defaultAllowRemoteModels: boolean; transformersAvailable: boolean; edgeTtsAvailable: boolean; edgeDefaultVoice: string; diff --git a/packages/mimir-tts/dist/index.d.ts.map b/packages/mimir-tts/dist/index.d.ts.map index 613abe0..d666717 100644 --- a/packages/mimir-tts/dist/index.d.ts.map +++ b/packages/mimir-tts/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/mimir-tts/dist/index.js b/packages/mimir-tts/dist/index.js index ac7a0f5..def8920 100644 --- a/packages/mimir-tts/dist/index.js +++ b/packages/mimir-tts/dist/index.js @@ -7,6 +7,7 @@ export const DEFAULT_TTS_MODEL = "Xenova/mms-tts-fra"; export const DEFAULT_TTS_MODEL_PATH = ".mimir/models/tts"; export const DEFAULT_AUDIO_DIR = ".mimir/audio"; export const DEFAULT_TTS_ENGINE = "transformers"; +export const DEFAULT_TTS_ALLOW_REMOTE_MODELS = false; export const DEFAULT_EDGE_VOICE = "fr-FR-DeniseNeural"; export const DEFAULT_EDGE_RATE = "+0%"; export async function renderSpeech(options) { @@ -16,7 +17,8 @@ export async function renderSpeech(options) { const model = options.model ?? process.env.MIMIR_TTS_MODEL ?? DEFAULT_TTS_MODEL; const modelPath = resolveFromCwd(cwd, options.modelPath ?? process.env.MIMIR_TTS_MODEL_PATH ?? DEFAULT_TTS_MODEL_PATH); const outputPath = resolveFromCwd(cwd, options.outputPath ?? defaultOutputPath(cwd, options.textFile, outputFormatForEngine(engine))); - const allowRemoteModels = options.allowRemoteModels ?? readBooleanEnv("MIMIR_TTS_ALLOW_REMOTE_MODELS", true); + const allowRemoteModels = options.allowRemoteModels ?? + readBooleanEnv("MIMIR_TTS_ALLOW_REMOTE_MODELS", DEFAULT_TTS_ALLOW_REMOTE_MODELS); await mkdir(path.dirname(outputPath), { recursive: true }); if (engine === "edge") { validateOutputFormat(outputPath, "mp3"); @@ -64,6 +66,7 @@ export async function doctor() { defaultEngine: DEFAULT_TTS_ENGINE, defaultModel: DEFAULT_TTS_MODEL, defaultModelPath: DEFAULT_TTS_MODEL_PATH, + defaultAllowRemoteModels: DEFAULT_TTS_ALLOW_REMOTE_MODELS, transformersAvailable: await canImportTransformers(), edgeTtsAvailable: edgeTtsAvailable(), edgeDefaultVoice: DEFAULT_EDGE_VOICE, diff --git a/packages/mimir-tts/dist/index.js.map b/packages/mimir-tts/dist/index.js.map index f811c21..720402b 100644 --- a/packages/mimir-tts/dist/index.js.map +++ b/packages/mimir-tts/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/mimir-tts/src/cli.ts b/packages/mimir-tts/src/cli.ts index 4a17da6..f239add 100644 --- a/packages/mimir-tts/src/cli.ts +++ b/packages/mimir-tts/src/cli.ts @@ -37,6 +37,7 @@ async function runDoctor(args: string[]): Promise { printKeyValue("defaultEngine", report.defaultEngine) printKeyValue("defaultModel", report.defaultModel) printKeyValue("defaultModelPath", report.defaultModelPath) + printKeyValue("defaultAllowRemoteModels", String(report.defaultAllowRemoteModels)) printKeyValue("edgeTtsAvailable", String(report.edgeTtsAvailable)) printKeyValue("edgeDefaultVoice", report.edgeDefaultVoice) printKeyValue("transformersAvailable", String(report.transformersAvailable)) diff --git a/packages/mimir-tts/src/index.test.ts b/packages/mimir-tts/src/index.test.ts index f64db02..1904d2e 100644 --- a/packages/mimir-tts/src/index.test.ts +++ b/packages/mimir-tts/src/index.test.ts @@ -95,10 +95,34 @@ describe("doctor", () => { it("reports Python-free renderers and the offline default engine", async () => { await expect(doctor()).resolves.toMatchObject({ defaultEngine: "transformers", + defaultAllowRemoteModels: false, edgeDefaultVoice: "fr-FR-DeniseNeural", pythonRequired: false, ffmpegRequired: false, outputFormat: "mp3-or-wav", }) }) + + it("does not allow remote model loading by default", async () => { + const root = await mkdtemp(path.join(os.tmpdir(), "mimir-tts-remote-default-")) + tempDirs.push(root) + const textFile = path.join(root, "summary.txt") + const outputPath = path.join(root, ".mimir/audio/summary.wav") + await writeFile(textFile, "Bonjour depuis Mimir.", "utf8") + + const synthesizer: TextToAudioSynthesizer = async () => ({ + save: async (target) => { + await writeFile(target, "RIFF fake wav", "utf8") + }, + }) + + const result = await renderSpeech({ + cwd: root, + textFile, + outputPath, + synthesizer, + }) + + expect(result.allowRemoteModels).toBe(false) + }) }) diff --git a/packages/mimir-tts/src/index.ts b/packages/mimir-tts/src/index.ts index e17c9b1..bd8fbb3 100644 --- a/packages/mimir-tts/src/index.ts +++ b/packages/mimir-tts/src/index.ts @@ -8,6 +8,7 @@ export const DEFAULT_TTS_MODEL = "Xenova/mms-tts-fra" export const DEFAULT_TTS_MODEL_PATH = ".mimir/models/tts" export const DEFAULT_AUDIO_DIR = ".mimir/audio" export const DEFAULT_TTS_ENGINE = "transformers" +export const DEFAULT_TTS_ALLOW_REMOTE_MODELS = false export const DEFAULT_EDGE_VOICE = "fr-FR-DeniseNeural" export const DEFAULT_EDGE_RATE = "+0%" @@ -66,6 +67,7 @@ export interface DoctorReport { defaultEngine: TtsEngine defaultModel: string defaultModelPath: string + defaultAllowRemoteModels: boolean transformersAvailable: boolean edgeTtsAvailable: boolean edgeDefaultVoice: string @@ -97,7 +99,8 @@ export async function renderSpeech(options: RenderSpeechOptions): Promise { defaultEngine: DEFAULT_TTS_ENGINE, defaultModel: DEFAULT_TTS_MODEL, defaultModelPath: DEFAULT_TTS_MODEL_PATH, + defaultAllowRemoteModels: DEFAULT_TTS_ALLOW_REMOTE_MODELS, transformersAvailable: await canImportTransformers(), edgeTtsAvailable: edgeTtsAvailable(), edgeDefaultVoice: DEFAULT_EDGE_VOICE, From 2e3833f6983b59bebaad313cade1e7947d6ea9fc Mon Sep 17 00:00:00 2001 From: Jean-Baptiste THERY Date: Thu, 2 Jul 2026 03:25:32 +0700 Subject: [PATCH 4/5] chore(gitnexus): refresh index metadata --- AGENTS.md | 2 +- CLAUDE.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index c59078d..bea871d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -300,7 +300,7 @@ General principles (KISS, DRY, YAGNI, SOLID) as applied in this codebase. Match # GitNexus — Code Intelligence -This project is indexed by GitNexus as **jcode-mimir** (2825 symbols, 4708 relationships, 241 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. +This project is indexed by GitNexus as **jcode-mimir** (2821 symbols, 4724 relationships, 241 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. > If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first. diff --git a/CLAUDE.md b/CLAUDE.md index ab92be6..bc50614 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -130,7 +130,7 @@ lives in `AGENTS.md`. The workflow publishes `@jcode.labs/mimir-tts` before `@jc # GitNexus — Code Intelligence -This project is indexed by GitNexus as **jcode-mimir** (2825 symbols, 4708 relationships, 241 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. +This project is indexed by GitNexus as **jcode-mimir** (2821 symbols, 4724 relationships, 241 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. > If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first. From 6b4be97bfbddbc7bfe8dcde29fcb089dcc9d4718 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste THERY Date: Thu, 2 Jul 2026 03:27:45 +0700 Subject: [PATCH 5/5] chore(gitnexus): refresh index counts --- AGENTS.md | 2 +- CLAUDE.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index bea871d..6067046 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -300,7 +300,7 @@ General principles (KISS, DRY, YAGNI, SOLID) as applied in this codebase. Match # GitNexus — Code Intelligence -This project is indexed by GitNexus as **jcode-mimir** (2821 symbols, 4724 relationships, 241 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. +This project is indexed by GitNexus as **jcode-mimir** (2829 symbols, 4724 relationships, 241 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. > If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first. diff --git a/CLAUDE.md b/CLAUDE.md index bc50614..450f1fa 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -130,7 +130,7 @@ lives in `AGENTS.md`. The workflow publishes `@jcode.labs/mimir-tts` before `@jc # GitNexus — Code Intelligence -This project is indexed by GitNexus as **jcode-mimir** (2821 symbols, 4724 relationships, 241 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. +This project is indexed by GitNexus as **jcode-mimir** (2829 symbols, 4724 relationships, 241 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. > If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first.