maxsimcli 3.11.0 → 3.12.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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/assets/CHANGELOG.md +19 -0
- package/dist/assets/dashboard/client/assets/index-CxFKStBk.css +32 -0
- package/dist/assets/dashboard/client/assets/{index-CZ8WC97G.js → index-wtQDvXzr.js} +64 -64
- package/dist/assets/dashboard/client/index.html +2 -2
- package/dist/assets/templates/agents/AGENTS.md +82 -0
- package/dist/assets/templates/commands/maxsim/settings.md +1 -1
- package/dist/assets/templates/skills/code-review/SKILL.md +151 -0
- package/dist/assets/templates/skills/memory-management/SKILL.md +174 -0
- package/dist/assets/templates/skills/simplify/SKILL.md +137 -0
- package/dist/assets/templates/skills/using-maxsim/SKILL.md +115 -0
- package/dist/assets/templates/templates/config.json +1 -1
- package/dist/assets/templates/workflows/add-tests.md +3 -3
- package/dist/assets/templates/workflows/complete-milestone.md +1 -1
- package/dist/assets/templates/workflows/execute-phase.md +4 -14
- package/dist/assets/templates/workflows/init-existing.md +7 -3
- package/dist/assets/templates/workflows/new-milestone.md +4 -0
- package/dist/assets/templates/workflows/new-project.md +6 -2
- package/dist/assets/templates/workflows/plan-phase.md +2 -2
- package/dist/assets/templates/workflows/settings.md +8 -4
- package/dist/assets/templates/workflows/verify-work.md +1 -1
- package/dist/cli.cjs +265 -161
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +73 -204
- package/dist/cli.js.map +1 -1
- package/dist/core/commands.d.ts.map +1 -1
- package/dist/core/commands.js +4 -1
- package/dist/core/commands.js.map +1 -1
- package/dist/core/core.d.ts +18 -0
- package/dist/core/core.d.ts.map +1 -1
- package/dist/core/core.js +43 -13
- package/dist/core/core.js.map +1 -1
- package/dist/core/dashboard-launcher.d.ts +56 -0
- package/dist/core/dashboard-launcher.d.ts.map +1 -0
- package/dist/core/dashboard-launcher.js +243 -0
- package/dist/core/dashboard-launcher.js.map +1 -0
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +20 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/init.d.ts +0 -1
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +0 -1
- package/dist/core/init.js.map +1 -1
- package/dist/core/phase.d.ts.map +1 -1
- package/dist/core/phase.js +7 -1
- package/dist/core/phase.js.map +1 -1
- package/dist/core/roadmap.d.ts.map +1 -1
- package/dist/core/roadmap.js +1 -0
- package/dist/core/roadmap.js.map +1 -1
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +7 -5
- package/dist/core/state.js.map +1 -1
- package/dist/core/types.d.ts +1 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +1 -2
- package/dist/core/types.js.map +1 -1
- package/dist/install/adapters.d.ts +15 -0
- package/dist/install/adapters.d.ts.map +1 -0
- package/dist/install/adapters.js +203 -0
- package/dist/install/adapters.js.map +1 -0
- package/dist/install/copy.d.ts +15 -0
- package/dist/install/copy.d.ts.map +1 -0
- package/dist/install/copy.js +191 -0
- package/dist/install/copy.js.map +1 -0
- package/dist/install/dashboard.d.ts +16 -0
- package/dist/install/dashboard.d.ts.map +1 -0
- package/dist/install/dashboard.js +273 -0
- package/dist/install/dashboard.js.map +1 -0
- package/dist/install/hooks.d.ts +32 -0
- package/dist/install/hooks.d.ts.map +1 -0
- package/dist/install/hooks.js +285 -0
- package/dist/install/hooks.js.map +1 -0
- package/dist/install/index.d.ts +2 -0
- package/dist/install/index.d.ts.map +1 -0
- package/dist/install/index.js +598 -0
- package/dist/install/index.js.map +1 -0
- package/dist/install/manifest.d.ts +20 -0
- package/dist/install/manifest.d.ts.map +1 -0
- package/dist/install/manifest.js +135 -0
- package/dist/install/manifest.js.map +1 -0
- package/dist/install/patches.d.ts +11 -0
- package/dist/install/patches.d.ts.map +1 -0
- package/dist/install/patches.js +136 -0
- package/dist/install/patches.js.map +1 -0
- package/dist/install/shared.d.ts +50 -0
- package/dist/install/shared.d.ts.map +1 -0
- package/dist/install/shared.js +142 -0
- package/dist/install/shared.js.map +1 -0
- package/dist/install/uninstall.d.ts +6 -0
- package/dist/install/uninstall.d.ts.map +1 -0
- package/dist/install/uninstall.js +280 -0
- package/dist/install/uninstall.js.map +1 -0
- package/dist/install.cjs +763 -709
- package/dist/install.cjs.map +1 -1
- package/dist/mcp-server.cjs.map +1 -1
- package/package.json +1 -1
- package/dist/assets/dashboard/client/assets/index-DzJChB-D.css +0 -32
- package/dist/install.d.ts +0 -2
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js +0 -1841
- package/dist/install.js.map +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RuntimeName } from '../adapters/index.js';
|
|
2
|
+
export declare const MANIFEST_NAME = "maxsim-file-manifest.json";
|
|
3
|
+
/**
|
|
4
|
+
* Compute SHA256 hash of file contents
|
|
5
|
+
*/
|
|
6
|
+
export declare function fileHash(filePath: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Recursively collect all files in dir with their hashes
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateManifest(dir: string, baseDir?: string): Record<string, string>;
|
|
11
|
+
export interface Manifest {
|
|
12
|
+
version: string;
|
|
13
|
+
timestamp: string;
|
|
14
|
+
files: Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Write file manifest after installation for future modification detection
|
|
18
|
+
*/
|
|
19
|
+
export declare function writeManifest(configDir: string, runtime?: RuntimeName): Manifest;
|
|
20
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/install/manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,eAAO,MAAM,aAAa,8BAA8B,CAAC;AAEzD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,WAAsB,GAC9B,QAAQ,CAiEV"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.MANIFEST_NAME = void 0;
|
|
37
|
+
exports.fileHash = fileHash;
|
|
38
|
+
exports.generateManifest = generateManifest;
|
|
39
|
+
exports.writeManifest = writeManifest;
|
|
40
|
+
const fs = __importStar(require("node:fs"));
|
|
41
|
+
const path = __importStar(require("node:path"));
|
|
42
|
+
const crypto = __importStar(require("node:crypto"));
|
|
43
|
+
const shared_js_1 = require("./shared.js");
|
|
44
|
+
const copy_js_1 = require("./copy.js");
|
|
45
|
+
exports.MANIFEST_NAME = 'maxsim-file-manifest.json';
|
|
46
|
+
/**
|
|
47
|
+
* Compute SHA256 hash of file contents
|
|
48
|
+
*/
|
|
49
|
+
function fileHash(filePath) {
|
|
50
|
+
const content = fs.readFileSync(filePath);
|
|
51
|
+
return crypto.createHash('sha256').update(content).digest('hex');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Recursively collect all files in dir with their hashes
|
|
55
|
+
*/
|
|
56
|
+
function generateManifest(dir, baseDir) {
|
|
57
|
+
if (!baseDir)
|
|
58
|
+
baseDir = dir;
|
|
59
|
+
const manifest = {};
|
|
60
|
+
if (!fs.existsSync(dir))
|
|
61
|
+
return manifest;
|
|
62
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
63
|
+
for (const entry of entries) {
|
|
64
|
+
const fullPath = path.join(dir, entry.name);
|
|
65
|
+
const relPath = path.relative(baseDir, fullPath).replace(/\\/g, '/');
|
|
66
|
+
if (entry.isDirectory()) {
|
|
67
|
+
Object.assign(manifest, generateManifest(fullPath, baseDir));
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
manifest[relPath] = fileHash(fullPath);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return manifest;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Write file manifest after installation for future modification detection
|
|
77
|
+
*/
|
|
78
|
+
function writeManifest(configDir, runtime = 'claude') {
|
|
79
|
+
const isOpencode = runtime === 'opencode';
|
|
80
|
+
const isCodex = runtime === 'codex';
|
|
81
|
+
const maxsimDir = path.join(configDir, 'maxsim');
|
|
82
|
+
const commandsDir = path.join(configDir, 'commands', 'maxsim');
|
|
83
|
+
const opencodeCommandDir = path.join(configDir, 'command');
|
|
84
|
+
const codexSkillsDir = path.join(configDir, 'skills');
|
|
85
|
+
const agentsDir = path.join(configDir, 'agents');
|
|
86
|
+
const manifest = {
|
|
87
|
+
version: shared_js_1.pkg.version,
|
|
88
|
+
timestamp: new Date().toISOString(),
|
|
89
|
+
files: {},
|
|
90
|
+
};
|
|
91
|
+
const maxsimHashes = generateManifest(maxsimDir);
|
|
92
|
+
for (const [rel, hash] of Object.entries(maxsimHashes)) {
|
|
93
|
+
manifest.files['maxsim/' + rel] = hash;
|
|
94
|
+
}
|
|
95
|
+
if (!isOpencode && !isCodex && fs.existsSync(commandsDir)) {
|
|
96
|
+
const cmdHashes = generateManifest(commandsDir);
|
|
97
|
+
for (const [rel, hash] of Object.entries(cmdHashes)) {
|
|
98
|
+
manifest.files['commands/maxsim/' + rel] = hash;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (isOpencode && fs.existsSync(opencodeCommandDir)) {
|
|
102
|
+
for (const file of fs.readdirSync(opencodeCommandDir)) {
|
|
103
|
+
if (file.startsWith('maxsim-') && file.endsWith('.md')) {
|
|
104
|
+
manifest.files['command/' + file] = fileHash(path.join(opencodeCommandDir, file));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (isCodex && fs.existsSync(codexSkillsDir)) {
|
|
109
|
+
for (const skillName of (0, copy_js_1.listCodexSkillNames)(codexSkillsDir)) {
|
|
110
|
+
const skillRoot = path.join(codexSkillsDir, skillName);
|
|
111
|
+
const skillHashes = generateManifest(skillRoot);
|
|
112
|
+
for (const [rel, hash] of Object.entries(skillHashes)) {
|
|
113
|
+
manifest.files[`skills/${skillName}/${rel}`] = hash;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (fs.existsSync(agentsDir)) {
|
|
118
|
+
for (const file of fs.readdirSync(agentsDir)) {
|
|
119
|
+
if (file.startsWith('maxsim-') && file.endsWith('.md')) {
|
|
120
|
+
manifest.files['agents/' + file] = fileHash(path.join(agentsDir, file));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Include skills in manifest (agents/skills/<skill-name>/*)
|
|
125
|
+
const skillsManifestDir = path.join(agentsDir, 'skills');
|
|
126
|
+
if (fs.existsSync(skillsManifestDir)) {
|
|
127
|
+
const skillHashes = generateManifest(skillsManifestDir);
|
|
128
|
+
for (const [rel, hash] of Object.entries(skillHashes)) {
|
|
129
|
+
manifest.files['agents/skills/' + rel] = hash;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
fs.writeFileSync(path.join(configDir, exports.MANIFEST_NAME), JSON.stringify(manifest, null, 2));
|
|
133
|
+
return manifest;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/install/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { RuntimeName } from '../adapters/index.js';
|
|
2
|
+
export declare const PATCHES_DIR_NAME = "maxsim-local-patches";
|
|
3
|
+
/**
|
|
4
|
+
* Detect user-modified MAXSIM files by comparing against install manifest.
|
|
5
|
+
*/
|
|
6
|
+
export declare function saveLocalPatches(configDir: string): string[];
|
|
7
|
+
/**
|
|
8
|
+
* After install, report backed-up patches for user to reapply.
|
|
9
|
+
*/
|
|
10
|
+
export declare function reportLocalPatches(configDir: string, runtime?: RuntimeName): string[];
|
|
11
|
+
//# sourceMappingURL=patches.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patches.d.ts","sourceRoot":"","sources":["../../src/install/patches.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAQvD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAoD5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,WAAsB,GAC9B,MAAM,EAAE,CA8CV"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.PATCHES_DIR_NAME = void 0;
|
|
40
|
+
exports.saveLocalPatches = saveLocalPatches;
|
|
41
|
+
exports.reportLocalPatches = reportLocalPatches;
|
|
42
|
+
const fs = __importStar(require("node:fs"));
|
|
43
|
+
const path = __importStar(require("node:path"));
|
|
44
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
45
|
+
const manifest_js_1 = require("./manifest.js");
|
|
46
|
+
exports.PATCHES_DIR_NAME = 'maxsim-local-patches';
|
|
47
|
+
/**
|
|
48
|
+
* Detect user-modified MAXSIM files by comparing against install manifest.
|
|
49
|
+
*/
|
|
50
|
+
function saveLocalPatches(configDir) {
|
|
51
|
+
const manifestPath = path.join(configDir, manifest_js_1.MANIFEST_NAME);
|
|
52
|
+
if (!fs.existsSync(manifestPath))
|
|
53
|
+
return [];
|
|
54
|
+
let manifest;
|
|
55
|
+
try {
|
|
56
|
+
manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
const patchesDir = path.join(configDir, exports.PATCHES_DIR_NAME);
|
|
62
|
+
const modified = [];
|
|
63
|
+
for (const [relPath, originalHash] of Object.entries(manifest.files || {})) {
|
|
64
|
+
const fullPath = path.join(configDir, relPath);
|
|
65
|
+
if (!fs.existsSync(fullPath))
|
|
66
|
+
continue;
|
|
67
|
+
const currentHash = (0, manifest_js_1.fileHash)(fullPath);
|
|
68
|
+
if (currentHash !== originalHash) {
|
|
69
|
+
const backupPath = path.join(patchesDir, relPath);
|
|
70
|
+
fs.mkdirSync(path.dirname(backupPath), { recursive: true });
|
|
71
|
+
fs.copyFileSync(fullPath, backupPath);
|
|
72
|
+
modified.push(relPath);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (modified.length > 0) {
|
|
76
|
+
const meta = {
|
|
77
|
+
backed_up_at: new Date().toISOString(),
|
|
78
|
+
from_version: manifest.version,
|
|
79
|
+
files: modified,
|
|
80
|
+
};
|
|
81
|
+
fs.writeFileSync(path.join(patchesDir, 'backup-meta.json'), JSON.stringify(meta, null, 2));
|
|
82
|
+
console.log(' ' +
|
|
83
|
+
chalk_1.default.yellow('i') +
|
|
84
|
+
' Found ' +
|
|
85
|
+
modified.length +
|
|
86
|
+
' locally modified MAXSIM file(s) \u2014 backed up to ' +
|
|
87
|
+
exports.PATCHES_DIR_NAME +
|
|
88
|
+
'/');
|
|
89
|
+
for (const f of modified) {
|
|
90
|
+
console.log(' ' + chalk_1.default.dim(f));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return modified;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* After install, report backed-up patches for user to reapply.
|
|
97
|
+
*/
|
|
98
|
+
function reportLocalPatches(configDir, runtime = 'claude') {
|
|
99
|
+
const patchesDir = path.join(configDir, exports.PATCHES_DIR_NAME);
|
|
100
|
+
const metaPath = path.join(patchesDir, 'backup-meta.json');
|
|
101
|
+
if (!fs.existsSync(metaPath))
|
|
102
|
+
return [];
|
|
103
|
+
let meta;
|
|
104
|
+
try {
|
|
105
|
+
meta = JSON.parse(fs.readFileSync(metaPath, 'utf8'));
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
if (meta.files && meta.files.length > 0) {
|
|
111
|
+
const reapplyCommand = runtime === 'opencode'
|
|
112
|
+
? '/maxsim-reapply-patches'
|
|
113
|
+
: runtime === 'codex'
|
|
114
|
+
? '$maxsim-reapply-patches'
|
|
115
|
+
: '/maxsim:reapply-patches';
|
|
116
|
+
console.log('');
|
|
117
|
+
console.log(' ' +
|
|
118
|
+
chalk_1.default.yellow('Local patches detected') +
|
|
119
|
+
' (from v' +
|
|
120
|
+
meta.from_version +
|
|
121
|
+
'):');
|
|
122
|
+
for (const f of meta.files) {
|
|
123
|
+
console.log(' ' + chalk_1.default.cyan(f));
|
|
124
|
+
}
|
|
125
|
+
console.log('');
|
|
126
|
+
console.log(' Your modifications are saved in ' +
|
|
127
|
+
chalk_1.default.cyan(exports.PATCHES_DIR_NAME + '/'));
|
|
128
|
+
console.log(' Run ' +
|
|
129
|
+
chalk_1.default.cyan(reapplyCommand) +
|
|
130
|
+
' to merge them into the new version.');
|
|
131
|
+
console.log(' Or manually compare and merge the files.');
|
|
132
|
+
console.log('');
|
|
133
|
+
}
|
|
134
|
+
return meta.files || [];
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=patches.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patches.js","sourceRoot":"","sources":["../../src/install/patches.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { RuntimeName, AdapterConfig } from '../adapters/index.js';
|
|
2
|
+
export declare const pkg: {
|
|
3
|
+
version: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const templatesRoot: string;
|
|
6
|
+
/**
|
|
7
|
+
* Get adapter for a runtime
|
|
8
|
+
*/
|
|
9
|
+
export declare function getAdapter(runtime: RuntimeName): AdapterConfig;
|
|
10
|
+
/**
|
|
11
|
+
* Get the global config directory for a runtime, using adapter
|
|
12
|
+
*/
|
|
13
|
+
export declare function getGlobalDir(runtime: RuntimeName, explicitDir?: string | null): string;
|
|
14
|
+
/**
|
|
15
|
+
* Get the config directory path relative to home for hook templating
|
|
16
|
+
*/
|
|
17
|
+
export declare function getConfigDirFromHome(runtime: RuntimeName, isGlobal: boolean): string;
|
|
18
|
+
/**
|
|
19
|
+
* Get the local directory name for a runtime
|
|
20
|
+
*/
|
|
21
|
+
export declare function getDirName(runtime: RuntimeName): string;
|
|
22
|
+
/**
|
|
23
|
+
* Recursively remove a directory, handling Windows read-only file attributes.
|
|
24
|
+
* fs-extra handles cross-platform edge cases (EPERM on Windows, symlinks, etc.)
|
|
25
|
+
*/
|
|
26
|
+
export declare function safeRmDir(dirPath: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Recursively copy a directory (dereferences symlinks)
|
|
29
|
+
*/
|
|
30
|
+
export declare function copyDirRecursive(src: string, dest: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Get the global config directory for OpenCode (for JSONC permissions)
|
|
33
|
+
* OpenCode follows XDG Base Directory spec
|
|
34
|
+
*/
|
|
35
|
+
export declare function getOpencodeGlobalDir(): string;
|
|
36
|
+
/**
|
|
37
|
+
* Verify a directory exists and contains files
|
|
38
|
+
*/
|
|
39
|
+
export declare function verifyInstalled(dirPath: string, description: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Verify a file exists
|
|
42
|
+
*/
|
|
43
|
+
export declare function verifyFileInstalled(filePath: string, description: string): boolean;
|
|
44
|
+
export interface InstallResult {
|
|
45
|
+
settingsPath: string | null;
|
|
46
|
+
settings: Record<string, unknown> | null;
|
|
47
|
+
statuslineCommand: string | null;
|
|
48
|
+
runtime: RuntimeName;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/install/shared.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAUvE,eAAO,MAAM,GAAG,EAA0F;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAG9H,eAAO,MAAM,aAAa,QAAiD,CAAC;AAY5E;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAE9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAE5F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAEpF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAEvD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAsB7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAQlF;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,WAAW,CAAC;CACtB"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.templatesRoot = exports.pkg = void 0;
|
|
40
|
+
exports.getAdapter = getAdapter;
|
|
41
|
+
exports.getGlobalDir = getGlobalDir;
|
|
42
|
+
exports.getConfigDirFromHome = getConfigDirFromHome;
|
|
43
|
+
exports.getDirName = getDirName;
|
|
44
|
+
exports.safeRmDir = safeRmDir;
|
|
45
|
+
exports.copyDirRecursive = copyDirRecursive;
|
|
46
|
+
exports.getOpencodeGlobalDir = getOpencodeGlobalDir;
|
|
47
|
+
exports.verifyInstalled = verifyInstalled;
|
|
48
|
+
exports.verifyFileInstalled = verifyFileInstalled;
|
|
49
|
+
const fs = __importStar(require("node:fs"));
|
|
50
|
+
const path = __importStar(require("node:path"));
|
|
51
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
52
|
+
const index_js_1 = require("../adapters/index.js");
|
|
53
|
+
// Get version from package.json — read at runtime so semantic-release's version bump
|
|
54
|
+
// is reflected without needing to rebuild dist/install.cjs after the version bump.
|
|
55
|
+
exports.pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '..', 'package.json'), 'utf-8'));
|
|
56
|
+
// Resolve template asset root — bundled into dist/assets/templates at publish time
|
|
57
|
+
exports.templatesRoot = path.resolve(__dirname, 'assets', 'templates');
|
|
58
|
+
/**
|
|
59
|
+
* Adapter registry keyed by runtime name
|
|
60
|
+
*/
|
|
61
|
+
const adapterMap = {
|
|
62
|
+
claude: index_js_1.claudeAdapter,
|
|
63
|
+
opencode: index_js_1.opencodeAdapter,
|
|
64
|
+
gemini: index_js_1.geminiAdapter,
|
|
65
|
+
codex: index_js_1.codexAdapter,
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Get adapter for a runtime
|
|
69
|
+
*/
|
|
70
|
+
function getAdapter(runtime) {
|
|
71
|
+
return adapterMap[runtime];
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get the global config directory for a runtime, using adapter
|
|
75
|
+
*/
|
|
76
|
+
function getGlobalDir(runtime, explicitDir = null) {
|
|
77
|
+
return getAdapter(runtime).getGlobalDir(explicitDir);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get the config directory path relative to home for hook templating
|
|
81
|
+
*/
|
|
82
|
+
function getConfigDirFromHome(runtime, isGlobal) {
|
|
83
|
+
return getAdapter(runtime).getConfigDirFromHome(isGlobal);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get the local directory name for a runtime
|
|
87
|
+
*/
|
|
88
|
+
function getDirName(runtime) {
|
|
89
|
+
return getAdapter(runtime).dirName;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Recursively remove a directory, handling Windows read-only file attributes.
|
|
93
|
+
* fs-extra handles cross-platform edge cases (EPERM on Windows, symlinks, etc.)
|
|
94
|
+
*/
|
|
95
|
+
function safeRmDir(dirPath) {
|
|
96
|
+
fs_extra_1.default.removeSync(dirPath);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Recursively copy a directory (dereferences symlinks)
|
|
100
|
+
*/
|
|
101
|
+
function copyDirRecursive(src, dest) {
|
|
102
|
+
fs_extra_1.default.copySync(src, dest, { dereference: true });
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get the global config directory for OpenCode (for JSONC permissions)
|
|
106
|
+
* OpenCode follows XDG Base Directory spec
|
|
107
|
+
*/
|
|
108
|
+
function getOpencodeGlobalDir() {
|
|
109
|
+
return index_js_1.opencodeAdapter.getGlobalDir();
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Verify a directory exists and contains files
|
|
113
|
+
*/
|
|
114
|
+
function verifyInstalled(dirPath, description) {
|
|
115
|
+
if (!fs.existsSync(dirPath)) {
|
|
116
|
+
console.error(` \u2717 Failed to install ${description}: directory not created`);
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const entries = fs.readdirSync(dirPath);
|
|
121
|
+
if (entries.length === 0) {
|
|
122
|
+
console.error(` \u2717 Failed to install ${description}: directory is empty`);
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch (e) {
|
|
127
|
+
console.error(` \u2717 Failed to install ${description}: ${e.message}`);
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Verify a file exists
|
|
134
|
+
*/
|
|
135
|
+
function verifyFileInstalled(filePath, description) {
|
|
136
|
+
if (!fs.existsSync(filePath)) {
|
|
137
|
+
console.error(` \u2717 Failed to install ${description}: file not created`);
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/install/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { RuntimeName } from '../adapters/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Uninstall MAXSIM from the specified directory for a specific runtime
|
|
4
|
+
*/
|
|
5
|
+
export declare function uninstall(isGlobal: boolean, runtime?: RuntimeName, explicitConfigDir?: string | null): void;
|
|
6
|
+
//# sourceMappingURL=uninstall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/install/uninstall.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAE,WAAsB,EAAE,iBAAiB,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI,CA2S3H"}
|