maxsimcli 3.10.3 → 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.
Files changed (142) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/assets/CHANGELOG.md +26 -0
  3. package/dist/assets/dashboard/client/assets/index-CxFKStBk.css +32 -0
  4. package/dist/assets/dashboard/client/assets/{index-CZ8WC97G.js → index-wtQDvXzr.js} +64 -64
  5. package/dist/assets/dashboard/client/index.html +2 -2
  6. package/dist/assets/dashboard/server.js +5 -1
  7. package/dist/assets/templates/agents/AGENTS.md +82 -0
  8. package/dist/assets/templates/commands/maxsim/settings.md +1 -1
  9. package/dist/assets/templates/skills/code-review/SKILL.md +151 -0
  10. package/dist/assets/templates/skills/memory-management/SKILL.md +174 -0
  11. package/dist/assets/templates/skills/simplify/SKILL.md +137 -0
  12. package/dist/assets/templates/skills/using-maxsim/SKILL.md +115 -0
  13. package/dist/assets/templates/templates/config.json +1 -1
  14. package/dist/assets/templates/workflows/add-tests.md +3 -3
  15. package/dist/assets/templates/workflows/complete-milestone.md +1 -1
  16. package/dist/assets/templates/workflows/execute-phase.md +4 -14
  17. package/dist/assets/templates/workflows/execute-plan.md +10 -0
  18. package/dist/assets/templates/workflows/init-existing.md +7 -3
  19. package/dist/assets/templates/workflows/new-milestone.md +4 -0
  20. package/dist/assets/templates/workflows/new-project.md +6 -2
  21. package/dist/assets/templates/workflows/plan-phase.md +2 -2
  22. package/dist/assets/templates/workflows/settings.md +8 -4
  23. package/dist/assets/templates/workflows/verify-work.md +1 -1
  24. package/dist/cli.cjs +818 -599
  25. package/dist/cli.cjs.map +1 -1
  26. package/dist/cli.js +78 -204
  27. package/dist/cli.js.map +1 -1
  28. package/dist/core/commands.d.ts +7 -0
  29. package/dist/core/commands.d.ts.map +1 -1
  30. package/dist/core/commands.js +40 -35
  31. package/dist/core/commands.js.map +1 -1
  32. package/dist/core/core.d.ts +39 -1
  33. package/dist/core/core.d.ts.map +1 -1
  34. package/dist/core/core.js +122 -47
  35. package/dist/core/core.js.map +1 -1
  36. package/dist/core/dashboard-launcher.d.ts +56 -0
  37. package/dist/core/dashboard-launcher.d.ts.map +1 -0
  38. package/dist/core/dashboard-launcher.js +243 -0
  39. package/dist/core/dashboard-launcher.js.map +1 -0
  40. package/dist/core/index.d.ts +4 -2
  41. package/dist/core/index.d.ts.map +1 -1
  42. package/dist/core/index.js +20 -2
  43. package/dist/core/index.js.map +1 -1
  44. package/dist/core/init.d.ts +2 -3
  45. package/dist/core/init.d.ts.map +1 -1
  46. package/dist/core/init.js +33 -52
  47. package/dist/core/init.js.map +1 -1
  48. package/dist/core/milestone.d.ts.map +1 -1
  49. package/dist/core/milestone.js +15 -20
  50. package/dist/core/milestone.js.map +1 -1
  51. package/dist/core/phase.d.ts +33 -0
  52. package/dist/core/phase.d.ts.map +1 -1
  53. package/dist/core/phase.js +282 -225
  54. package/dist/core/phase.js.map +1 -1
  55. package/dist/core/roadmap.d.ts.map +1 -1
  56. package/dist/core/roadmap.js +17 -18
  57. package/dist/core/roadmap.js.map +1 -1
  58. package/dist/core/state.d.ts +5 -0
  59. package/dist/core/state.d.ts.map +1 -1
  60. package/dist/core/state.js +51 -42
  61. package/dist/core/state.js.map +1 -1
  62. package/dist/core/template.d.ts.map +1 -1
  63. package/dist/core/template.js +1 -1
  64. package/dist/core/template.js.map +1 -1
  65. package/dist/core/types.d.ts +4 -4
  66. package/dist/core/types.d.ts.map +1 -1
  67. package/dist/core/types.js +1 -2
  68. package/dist/core/types.js.map +1 -1
  69. package/dist/core/verify.d.ts.map +1 -1
  70. package/dist/core/verify.js +61 -80
  71. package/dist/core/verify.js.map +1 -1
  72. package/dist/install/adapters.d.ts +15 -0
  73. package/dist/install/adapters.d.ts.map +1 -0
  74. package/dist/install/adapters.js +203 -0
  75. package/dist/install/adapters.js.map +1 -0
  76. package/dist/install/copy.d.ts +15 -0
  77. package/dist/install/copy.d.ts.map +1 -0
  78. package/dist/install/copy.js +191 -0
  79. package/dist/install/copy.js.map +1 -0
  80. package/dist/install/dashboard.d.ts +16 -0
  81. package/dist/install/dashboard.d.ts.map +1 -0
  82. package/dist/install/dashboard.js +273 -0
  83. package/dist/install/dashboard.js.map +1 -0
  84. package/dist/install/hooks.d.ts +32 -0
  85. package/dist/install/hooks.d.ts.map +1 -0
  86. package/dist/install/hooks.js +285 -0
  87. package/dist/install/hooks.js.map +1 -0
  88. package/dist/install/index.d.ts +2 -0
  89. package/dist/install/index.d.ts.map +1 -0
  90. package/dist/install/index.js +598 -0
  91. package/dist/install/index.js.map +1 -0
  92. package/dist/install/manifest.d.ts +20 -0
  93. package/dist/install/manifest.d.ts.map +1 -0
  94. package/dist/install/manifest.js +135 -0
  95. package/dist/install/manifest.js.map +1 -0
  96. package/dist/install/patches.d.ts +11 -0
  97. package/dist/install/patches.d.ts.map +1 -0
  98. package/dist/install/patches.js +136 -0
  99. package/dist/install/patches.js.map +1 -0
  100. package/dist/install/shared.d.ts +50 -0
  101. package/dist/install/shared.d.ts.map +1 -0
  102. package/dist/install/shared.js +142 -0
  103. package/dist/install/shared.js.map +1 -0
  104. package/dist/install/uninstall.d.ts +6 -0
  105. package/dist/install/uninstall.d.ts.map +1 -0
  106. package/dist/install/uninstall.js +280 -0
  107. package/dist/install/uninstall.js.map +1 -0
  108. package/dist/install.cjs +782 -705
  109. package/dist/install.cjs.map +1 -1
  110. package/dist/mcp/index.d.ts +12 -0
  111. package/dist/mcp/index.d.ts.map +1 -0
  112. package/dist/mcp/index.js +21 -0
  113. package/dist/mcp/index.js.map +1 -0
  114. package/dist/mcp/phase-tools.d.ts +13 -0
  115. package/dist/mcp/phase-tools.d.ts.map +1 -0
  116. package/dist/mcp/phase-tools.js +164 -0
  117. package/dist/mcp/phase-tools.js.map +1 -0
  118. package/dist/mcp/state-tools.d.ts +13 -0
  119. package/dist/mcp/state-tools.d.ts.map +1 -0
  120. package/dist/mcp/state-tools.js +185 -0
  121. package/dist/mcp/state-tools.js.map +1 -0
  122. package/dist/mcp/todo-tools.d.ts +13 -0
  123. package/dist/mcp/todo-tools.d.ts.map +1 -0
  124. package/dist/mcp/todo-tools.js +143 -0
  125. package/dist/mcp/todo-tools.js.map +1 -0
  126. package/dist/mcp/utils.d.ts +27 -0
  127. package/dist/mcp/utils.d.ts.map +1 -0
  128. package/dist/mcp/utils.js +82 -0
  129. package/dist/mcp/utils.js.map +1 -0
  130. package/dist/mcp-server.cjs +11806 -0
  131. package/dist/mcp-server.cjs.map +1 -0
  132. package/dist/mcp-server.d.cts +2 -0
  133. package/dist/mcp-server.d.ts +12 -0
  134. package/dist/mcp-server.d.ts.map +1 -0
  135. package/dist/mcp-server.js +31 -0
  136. package/dist/mcp-server.js.map +1 -0
  137. package/package.json +5 -3
  138. package/dist/assets/dashboard/client/assets/index-DzJChB-D.css +0 -32
  139. package/dist/install.d.ts +0 -2
  140. package/dist/install.d.ts.map +0 -1
  141. package/dist/install.js +0 -1804
  142. 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"}