mindlore 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +33 -0
- package/.claude-plugin/plugin.json +30 -0
- package/dist/scripts/init.js +164 -151
- package/dist/scripts/init.js.map +1 -1
- package/dist/scripts/lib/detect-plugin.d.ts +2 -0
- package/dist/scripts/lib/detect-plugin.d.ts.map +1 -0
- package/dist/scripts/lib/detect-plugin.js +14 -0
- package/dist/scripts/lib/detect-plugin.js.map +1 -0
- package/dist/scripts/lib/settings-cleanup.d.ts +6 -0
- package/dist/scripts/lib/settings-cleanup.d.ts.map +1 -0
- package/dist/scripts/lib/settings-cleanup.js +61 -0
- package/dist/scripts/lib/settings-cleanup.js.map +1 -0
- package/dist/scripts/mcp-server.js +40 -3
- package/dist/scripts/mcp-server.js.map +1 -1
- package/dist/scripts/mindlore-doctor.d.ts +1 -1
- package/dist/scripts/mindlore-doctor.d.ts.map +1 -1
- package/dist/scripts/mindlore-doctor.js +9 -35
- package/dist/scripts/mindlore-doctor.js.map +1 -1
- package/dist/scripts/uninstall.js +14 -38
- package/dist/scripts/uninstall.js.map +1 -1
- package/dist/tests/db-singleton.test.d.ts +2 -0
- package/dist/tests/db-singleton.test.d.ts.map +1 -0
- package/dist/tests/db-singleton.test.js +22 -0
- package/dist/tests/db-singleton.test.js.map +1 -0
- package/dist/tests/doctor.test.js +6 -15
- package/dist/tests/doctor.test.js.map +1 -1
- package/dist/tests/install-matrix.test.d.ts +2 -0
- package/dist/tests/install-matrix.test.d.ts.map +1 -0
- package/dist/tests/install-matrix.test.js +110 -0
- package/dist/tests/install-matrix.test.js.map +1 -0
- package/dist/tests/settings-cleanup.test.d.ts +2 -0
- package/dist/tests/settings-cleanup.test.d.ts.map +1 -0
- package/dist/tests/settings-cleanup.test.js +126 -0
- package/dist/tests/settings-cleanup.test.js.map +1 -0
- package/dist/tests/version-sync.test.d.ts +2 -0
- package/dist/tests/version-sync.test.d.ts.map +1 -0
- package/dist/tests/version-sync.test.js +41 -0
- package/dist/tests/version-sync.test.js.map +1 -0
- package/package.json +2 -1
- package/plugin.json +5 -2
- package/skills/mindlore-decide/SKILL.md +7 -0
- package/skills/mindlore-log/SKILL.md +7 -0
- package/templates/config.json +1 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const os_1 = __importDefault(require("os"));
|
|
9
|
+
const settings_cleanup_js_1 = require("../scripts/lib/settings-cleanup.js");
|
|
10
|
+
const FIXTURES = path_1.default.join(__dirname, 'fixtures');
|
|
11
|
+
function loadFixture(name) {
|
|
12
|
+
const tmpDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'mindlore-test-'));
|
|
13
|
+
const src = path_1.default.join(FIXTURES, name);
|
|
14
|
+
const dest = path_1.default.join(tmpDir, 'settings.json');
|
|
15
|
+
fs_1.default.copyFileSync(src, dest);
|
|
16
|
+
return dest;
|
|
17
|
+
}
|
|
18
|
+
function readJson(filePath) {
|
|
19
|
+
return JSON.parse(fs_1.default.readFileSync(filePath, 'utf8'));
|
|
20
|
+
}
|
|
21
|
+
afterEach(() => {
|
|
22
|
+
// tmpdir cleanup handled by OS
|
|
23
|
+
});
|
|
24
|
+
describe('cleanupLegacyHooks', () => {
|
|
25
|
+
it('removes hooks with node_modules/mindlore/hooks/ path', () => {
|
|
26
|
+
const settingsPath = loadFixture('settings-with-mindlore-hooks.json');
|
|
27
|
+
const result = (0, settings_cleanup_js_1.cleanupLegacyHooks)(settingsPath);
|
|
28
|
+
expect(result.removed).toBe(4);
|
|
29
|
+
expect(result.backupCreated).toBe(true);
|
|
30
|
+
const settings = readJson(settingsPath);
|
|
31
|
+
/* eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- test fixture shape */
|
|
32
|
+
const hooks = settings.hooks;
|
|
33
|
+
// PreToolUse should keep only bash-guard (user hook)
|
|
34
|
+
expect(hooks.PreToolUse).toHaveLength(1);
|
|
35
|
+
// SessionStart had only mindlore hook → event key removed
|
|
36
|
+
expect(hooks.SessionStart).toBeUndefined();
|
|
37
|
+
// UserPromptSubmit had only mindlore hook → event key removed
|
|
38
|
+
expect(hooks.UserPromptSubmit).toBeUndefined();
|
|
39
|
+
});
|
|
40
|
+
it('does nothing on clean settings.json (no mindlore hooks)', () => {
|
|
41
|
+
const settingsPath = loadFixture('settings-clean.json');
|
|
42
|
+
const result = (0, settings_cleanup_js_1.cleanupLegacyHooks)(settingsPath);
|
|
43
|
+
expect(result.removed).toBe(0);
|
|
44
|
+
expect(result.backupCreated).toBe(false);
|
|
45
|
+
});
|
|
46
|
+
it('preserves user custom hooks with mindlore- prefix but non-node_modules path', () => {
|
|
47
|
+
const settingsPath = loadFixture('settings-mixed-hooks.json');
|
|
48
|
+
const result = (0, settings_cleanup_js_1.cleanupLegacyHooks)(settingsPath);
|
|
49
|
+
expect(result.removed).toBe(2); // read-guard + session-end
|
|
50
|
+
const settings = readJson(settingsPath);
|
|
51
|
+
/* eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- test fixture shape */
|
|
52
|
+
const hooks = settings.hooks;
|
|
53
|
+
// PreToolUse: bash-guard + user custom mindlore hook kept, node_modules one removed
|
|
54
|
+
expect(hooks.PreToolUse).toHaveLength(2);
|
|
55
|
+
// SessionEnd had only node_modules hook → removed
|
|
56
|
+
expect(hooks.SessionEnd).toBeUndefined();
|
|
57
|
+
});
|
|
58
|
+
it('creates backup file before modifying', () => {
|
|
59
|
+
const settingsPath = loadFixture('settings-with-mindlore-hooks.json');
|
|
60
|
+
const backupPath = settingsPath + '.mindlore-migration-backup';
|
|
61
|
+
(0, settings_cleanup_js_1.cleanupLegacyHooks)(settingsPath);
|
|
62
|
+
expect(fs_1.default.existsSync(backupPath)).toBe(true);
|
|
63
|
+
// Backup should be the original content
|
|
64
|
+
const backup = readJson(backupPath);
|
|
65
|
+
/* eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- test fixture shape */
|
|
66
|
+
const hooks = backup.hooks;
|
|
67
|
+
expect(hooks.PreToolUse).toHaveLength(3);
|
|
68
|
+
});
|
|
69
|
+
it('does not overwrite existing backup', () => {
|
|
70
|
+
const settingsPath = loadFixture('settings-with-mindlore-hooks.json');
|
|
71
|
+
const backupPath = settingsPath + '.mindlore-migration-backup';
|
|
72
|
+
// Create fake backup first
|
|
73
|
+
fs_1.default.writeFileSync(backupPath, '{"fake": true}', 'utf8');
|
|
74
|
+
(0, settings_cleanup_js_1.cleanupLegacyHooks)(settingsPath);
|
|
75
|
+
// Original fake backup should be preserved
|
|
76
|
+
const backup = readJson(backupPath);
|
|
77
|
+
expect(backup.fake).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
it('returns correct result when settings.json does not exist', () => {
|
|
80
|
+
const result = (0, settings_cleanup_js_1.cleanupLegacyHooks)('/nonexistent/path/settings.json');
|
|
81
|
+
expect(result.removed).toBe(0);
|
|
82
|
+
expect(result.backupCreated).toBe(false);
|
|
83
|
+
});
|
|
84
|
+
it('is idempotent — second run removes nothing', () => {
|
|
85
|
+
const settingsPath = loadFixture('settings-with-mindlore-hooks.json');
|
|
86
|
+
const first = (0, settings_cleanup_js_1.cleanupLegacyHooks)(settingsPath);
|
|
87
|
+
expect(first.removed).toBe(4);
|
|
88
|
+
const second = (0, settings_cleanup_js_1.cleanupLegacyHooks)(settingsPath);
|
|
89
|
+
expect(second.removed).toBe(0);
|
|
90
|
+
expect(second.backupCreated).toBe(false);
|
|
91
|
+
});
|
|
92
|
+
it('handles both forward-slash and backslash node_modules paths', () => {
|
|
93
|
+
const settingsPath = loadFixture('settings-with-mindlore-hooks.json');
|
|
94
|
+
const result = (0, settings_cleanup_js_1.cleanupLegacyHooks)(settingsPath);
|
|
95
|
+
// All fixtures use backslash (Windows) — verify they're caught
|
|
96
|
+
expect(result.removed).toBeGreaterThan(0);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe('init.ts plugin gate verification', () => {
|
|
100
|
+
it('init.ts should have detectPluginInstalled gate', () => {
|
|
101
|
+
const initSource = fs_1.default.readFileSync(path_1.default.join(__dirname, '..', 'scripts', 'init.ts'), 'utf8');
|
|
102
|
+
expect(initSource).toContain('detectPluginInstalled');
|
|
103
|
+
});
|
|
104
|
+
it('init.ts should have both mergeHooks and cleanupLegacyHooks (gated)', () => {
|
|
105
|
+
const initSource = fs_1.default.readFileSync(path_1.default.join(__dirname, '..', 'scripts', 'init.ts'), 'utf8');
|
|
106
|
+
expect(initSource).toContain('mergeHooks');
|
|
107
|
+
expect(initSource).toContain('cleanupLegacyHooks');
|
|
108
|
+
});
|
|
109
|
+
it('init.ts should have registerSkills and registerAgents for npx-only path', () => {
|
|
110
|
+
const initSource = fs_1.default.readFileSync(path_1.default.join(__dirname, '..', 'scripts', 'init.ts'), 'utf8');
|
|
111
|
+
expect(initSource).toContain('registerSkills');
|
|
112
|
+
expect(initSource).toContain('registerAgents');
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe('uninstall.ts shared module usage', () => {
|
|
116
|
+
it('uninstall.ts should not contain inline removeHooks implementation', () => {
|
|
117
|
+
const uninstallSource = fs_1.default.readFileSync(path_1.default.join(__dirname, '..', 'scripts', 'uninstall.ts'), 'utf8');
|
|
118
|
+
// Should not have inline hook filtering logic
|
|
119
|
+
expect(uninstallSource).not.toContain("includes('mindlore-')");
|
|
120
|
+
});
|
|
121
|
+
it('uninstall.ts should import from settings-cleanup', () => {
|
|
122
|
+
const uninstallSource = fs_1.default.readFileSync(path_1.default.join(__dirname, '..', 'scripts', 'uninstall.ts'), 'utf8');
|
|
123
|
+
expect(uninstallSource).toContain('settings-cleanup');
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=settings-cleanup.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-cleanup.test.js","sourceRoot":"","sources":["../../tests/settings-cleanup.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-sync.test.d.ts","sourceRoot":"","sources":["../../tests/version-sync.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
function readJsonVersion(filePath, ...keys) {
|
|
9
|
+
const content = JSON.parse(fs_1.default.readFileSync(filePath, 'utf8'));
|
|
10
|
+
let value = content;
|
|
11
|
+
for (const key of keys) {
|
|
12
|
+
value = value[key];
|
|
13
|
+
}
|
|
14
|
+
/* eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- JSON traversal returns any */
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
describe('Version Sync', () => {
|
|
18
|
+
const root = path_1.default.resolve(__dirname, '..');
|
|
19
|
+
const versions = () => ({
|
|
20
|
+
packageJson: readJsonVersion(path_1.default.join(root, 'package.json'), 'version'),
|
|
21
|
+
pluginJson: readJsonVersion(path_1.default.join(root, 'plugin.json'), 'version'),
|
|
22
|
+
claudePluginJson: readJsonVersion(path_1.default.join(root, '.claude-plugin', 'plugin.json'), 'version'),
|
|
23
|
+
marketplaceMeta: readJsonVersion(path_1.default.join(root, '.claude-plugin', 'marketplace.json'), 'metadata', 'version'),
|
|
24
|
+
marketplacePlugin: readJsonVersion(path_1.default.join(root, '.claude-plugin', 'marketplace.json'), 'plugins', '0', 'version'),
|
|
25
|
+
});
|
|
26
|
+
it('all 5 version fields are equal', () => {
|
|
27
|
+
const v = versions();
|
|
28
|
+
const allVersions = Object.values(v);
|
|
29
|
+
const unique = new Set(allVersions);
|
|
30
|
+
expect(unique.size).toBe(1);
|
|
31
|
+
// Extra detail on failure
|
|
32
|
+
if (unique.size !== 1) {
|
|
33
|
+
console.log('Version mismatch:', v);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
it('version matches semver pattern', () => {
|
|
37
|
+
const v = versions();
|
|
38
|
+
expect(v.packageJson).toMatch(/^\d+\.\d+\.\d+$/);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=version-sync.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-sync.test.js","sourceRoot":"","sources":["../../tests/version-sync.test.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAExB,SAAS,eAAe,CAAC,QAAgB,EAAE,GAAG,IAAc;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9D,IAAI,KAAK,GAAG,OAAO,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,wGAAwG;IACxG,OAAO,KAAe,CAAC;AACzB,CAAC;AAED,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,MAAM,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE3C,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC;QACtB,WAAW,EAAE,eAAe,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,SAAS,CAAC;QACxE,UAAU,EAAE,eAAe,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC;QACtE,gBAAgB,EAAE,eAAe,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC;QAC9F,eAAe,EAAE,eAAe,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC;QAC9G,iBAAiB,EAAE,eAAe,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC;KACrH,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;QAEpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,0BAA0B;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mindlore",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.3",
|
|
4
4
|
"description": "AI-native knowledge system for Claude Code",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"bin": {
|
|
@@ -71,6 +71,7 @@
|
|
|
71
71
|
"typescript": "^6.0.2"
|
|
72
72
|
},
|
|
73
73
|
"files": [
|
|
74
|
+
".claude-plugin/",
|
|
74
75
|
"agents/",
|
|
75
76
|
"dist/",
|
|
76
77
|
"hooks/",
|
package/plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"manifestVersion": 2,
|
|
3
3
|
"name": "mindlore",
|
|
4
4
|
"description": "AI-native knowledge system for Claude Code. Persistent, searchable, evolving knowledge base with FTS5 and Knowledge Graph.",
|
|
5
|
-
"version": "0.7.
|
|
5
|
+
"version": "0.7.3",
|
|
6
6
|
"skills": [
|
|
7
7
|
{
|
|
8
8
|
"name": "mindlore-ingest",
|
|
@@ -80,10 +80,13 @@
|
|
|
80
80
|
"mcpServers": {
|
|
81
81
|
"mindlore": {
|
|
82
82
|
"command": "node",
|
|
83
|
-
"args": [
|
|
83
|
+
"args": [
|
|
84
|
+
"${CLAUDE_PLUGIN_ROOT}/mcp-server.cjs"
|
|
85
|
+
],
|
|
84
86
|
"description": "Mindlore MCP server: FTS5 search, episodic memory, knowledge graph relations, and KB management"
|
|
85
87
|
}
|
|
86
88
|
},
|
|
89
|
+
"_hooks_note": "Hooks loaded by CC plugin auto-discovery from hooks/ directory. This array is metadata only — not read by CC or init.",
|
|
87
90
|
"hooks": [
|
|
88
91
|
{
|
|
89
92
|
"event": "SessionStart",
|
package/templates/config.json
CHANGED