@jcode.labs/mimir 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +49 -0
  3. package/SECURITY-HARDENING.md +156 -0
  4. package/SECURITY.md +21 -0
  5. package/dist/access-log.d.ts +10 -0
  6. package/dist/access-log.d.ts.map +1 -0
  7. package/dist/access-log.js +29 -0
  8. package/dist/access-log.js.map +1 -0
  9. package/dist/cli.js +53 -1
  10. package/dist/cli.js.map +1 -1
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +49 -0
  13. package/dist/config.js.map +1 -1
  14. package/dist/destroy.d.ts +3 -0
  15. package/dist/destroy.d.ts.map +1 -0
  16. package/dist/destroy.js +16 -0
  17. package/dist/destroy.js.map +1 -0
  18. package/dist/embeddings.d.ts.map +1 -1
  19. package/dist/embeddings.js +2 -0
  20. package/dist/embeddings.js.map +1 -1
  21. package/dist/files.js +1 -1
  22. package/dist/files.js.map +1 -1
  23. package/dist/index.d.ts +4 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +3 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/ingest.d.ts.map +1 -1
  28. package/dist/ingest.js +12 -1
  29. package/dist/ingest.js.map +1 -1
  30. package/dist/init.d.ts.map +1 -1
  31. package/dist/init.js +9 -0
  32. package/dist/init.js.map +1 -1
  33. package/dist/mcp.d.ts.map +1 -1
  34. package/dist/mcp.js +15 -4
  35. package/dist/mcp.js.map +1 -1
  36. package/dist/network.d.ts +4 -0
  37. package/dist/network.d.ts.map +1 -0
  38. package/dist/network.js +59 -0
  39. package/dist/network.js.map +1 -0
  40. package/dist/query.d.ts.map +1 -1
  41. package/dist/query.js +17 -1
  42. package/dist/query.js.map +1 -1
  43. package/dist/redaction.d.ts +7 -0
  44. package/dist/redaction.d.ts.map +1 -0
  45. package/dist/redaction.js +63 -0
  46. package/dist/redaction.js.map +1 -0
  47. package/dist/security.d.ts +3 -0
  48. package/dist/security.d.ts.map +1 -0
  49. package/dist/security.js +86 -0
  50. package/dist/security.js.map +1 -0
  51. package/dist/types.d.ts +67 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/dist/version.d.ts +1 -1
  54. package/dist/version.js +1 -1
  55. package/package.json +7 -3
  56. package/skills/mimir/SKILL.md +12 -2
package/dist/types.d.ts CHANGED
@@ -4,14 +4,39 @@ export interface Config {
4
4
  rawDir: string;
5
5
  storageDir: string;
6
6
  sourcesFile: string;
7
+ accessLogPath: string;
7
8
  tableName: string;
8
9
  ollamaHost: string;
10
+ networkPolicy: NetworkPolicy;
9
11
  embedModel: string;
10
12
  llmModel: string;
13
+ redaction: RedactionConfig;
14
+ accessLog: boolean;
15
+ mcpMaxTopK: number;
11
16
  topK: number;
12
17
  chunkSize: number;
13
18
  chunkOverlap: number;
14
19
  }
20
+ export type NetworkPolicy = "local-only" | "allow-private" | "allow-any";
21
+ export interface RedactionConfig {
22
+ enabled: boolean;
23
+ builtIn: boolean;
24
+ patterns: RedactionPattern[];
25
+ }
26
+ export interface RedactionPattern {
27
+ name: string;
28
+ pattern: string;
29
+ flags?: string | undefined;
30
+ replacement?: string | undefined;
31
+ }
32
+ export interface RedactionCount {
33
+ name: string;
34
+ count: number;
35
+ }
36
+ export interface HostClassification {
37
+ kind: "loopback" | "private" | "remote" | "invalid";
38
+ host: string;
39
+ }
15
40
  export interface SourceFile {
16
41
  absolutePath: string;
17
42
  relativePath: string;
@@ -46,6 +71,7 @@ export interface IngestResult {
46
71
  indexedFiles: number;
47
72
  chunks: number;
48
73
  skippedFiles: number;
74
+ redactions: number;
49
75
  errors: Array<{
50
76
  path: string;
51
77
  message: string;
@@ -76,4 +102,45 @@ export interface AuditReport {
76
102
  staleInIndex: string[];
77
103
  totalChunks: number;
78
104
  }
105
+ export interface DestroyIndexResult {
106
+ storageDir: string;
107
+ removed: boolean;
108
+ note: string;
109
+ }
110
+ export interface SecurityAuditReport {
111
+ projectRoot: string;
112
+ zeroTelemetry: true;
113
+ network: {
114
+ policy: NetworkPolicy;
115
+ ollamaHost: string;
116
+ host: string;
117
+ classification: HostClassification["kind"];
118
+ };
119
+ redaction: {
120
+ enabled: boolean;
121
+ builtIn: boolean;
122
+ customPatterns: string[];
123
+ };
124
+ accessLog: {
125
+ enabled: boolean;
126
+ path: string;
127
+ storesRawQueries: false;
128
+ };
129
+ storage: {
130
+ path: string;
131
+ gitIgnored: boolean;
132
+ encryptedAtRest: "external-required";
133
+ };
134
+ mcp: {
135
+ maxTopK: number;
136
+ destructiveToolsExposed: false;
137
+ };
138
+ gitignore: {
139
+ kbIgnored: boolean;
140
+ mimirIgnored: boolean;
141
+ privateIgnored: boolean;
142
+ };
143
+ recommendations: string[];
144
+ warnings: string[];
145
+ }
79
146
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,QAAQ,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,QAAQ,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvD,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;CACpB"}
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.2.1";
1
+ export declare const VERSION = "0.3.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.2.1";
1
+ export const VERSION = "0.3.0";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jcode.labs/mimir",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Mimir: open-source local-first memory and retrieval for private project knowledge.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -42,7 +42,10 @@
42
42
  "files": [
43
43
  "dist",
44
44
  "skills",
45
- "README.md"
45
+ "README.md",
46
+ "SECURITY-HARDENING.md",
47
+ "CHANGELOG.md",
48
+ "SECURITY.md"
46
49
  ],
47
50
  "publishConfig": {
48
51
  "access": "public"
@@ -55,9 +58,10 @@
55
58
  "lint": "biome ci .",
56
59
  "lint:fix": "biome check --write .",
57
60
  "package:check": "publint",
61
+ "release:artifacts": "node scripts/release-artifacts.mjs",
58
62
  "smoke": "node scripts/smoke.mjs",
59
63
  "test": "vitest run",
60
- "validate": "pnpm lint && pnpm check && pnpm test && pnpm build && pnpm smoke && pnpm package:check"
64
+ "validate": "pnpm lint && pnpm check && pnpm test && pnpm build && pnpm smoke && pnpm package:check && pnpm release:artifacts"
61
65
  },
62
66
  "dependencies": {
63
67
  "@lancedb/lancedb": "^0.30.0",
@@ -20,12 +20,15 @@ private/ # raw documents to ingest
20
20
  .kb/config.json # local Mimir config
21
21
  .kb/sources.txt # optional extra source paths
22
22
  .kb/storage/ # generated local index
23
+ .kb/access.log # metadata-only access log
23
24
  ```
24
25
 
25
26
  ## Data Safety
26
27
 
27
28
  - Do not commit raw documents, secrets, tax IDs, scans, bank documents, tokens, or generated vector stores.
28
- - Keep `private/**` and `.kb/storage/**` ignored by Git.
29
+ - Keep `private/**`, `.kb/`, and `.mimir/` ignored by Git.
30
+ - Treat `kb search`, `kb ask`, and MCP results as sensitive because they can contain private
31
+ source passages even when redaction is enabled.
29
32
  - Prefer summaries and citations over dumping long private passages into the chat.
30
33
  - If the user asks for a high-stakes answer, identify which facts came from Mimir and which still require professional or official verification.
31
34
 
@@ -35,6 +38,7 @@ From the repository root:
35
38
 
36
39
  ```bash
37
40
  pnpm exec kb status
41
+ pnpm exec kb security-audit
38
42
  ```
39
43
 
40
44
  If Mimir is not installed:
@@ -58,10 +62,12 @@ After documents are added or changed:
58
62
  ```bash
59
63
  pnpm exec kb ingest
60
64
  pnpm exec kb audit
65
+ pnpm exec kb security-audit
61
66
  pnpm exec kb status
62
67
  ```
63
68
 
64
- The audit must show no missing or stale supported files before relying on the index.
69
+ The audit must show no missing or stale supported files before relying on the index. The security
70
+ audit should not show warnings before relying on Mimir for sensitive work.
65
71
 
66
72
  ## Query Workflow
67
73
 
@@ -101,9 +107,13 @@ Available MCP tools:
101
107
  - `mimir_search`: retrieve source passages.
102
108
  - `mimir_ask`: synthesize an answer with local citations.
103
109
  - `mimir_audit`: compare source files with the current index.
110
+ - `mimir_security_audit`: inspect local privacy, network, redaction, MCP, and gitignore posture.
104
111
 
105
112
  Prefer MCP tools over shell commands when the agent runtime provides them. Use shell commands when MCP is unavailable.
106
113
 
114
+ MCP is read-focused and intentionally does not expose index deletion. Use `pnpm exec kb
115
+ destroy-index --yes` from the shell when the user explicitly wants to remove the generated index.
116
+
107
117
  ## Installing This Skill Into A Repository
108
118
 
109
119
  Run: