From 8188a9be393f2115022f42b5dfb38ce84758741d Mon Sep 17 00:00:00 2001 From: Jean-Baptiste THERY Date: Mon, 29 Jun 2026 13:36:55 +0700 Subject: [PATCH] feat: support targeted agent skill installs --- AGENTS.md | 10 +- README.md | 78 ++++- package.json | 4 +- packages/mimir-tts/README.md | 4 +- packages/mimir-tts/package.json | 4 +- packages/mimir/README.md | 9 +- packages/mimir/dist/cli.js | 56 ++- packages/mimir/dist/cli.js.map | 2 +- packages/mimir/dist/doctor.js | 10 +- packages/mimir/dist/doctor.js.map | 2 +- packages/mimir/dist/index.d.ts | 3 +- packages/mimir/dist/index.d.ts.map | 2 +- packages/mimir/dist/index.js | 2 +- packages/mimir/dist/index.js.map | 2 +- packages/mimir/dist/setup.js | 4 +- packages/mimir/dist/setup.js.map | 2 +- packages/mimir/dist/skill.d.ts | 28 ++ packages/mimir/dist/skill.d.ts.map | 2 +- packages/mimir/dist/skill.js | 375 +++++++++++++++++++- packages/mimir/dist/skill.js.map | 2 +- packages/mimir/dist/version.d.ts | 2 +- packages/mimir/dist/version.js | 2 +- packages/mimir/package.json | 4 +- packages/mimir/skills/mimir/SKILL.md | 33 +- packages/mimir/src/cli.ts | 72 +++- packages/mimir/src/doctor.ts | 12 +- packages/mimir/src/index.ts | 9 +- packages/mimir/src/setup.test.ts | 4 +- packages/mimir/src/setup.ts | 4 +- packages/mimir/src/skill.test.ts | 80 ++++- packages/mimir/src/skill.ts | 506 +++++++++++++++++++++++++-- packages/mimir/src/version.ts | 2 +- scripts/smoke.mjs | 20 ++ 33 files changed, 1245 insertions(+), 106 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 693e3dc..b401bc6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,6 +8,8 @@ environment files, or generated vector stores. - Keep public branding centered on `Mimir`. Use JCode Labs and Jean-Baptiste Thery for package scope, repository ownership, and copyright, not as the product name. +- Use `Mimir Core` only for the technical core package `@jcode.labs/mimir` and developer-facing + package metadata. User-facing product copy remains `Mimir`; companion packages are Mimir add-ons. - The package is open source under the MIT License unless the user explicitly changes it. - This package must stay reusable across repositories. Resolve project data from the caller's working directory or explicit config, not from the package installation path. @@ -104,8 +106,12 @@ General principles (KISS, DRY, YAGNI, SOLID) as applied in this codebase. Match - `packages/mimir/skills/mimir-markdown-report/SKILL.md` is the optional bundled Markdown-report skill. - `kb setup` must keep generating agent-specific MCP helpers for easy local use: - `.mimir/claude-mcp-server.json` for `claude mcp add-json` and `.mimir/codex-mcp.toml` for Codex - config layers. + `.mimir/claude-mcp-server.json` for `claude mcp add-json`, `.mimir/codex-mcp.toml` for Codex + config layers, `.mimir/kimi-mcp.json` for Kimi, `.mimir/opencode.jsonc` for OpenCode, and + `.mimir/cline-mcp.json` for Cline. +- `kb install-agent` owns native skill discovery for the main supported coding agents. Keep + `--agents claude|codex|kimi|opencode|cline` targeted so a user can install only the agent they use, + with project scope by default and user scope available through `--scope user`. - `packages/mimir/examples/sovereign-rag-demo` is the tracked synthetic test workspace for manual and package validation. - `.kb/`, `.mimir/`, and project `private/` folders are local user data or generated agent diff --git a/README.md b/README.md index 1036403..834c9b2 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ installed in any Node.js repository. It indexes local files from the target repo vectors locally with LanceDB, and can use either built-in local-hash retrieval or optional Transformers.js semantic embeddings. -Mimir core returns cited retrieval context. Answer synthesis belongs to the AI agent, LLM, or local +Mimir Core returns cited retrieval context. Answer synthesis belongs to the AI agent, LLM, or local model runtime you choose around it. Created by Jean-Baptiste Thery and published under the JCode Labs npm scope. @@ -25,8 +25,8 @@ This root README is the canonical product documentation for the public npm packa | Package | Role | | --- | --- | -| `@jcode.labs/mimir` | Core CLI, library, MCP server, bundled agent skills, and synthetic examples. | -| `@jcode.labs/mimir-tts` | Plug-and-play Edge-quality MP3 and offline Transformers.js WAV renderer used by `kb audio`. | +| `@jcode.labs/mimir` | Mimir Core: CLI, library, MCP server, bundled agent skills, and synthetic examples. | +| `@jcode.labs/mimir-tts` | Mimir add-on for Edge-quality MP3 and offline Transformers.js WAV rendering through `kb audio`. | The package README files are intentionally short because npm displays each package README separately. They point npm readers back to this GitHub documentation. @@ -150,7 +150,11 @@ private/ # raw documents to ingest .mimir/skills/mimir-markdown-report/SKILL.md .mimir/mcp.json # generic MCP server config snippet .mimir/claude-mcp-server.json # Claude Code add-json payload -.mimir/codex-mcp.toml # Codex config.toml snippet +.mimir/codex-mcp.toml # Codex config.toml snippet with MCP and skills.config +.mimir/kimi-mcp.json # Kimi Code CLI MCP config +.mimir/opencode.jsonc # OpenCode config snippet +.mimir/cline-mcp.json # Cline MCP config +.mimir/agent-setup.md # agent-specific setup guide .gitignore # ignores private/**, .kb/, and .mimir/ ``` @@ -303,6 +307,10 @@ This creates: .mimir/mcp.json .mimir/claude-mcp-server.json .mimir/codex-mcp.toml +.mimir/kimi-mcp.json +.mimir/opencode.jsonc +.mimir/cline-mcp.json +.mimir/agent-setup.md .mimir/README.md ``` @@ -312,6 +320,25 @@ Agents that support skill folders can load `.mimir/skills/mimir/` for deep local audit memo, or planning note. Other agents can 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 kb install-agent --agents claude +pnpm exec kb install-agent --agents kimi +pnpm exec kb install-agent --agents claude,codex,kimi,opencode,cline +``` + +By default, `install-agent` writes project-scope skill folders. Add `--scope user` for global +installations. + +| Agent | Project skill directory | Main MCP helper | +| --- | --- | --- | +| Claude Code | `.claude/skills/` | `.mimir/claude-mcp-server.json` | +| Codex | `.codex/skills/` plus `skills.config` | `.mimir/codex-mcp.toml` | +| Kimi Code CLI | `.kimi/skills/` | `.mimir/kimi-mcp.json` | +| OpenCode | `.opencode/skills/` | `.mimir/opencode.jsonc` | +| Cline | `.cline/skills/` | `.mimir/cline-mcp.json` | + Start the MCP server from the repository root: ```bash @@ -336,6 +363,7 @@ From the target repository root: ```bash pnpm exec kb setup +pnpm exec kb install-agent --agents claude claude mcp add-json --scope local mimir "$(cat .mimir/claude-mcp-server.json)" ``` @@ -350,11 +378,51 @@ From the target repository root: ```bash pnpm exec kb setup +pnpm exec kb install-agent --agents codex cat .mimir/codex-mcp.toml ``` Copy the printed TOML into `~/.codex/config.toml` or another trusted Codex config layer. The snippet -contains the repository `cwd`, so Codex can launch the Mimir MCP server from the right project. +contains the repository `cwd`, the Mimir MCP server, and `skills.config` entries for the bundled +skills. + +### Kimi Code CLI + +From the target repository root: + +```bash +pnpm exec kb setup +pnpm exec kb install-agent --agents kimi +kimi --mcp-config-file .mimir/kimi-mcp.json +``` + +Kimi can discover project skills from `.kimi/skills/`. The MCP config can also be installed in +Kimi's global MCP file if you intentionally want a global setup. + +### OpenCode + +From the target repository root: + +```bash +pnpm exec kb setup +pnpm exec kb install-agent --agents opencode +cat .mimir/opencode.jsonc +``` + +Copy or merge the generated snippet into the OpenCode config layer you use for the project. + +### Cline + +From the target repository root: + +```bash +pnpm exec kb setup +pnpm exec kb install-agent --agents cline +cat .mimir/cline-mcp.json +``` + +Cline can discover project skills from `.cline/skills/`. Add the generated MCP JSON under +`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 `kb serve-mcp`. diff --git a/package.json b/package.json index b219aca..c84e81e 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "jcode-mimir", - "version": "0.4.8", + "version": "0.4.9", "private": true, - "description": "Monorepo for the Mimir open-source local RAG packages.", + "description": "Monorepo for Mimir Core and open-source Mimir add-ons.", "type": "module", "license": "MIT", "packageManager": "pnpm@11.9.0", diff --git a/packages/mimir-tts/README.md b/packages/mimir-tts/README.md index 96a1e9c..ccecaf0 100644 --- a/packages/mimir-tts/README.md +++ b/packages/mimir-tts/README.md @@ -1,6 +1,6 @@ -# Mimir TTS Package +# Mimir TTS Add-On -`@jcode.labs/mimir-tts` is the standalone text-to-speech package used by Mimir audio summaries. +`@jcode.labs/mimir-tts` is the standalone text-to-speech add-on used by Mimir audio summaries. It gives Mimir a plug-and-play narration renderer without making audio generation part of the core RAG pipeline. diff --git a/packages/mimir-tts/package.json b/packages/mimir-tts/package.json index c849372..ce598aa 100644 --- a/packages/mimir-tts/package.json +++ b/packages/mimir-tts/package.json @@ -1,7 +1,7 @@ { "name": "@jcode.labs/mimir-tts", - "version": "0.4.8", - "description": "Plug-and-play Edge-quality and offline text-to-speech for Mimir audio summaries.", + "version": "0.4.9", + "description": "Mimir add-on for plug-and-play Edge-quality and offline text-to-speech audio summaries.", "type": "module", "license": "MIT", "author": { diff --git a/packages/mimir/README.md b/packages/mimir/README.md index 4c4b9c7..d1af733 100644 --- a/packages/mimir/README.md +++ b/packages/mimir/README.md @@ -1,6 +1,6 @@ # Mimir Core Package -`@jcode.labs/mimir` is the core package for Mimir, an open-source sovereign local RAG toolkit for +`@jcode.labs/mimir` is Mimir Core, the technical core package for Mimir, an open-source sovereign local RAG toolkit for confidential datasets and AI agents. **Full documentation:** https://github.com/jcode-works/jcode-mimir#readme @@ -59,9 +59,10 @@ Run `pnpm exec kb doctor --fix` later to repair missing setup or rebuild stale i ## Claude Code And Codex -After `pnpm exec kb setup`, use `.mimir/claude-mcp-server.json` with `claude mcp add-json`, or copy -`.mimir/codex-mcp.toml` into a trusted Codex config layer. See the canonical GitHub README for the -full agent demo. +After `pnpm exec kb setup`, use `pnpm exec kb install-agent --agents claude`, `--agents kimi`, or a +comma-separated list for native agent skill discovery. Mimir Core also generates MCP helpers for +Claude Code, Codex, Kimi, OpenCode, and Cline under `.mimir/`. See the canonical GitHub README for +the full agent demo. ## License diff --git a/packages/mimir/dist/cli.js b/packages/mimir/dist/cli.js index ad6efae..42d04e2 100755 --- a/packages/mimir/dist/cli.js +++ b/packages/mimir/dist/cli.js @@ -11,7 +11,7 @@ import { kbCommand } from "./package-manager.js"; import { ask, search } from "./query.js"; import { securityAudit } from "./security.js"; import { setupProject } from "./setup.js"; -import { bundledSkillPath, installSkill } from "./skill.js"; +import { bundledSkillPath, installAgentSkills, installSkill, parseAgentTargets, SUPPORTED_AGENT_TARGETS, } from "./skill.js"; import { countRows } from "./store.js"; import { VERSION } from "./version.js"; const SEARCH_TEXT_PREVIEW_LENGTH = 900; @@ -320,13 +320,49 @@ program console.log(`Optional Markdown report skill path: ${result.reportSkillPath}`); console.log(`MCP config example: ${result.mcpConfigPath}`); console.log(`Claude Code MCP server JSON: ${result.claudeConfigPath}`); - console.log(`Codex MCP TOML snippet: ${result.codexConfigPath}`); + console.log(`Codex config TOML snippet: ${result.codexConfigPath}`); + console.log(`Kimi MCP config JSON: ${result.kimiConfigPath}`); + console.log(`OpenCode config JSONC: ${result.opencodeConfigPath}`); + console.log(`Cline MCP config JSON: ${result.clineConfigPath}`); + console.log(`Agent setup guide: ${result.agentSetupPath}`); console.log(""); console.log("Next steps:"); - console.log(" 1. Add the MCP config from .mimir/ to Claude Code, Codex, or another MCP client."); - console.log(" 2. Load .mimir/skills/mimir/ in agents that support skill folders."); + console.log(" 1. Run `kb install-agent --agents claude` or another targeted agent list."); + console.log(" 2. Add the MCP config from .mimir/ to the same agent when MCP tools are needed."); console.log(` 3. Run \`${doctorCommand.display}\` before relying on retrieved context.`); }); +program + .command("install-agent") + .description("Install Mimir skills into native Claude, Codex, Kimi, OpenCode, or Cline folders.") + .option("--agents ", `Comma-separated agents: all, ${SUPPORTED_AGENT_TARGETS.join(", ")}.`, "all") + .option("--scope ", "Install scope: project or user.", "project") + .option("--json", "Print machine-readable JSON.") + .action(async (options) => { + const scope = parseAgentInstallScope(options.scope); + const agents = parseAgentTargets(options.agents); + const result = await installAgentSkills({ cwd: process.cwd(), agents, scope }); + if (options.json) { + console.log(JSON.stringify(result, null, 2)); + return; + } + console.log(`Installed Mimir skills for ${scope}-scope agent discovery:`); + for (const installation of result.installations) { + console.log(` - ${installation.label}: ${installation.targetDir}`); + } + console.log(""); + console.log("MCP helper files:"); + console.log(` - generic: ${result.projectKit.mcpConfigPath}`); + console.log(` - Claude Code: ${result.projectKit.claudeConfigPath}`); + console.log(` - Codex: ${result.projectKit.codexConfigPath}`); + console.log(` - Kimi: ${result.projectKit.kimiConfigPath}`); + console.log(` - OpenCode: ${result.projectKit.opencodeConfigPath}`); + console.log(` - Cline: ${result.projectKit.clineConfigPath}`); + console.log(""); + console.log("Next steps:"); + console.log(" 1. Restart or reload the selected agent so it discovers the new SKILL.md files."); + console.log(" 2. Wire the matching MCP helper if the agent should call Mimir tools directly."); + console.log(` 3. Run \`${(await kbCommand(process.cwd(), ["doctor"])).display}\`.`); +}); try { await program.parseAsync(process.argv); } @@ -390,6 +426,12 @@ function audioEngine(options) { } throw new Error("Expected --engine to be auto, edge, or transformers."); } +function parseAgentInstallScope(value) { + if (value === "project" || value === "user") { + return value; + } + throw new Error("Expected --scope to be project or user."); +} function printDoctor(report) { console.log(`projectRoot=${report.projectRoot}`); console.log(`initialized=${report.initialized}`); @@ -441,7 +483,11 @@ function printSetup(result, title) { console.log(` - report skill: ${result.agentKit.reportSkillPath}`); console.log(` - MCP config: ${result.agentKit.mcpConfigPath}`); console.log(` - Claude Code MCP JSON: ${result.agentKit.claudeConfigPath}`); - console.log(` - Codex MCP TOML: ${result.agentKit.codexConfigPath}`); + console.log(` - Codex config TOML: ${result.agentKit.codexConfigPath}`); + console.log(` - Kimi MCP JSON: ${result.agentKit.kimiConfigPath}`); + console.log(` - OpenCode JSONC: ${result.agentKit.opencodeConfigPath}`); + console.log(` - Cline MCP JSON: ${result.agentKit.clineConfigPath}`); + console.log(` - agent setup guide: ${result.agentKit.agentSetupPath}`); console.log(""); console.log(pc.cyan("Index:")); if (result.ingested) { diff --git a/packages/mimir/dist/cli.js.map b/packages/mimir/dist/cli.js.map index 2e27f64..d6b41a5 100644 --- a/packages/mimir/dist/cli.js.map +++ b/packages/mimir/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/dist/doctor.js b/packages/mimir/dist/doctor.js index 1baf294..b99d077 100644 --- a/packages/mimir/dist/doctor.js +++ b/packages/mimir/dist/doctor.js @@ -86,8 +86,8 @@ function nextActions(input) { steps.push(`Run \`${input.run(["search", '"your question"'])}\` to retrieve source passages.`); steps.push(`Run \`${input.run(["ask", '"your question"'])}\` to produce cited retrieval context.`); if (input.agentKitInstalled) { - steps.push("Connect Claude Code with .mimir/claude-mcp-server.json, Codex with .mimir/codex-mcp.toml, or another AI with .mimir/mcp.json."); - steps.push("Load .mimir/skills/mimir/ in agents that support skill folders."); + steps.push("Run `kb install-agent --agents claude` or another targeted agent list for native skill discovery."); + steps.push("Wire the matching MCP helper from .mimir/ when the agent should call Mimir tools directly."); } else { steps.push(`Run \`${input.run(["install-skill"])}\` if an AI agent should use the local knowledge base.`); @@ -101,6 +101,10 @@ function isAgentKitInstalled(projectRoot) { existsSync(path.join(projectRoot, MIMIR_DIR, "skills", "mimir-markdown-report", "SKILL.md")) && existsSync(path.join(projectRoot, MIMIR_DIR, "mcp.json")) && existsSync(path.join(projectRoot, MIMIR_DIR, "claude-mcp-server.json")) && - existsSync(path.join(projectRoot, MIMIR_DIR, "codex-mcp.toml"))); + existsSync(path.join(projectRoot, MIMIR_DIR, "codex-mcp.toml")) && + existsSync(path.join(projectRoot, MIMIR_DIR, "kimi-mcp.json")) && + existsSync(path.join(projectRoot, MIMIR_DIR, "opencode.jsonc")) && + existsSync(path.join(projectRoot, MIMIR_DIR, "cline-mcp.json")) && + existsSync(path.join(projectRoot, MIMIR_DIR, "agent-setup.md"))); } //# sourceMappingURL=doctor.js.map \ No newline at end of file diff --git a/packages/mimir/dist/doctor.js.map b/packages/mimir/dist/doctor.js.map index 937c87c..f8ddec1 100644 --- a/packages/mimir/dist/doctor.js.map +++ b/packages/mimir/dist/doctor.js.map @@ -1 +1 @@ -{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/mimir/dist/index.d.ts b/packages/mimir/dist/index.d.ts index 0bb2484..cf7ea18 100644 --- a/packages/mimir/dist/index.d.ts +++ b/packages/mimir/dist/index.d.ts @@ -11,7 +11,8 @@ export { redactText } from "./redaction.js"; export { securityAudit } from "./security.js"; export type { SetupResult } from "./setup.js"; export { setupProject } from "./setup.js"; -export { bundledSkillPath, installSkill } from "./skill.js"; +export type { AgentInstallScope, AgentSkillInstallation, AgentTarget } from "./skill.js"; +export { bundledSkillPath, installAgentSkills, installSkill, parseAgentTargets, SUPPORTED_AGENT_TARGETS, } from "./skill.js"; export type { AskResult, AuditReport, Config, DestroyIndexResult, DoctorReport, IngestResult, SearchResult, SecurityAuditReport, } from "./types.js"; export { VERSION } from "./version.js"; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/mimir/dist/index.d.ts.map b/packages/mimir/dist/index.d.ts.map index 0edd867..7d0fca2 100644 --- a/packages/mimir/dist/index.d.ts.map +++ b/packages/mimir/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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,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,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC3D,YAAY,EACV,SAAS,EACT,WAAW,EACX,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,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,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,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,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,SAAS,EACT,WAAW,EACX,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,mBAAmB,GACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"} \ No newline at end of file diff --git a/packages/mimir/dist/index.js b/packages/mimir/dist/index.js index 6724ce3..8c375b2 100644 --- a/packages/mimir/dist/index.js +++ b/packages/mimir/dist/index.js @@ -9,6 +9,6 @@ export { ask, search } from "./query.js"; export { redactText } from "./redaction.js"; export { securityAudit } from "./security.js"; export { setupProject } from "./setup.js"; -export { bundledSkillPath, installSkill } from "./skill.js"; +export { bundledSkillPath, installAgentSkills, installSkill, parseAgentTargets, SUPPORTED_AGENT_TARGETS, } from "./skill.js"; export { VERSION } from "./version.js"; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/mimir/dist/index.js.map b/packages/mimir/dist/index.js.map index 963c856..8c49b59 100644 --- a/packages/mimir/dist/index.js.map +++ b/packages/mimir/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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,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,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAW3D,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,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,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,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AAWnB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"} \ No newline at end of file diff --git a/packages/mimir/dist/setup.js b/packages/mimir/dist/setup.js index ce88614..75999da 100644 --- a/packages/mimir/dist/setup.js +++ b/packages/mimir/dist/setup.js @@ -39,8 +39,8 @@ function setupNextSteps(report) { if (report.ready) { return [ "Ask questions with the search or ask command shown by `kb doctor`.", - "Connect Claude Code with .mimir/claude-mcp-server.json, Codex with .mimir/codex-mcp.toml, or another AI with .mimir/mcp.json.", - "Load .mimir/skills/mimir/ in agents that support skill folders.", + "Run `kb install-agent --agents claude` or another targeted agent list for native skill discovery.", + "Wire the matching MCP helper from .mimir/ when the agent should call Mimir tools directly.", ]; } return report.nextSteps; diff --git a/packages/mimir/dist/setup.js.map b/packages/mimir/dist/setup.js.map index 4b21fd3..a5e9e63 100644 --- a/packages/mimir/dist/setup.js.map +++ b/packages/mimir/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,SAAS,EAAuB,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAA;AAoBlE,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,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,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/C,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEhD,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,oEAAoE;YACpE,+HAA+H;YAC/H,iEAAiE;SAClE,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":"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,SAAS,EAAuB,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAA;AAoBlE,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,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,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/C,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEhD,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,oEAAoE;YACpE,mGAAmG;YACnG,4FAA4F;SAC7F,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,CAAA;AACzB,CAAC"} \ No newline at end of file diff --git a/packages/mimir/dist/skill.d.ts b/packages/mimir/dist/skill.d.ts index fc56f15..2a8c832 100644 --- a/packages/mimir/dist/skill.d.ts +++ b/packages/mimir/dist/skill.d.ts @@ -1,3 +1,5 @@ +export type AgentTarget = "claude" | "codex" | "kimi" | "opencode" | "cline"; +export type AgentInstallScope = "project" | "user"; export interface InstallSkillOptions { cwd?: string; targetDir?: string; @@ -9,9 +11,35 @@ export interface InstallSkillResult { mcpConfigPath: string; claudeConfigPath: string; codexConfigPath: string; + kimiConfigPath: string; + opencodeConfigPath: string; + clineConfigPath: string; + agentSetupPath: string; readmePath: string; written: string[]; } +export interface InstallAgentSkillsOptions { + cwd?: string; + agents?: readonly AgentTarget[]; + scope?: AgentInstallScope; + homeDir?: string; + env?: Record; +} +export interface AgentSkillInstallation { + agent: AgentTarget; + label: string; + scope: AgentInstallScope; + targetDir: string; + skillPaths: string[]; +} +export interface InstallAgentSkillsResult { + projectKit: InstallSkillResult; + installations: AgentSkillInstallation[]; + written: string[]; +} +export declare const SUPPORTED_AGENT_TARGETS: readonly AgentTarget[]; export declare function bundledSkillPath(skillName?: string): string; +export declare function parseAgentTargets(value: string | readonly string[] | undefined): AgentTarget[]; export declare function installSkill(options?: InstallSkillOptions): Promise; +export declare function installAgentSkills(options?: InstallAgentSkillsOptions): Promise; //# sourceMappingURL=skill.d.ts.map \ No newline at end of file diff --git a/packages/mimir/dist/skill.d.ts.map b/packages/mimir/dist/skill.d.ts.map index 8d0e555..970625d 100644 --- a/packages/mimir/dist/skill.d.ts.map +++ b/packages/mimir/dist/skill.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAOD,wBAAgB,gBAAgB,CAAC,SAAS,SAAqB,GAAG,MAAM,CAEvE;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyEjG"} \ No newline at end of file +{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAA;AAC5E,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAA;AAElD,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,KAAK,CAAC,EAAE,iBAAiB,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,iBAAiB,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,kBAAkB,CAAA;IAC9B,aAAa,EAAE,sBAAsB,EAAE,CAAA;IACvC,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAQD,eAAO,MAAM,uBAAuB,EAAE,SAAS,WAAW,EAMhD,CAAA;AAsDV,wBAAgB,gBAAgB,CAAC,SAAS,SAAqB,GAAG,MAAM,CAEvE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,WAAW,EAAE,CA0B9F;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoHjG;AAED,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAuCnC"} \ No newline at end of file diff --git a/packages/mimir/dist/skill.js b/packages/mimir/dist/skill.js index 4a54139..1ad6f39 100644 --- a/packages/mimir/dist/skill.js +++ b/packages/mimir/dist/skill.js @@ -8,9 +8,81 @@ const PACKAGE_ROOT = path.dirname(path.dirname(fileURLToPath(import.meta.url))); const PRIMARY_SKILL_NAME = "mimir"; const AUDIO_SKILL_NAME = "mimir-audio-summary"; const REPORT_SKILL_NAME = "mimir-markdown-report"; +const SKILL_NAMES = [PRIMARY_SKILL_NAME, AUDIO_SKILL_NAME, REPORT_SKILL_NAME]; +export const SUPPORTED_AGENT_TARGETS = [ + "claude", + "codex", + "kimi", + "opencode", + "cline", +]; +const AGENT_TARGET_ALIASES = new Map([ + ["claude", "claude"], + ["claude-code", "claude"], + ["codex", "codex"], + ["kimi", "kimi"], + ["kimi-code", "kimi"], + ["opencode", "opencode"], + ["open-code", "opencode"], + ["cline", "cline"], +]); +const AGENT_DESTINATIONS = { + claude: { + label: "Claude Code", + env: "CLAUDE_SKILLS_DIR", + projectDir: path.join(".claude", "skills"), + userDir: (homeDir) => path.join(homeDir, ".claude", "skills"), + }, + codex: { + label: "Codex", + env: "CODEX_SKILLS_DIR", + projectDir: path.join(".codex", "skills"), + userDir: (homeDir) => path.join(homeDir, ".codex", "skills"), + }, + kimi: { + label: "Kimi Code CLI", + env: "KIMI_SKILLS_DIR", + projectDir: path.join(".kimi", "skills"), + userDir: (homeDir) => path.join(homeDir, ".kimi", "skills"), + }, + opencode: { + label: "OpenCode", + env: "OPENCODE_SKILLS_DIR", + projectDir: path.join(".opencode", "skills"), + userDir: (homeDir) => path.join(homeDir, ".config", "opencode", "skills"), + }, + cline: { + label: "Cline", + env: "CLINE_SKILLS_DIR", + projectDir: path.join(".cline", "skills"), + userDir: (homeDir) => path.join(homeDir, ".cline", "skills"), + }, +}; export function bundledSkillPath(skillName = PRIMARY_SKILL_NAME) { return path.join(PACKAGE_ROOT, "skills", skillName); } +export function parseAgentTargets(value) { + if (value === undefined || value === "" || value === "all") { + return [...SUPPORTED_AGENT_TARGETS]; + } + const entries = typeof value === "string" ? value.split(",") : value; + const targets = new Set(); + for (const entry of entries) { + const normalized = entry.trim().toLowerCase(); + if (normalized === "" || normalized === "all") { + for (const target of SUPPORTED_AGENT_TARGETS) { + targets.add(target); + } + continue; + } + const target = AGENT_TARGET_ALIASES.get(normalized); + if (!target) { + throw new Error(`Unknown agent target "${entry}". Expected one of: all, ${SUPPORTED_AGENT_TARGETS.join(", ")}.`); + } + targets.add(target); + } + return [...targets]; +} export async function installSkill(options = {}) { const cwd = path.resolve(options.cwd ?? process.cwd()); const targetDir = path.resolve(cwd, options.targetDir ?? DEFAULT_SKILL_TARGET_DIR); @@ -21,21 +93,52 @@ export async function installSkill(options = {}) { const mcpConfigPath = path.join(mimirDir, "mcp.json"); const claudeConfigPath = path.join(mimirDir, "claude-mcp-server.json"); const codexConfigPath = path.join(mimirDir, "codex-mcp.toml"); + const kimiConfigPath = path.join(mimirDir, "kimi-mcp.json"); + const opencodeConfigPath = path.join(mimirDir, "opencode.jsonc"); + const clineConfigPath = path.join(mimirDir, "cline-mcp.json"); + const agentSetupPath = path.join(mimirDir, "agent-setup.md"); const readmePath = path.join(mimirDir, "README.md"); await mkdir(targetDir, { recursive: true }); await mkdir(mimirDir, { recursive: true }); - await cp(bundledSkillPath(PRIMARY_SKILL_NAME), skillPath, { recursive: true, force: true }); - await cp(bundledSkillPath(AUDIO_SKILL_NAME), audioSkillPath, { recursive: true, force: true }); - await cp(bundledSkillPath(REPORT_SKILL_NAME), reportSkillPath, { - recursive: true, - force: true, - }); + await copyBundledSkills(targetDir); const serveCommand = await kbCommand(cwd, ["serve-mcp"]); const doctorCommand = await kbCommand(cwd, ["doctor"]); + const installAgentCommand = await kbCommand(cwd, ["install-agent", "--agents", "claude,kimi"]); await writeFile(mcpConfigPath, `${JSON.stringify(mcpConfig(cwd, serveCommand), null, 2)}\n`, "utf8"); await writeFile(claudeConfigPath, `${JSON.stringify(claudeMcpServer(serveCommand), null, 2)}\n`, "utf8"); await writeFile(codexConfigPath, codexMcpConfig(cwd, serveCommand), "utf8"); - await writeFile(readmePath, agentKitReadme(skillPath, audioSkillPath, reportSkillPath, mcpConfigPath, codexConfigPath, serveCommand.display, doctorCommand.display), "utf8"); + await writeFile(kimiConfigPath, `${JSON.stringify(mcpConfig(cwd, serveCommand, { MIMIR_PROJECT_ROOT: cwd }), null, 2)}\n`, "utf8"); + await writeFile(opencodeConfigPath, opencodeConfig(cwd, serveCommand), "utf8"); + await writeFile(clineConfigPath, `${JSON.stringify(mcpConfig(cwd, serveCommand, { MIMIR_PROJECT_ROOT: cwd }), null, 2)}\n`, "utf8"); + await writeFile(agentSetupPath, agentSetupGuide({ + skillPath, + audioSkillPath, + reportSkillPath, + mcpConfigPath, + claudeConfigPath, + codexConfigPath, + kimiConfigPath, + opencodeConfigPath, + clineConfigPath, + installAgentCommand: installAgentCommand.display, + serveCommand: serveCommand.display, + doctorCommand: doctorCommand.display, + }), "utf8"); + await writeFile(readmePath, agentKitReadme({ + skillPath, + audioSkillPath, + reportSkillPath, + mcpConfigPath, + claudeConfigPath, + codexConfigPath, + kimiConfigPath, + opencodeConfigPath, + clineConfigPath, + agentSetupPath, + installAgentCommand: installAgentCommand.display, + serveCommand: serveCommand.display, + doctorCommand: doctorCommand.display, + }), "utf8"); const wroteGitignore = await ensureMimirGitignore(cwd); const written = [ path.relative(cwd, skillPath), @@ -44,6 +147,10 @@ export async function installSkill(options = {}) { path.relative(cwd, mcpConfigPath), path.relative(cwd, claudeConfigPath), path.relative(cwd, codexConfigPath), + path.relative(cwd, kimiConfigPath), + path.relative(cwd, opencodeConfigPath), + path.relative(cwd, clineConfigPath), + path.relative(cwd, agentSetupPath), path.relative(cwd, readmePath), ]; if (wroteGitignore) { @@ -56,12 +163,85 @@ export async function installSkill(options = {}) { mcpConfigPath, claudeConfigPath, codexConfigPath, + kimiConfigPath, + opencodeConfigPath, + clineConfigPath, + agentSetupPath, readmePath, written, }; } -function mcpConfig(cwd, serveCommand) { +export async function installAgentSkills(options = {}) { + const cwd = path.resolve(options.cwd ?? process.cwd()); + const scope = options.scope ?? "project"; + const homeDir = path.resolve(options.homeDir ?? process.env.HOME ?? process.cwd()); + const env = options.env ?? process.env; + const agents = options.agents ?? SUPPORTED_AGENT_TARGETS; + const projectKit = await installSkill({ cwd }); + const sourceDir = path.dirname(projectKit.skillPath); + const installations = []; + const written = []; + for (const agent of agents) { + const destination = AGENT_DESTINATIONS[agent]; + const targetDir = agentTargetDir(agent, scope, cwd, homeDir, env); + await mkdir(targetDir, { recursive: true }); + const skillPaths = []; + for (const skillName of SKILL_NAMES) { + const source = path.join(sourceDir, skillName); + const target = path.join(targetDir, skillName); + await cp(source, target, { recursive: true, force: true }); + skillPaths.push(target); + written.push(displayPath(cwd, target)); + } + installations.push({ + agent, + label: destination.label, + scope, + targetDir, + skillPaths, + }); + } return { + projectKit, + installations, + written, + }; +} +async function copyBundledSkills(targetDir) { + await Promise.all(SKILL_NAMES.map((skillName) => cp(bundledSkillPath(skillName), path.join(targetDir, skillName), { + recursive: true, + force: true, + }))); +} +function agentTargetDir(agent, scope, cwd, homeDir, env) { + const destination = AGENT_DESTINATIONS[agent]; + const override = env[destination.env]; + if (override) { + return path.resolve(expandHome(override, homeDir)); + } + if (scope === "project") { + return path.resolve(cwd, destination.projectDir); + } + return destination.userDir(homeDir); +} +function expandHome(input, homeDir) { + if (input === "~") { + return homeDir; + } + if (input.startsWith("~/")) { + return path.join(homeDir, input.slice(2)); + } + return input; +} +function displayPath(cwd, filePath) { + const relative = path.relative(cwd, filePath); + if (relative && !relative.startsWith("..") && !path.isAbsolute(relative)) { + return relative; + } + return filePath; +} +function mcpConfig(cwd, serveCommand, env) { + const config = { mcpServers: { mimir: { command: serveCommand.command, @@ -70,6 +250,10 @@ function mcpConfig(cwd, serveCommand) { }, }, }; + if (env) { + config.mcpServers.mimir.env = env; + } + return config; } function claudeMcpServer(serveCommand) { return { @@ -84,15 +268,43 @@ command = ${tomlString(serveCommand.command)} args = ${tomlArray(serveCommand.args)} cwd = ${tomlString(cwd)} +[[skills.config]] +path = ${tomlString(path.join(cwd, DEFAULT_SKILL_TARGET_DIR, PRIMARY_SKILL_NAME))} +enabled = true + +[[skills.config]] +path = ${tomlString(path.join(cwd, DEFAULT_SKILL_TARGET_DIR, AUDIO_SKILL_NAME))} +enabled = true + +[[skills.config]] +path = ${tomlString(path.join(cwd, DEFAULT_SKILL_TARGET_DIR, REPORT_SKILL_NAME))} +enabled = true + `; } +function opencodeConfig(cwd, serveCommand) { + const config = { + $schema: "https://opencode.ai/config.json", + mcp: { + mimir: { + type: "local", + command: [serveCommand.command, ...serveCommand.args], + enabled: true, + environment: { + MIMIR_PROJECT_ROOT: cwd, + }, + }, + }, + }; + return `${JSON.stringify(config, null, 2)}\n`; +} function tomlArray(values) { return `[${values.map(tomlString).join(", ")}]`; } function tomlString(value) { return JSON.stringify(value); } -function agentKitReadme(skillPath, audioSkillPath, reportSkillPath, mcpConfigPath, codexConfigPath, serveCommand, doctorCommand) { +function agentKitReadme(input) { return `# Mimir Agent Kit This folder contains portable agent instructions for Mimir. @@ -102,7 +314,7 @@ This folder contains portable agent instructions for Mimir. Skill folder: \`\`\`plain text -${skillPath} +${input.skillPath} \`\`\` Agents that support skill folders can load that folder directly. @@ -110,7 +322,7 @@ Agents that support skill folders can load that folder directly. Optional audio-summary skill folder: \`\`\`plain text -${audioSkillPath} +${input.audioSkillPath} \`\`\` Use it only when the user asks for a listenable summary. It renders generated audio under ignored @@ -120,7 +332,7 @@ when online TTS is explicitly acceptable. Optional Markdown-report skill folder: \`\`\`plain text -${reportSkillPath} +${input.reportSkillPath} \`\`\` Use it when the user asks for a cited Markdown report, dossier, audit memo, or planning note. It @@ -131,16 +343,34 @@ writes reports under ignored local Mimir state by default. MCP config example: \`\`\`plain text -${mcpConfigPath} +${input.mcpConfigPath} \`\`\` Use the MCP server when your agent supports MCP tools. The server command is: \`\`\`bash -${serveCommand} +${input.serveCommand} \`\`\` -Claude Code local setup: +## Native Agent Setup + +For automatic skill discovery in one or more supported agents, run: + +\`\`\`bash +${input.installAgentCommand} +\`\`\` + +Use \`--agents claude\`, \`--agents kimi\`, or a comma-separated list when the user only uses one +agent. Use \`--scope user\` for global installs and \`--scope project\` for repository-local agent +folders. + +Detailed setup notes: + +\`\`\`plain text +${input.agentSetupPath} +\`\`\` + +Claude Code local MCP setup: \`\`\`bash claude mcp add-json --scope local mimir "$(cat ${MIMIR_DIR}/claude-mcp-server.json)" @@ -155,15 +385,126 @@ For other MCP clients that cannot set a working directory, launch the server wit Codex setup: \`\`\`plain text -${codexConfigPath} +${input.codexConfigPath} \`\`\` Copy that TOML snippet into \`~/.codex/config.toml\` or another trusted Codex config layer. +Kimi setup: + +\`\`\`bash +kimi --mcp-config-file ${input.kimiConfigPath} +\`\`\` + +OpenCode setup: + +\`\`\`plain text +${input.opencodeConfigPath} +\`\`\` + +Cline setup: + +\`\`\`plain text +${input.clineConfigPath} +\`\`\` + +Before relying on retrieved context, run: + +\`\`\`bash +${input.doctorCommand} +\`\`\` + +`; +} +function agentSetupGuide(input) { + return `# Mimir Agent Setup + +Mimir keeps the repository-local source of truth under \`.mimir/skills/\`. Install only the agents +you use. + +## Install Native Skills + +\`\`\`bash +${input.installAgentCommand} +\`\`\` + +Examples: + +\`\`\`bash +${input.installAgentCommand.replace("claude,kimi", "claude")} +${input.installAgentCommand.replace("claude,kimi", "kimi")} +${input.installAgentCommand.replace("claude,kimi", "claude,codex,kimi,opencode,cline")} +\`\`\` + +Default project-scope targets: + +| Agent | Project skill directory | User skill directory | +| --- | --- | --- | +| Claude Code | \`.claude/skills/\` | \`~/.claude/skills/\` | +| Codex | \`.codex/skills/\` | \`~/.codex/skills/\` | +| Kimi Code CLI | \`.kimi/skills/\` | \`~/.kimi/skills/\` | +| OpenCode | \`.opencode/skills/\` | \`~/.config/opencode/skills/\` | +| Cline | \`.cline/skills/\` | \`~/.cline/skills/\` | + +Override paths with \`CLAUDE_SKILLS_DIR\`, \`CODEX_SKILLS_DIR\`, \`KIMI_SKILLS_DIR\`, +\`OPENCODE_SKILLS_DIR\`, or \`CLINE_SKILLS_DIR\`. + +## Skill Folders + +\`\`\`plain text +${input.skillPath} +${input.audioSkillPath} +${input.reportSkillPath} +\`\`\` + +## MCP Helpers + +Generic MCP: + +\`\`\`plain text +${input.mcpConfigPath} +\`\`\` + +Claude Code: + +\`\`\`bash +claude mcp add-json --scope local mimir "$(cat ${MIMIR_DIR}/claude-mcp-server.json)" +\`\`\` + +Codex: + +\`\`\`plain text +${input.codexConfigPath} +\`\`\` + +Kimi Code CLI: + +\`\`\`bash +kimi --mcp-config-file ${input.kimiConfigPath} +\`\`\` + +OpenCode: + +\`\`\`plain text +${input.opencodeConfigPath} +\`\`\` + +Cline: + +\`\`\`plain text +${input.clineConfigPath} +\`\`\` + +The MCP server command is: + +\`\`\`bash +${input.serveCommand} +\`\`\` + Before relying on retrieved context, run: \`\`\`bash -${doctorCommand} +${input.doctorCommand} \`\`\` `; diff --git a/packages/mimir/dist/skill.js.map b/packages/mimir/dist/skill.js.map index d7fe6f4..4f8aa60 100644 --- a/packages/mimir/dist/skill.js.map +++ b/packages/mimir/dist/skill.js.map @@ -1 +1 @@ -{"version":3,"file":"skill.js","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"skill.js","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/mimir/dist/version.d.ts b/packages/mimir/dist/version.d.ts index 38adadd..b3be2d8 100644 --- a/packages/mimir/dist/version.d.ts +++ b/packages/mimir/dist/version.d.ts @@ -1,2 +1,2 @@ -export declare const VERSION = "0.4.8"; +export declare const VERSION = "0.4.9"; //# sourceMappingURL=version.d.ts.map \ No newline at end of file diff --git a/packages/mimir/dist/version.js b/packages/mimir/dist/version.js index e31bd5b..37faaae 100644 --- a/packages/mimir/dist/version.js +++ b/packages/mimir/dist/version.js @@ -1,2 +1,2 @@ -export const VERSION = "0.4.8"; +export const VERSION = "0.4.9"; //# sourceMappingURL=version.js.map \ No newline at end of file diff --git a/packages/mimir/package.json b/packages/mimir/package.json index f9fc0ab..219dad1 100644 --- a/packages/mimir/package.json +++ b/packages/mimir/package.json @@ -1,7 +1,7 @@ { "name": "@jcode.labs/mimir", - "version": "0.4.8", - "description": "Mimir: open-source sovereign local RAG for confidential datasets and AI agents.", + "version": "0.4.9", + "description": "Mimir Core: open-source sovereign local RAG for confidential datasets and AI agents.", "type": "module", "license": "MIT", "author": { diff --git a/packages/mimir/skills/mimir/SKILL.md b/packages/mimir/skills/mimir/SKILL.md index 5ad44d0..2bc819b 100644 --- a/packages/mimir/skills/mimir/SKILL.md +++ b/packages/mimir/skills/mimir/SKILL.md @@ -1,6 +1,6 @@ --- name: mimir -description: Use this skill whenever a repository uses or should use Mimir, local-first RAG, private project knowledge, document ingestion, knowledge-base audit, or MCP access to project documents. Use it before answering from memory when the user asks about facts that may be present in private files, asks to ingest/query/audit documents, or wants Claude, Codex, Cursor, or another AI agent to use the same local knowledge base. +description: Use this skill whenever a repository uses or should use Mimir, local-first RAG, private project knowledge, document ingestion, knowledge-base audit, or MCP access to project documents. Use it before answering from memory when the user asks about facts that may be present in private files, asks to ingest/query/audit documents, or wants Claude Code, Codex, Kimi, OpenCode, Cline, or another AI agent to use the same local knowledge base. --- # Mimir @@ -169,7 +169,17 @@ claude mcp add-json --scope local mimir "$(cat .mimir/claude-mcp-server.json)" ``` For Codex, copy `.mimir/codex-mcp.toml` into `~/.codex/config.toml` or another trusted Codex config -layer. +layer. It includes both the Mimir MCP server and `skills.config` entries. + +For Kimi Code CLI, run from the target repository root: + +```bash +kimi --mcp-config-file .mimir/kimi-mcp.json +``` + +For OpenCode, merge `.mimir/opencode.jsonc` into the OpenCode config layer used by the project. + +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 `kb serve-mcp`. @@ -236,11 +246,26 @@ This creates: .mimir/mcp.json .mimir/claude-mcp-server.json .mimir/codex-mcp.toml +.mimir/kimi-mcp.json +.mimir/opencode.jsonc +.mimir/cline-mcp.json +.mimir/agent-setup.md .mimir/README.md ``` -Agents that understand skill folders can load `.mimir/skills/mimir/`. Other agents can read -`.mimir/README.md` and `.mimir/mcp.json`. +For native discovery, install only the agent the user uses: + +```bash +pnpm exec kb install-agent --agents claude +pnpm exec kb install-agent --agents kimi +pnpm exec kb install-agent --agents claude,codex,kimi,opencode,cline +``` + +By default this writes project-scope skill folders such as `.claude/skills/`, `.kimi/skills/`, +`.opencode/skills/`, or `.cline/skills/`. Add `--scope user` for global installs. + +Agents that understand skill folders can load `.mimir/skills/mimir/` directly when native discovery +is not installed. Other agents can read `.mimir/README.md` and `.mimir/mcp.json`. ## Answer Style diff --git a/packages/mimir/src/cli.ts b/packages/mimir/src/cli.ts index 0d033e1..dc913d1 100644 --- a/packages/mimir/src/cli.ts +++ b/packages/mimir/src/cli.ts @@ -11,7 +11,14 @@ import { kbCommand } from "./package-manager.js" import { ask, search } from "./query.js" import { securityAudit } from "./security.js" import { setupProject } from "./setup.js" -import { bundledSkillPath, installSkill } from "./skill.js" +import { + type AgentInstallScope, + bundledSkillPath, + installAgentSkills, + installSkill, + parseAgentTargets, + SUPPORTED_AGENT_TARGETS, +} from "./skill.js" import { countRows } from "./store.js" import { VERSION } from "./version.js" @@ -365,16 +372,56 @@ program console.log(`Optional Markdown report skill path: ${result.reportSkillPath}`) console.log(`MCP config example: ${result.mcpConfigPath}`) console.log(`Claude Code MCP server JSON: ${result.claudeConfigPath}`) - console.log(`Codex MCP TOML snippet: ${result.codexConfigPath}`) + console.log(`Codex config TOML snippet: ${result.codexConfigPath}`) + console.log(`Kimi MCP config JSON: ${result.kimiConfigPath}`) + console.log(`OpenCode config JSONC: ${result.opencodeConfigPath}`) + console.log(`Cline MCP config JSON: ${result.clineConfigPath}`) + console.log(`Agent setup guide: ${result.agentSetupPath}`) console.log("") console.log("Next steps:") - console.log( - " 1. Add the MCP config from .mimir/ to Claude Code, Codex, or another MCP client.", - ) - console.log(" 2. Load .mimir/skills/mimir/ in agents that support skill folders.") + console.log(" 1. Run `kb install-agent --agents claude` or another targeted agent list.") + console.log(" 2. Add the MCP config from .mimir/ to the same agent when MCP tools are needed.") console.log(` 3. Run \`${doctorCommand.display}\` before relying on retrieved context.`) }) +program + .command("install-agent") + .description("Install Mimir skills into native Claude, Codex, Kimi, OpenCode, or Cline folders.") + .option( + "--agents ", + `Comma-separated agents: all, ${SUPPORTED_AGENT_TARGETS.join(", ")}.`, + "all", + ) + .option("--scope ", "Install scope: project or user.", "project") + .option("--json", "Print machine-readable JSON.") + .action(async (options: { agents: string; scope: string; json?: boolean }) => { + const scope = parseAgentInstallScope(options.scope) + const agents = parseAgentTargets(options.agents) + const result = await installAgentSkills({ cwd: process.cwd(), agents, scope }) + if (options.json) { + console.log(JSON.stringify(result, null, 2)) + return + } + + console.log(`Installed Mimir skills for ${scope}-scope agent discovery:`) + for (const installation of result.installations) { + console.log(` - ${installation.label}: ${installation.targetDir}`) + } + console.log("") + console.log("MCP helper files:") + console.log(` - generic: ${result.projectKit.mcpConfigPath}`) + console.log(` - Claude Code: ${result.projectKit.claudeConfigPath}`) + console.log(` - Codex: ${result.projectKit.codexConfigPath}`) + console.log(` - Kimi: ${result.projectKit.kimiConfigPath}`) + console.log(` - OpenCode: ${result.projectKit.opencodeConfigPath}`) + console.log(` - Cline: ${result.projectKit.clineConfigPath}`) + console.log("") + console.log("Next steps:") + console.log(" 1. Restart or reload the selected agent so it discovers the new SKILL.md files.") + console.log(" 2. Wire the matching MCP helper if the agent should call Mimir tools directly.") + console.log(` 3. Run \`${(await kbCommand(process.cwd(), ["doctor"])).display}\`.`) + }) + try { await program.parseAsync(process.argv) } catch (error) { @@ -483,6 +530,13 @@ function audioEngine(options: AudioOptions): TtsRenderOptions["engine"] { throw new Error("Expected --engine to be auto, edge, or transformers.") } +function parseAgentInstallScope(value: string | undefined): AgentInstallScope { + if (value === "project" || value === "user") { + return value + } + throw new Error("Expected --scope to be project or user.") +} + function printDoctor(report: Awaited>): void { console.log(`projectRoot=${report.projectRoot}`) console.log(`initialized=${report.initialized}`) @@ -534,7 +588,11 @@ function printSetup(result: Awaited>, title: str console.log(` - report skill: ${result.agentKit.reportSkillPath}`) console.log(` - MCP config: ${result.agentKit.mcpConfigPath}`) console.log(` - Claude Code MCP JSON: ${result.agentKit.claudeConfigPath}`) - console.log(` - Codex MCP TOML: ${result.agentKit.codexConfigPath}`) + console.log(` - Codex config TOML: ${result.agentKit.codexConfigPath}`) + console.log(` - Kimi MCP JSON: ${result.agentKit.kimiConfigPath}`) + console.log(` - OpenCode JSONC: ${result.agentKit.opencodeConfigPath}`) + console.log(` - Cline MCP JSON: ${result.agentKit.clineConfigPath}`) + console.log(` - agent setup guide: ${result.agentKit.agentSetupPath}`) console.log("") console.log(pc.cyan("Index:")) if (result.ingested) { diff --git a/packages/mimir/src/doctor.ts b/packages/mimir/src/doctor.ts index 0a9c30e..0bae1e6 100644 --- a/packages/mimir/src/doctor.ts +++ b/packages/mimir/src/doctor.ts @@ -124,9 +124,11 @@ function nextActions(input: NextActionInput): string[] { ) if (input.agentKitInstalled) { steps.push( - "Connect Claude Code with .mimir/claude-mcp-server.json, Codex with .mimir/codex-mcp.toml, or another AI with .mimir/mcp.json.", + "Run `kb install-agent --agents claude` or another targeted agent list for native skill discovery.", + ) + steps.push( + "Wire the matching MCP helper from .mimir/ when the agent should call Mimir tools directly.", ) - steps.push("Load .mimir/skills/mimir/ in agents that support skill folders.") } else { steps.push( `Run \`${input.run(["install-skill"])}\` if an AI agent should use the local knowledge base.`, @@ -144,6 +146,10 @@ function isAgentKitInstalled(projectRoot: string): boolean { existsSync(path.join(projectRoot, MIMIR_DIR, "skills", "mimir-markdown-report", "SKILL.md")) && existsSync(path.join(projectRoot, MIMIR_DIR, "mcp.json")) && existsSync(path.join(projectRoot, MIMIR_DIR, "claude-mcp-server.json")) && - existsSync(path.join(projectRoot, MIMIR_DIR, "codex-mcp.toml")) + existsSync(path.join(projectRoot, MIMIR_DIR, "codex-mcp.toml")) && + existsSync(path.join(projectRoot, MIMIR_DIR, "kimi-mcp.json")) && + existsSync(path.join(projectRoot, MIMIR_DIR, "opencode.jsonc")) && + existsSync(path.join(projectRoot, MIMIR_DIR, "cline-mcp.json")) && + existsSync(path.join(projectRoot, MIMIR_DIR, "agent-setup.md")) ) } diff --git a/packages/mimir/src/index.ts b/packages/mimir/src/index.ts index 6e43cad..fec8194 100644 --- a/packages/mimir/src/index.ts +++ b/packages/mimir/src/index.ts @@ -11,7 +11,14 @@ export { redactText } from "./redaction.js" export { securityAudit } from "./security.js" export type { SetupResult } from "./setup.js" export { setupProject } from "./setup.js" -export { bundledSkillPath, installSkill } from "./skill.js" +export type { AgentInstallScope, AgentSkillInstallation, AgentTarget } from "./skill.js" +export { + bundledSkillPath, + installAgentSkills, + installSkill, + parseAgentTargets, + SUPPORTED_AGENT_TARGETS, +} from "./skill.js" export type { AskResult, AuditReport, diff --git a/packages/mimir/src/setup.test.ts b/packages/mimir/src/setup.test.ts index 9340db9..3514c97 100644 --- a/packages/mimir/src/setup.test.ts +++ b/packages/mimir/src/setup.test.ts @@ -43,10 +43,10 @@ describe("setupProject", () => { expect(second.ingested?.indexedFiles).toBe(1) expect(second.doctor.ready).toBe(true) expect(second.doctor.nextSteps).toContain( - "Connect Claude Code with .mimir/claude-mcp-server.json, Codex with .mimir/codex-mcp.toml, or another AI with .mimir/mcp.json.", + "Run `kb install-agent --agents claude` or another targeted agent list for native skill discovery.", ) expect(second.nextSteps).toContain( - "Connect Claude Code with .mimir/claude-mcp-server.json, Codex with .mimir/codex-mcp.toml, or another AI with .mimir/mcp.json.", + "Run `kb install-agent --agents claude` or another targeted agent list for native skill discovery.", ) }) }) diff --git a/packages/mimir/src/setup.ts b/packages/mimir/src/setup.ts index 9a76fc5..71f6ee9 100644 --- a/packages/mimir/src/setup.ts +++ b/packages/mimir/src/setup.ts @@ -65,8 +65,8 @@ function setupNextSteps(report: DoctorReport): string[] { if (report.ready) { return [ "Ask questions with the search or ask command shown by `kb doctor`.", - "Connect Claude Code with .mimir/claude-mcp-server.json, Codex with .mimir/codex-mcp.toml, or another AI with .mimir/mcp.json.", - "Load .mimir/skills/mimir/ in agents that support skill folders.", + "Run `kb install-agent --agents claude` or another targeted agent list for native skill discovery.", + "Wire the matching MCP helper from .mimir/ when the agent should call Mimir tools directly.", ] } return report.nextSteps diff --git a/packages/mimir/src/skill.test.ts b/packages/mimir/src/skill.test.ts index 711e174..d96d99c 100644 --- a/packages/mimir/src/skill.test.ts +++ b/packages/mimir/src/skill.test.ts @@ -1,8 +1,9 @@ +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 { installSkill } from "./skill.js" +import { installAgentSkills, installSkill, parseAgentTargets } from "./skill.js" const tempDirs: string[] = [] @@ -29,7 +30,24 @@ describe("installSkill", () => { command: string args: string[] } + const kimiConfig = JSON.parse(await readFile(result.kimiConfigPath, "utf8")) as { + mcpServers: { mimir: { env: { MIMIR_PROJECT_ROOT: string } } } + } + const opencodeConfig = JSON.parse(await readFile(result.opencodeConfigPath, "utf8")) as { + mcp: { + mimir: { + type: string + command: string[] + enabled: boolean + environment: { MIMIR_PROJECT_ROOT: string } + } + } + } + const clineConfig = JSON.parse(await readFile(result.clineConfigPath, "utf8")) as { + mcpServers: { mimir: { env: { MIMIR_PROJECT_ROOT: string } } } + } const codexConfig = await readFile(result.codexConfigPath, "utf8") + const agentSetup = await readFile(result.agentSetupPath, "utf8") expect(skill).toContain("name: mimir") expect(audioSkill).toContain("name: mimir-audio-summary") @@ -46,6 +64,20 @@ describe("installSkill", () => { expect(codexConfig).toContain('command = "pnpm"') expect(codexConfig).toContain('args = ["exec", "kb", "serve-mcp"]') expect(codexConfig).toContain(`cwd = ${JSON.stringify(root)}`) + expect(codexConfig).toContain("[[skills.config]]") + expect(codexConfig).toContain(path.join(root, ".mimir", "skills", "mimir")) + expect(kimiConfig.mcpServers.mimir.env.MIMIR_PROJECT_ROOT).toBe(root) + expect(opencodeConfig.mcp.mimir).toEqual({ + type: "local", + command: ["pnpm", "exec", "kb", "serve-mcp"], + enabled: true, + environment: { MIMIR_PROJECT_ROOT: root }, + }) + expect(clineConfig.mcpServers.mimir.env.MIMIR_PROJECT_ROOT).toBe(root) + expect(agentSetup).toContain("Claude Code") + expect(agentSetup).toContain("Kimi Code CLI") + expect(agentSetup).toContain("OpenCode") + expect(agentSetup).toContain("Cline") }) it("adds Mimir runtime folders to gitignore without duplicating entries", async () => { @@ -62,6 +94,10 @@ describe("installSkill", () => { expect(first.written).toContain(path.join(".mimir", "skills", "mimir-markdown-report")) expect(first.written).toContain(path.join(".mimir", "claude-mcp-server.json")) expect(first.written).toContain(path.join(".mimir", "codex-mcp.toml")) + expect(first.written).toContain(path.join(".mimir", "kimi-mcp.json")) + expect(first.written).toContain(path.join(".mimir", "opencode.jsonc")) + expect(first.written).toContain(path.join(".mimir", "cline-mcp.json")) + expect(first.written).toContain(path.join(".mimir", "agent-setup.md")) expect(gitignore.match(/^\.kb\/$/gm)).toHaveLength(1) expect(gitignore.match(/^\.mimir\/$/gm)).toHaveLength(1) }) @@ -85,3 +121,45 @@ describe("installSkill", () => { expect(readme).toContain("npx kb serve-mcp") }) }) + +describe("installAgentSkills", () => { + it("copies selected skills into native project-scope agent folders", async () => { + const root = await mkdtemp(path.join(os.tmpdir(), "mimir-agent-")) + tempDirs.push(root) + + const result = await installAgentSkills({ + cwd: root, + agents: parseAgentTargets("claude,kimi"), + scope: "project", + }) + + expect(result.installations.map((installation) => installation.agent)).toEqual([ + "claude", + "kimi", + ]) + expect(existsSync(path.join(root, ".claude", "skills", "mimir", "SKILL.md"))).toBe(true) + expect(existsSync(path.join(root, ".kimi", "skills", "mimir", "SKILL.md"))).toBe(true) + expect(existsSync(path.join(root, ".codex", "skills", "mimir", "SKILL.md"))).toBe(false) + expect(result.written).toContain(path.join(".claude", "skills", "mimir")) + expect(result.written).toContain(path.join(".kimi", "skills", "mimir-markdown-report")) + }) + + it("uses user-scope directories and environment overrides", async () => { + const root = await mkdtemp(path.join(os.tmpdir(), "mimir-agent-")) + const home = await mkdtemp(path.join(os.tmpdir(), "mimir-home-")) + tempDirs.push(root, home) + + const result = await installAgentSkills({ + cwd: root, + agents: ["opencode"], + scope: "user", + homeDir: home, + env: { OPENCODE_SKILLS_DIR: "~/custom-opencode-skills" }, + }) + + const targetDir = path.join(home, "custom-opencode-skills") + expect(result.installations[0]?.targetDir).toBe(targetDir) + expect(existsSync(path.join(targetDir, "mimir", "SKILL.md"))).toBe(true) + expect(result.written).toContain(path.join(targetDir, "mimir")) + }) +}) diff --git a/packages/mimir/src/skill.ts b/packages/mimir/src/skill.ts index a25a52b..ab81ca1 100644 --- a/packages/mimir/src/skill.ts +++ b/packages/mimir/src/skill.ts @@ -5,6 +5,9 @@ import { DEFAULT_SKILL_TARGET_DIR, MIMIR_DIR } from "./defaults.js" import { ensureMimirGitignore } from "./gitignore.js" import { kbCommand } from "./package-manager.js" +export type AgentTarget = "claude" | "codex" | "kimi" | "opencode" | "cline" +export type AgentInstallScope = "project" | "user" + export interface InstallSkillOptions { cwd?: string targetDir?: string @@ -17,19 +20,134 @@ export interface InstallSkillResult { mcpConfigPath: string claudeConfigPath: string codexConfigPath: string + kimiConfigPath: string + opencodeConfigPath: string + clineConfigPath: string + agentSetupPath: string readmePath: string written: string[] } +export interface InstallAgentSkillsOptions { + cwd?: string + agents?: readonly AgentTarget[] + scope?: AgentInstallScope + homeDir?: string + env?: Record +} + +export interface AgentSkillInstallation { + agent: AgentTarget + label: string + scope: AgentInstallScope + targetDir: string + skillPaths: string[] +} + +export interface InstallAgentSkillsResult { + projectKit: InstallSkillResult + installations: AgentSkillInstallation[] + written: string[] +} + const PACKAGE_ROOT = path.dirname(path.dirname(fileURLToPath(import.meta.url))) const PRIMARY_SKILL_NAME = "mimir" const AUDIO_SKILL_NAME = "mimir-audio-summary" const REPORT_SKILL_NAME = "mimir-markdown-report" +const SKILL_NAMES = [PRIMARY_SKILL_NAME, AUDIO_SKILL_NAME, REPORT_SKILL_NAME] as const + +export const SUPPORTED_AGENT_TARGETS: readonly AgentTarget[] = [ + "claude", + "codex", + "kimi", + "opencode", + "cline", +] as const + +const AGENT_TARGET_ALIASES = new Map([ + ["claude", "claude"], + ["claude-code", "claude"], + ["codex", "codex"], + ["kimi", "kimi"], + ["kimi-code", "kimi"], + ["opencode", "opencode"], + ["open-code", "opencode"], + ["cline", "cline"], +]) + +const AGENT_DESTINATIONS: Record< + AgentTarget, + { + label: string + env: string + projectDir: string + userDir: (homeDir: string) => string + } +> = { + claude: { + label: "Claude Code", + env: "CLAUDE_SKILLS_DIR", + projectDir: path.join(".claude", "skills"), + userDir: (homeDir) => path.join(homeDir, ".claude", "skills"), + }, + codex: { + label: "Codex", + env: "CODEX_SKILLS_DIR", + projectDir: path.join(".codex", "skills"), + userDir: (homeDir) => path.join(homeDir, ".codex", "skills"), + }, + kimi: { + label: "Kimi Code CLI", + env: "KIMI_SKILLS_DIR", + projectDir: path.join(".kimi", "skills"), + userDir: (homeDir) => path.join(homeDir, ".kimi", "skills"), + }, + opencode: { + label: "OpenCode", + env: "OPENCODE_SKILLS_DIR", + projectDir: path.join(".opencode", "skills"), + userDir: (homeDir) => path.join(homeDir, ".config", "opencode", "skills"), + }, + cline: { + label: "Cline", + env: "CLINE_SKILLS_DIR", + projectDir: path.join(".cline", "skills"), + userDir: (homeDir) => path.join(homeDir, ".cline", "skills"), + }, +} export function bundledSkillPath(skillName = PRIMARY_SKILL_NAME): string { return path.join(PACKAGE_ROOT, "skills", skillName) } +export function parseAgentTargets(value: string | readonly string[] | undefined): AgentTarget[] { + if (value === undefined || value === "" || value === "all") { + return [...SUPPORTED_AGENT_TARGETS] + } + + const entries = typeof value === "string" ? value.split(",") : value + const targets = new Set() + + for (const entry of entries) { + const normalized = entry.trim().toLowerCase() + if (normalized === "" || normalized === "all") { + for (const target of SUPPORTED_AGENT_TARGETS) { + targets.add(target) + } + continue + } + const target = AGENT_TARGET_ALIASES.get(normalized) + if (!target) { + throw new Error( + `Unknown agent target "${entry}". Expected one of: all, ${SUPPORTED_AGENT_TARGETS.join(", ")}.`, + ) + } + targets.add(target) + } + + return [...targets] +} + export async function installSkill(options: InstallSkillOptions = {}): Promise { const cwd = path.resolve(options.cwd ?? process.cwd()) const targetDir = path.resolve(cwd, options.targetDir ?? DEFAULT_SKILL_TARGET_DIR) @@ -40,19 +158,19 @@ export async function installSkill(options: InstallSkillOptions = {}): Promise>): unknown { +export async function installAgentSkills( + options: InstallAgentSkillsOptions = {}, +): Promise { + const cwd = path.resolve(options.cwd ?? process.cwd()) + const scope = options.scope ?? "project" + const homeDir = path.resolve(options.homeDir ?? process.env.HOME ?? process.cwd()) + const env = options.env ?? process.env + const agents = options.agents ?? SUPPORTED_AGENT_TARGETS + const projectKit = await installSkill({ cwd }) + const sourceDir = path.dirname(projectKit.skillPath) + const installations: AgentSkillInstallation[] = [] + const written: string[] = [] + + for (const agent of agents) { + const destination = AGENT_DESTINATIONS[agent] + const targetDir = agentTargetDir(agent, scope, cwd, homeDir, env) + await mkdir(targetDir, { recursive: true }) + + const skillPaths: string[] = [] + for (const skillName of SKILL_NAMES) { + const source = path.join(sourceDir, skillName) + const target = path.join(targetDir, skillName) + await cp(source, target, { recursive: true, force: true }) + skillPaths.push(target) + written.push(displayPath(cwd, target)) + } + + installations.push({ + agent, + label: destination.label, + scope, + targetDir, + skillPaths, + }) + } + return { + projectKit, + installations, + written, + } +} + +async function copyBundledSkills(targetDir: string): Promise { + await Promise.all( + SKILL_NAMES.map((skillName) => + cp(bundledSkillPath(skillName), path.join(targetDir, skillName), { + recursive: true, + force: true, + }), + ), + ) +} + +function agentTargetDir( + agent: AgentTarget, + scope: AgentInstallScope, + cwd: string, + homeDir: string, + env: Record, +): string { + const destination = AGENT_DESTINATIONS[agent] + const override = env[destination.env] + if (override) { + return path.resolve(expandHome(override, homeDir)) + } + if (scope === "project") { + return path.resolve(cwd, destination.projectDir) + } + return destination.userDir(homeDir) +} + +function expandHome(input: string, homeDir: string): string { + if (input === "~") { + return homeDir + } + if (input.startsWith("~/")) { + return path.join(homeDir, input.slice(2)) + } + return input +} + +function displayPath(cwd: string, filePath: string): string { + const relative = path.relative(cwd, filePath) + if (relative && !relative.startsWith("..") && !path.isAbsolute(relative)) { + return relative + } + return filePath +} + +function mcpConfig( + cwd: string, + serveCommand: Awaited>, + env?: Record, +): unknown { + const config: { + mcpServers: { + mimir: { + command: string + args: string[] + cwd: string + env?: Record + } + } + } = { mcpServers: { mimir: { command: serveCommand.command, @@ -115,6 +379,10 @@ function mcpConfig(cwd: string, serveCommand: Awaited>): unknown { @@ -131,9 +399,38 @@ command = ${tomlString(serveCommand.command)} args = ${tomlArray(serveCommand.args)} cwd = ${tomlString(cwd)} +[[skills.config]] +path = ${tomlString(path.join(cwd, DEFAULT_SKILL_TARGET_DIR, PRIMARY_SKILL_NAME))} +enabled = true + +[[skills.config]] +path = ${tomlString(path.join(cwd, DEFAULT_SKILL_TARGET_DIR, AUDIO_SKILL_NAME))} +enabled = true + +[[skills.config]] +path = ${tomlString(path.join(cwd, DEFAULT_SKILL_TARGET_DIR, REPORT_SKILL_NAME))} +enabled = true + ` } +function opencodeConfig(cwd: string, serveCommand: Awaited>): string { + const config = { + $schema: "https://opencode.ai/config.json", + mcp: { + mimir: { + type: "local", + command: [serveCommand.command, ...serveCommand.args], + enabled: true, + environment: { + MIMIR_PROJECT_ROOT: cwd, + }, + }, + }, + } + return `${JSON.stringify(config, null, 2)}\n` +} + function tomlArray(values: string[]): string { return `[${values.map(tomlString).join(", ")}]` } @@ -142,15 +439,23 @@ function tomlString(value: string): string { return JSON.stringify(value) } -function agentKitReadme( - skillPath: string, - audioSkillPath: string, - reportSkillPath: string, - mcpConfigPath: string, - codexConfigPath: string, - serveCommand: string, - doctorCommand: string, -): string { +interface AgentKitReadmeInput { + skillPath: string + audioSkillPath: string + reportSkillPath: string + mcpConfigPath: string + claudeConfigPath: string + codexConfigPath: string + kimiConfigPath: string + opencodeConfigPath: string + clineConfigPath: string + agentSetupPath: string + installAgentCommand: string + serveCommand: string + doctorCommand: string +} + +function agentKitReadme(input: AgentKitReadmeInput): string { return `# Mimir Agent Kit This folder contains portable agent instructions for Mimir. @@ -160,7 +465,7 @@ This folder contains portable agent instructions for Mimir. Skill folder: \`\`\`plain text -${skillPath} +${input.skillPath} \`\`\` Agents that support skill folders can load that folder directly. @@ -168,7 +473,7 @@ Agents that support skill folders can load that folder directly. Optional audio-summary skill folder: \`\`\`plain text -${audioSkillPath} +${input.audioSkillPath} \`\`\` Use it only when the user asks for a listenable summary. It renders generated audio under ignored @@ -178,7 +483,7 @@ when online TTS is explicitly acceptable. Optional Markdown-report skill folder: \`\`\`plain text -${reportSkillPath} +${input.reportSkillPath} \`\`\` Use it when the user asks for a cited Markdown report, dossier, audit memo, or planning note. It @@ -189,16 +494,34 @@ writes reports under ignored local Mimir state by default. MCP config example: \`\`\`plain text -${mcpConfigPath} +${input.mcpConfigPath} \`\`\` Use the MCP server when your agent supports MCP tools. The server command is: \`\`\`bash -${serveCommand} +${input.serveCommand} \`\`\` -Claude Code local setup: +## Native Agent Setup + +For automatic skill discovery in one or more supported agents, run: + +\`\`\`bash +${input.installAgentCommand} +\`\`\` + +Use \`--agents claude\`, \`--agents kimi\`, or a comma-separated list when the user only uses one +agent. Use \`--scope user\` for global installs and \`--scope project\` for repository-local agent +folders. + +Detailed setup notes: + +\`\`\`plain text +${input.agentSetupPath} +\`\`\` + +Claude Code local MCP setup: \`\`\`bash claude mcp add-json --scope local mimir "$(cat ${MIMIR_DIR}/claude-mcp-server.json)" @@ -213,15 +536,142 @@ For other MCP clients that cannot set a working directory, launch the server wit Codex setup: \`\`\`plain text -${codexConfigPath} +${input.codexConfigPath} \`\`\` Copy that TOML snippet into \`~/.codex/config.toml\` or another trusted Codex config layer. +Kimi setup: + +\`\`\`bash +kimi --mcp-config-file ${input.kimiConfigPath} +\`\`\` + +OpenCode setup: + +\`\`\`plain text +${input.opencodeConfigPath} +\`\`\` + +Cline setup: + +\`\`\`plain text +${input.clineConfigPath} +\`\`\` + +Before relying on retrieved context, run: + +\`\`\`bash +${input.doctorCommand} +\`\`\` + +` +} + +interface AgentSetupGuideInput { + skillPath: string + audioSkillPath: string + reportSkillPath: string + mcpConfigPath: string + claudeConfigPath: string + codexConfigPath: string + kimiConfigPath: string + opencodeConfigPath: string + clineConfigPath: string + installAgentCommand: string + serveCommand: string + doctorCommand: string +} + +function agentSetupGuide(input: AgentSetupGuideInput): string { + return `# Mimir Agent Setup + +Mimir keeps the repository-local source of truth under \`.mimir/skills/\`. Install only the agents +you use. + +## Install Native Skills + +\`\`\`bash +${input.installAgentCommand} +\`\`\` + +Examples: + +\`\`\`bash +${input.installAgentCommand.replace("claude,kimi", "claude")} +${input.installAgentCommand.replace("claude,kimi", "kimi")} +${input.installAgentCommand.replace("claude,kimi", "claude,codex,kimi,opencode,cline")} +\`\`\` + +Default project-scope targets: + +| Agent | Project skill directory | User skill directory | +| --- | --- | --- | +| Claude Code | \`.claude/skills/\` | \`~/.claude/skills/\` | +| Codex | \`.codex/skills/\` | \`~/.codex/skills/\` | +| Kimi Code CLI | \`.kimi/skills/\` | \`~/.kimi/skills/\` | +| OpenCode | \`.opencode/skills/\` | \`~/.config/opencode/skills/\` | +| Cline | \`.cline/skills/\` | \`~/.cline/skills/\` | + +Override paths with \`CLAUDE_SKILLS_DIR\`, \`CODEX_SKILLS_DIR\`, \`KIMI_SKILLS_DIR\`, +\`OPENCODE_SKILLS_DIR\`, or \`CLINE_SKILLS_DIR\`. + +## Skill Folders + +\`\`\`plain text +${input.skillPath} +${input.audioSkillPath} +${input.reportSkillPath} +\`\`\` + +## MCP Helpers + +Generic MCP: + +\`\`\`plain text +${input.mcpConfigPath} +\`\`\` + +Claude Code: + +\`\`\`bash +claude mcp add-json --scope local mimir "$(cat ${MIMIR_DIR}/claude-mcp-server.json)" +\`\`\` + +Codex: + +\`\`\`plain text +${input.codexConfigPath} +\`\`\` + +Kimi Code CLI: + +\`\`\`bash +kimi --mcp-config-file ${input.kimiConfigPath} +\`\`\` + +OpenCode: + +\`\`\`plain text +${input.opencodeConfigPath} +\`\`\` + +Cline: + +\`\`\`plain text +${input.clineConfigPath} +\`\`\` + +The MCP server command is: + +\`\`\`bash +${input.serveCommand} +\`\`\` + Before relying on retrieved context, run: \`\`\`bash -${doctorCommand} +${input.doctorCommand} \`\`\` ` diff --git a/packages/mimir/src/version.ts b/packages/mimir/src/version.ts index 7650014..473f6ee 100644 --- a/packages/mimir/src/version.ts +++ b/packages/mimir/src/version.ts @@ -1 +1 @@ -export const VERSION = "0.4.8" +export const VERSION = "0.4.9" diff --git a/scripts/smoke.mjs b/scripts/smoke.mjs index f769966..8c536cb 100644 --- a/scripts/smoke.mjs +++ b/scripts/smoke.mjs @@ -133,6 +133,26 @@ try { assertIncludes(gitignore, ".kb/", "init should ignore the Mimir config and index directory") assertIncludes(gitignore, ".mimir/", "install-skill should ignore generated agent kit files") + await runKb(["install-agent", "--agents", "claude,kimi"], tempRoot) + const claudeNativeSkill = await readFile( + path.join(tempRoot, ".claude", "skills", "mimir", "SKILL.md"), + "utf8", + ) + const kimiNativeSkill = await readFile( + path.join(tempRoot, ".kimi", "skills", "mimir", "SKILL.md"), + "utf8", + ) + assertIncludes( + claudeNativeSkill, + "name: mimir", + "install-agent should install the Claude project skill", + ) + assertIncludes( + kimiNativeSkill, + "name: mimir", + "install-agent should install the Kimi project skill", + ) + await smokeMcp(tempRoot) await smokeExampleWorkspace()