@jcode.labs/mimir 0.4.6 → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/skill.js CHANGED
@@ -7,6 +7,7 @@ import { kbCommand } from "./package-manager.js";
7
7
  const PACKAGE_ROOT = path.dirname(path.dirname(fileURLToPath(import.meta.url)));
8
8
  const PRIMARY_SKILL_NAME = "mimir";
9
9
  const AUDIO_SKILL_NAME = "mimir-audio-summary";
10
+ const REPORT_SKILL_NAME = "mimir-markdown-report";
10
11
  export function bundledSkillPath(skillName = PRIMARY_SKILL_NAME) {
11
12
  return path.join(PACKAGE_ROOT, "skills", skillName);
12
13
  }
@@ -15,22 +16,34 @@ export async function installSkill(options = {}) {
15
16
  const targetDir = path.resolve(cwd, options.targetDir ?? DEFAULT_SKILL_TARGET_DIR);
16
17
  const skillPath = path.join(targetDir, PRIMARY_SKILL_NAME);
17
18
  const audioSkillPath = path.join(targetDir, AUDIO_SKILL_NAME);
19
+ const reportSkillPath = path.join(targetDir, REPORT_SKILL_NAME);
18
20
  const mimirDir = path.resolve(cwd, MIMIR_DIR);
19
21
  const mcpConfigPath = path.join(mimirDir, "mcp.json");
22
+ const claudeConfigPath = path.join(mimirDir, "claude-mcp-server.json");
23
+ const codexConfigPath = path.join(mimirDir, "codex-mcp.toml");
20
24
  const readmePath = path.join(mimirDir, "README.md");
21
25
  await mkdir(targetDir, { recursive: true });
22
26
  await mkdir(mimirDir, { recursive: true });
23
27
  await cp(bundledSkillPath(PRIMARY_SKILL_NAME), skillPath, { recursive: true, force: true });
24
28
  await cp(bundledSkillPath(AUDIO_SKILL_NAME), audioSkillPath, { recursive: true, force: true });
29
+ await cp(bundledSkillPath(REPORT_SKILL_NAME), reportSkillPath, {
30
+ recursive: true,
31
+ force: true,
32
+ });
25
33
  const serveCommand = await kbCommand(cwd, ["serve-mcp"]);
26
34
  const doctorCommand = await kbCommand(cwd, ["doctor"]);
27
35
  await writeFile(mcpConfigPath, `${JSON.stringify(mcpConfig(cwd, serveCommand), null, 2)}\n`, "utf8");
28
- await writeFile(readmePath, agentKitReadme(skillPath, audioSkillPath, mcpConfigPath, serveCommand.display, doctorCommand.display), "utf8");
36
+ await writeFile(claudeConfigPath, `${JSON.stringify(claudeMcpServer(serveCommand), null, 2)}\n`, "utf8");
37
+ await writeFile(codexConfigPath, codexMcpConfig(cwd, serveCommand), "utf8");
38
+ await writeFile(readmePath, agentKitReadme(skillPath, audioSkillPath, reportSkillPath, mcpConfigPath, codexConfigPath, serveCommand.display, doctorCommand.display), "utf8");
29
39
  const wroteGitignore = await ensureMimirGitignore(cwd);
30
40
  const written = [
31
41
  path.relative(cwd, skillPath),
32
42
  path.relative(cwd, audioSkillPath),
43
+ path.relative(cwd, reportSkillPath),
33
44
  path.relative(cwd, mcpConfigPath),
45
+ path.relative(cwd, claudeConfigPath),
46
+ path.relative(cwd, codexConfigPath),
34
47
  path.relative(cwd, readmePath),
35
48
  ];
36
49
  if (wroteGitignore) {
@@ -39,7 +52,10 @@ export async function installSkill(options = {}) {
39
52
  return {
40
53
  skillPath,
41
54
  audioSkillPath,
55
+ reportSkillPath,
42
56
  mcpConfigPath,
57
+ claudeConfigPath,
58
+ codexConfigPath,
43
59
  readmePath,
44
60
  written,
45
61
  };
@@ -55,7 +71,28 @@ function mcpConfig(cwd, serveCommand) {
55
71
  },
56
72
  };
57
73
  }
58
- function agentKitReadme(skillPath, audioSkillPath, mcpConfigPath, serveCommand, doctorCommand) {
74
+ function claudeMcpServer(serveCommand) {
75
+ return {
76
+ type: "stdio",
77
+ command: serveCommand.command,
78
+ args: serveCommand.args,
79
+ };
80
+ }
81
+ function codexMcpConfig(cwd, serveCommand) {
82
+ return `[mcp_servers.mimir]
83
+ command = ${tomlString(serveCommand.command)}
84
+ args = ${tomlArray(serveCommand.args)}
85
+ cwd = ${tomlString(cwd)}
86
+
87
+ `;
88
+ }
89
+ function tomlArray(values) {
90
+ return `[${values.map(tomlString).join(", ")}]`;
91
+ }
92
+ function tomlString(value) {
93
+ return JSON.stringify(value);
94
+ }
95
+ function agentKitReadme(skillPath, audioSkillPath, reportSkillPath, mcpConfigPath, codexConfigPath, serveCommand, doctorCommand) {
59
96
  return `# Mimir Agent Kit
60
97
 
61
98
  This folder contains portable agent instructions for Mimir.
@@ -80,6 +117,15 @@ Use it only when the user asks for a listenable summary. It renders generated au
80
117
  local Mimir state by default. Use Transformers.js WAV for confidential content and Edge MP3 only
81
118
  when online TTS is explicitly acceptable.
82
119
 
120
+ Optional Markdown-report skill folder:
121
+
122
+ \`\`\`plain text
123
+ ${reportSkillPath}
124
+ \`\`\`
125
+
126
+ Use it when the user asks for a cited Markdown report, dossier, audit memo, or planning note. It
127
+ writes reports under ignored local Mimir state by default.
128
+
83
129
  ## MCP
84
130
 
85
131
  MCP config example:
@@ -94,6 +140,26 @@ Use the MCP server when your agent supports MCP tools. The server command is:
94
140
  ${serveCommand}
95
141
  \`\`\`
96
142
 
143
+ Claude Code local setup:
144
+
145
+ \`\`\`bash
146
+ claude mcp add-json --scope local mimir "$(cat ${MIMIR_DIR}/claude-mcp-server.json)"
147
+ \`\`\`
148
+
149
+ Run that command from this repository root. Mimir also reads \`CLAUDE_PROJECT_DIR\`, so the server
150
+ uses the active Claude Code project as the knowledge-base root.
151
+
152
+ For other MCP clients that cannot set a working directory, launch the server with
153
+ \`MIMIR_PROJECT_ROOT=/absolute/path/to/repository\`.
154
+
155
+ Codex setup:
156
+
157
+ \`\`\`plain text
158
+ ${codexConfigPath}
159
+ \`\`\`
160
+
161
+ Copy that TOML snippet into \`~/.codex/config.toml\` or another trusted Codex config layer.
162
+
97
163
  Before relying on retrieved context, run:
98
164
 
99
165
  \`\`\`bash
package/dist/skill.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -17,6 +17,9 @@ export interface Config {
17
17
  topK: number;
18
18
  chunkSize: number;
19
19
  chunkOverlap: number;
20
+ maxFileBytes: number;
21
+ ingestConcurrency: number;
22
+ embeddingBatchSize: number;
20
23
  includeExtensions: string[];
21
24
  }
22
25
  export type EmbeddingProvider = "local-hash" | "transformers";
@@ -44,6 +47,19 @@ export interface SourceFile {
44
47
  mtimeMs: number;
45
48
  checksum: string;
46
49
  }
50
+ export type SkippedSourceReason = "unsupported-extension" | "oversized" | "sensitive-name";
51
+ export interface SkippedSourceFile {
52
+ relativePath: string;
53
+ source: string;
54
+ extension: string;
55
+ bytes: number;
56
+ reason: SkippedSourceReason;
57
+ }
58
+ export interface SourceInventory {
59
+ discoveredFiles: number;
60
+ supportedFiles: SourceFile[];
61
+ skippedFiles: SkippedSourceFile[];
62
+ }
47
63
  export interface ParsedDocument {
48
64
  file: SourceFile;
49
65
  text: string;
@@ -66,9 +82,18 @@ export interface IngestOptions {
66
82
  rebuild?: boolean;
67
83
  }
68
84
  export interface IngestResult {
85
+ discoveredFiles: number;
86
+ supportedFiles: number;
69
87
  indexedFiles: number;
70
88
  chunks: number;
71
89
  skippedFiles: number;
90
+ unsupportedFiles: number;
91
+ oversizedFiles: number;
92
+ sensitiveFiles: number;
93
+ unsupportedExtensions: Array<{
94
+ extension: string;
95
+ count: number;
96
+ }>;
72
97
  redactions: number;
73
98
  errors: Array<{
74
99
  path: string;
@@ -96,6 +121,11 @@ export interface AuditReport {
96
121
  chunks: number;
97
122
  }>;
98
123
  supportedFiles: string[];
124
+ skippedFiles: SkippedSourceFile[];
125
+ unsupportedExtensions: Array<{
126
+ extension: string;
127
+ count: number;
128
+ }>;
99
129
  missingFromIndex: string[];
100
130
  staleInIndex: string[];
101
131
  totalChunks: number;
@@ -118,6 +148,8 @@ export interface DoctorReport {
118
148
  redactionEnabled: boolean;
119
149
  accessLog: boolean;
120
150
  supportedFiles: number;
151
+ skippedFiles: number;
152
+ unsupportedFiles: number;
121
153
  indexedFiles: number;
122
154
  chunksIndexed: number;
123
155
  missingFromIndex: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.4.6";
1
+ export declare const VERSION = "0.4.7";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.4.6";
1
+ export const VERSION = "0.4.7";
2
2
  //# sourceMappingURL=version.js.map
@@ -13,6 +13,7 @@ This folder must never contain real-world sensitive, regulated, or production do
13
13
  - JSONL incident timelines.
14
14
  - YAML policy metadata.
15
15
  - A custom `.evidence` text extension enabled through `.kb/config.json`.
16
+ - Unsupported/skipped-file reporting through `audit --unsupported`.
16
17
 
17
18
  ## Run From This Repository Checkout
18
19
 
@@ -32,6 +33,7 @@ node ../../dist/cli.js search "offline retrieval approval"
32
33
  node ../../dist/cli.js search "dataset residency"
33
34
  node ../../dist/cli.js ask "What evidence supports offline operation?"
34
35
  node ../../dist/cli.js audit
36
+ node ../../dist/cli.js audit --unsupported
35
37
  node ../../dist/cli.js status
36
38
  ```
37
39
 
@@ -46,6 +48,17 @@ Retrieval is lexical/hash-based rather than model-semantic.
46
48
  - `who owns the usage review`
47
49
  - `what documents support sovereign deployment`
48
50
 
51
+ ## Agent Report Prompt
52
+
53
+ After running `kb setup` in a real project, an MCP-compatible agent can use the generated
54
+ `.mimir/mcp.json`. For this synthetic demo, ask an agent:
55
+
56
+ ```plain text
57
+ Use Mimir to inspect the local knowledge base, search for "offline retrieval approval", and write a
58
+ cited Markdown report under .mimir/reports/demo-sovereign-rag.md. Mention any unsupported or stale
59
+ files reported by the audit.
60
+ ```
61
+
49
62
  ## Switch To Transformers Semantic Mode
50
63
 
51
64
  To compare no-model retrieval with semantic local retrieval, change `.kb/config.json`:
@@ -0,0 +1,3 @@
1
+ Synthetic placeholder for an unsupported scanned document format.
2
+
3
+ Convert scans to OCR text or PDF before expecting Mimir to index their content.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jcode.labs/mimir",
3
- "version": "0.4.6",
3
+ "version": "0.4.7",
4
4
  "description": "Mimir: open-source sovereign local RAG for confidential datasets and AI agents.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -65,7 +65,7 @@
65
65
  "unpdf": "^1.4.0",
66
66
  "yaml": "^2.8.1",
67
67
  "zod": "^4.1.13",
68
- "@jcode.labs/mimir-tts": "0.4.6"
68
+ "@jcode.labs/mimir-tts": "0.4.7"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@types/html-to-text": "^9.0.4",
@@ -23,6 +23,7 @@ private/ # raw documents to ingest
23
23
  .kb/sources.txt # optional extra source paths
24
24
  .kb/storage/ # generated local index
25
25
  .kb/access.log # metadata-only access log
26
+ .mimir/reports/ # generated local Markdown reports
26
27
  ```
27
28
 
28
29
  ## Data Safety
@@ -63,7 +64,7 @@ npx kb setup
63
64
  ```
64
65
 
65
66
  Use `status`, `audit`, and `security-audit` for deeper checks after `doctor` explains the current
66
- state.
67
+ state. Use `audit --unsupported` when files exist but may not have been indexed.
67
68
 
68
69
  ## Provider Modes
69
70
 
@@ -100,6 +101,7 @@ After documents are added or changed:
100
101
  ```bash
101
102
  pnpm exec kb doctor --fix
102
103
  pnpm exec kb audit
104
+ pnpm exec kb audit --unsupported
103
105
  pnpm exec kb security-audit
104
106
  pnpm exec kb status
105
107
  ```
@@ -160,6 +162,18 @@ If the agent supports MCP, configure a server for the repository:
160
162
  }
161
163
  ```
162
164
 
165
+ For Claude Code, run this from the target repository root after `pnpm exec kb setup`:
166
+
167
+ ```bash
168
+ claude mcp add-json --scope local mimir "$(cat .mimir/claude-mcp-server.json)"
169
+ ```
170
+
171
+ For Codex, copy `.mimir/codex-mcp.toml` into `~/.codex/config.toml` or another trusted Codex config
172
+ layer.
173
+
174
+ For other MCP clients that cannot set `cwd`, set `MIMIR_PROJECT_ROOT=/absolute/path/to/repository`
175
+ when launching `kb serve-mcp`.
176
+
163
177
  Available MCP tools:
164
178
 
165
179
  - `mimir_status`: show config and chunk count.
@@ -178,13 +192,26 @@ destroy-index --yes` from the shell when the user explicitly wants to remove the
178
192
  If the user asks for a listenable or TTS summary, load the optional
179
193
  `.mimir/skills/mimir-audio-summary/` skill installed by `pnpm exec kb setup`.
180
194
 
181
- That skill should:
195
+ The audio skill should:
182
196
 
183
197
  - gather evidence through Mimir first;
184
198
  - write narration text only to a temp file outside the repository;
185
199
  - render generated audio under `.mimir/audio/` by default;
186
200
  - prefer offline TTS engines for confidential content.
187
201
 
202
+ ## Optional Markdown Reports
203
+
204
+ If the user asks for a Markdown report, dossier, audit memo, planning note, or decision brief, load
205
+ the optional `.mimir/skills/mimir-markdown-report/` skill installed by `pnpm exec kb setup`.
206
+
207
+ The report skill should:
208
+
209
+ - gather evidence through multiple Mimir searches first;
210
+ - cite source paths and chunk numbers;
211
+ - separate facts, inference, uncertainty, and missing evidence;
212
+ - write reports under `.mimir/reports/` by default;
213
+ - keep generated reports uncommitted unless the user explicitly wants a sanitized tracked report.
214
+
188
215
  ## Installing This Skill Into A Repository
189
216
 
190
217
  Most repositories should run the full setup command:
@@ -204,11 +231,16 @@ This creates:
204
231
 
205
232
  ```plain text
206
233
  .mimir/skills/mimir/SKILL.md
234
+ .mimir/skills/mimir-audio-summary/SKILL.md
235
+ .mimir/skills/mimir-markdown-report/SKILL.md
207
236
  .mimir/mcp.json
237
+ .mimir/claude-mcp-server.json
238
+ .mimir/codex-mcp.toml
208
239
  .mimir/README.md
209
240
  ```
210
241
 
211
- Agents that understand skill folders can load `.mimir/skills/mimir/`. Other agents can read `.mimir/README.md` and `.mimir/mcp.json`.
242
+ Agents that understand skill folders can load `.mimir/skills/mimir/`. Other agents can read
243
+ `.mimir/README.md` and `.mimir/mcp.json`.
212
244
 
213
245
  ## Answer Style
214
246
 
@@ -33,6 +33,7 @@ From the repository root, run:
33
33
  pnpm exec kb doctor
34
34
  pnpm exec kb status
35
35
  pnpm exec kb audit
36
+ pnpm exec kb audit --unsupported
36
37
  pnpm exec kb security-audit
37
38
  ```
38
39
 
@@ -40,7 +41,7 @@ If the audit reports missing or stale files, run:
40
41
 
41
42
  ```bash
42
43
  pnpm exec kb doctor --fix
43
- pnpm exec kb audit
44
+ pnpm exec kb audit --unsupported
44
45
  ```
45
46
 
46
47
  `kb doctor --fix` rebuilds the index only when supported files are present and the privacy posture
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: mimir-markdown-report
3
+ description: >-
4
+ Create a cited Markdown report from a Mimir local knowledge base. Use when the user asks for a
5
+ report, dossier, audit memo, planning note, evidence summary, or Markdown deliverable grounded in
6
+ private repository documents indexed by Mimir.
7
+ ---
8
+
9
+ # Mimir Markdown Report
10
+
11
+ Use this skill to write a Markdown report from local Mimir evidence without leaking raw documents.
12
+ Generated reports are derived artifacts and should stay local unless the user explicitly decides a
13
+ sanitized report is safe to commit or share.
14
+
15
+ ## Confidentiality Rules
16
+
17
+ - Treat source documents, retrieved passages, notes, drafts, and generated reports as sensitive.
18
+ - Prefer writing reports under `.mimir/reports/`, which is ignored by Git when Mimir is installed.
19
+ - Do not commit generated reports by default.
20
+ - Do not paste long raw passages into the report. Use summaries, short cited extracts when needed,
21
+ and source references.
22
+ - Separate proven facts, inference, uncertainty, and missing evidence.
23
+ - For legal, tax, medical, immigration, financial, or compliance reports, include a professional
24
+ review section instead of presenting the report as final advice.
25
+
26
+ ## 1. Verify The Knowledge Base
27
+
28
+ From the repository root:
29
+
30
+ ```bash
31
+ pnpm exec kb doctor
32
+ pnpm exec kb audit
33
+ pnpm exec kb security-audit
34
+ ```
35
+
36
+ If files are missing, stale, or setup is incomplete:
37
+
38
+ ```bash
39
+ pnpm exec kb doctor --fix
40
+ pnpm exec kb audit --unsupported
41
+ ```
42
+
43
+ Do not write a final report from stale evidence unless the user explicitly accepts that limitation.
44
+
45
+ ## 2. Build An Evidence Plan
46
+
47
+ For a broad report, use multiple targeted retrieval passes instead of one generic query:
48
+
49
+ ```bash
50
+ pnpm exec kb search "<main report topic>" --top-k 8
51
+ pnpm exec kb search "<people, dates, amounts, obligations, risks, decisions>" --top-k 8
52
+ pnpm exec kb ask "<specific synthesis question>" --top-k 8
53
+ ```
54
+
55
+ When MCP is available, prefer `mimir_search`, `mimir_ask`, `mimir_audit`, and
56
+ `mimir_security_audit` over shell commands.
57
+
58
+ Keep a working note of source paths and chunk numbers for each claim you plan to include.
59
+
60
+ ## 3. Write The Report
61
+
62
+ Default report structure:
63
+
64
+ ```markdown
65
+ # <Report Title>
66
+
67
+ ## Scope
68
+
69
+ ## Executive Summary
70
+
71
+ ## Evidence Inventory
72
+
73
+ ## Findings
74
+
75
+ ## Risks And Open Questions
76
+
77
+ ## Recommended Next Actions
78
+
79
+ ## Sources
80
+ ```
81
+
82
+ Use tables only when they make comparisons easier. Keep each finding tied to one or more source
83
+ paths and chunk numbers when possible.
84
+
85
+ ## 4. Save Locally
86
+
87
+ Create the report directory:
88
+
89
+ ```bash
90
+ mkdir -p .mimir/reports
91
+ ```
92
+
93
+ Write the report to:
94
+
95
+ ```plain text
96
+ .mimir/reports/<subject-kebab>.md
97
+ ```
98
+
99
+ If the user explicitly wants a tracked report, create a sanitized file outside `.mimir/` and state
100
+ which private details were excluded.
101
+
102
+ ## 5. Report The Result
103
+
104
+ After writing the report, tell the user:
105
+
106
+ - the report path;
107
+ - whether the index was ready;
108
+ - how many source paths were used;
109
+ - any unsupported, stale, or missing files that weaken the report;
110
+ - whether the report is safe to commit or should remain local.