@cg3/equip 0.2.23 → 0.4.1

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 (57) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +26 -10
  3. package/bin/equip.js +159 -68
  4. package/demo/README.md +1 -1
  5. package/dist/index.d.ts +76 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +177 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/lib/cli.d.ts +22 -0
  10. package/dist/lib/cli.d.ts.map +1 -0
  11. package/dist/lib/cli.js +148 -0
  12. package/dist/lib/cli.js.map +1 -0
  13. package/dist/lib/commands/doctor.d.ts +2 -0
  14. package/dist/lib/commands/doctor.d.ts.map +1 -0
  15. package/dist/lib/commands/doctor.js +162 -0
  16. package/dist/lib/commands/doctor.js.map +1 -0
  17. package/dist/lib/commands/status.d.ts +2 -0
  18. package/dist/lib/commands/status.d.ts.map +1 -0
  19. package/dist/lib/commands/status.js +134 -0
  20. package/dist/lib/commands/status.js.map +1 -0
  21. package/dist/lib/commands/update.d.ts +2 -0
  22. package/dist/lib/commands/update.d.ts.map +1 -0
  23. package/dist/lib/commands/update.js +93 -0
  24. package/dist/lib/commands/update.js.map +1 -0
  25. package/dist/lib/detect.d.ts +12 -0
  26. package/dist/lib/detect.d.ts.map +1 -0
  27. package/dist/lib/detect.js +109 -0
  28. package/dist/lib/detect.js.map +1 -0
  29. package/dist/lib/hooks.d.ts +40 -0
  30. package/dist/lib/hooks.d.ts.map +1 -0
  31. package/dist/lib/hooks.js +226 -0
  32. package/dist/lib/hooks.js.map +1 -0
  33. package/dist/lib/mcp.d.ts +73 -0
  34. package/dist/lib/mcp.d.ts.map +1 -0
  35. package/dist/lib/mcp.js +418 -0
  36. package/dist/lib/mcp.js.map +1 -0
  37. package/dist/lib/platforms.d.ts +67 -0
  38. package/dist/lib/platforms.d.ts.map +1 -0
  39. package/dist/lib/platforms.js +353 -0
  40. package/dist/lib/platforms.js.map +1 -0
  41. package/dist/lib/rules.d.ts +35 -0
  42. package/dist/lib/rules.d.ts.map +1 -0
  43. package/dist/lib/rules.js +161 -0
  44. package/dist/lib/rules.js.map +1 -0
  45. package/dist/lib/state.d.ts +33 -0
  46. package/dist/lib/state.d.ts.map +1 -0
  47. package/dist/lib/state.js +130 -0
  48. package/dist/lib/state.js.map +1 -0
  49. package/package.json +19 -13
  50. package/registry.json +9 -0
  51. package/index.js +0 -245
  52. package/lib/cli.js +0 -99
  53. package/lib/detect.js +0 -242
  54. package/lib/hooks.js +0 -238
  55. package/lib/mcp.js +0 -503
  56. package/lib/platforms.js +0 -210
  57. package/lib/rules.js +0 -170
@@ -0,0 +1,353 @@
1
+ "use strict";
2
+ // Platform registry — single source of truth for all platform-specific knowledge.
3
+ // Zero dependencies.
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || (function () {
21
+ var ownKeys = function(o) {
22
+ ownKeys = Object.getOwnPropertyNames || function (o) {
23
+ var ar = [];
24
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
25
+ return ar;
26
+ };
27
+ return ownKeys(o);
28
+ };
29
+ return function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ })();
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.KNOWN_PLATFORMS = exports.PLATFORM_REGISTRY = void 0;
39
+ exports.platformName = platformName;
40
+ exports.resolvePlatformId = resolvePlatformId;
41
+ exports.getPlatform = getPlatform;
42
+ exports.createManualPlatform = createManualPlatform;
43
+ exports.getVsCodeUserDir = getVsCodeUserDir;
44
+ exports.getVsCodeMcpPath = getVsCodeMcpPath;
45
+ exports.getClineConfigPath = getClineConfigPath;
46
+ exports.getRooConfigPath = getRooConfigPath;
47
+ exports.getCodexConfigPath = getCodexConfigPath;
48
+ exports.getGeminiSettingsPath = getGeminiSettingsPath;
49
+ exports.getJunieMcpPath = getJunieMcpPath;
50
+ exports.getCopilotJetBrainsMcpPath = getCopilotJetBrainsMcpPath;
51
+ exports.getCopilotCliMcpPath = getCopilotCliMcpPath;
52
+ const path = __importStar(require("path"));
53
+ const os = __importStar(require("os"));
54
+ // ─── Path Helpers ────────────────────────────────────────────
55
+ function home() { return os.homedir(); }
56
+ function vsCodeUserDir() {
57
+ const h = home();
58
+ if (process.platform === "win32")
59
+ return path.join(process.env.APPDATA || path.join(h, "AppData", "Roaming"), "Code", "User");
60
+ if (process.platform === "darwin")
61
+ return path.join(h, "Library", "Application Support", "Code", "User");
62
+ return path.join(h, ".config", "Code", "User");
63
+ }
64
+ function copilotJetBrainsDir() {
65
+ const h = home();
66
+ if (process.platform === "win32")
67
+ return path.join(process.env.APPDATA || path.join(h, "AppData", "Roaming"), "github-copilot");
68
+ return path.join(h, ".config", "github-copilot");
69
+ }
70
+ // ─── Claude Code version detection ──────────────────────────
71
+ function getClaudeCodeVersion() {
72
+ try {
73
+ const { execSync } = require("child_process");
74
+ const out = execSync("claude --version 2>&1", { encoding: "utf-8", timeout: 5000 });
75
+ const m = out.match(/(\d+\.\d+[\.\d]*)/);
76
+ return m ? m[1] : "unknown";
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ }
82
+ // ─── CLI Install Helpers ────────────────────────────────────
83
+ function claudeCliArgs(serverName, mcpEntry) {
84
+ if (!mcpEntry.url)
85
+ return null;
86
+ const args = ["mcp", "add", "--transport", "http", "-s", "user"];
87
+ if (mcpEntry.headers && typeof mcpEntry.headers === "object") {
88
+ for (const [k, v] of Object.entries(mcpEntry.headers)) {
89
+ args.push("--header", `${k}: ${v}`);
90
+ }
91
+ }
92
+ args.push(serverName, mcpEntry.url);
93
+ return args;
94
+ }
95
+ function cursorCliArgs(serverName, mcpEntry) {
96
+ const json = JSON.stringify({ name: serverName, ...mcpEntry });
97
+ return ["--add-mcp", json];
98
+ }
99
+ function vscodeCliArgs(serverName, mcpEntry) {
100
+ const json = JSON.stringify({ name: serverName, ...mcpEntry });
101
+ return ["--add-mcp", json];
102
+ }
103
+ function codexCliArgs(serverName, mcpEntry) {
104
+ // Codex CLI only supports stdio install, not HTTP
105
+ if (!mcpEntry.command)
106
+ return null;
107
+ return ["mcp", "add", serverName, "--", mcpEntry.command, ...(mcpEntry.args || [])];
108
+ }
109
+ // ─── Registry ───────────────────────────────────────────────
110
+ const CLAUDE_CODE_HOOKS_EVENTS = [
111
+ "PreToolUse", "PostToolUse", "PostToolUseFailure", "Stop",
112
+ "SessionStart", "SessionEnd", "UserPromptSubmit", "Notification",
113
+ "SubagentStart", "SubagentStop", "PreCompact", "TaskCompleted",
114
+ ];
115
+ exports.PLATFORM_REGISTRY = new Map([
116
+ ["claude-code", {
117
+ id: "claude-code",
118
+ name: "Claude Code",
119
+ aliases: ["claude", "claudecode"],
120
+ configPath: () => path.join(home(), ".claude.json"),
121
+ rulesPath: () => path.join(home(), ".claude", "CLAUDE.md"),
122
+ rootKey: "mcpServers",
123
+ configFormat: "json",
124
+ httpShape: { urlField: "url", typeField: "http", headersField: "headers" },
125
+ detection: {
126
+ cli: "claude",
127
+ dirs: [() => path.join(home(), ".claude")],
128
+ files: [],
129
+ versionFn: getClaudeCodeVersion,
130
+ },
131
+ hooks: {
132
+ settingsPath: () => path.join(home(), ".claude", "settings.json"),
133
+ events: CLAUDE_CODE_HOOKS_EVENTS,
134
+ format: "claude-code",
135
+ },
136
+ cliInstall: { buildArgs: claudeCliArgs },
137
+ }],
138
+ ["cursor", {
139
+ id: "cursor",
140
+ name: "Cursor",
141
+ aliases: [],
142
+ configPath: () => path.join(home(), ".cursor", "mcp.json"),
143
+ rulesPath: null,
144
+ rootKey: "mcpServers",
145
+ configFormat: "json",
146
+ httpShape: { urlField: "url", typeField: "streamable-http", headersField: "headers" },
147
+ detection: {
148
+ cli: "cursor",
149
+ dirs: [() => path.join(home(), ".cursor")],
150
+ files: [],
151
+ },
152
+ hooks: null,
153
+ cliInstall: { buildArgs: cursorCliArgs },
154
+ }],
155
+ ["windsurf", {
156
+ id: "windsurf",
157
+ name: "Windsurf",
158
+ aliases: [],
159
+ configPath: () => path.join(home(), ".codeium", "windsurf", "mcp_config.json"),
160
+ rulesPath: () => path.join(home(), ".codeium", "windsurf", "memories", "global_rules.md"),
161
+ rootKey: "mcpServers",
162
+ configFormat: "json",
163
+ httpShape: { urlField: "serverUrl", headersField: "headers" },
164
+ detection: {
165
+ cli: null,
166
+ dirs: [() => path.join(home(), ".codeium", "windsurf")],
167
+ files: [],
168
+ },
169
+ hooks: null,
170
+ cliInstall: null,
171
+ }],
172
+ ["vscode", {
173
+ id: "vscode",
174
+ name: "VS Code",
175
+ aliases: ["vs-code", "code"],
176
+ configPath: () => path.join(vsCodeUserDir(), "mcp.json"),
177
+ rulesPath: null,
178
+ rootKey: "servers",
179
+ configFormat: "json",
180
+ httpShape: { urlField: "url", typeField: "http", headersField: "headers" },
181
+ detection: {
182
+ cli: "code",
183
+ dirs: [() => vsCodeUserDir()],
184
+ files: [() => path.join(vsCodeUserDir(), "mcp.json")],
185
+ },
186
+ hooks: null,
187
+ cliInstall: { buildArgs: vscodeCliArgs },
188
+ }],
189
+ ["cline", {
190
+ id: "cline",
191
+ name: "Cline",
192
+ aliases: [],
193
+ configPath: () => path.join(vsCodeUserDir(), "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
194
+ rulesPath: () => path.join(home(), "Documents", "Cline", "Rules"),
195
+ rootKey: "mcpServers",
196
+ configFormat: "json",
197
+ httpShape: { urlField: "url", headersField: "headers" },
198
+ detection: {
199
+ cli: null,
200
+ dirs: [],
201
+ files: [() => path.join(vsCodeUserDir(), "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json")],
202
+ },
203
+ hooks: null,
204
+ cliInstall: null,
205
+ }],
206
+ ["roo-code", {
207
+ id: "roo-code",
208
+ name: "Roo Code",
209
+ aliases: ["roo", "roocode"],
210
+ configPath: () => path.join(vsCodeUserDir(), "globalStorage", "rooveterinaryinc.roo-cline", "settings", "cline_mcp_settings.json"),
211
+ rulesPath: () => path.join(home(), ".roo", "rules"),
212
+ rootKey: "mcpServers",
213
+ configFormat: "json",
214
+ httpShape: { urlField: "url", headersField: "headers" },
215
+ detection: {
216
+ cli: null,
217
+ dirs: [],
218
+ files: [() => path.join(vsCodeUserDir(), "globalStorage", "rooveterinaryinc.roo-cline", "settings", "cline_mcp_settings.json")],
219
+ },
220
+ hooks: null,
221
+ cliInstall: null,
222
+ }],
223
+ ["codex", {
224
+ id: "codex",
225
+ name: "Codex",
226
+ aliases: [],
227
+ configPath: () => path.join(process.env.CODEX_HOME || path.join(home(), ".codex"), "config.toml"),
228
+ rulesPath: () => path.join(process.env.CODEX_HOME || path.join(home(), ".codex"), "AGENTS.md"),
229
+ rootKey: "mcp_servers",
230
+ configFormat: "toml",
231
+ httpShape: { urlField: "url", headersField: "http_headers" },
232
+ detection: {
233
+ cli: "codex",
234
+ dirs: [() => process.env.CODEX_HOME || path.join(home(), ".codex")],
235
+ files: [],
236
+ },
237
+ hooks: null,
238
+ cliInstall: { buildArgs: codexCliArgs },
239
+ }],
240
+ ["gemini-cli", {
241
+ id: "gemini-cli",
242
+ name: "Gemini CLI",
243
+ aliases: ["gemini"],
244
+ configPath: () => path.join(home(), ".gemini", "settings.json"),
245
+ rulesPath: () => path.join(home(), ".gemini", "GEMINI.md"),
246
+ rootKey: "mcpServers",
247
+ configFormat: "json",
248
+ httpShape: { urlField: "httpUrl", headersField: "headers" },
249
+ detection: {
250
+ cli: "gemini",
251
+ dirs: [() => path.join(home(), ".gemini")],
252
+ files: [],
253
+ },
254
+ hooks: null,
255
+ cliInstall: null,
256
+ }],
257
+ ["junie", {
258
+ id: "junie",
259
+ name: "Junie",
260
+ aliases: [],
261
+ configPath: () => path.join(home(), ".junie", "mcp", "mcp.json"),
262
+ rulesPath: null,
263
+ rootKey: "mcpServers",
264
+ configFormat: "json",
265
+ httpShape: { urlField: "url", headersField: "headers" },
266
+ detection: {
267
+ cli: "junie",
268
+ dirs: [() => path.join(home(), ".junie")],
269
+ files: [],
270
+ },
271
+ hooks: null,
272
+ cliInstall: null,
273
+ }],
274
+ ["copilot-jetbrains", {
275
+ id: "copilot-jetbrains",
276
+ name: "Copilot (JetBrains)",
277
+ aliases: ["copilot-jb"],
278
+ configPath: () => path.join(copilotJetBrainsDir(), "intellij", "mcp.json"),
279
+ rulesPath: null,
280
+ rootKey: "mcpServers",
281
+ configFormat: "json",
282
+ httpShape: { urlField: "url", headersField: "headers" },
283
+ detection: {
284
+ cli: null,
285
+ dirs: [() => copilotJetBrainsDir()],
286
+ files: [],
287
+ },
288
+ hooks: null,
289
+ cliInstall: null,
290
+ }],
291
+ ["copilot-cli", {
292
+ id: "copilot-cli",
293
+ name: "Copilot CLI",
294
+ aliases: ["copilot"],
295
+ configPath: () => path.join(home(), ".copilot", "mcp-config.json"),
296
+ rulesPath: null,
297
+ rootKey: "mcpServers",
298
+ configFormat: "json",
299
+ httpShape: { urlField: "url", headersField: "headers" },
300
+ detection: {
301
+ cli: "copilot",
302
+ dirs: [() => path.join(home(), ".copilot")],
303
+ files: [],
304
+ },
305
+ hooks: null,
306
+ cliInstall: null,
307
+ }],
308
+ ]);
309
+ // ─── Derived Helpers ────────────────────────────────────────
310
+ exports.KNOWN_PLATFORMS = [...exports.PLATFORM_REGISTRY.keys()];
311
+ function platformName(id) {
312
+ return exports.PLATFORM_REGISTRY.get(id)?.name ?? id;
313
+ }
314
+ function resolvePlatformId(input) {
315
+ const s = input.trim().toLowerCase();
316
+ if (exports.PLATFORM_REGISTRY.has(s))
317
+ return s;
318
+ for (const [id, def] of exports.PLATFORM_REGISTRY) {
319
+ if (def.aliases.includes(s))
320
+ return id;
321
+ }
322
+ return s;
323
+ }
324
+ function getPlatform(id) {
325
+ const def = exports.PLATFORM_REGISTRY.get(id);
326
+ if (!def)
327
+ throw new Error(`Unknown platform: ${id}. Supported: ${exports.KNOWN_PLATFORMS.join(", ")}`);
328
+ return def;
329
+ }
330
+ function createManualPlatform(platformId) {
331
+ const def = getPlatform(platformId);
332
+ return {
333
+ platform: def.id,
334
+ version: "unknown",
335
+ configPath: def.configPath(),
336
+ rulesPath: def.rulesPath ? def.rulesPath() : null,
337
+ existingMcp: null,
338
+ hasCli: false,
339
+ rootKey: def.rootKey,
340
+ configFormat: def.configFormat,
341
+ };
342
+ }
343
+ // ─── Backward-compat path exports ───────────────────────────
344
+ function getVsCodeUserDir() { return vsCodeUserDir(); }
345
+ function getVsCodeMcpPath() { return exports.PLATFORM_REGISTRY.get("vscode").configPath(); }
346
+ function getClineConfigPath() { return exports.PLATFORM_REGISTRY.get("cline").configPath(); }
347
+ function getRooConfigPath() { return exports.PLATFORM_REGISTRY.get("roo-code").configPath(); }
348
+ function getCodexConfigPath() { return exports.PLATFORM_REGISTRY.get("codex").configPath(); }
349
+ function getGeminiSettingsPath() { return exports.PLATFORM_REGISTRY.get("gemini-cli").configPath(); }
350
+ function getJunieMcpPath() { return exports.PLATFORM_REGISTRY.get("junie").configPath(); }
351
+ function getCopilotJetBrainsMcpPath() { return exports.PLATFORM_REGISTRY.get("copilot-jetbrains").configPath(); }
352
+ function getCopilotCliMcpPath() { return exports.PLATFORM_REGISTRY.get("copilot-cli").configPath(); }
353
+ //# sourceMappingURL=platforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platforms.js","sourceRoot":"","sources":["../../src/lib/platforms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { DetectedPlatform } from "./platforms";
2
+ /**
3
+ * Create regex patterns for a given marker name.
4
+ */
5
+ export declare function markerPatterns(marker: string): {
6
+ MARKER_RE: RegExp;
7
+ BLOCK_RE: RegExp;
8
+ };
9
+ /**
10
+ * Parse version from marker in content.
11
+ */
12
+ export declare function parseRulesVersion(content: string, marker: string): string | null;
13
+ export interface InstallRulesOptions {
14
+ content: string;
15
+ version: string;
16
+ marker: string;
17
+ fileName?: string;
18
+ clipboardPlatforms?: string[];
19
+ dryRun?: boolean;
20
+ }
21
+ /**
22
+ * Install behavioral rules to a platform's rules file.
23
+ */
24
+ export declare function installRules(platform: DetectedPlatform, options: InstallRulesOptions): {
25
+ action: string;
26
+ };
27
+ /**
28
+ * Remove rules from a platform's rules file.
29
+ */
30
+ export declare function uninstallRules(platform: DetectedPlatform, options: {
31
+ marker: string;
32
+ fileName?: string;
33
+ dryRun?: boolean;
34
+ }): boolean;
35
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/lib/rules.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAKpD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAKtF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhF;AAID,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CA0DzG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAmCpI"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ // Behavioral rules installation — marker-based versioned blocks.
3
+ // Handles appending, updating, and removing rules from shared files.
4
+ // Zero dependencies.
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.markerPatterns = markerPatterns;
40
+ exports.parseRulesVersion = parseRulesVersion;
41
+ exports.installRules = installRules;
42
+ exports.uninstallRules = uninstallRules;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const cli_1 = require("./cli");
46
+ // ─── Constants ──────────────────────────────────────────────
47
+ /**
48
+ * Create regex patterns for a given marker name.
49
+ */
50
+ function markerPatterns(marker) {
51
+ return {
52
+ MARKER_RE: new RegExp(`<!-- ${marker}:v[\\d.]+ -->`),
53
+ BLOCK_RE: new RegExp(`<!-- ${marker}:v[\\d.]+ -->[\\s\\S]*?<!-- \\/${marker} -->\\n?`),
54
+ };
55
+ }
56
+ /**
57
+ * Parse version from marker in content.
58
+ */
59
+ function parseRulesVersion(content, marker) {
60
+ const m = content.match(new RegExp(`<!-- ${marker}:v([\\d.]+) -->`));
61
+ return m ? m[1] : null;
62
+ }
63
+ /**
64
+ * Install behavioral rules to a platform's rules file.
65
+ */
66
+ function installRules(platform, options) {
67
+ const { content, version, marker, fileName, clipboardPlatforms = ["cursor", "vscode"], dryRun = false, } = options;
68
+ if (clipboardPlatforms.includes(platform.platform)) {
69
+ if (!dryRun) {
70
+ (0, cli_1.copyToClipboard)(content);
71
+ }
72
+ return { action: "clipboard" };
73
+ }
74
+ if (!platform.rulesPath)
75
+ return { action: "skipped" };
76
+ let rulesPath;
77
+ if (fileName) {
78
+ try {
79
+ const stat = fs.statSync(platform.rulesPath);
80
+ rulesPath = stat.isDirectory() ? path.join(platform.rulesPath, fileName) : platform.rulesPath;
81
+ }
82
+ catch {
83
+ rulesPath = path.extname(platform.rulesPath) ? platform.rulesPath : path.join(platform.rulesPath, fileName);
84
+ }
85
+ }
86
+ else {
87
+ rulesPath = platform.rulesPath;
88
+ }
89
+ const { BLOCK_RE } = markerPatterns(marker);
90
+ let existing = "";
91
+ try {
92
+ existing = fs.readFileSync(rulesPath, "utf-8");
93
+ }
94
+ catch { }
95
+ const existingVersion = parseRulesVersion(existing, marker);
96
+ if (existingVersion === version) {
97
+ return { action: "skipped" };
98
+ }
99
+ if (!dryRun) {
100
+ const dir = path.dirname(rulesPath);
101
+ if (!fs.existsSync(dir))
102
+ fs.mkdirSync(dir, { recursive: true });
103
+ if (existingVersion) {
104
+ const updated = existing.replace(BLOCK_RE, content + "\n");
105
+ fs.writeFileSync(rulesPath, updated);
106
+ return { action: "updated" };
107
+ }
108
+ const sep = existing && !existing.endsWith("\n\n") ? (existing.endsWith("\n") ? "\n" : "\n\n") : "";
109
+ fs.writeFileSync(rulesPath, existing + sep + content + "\n");
110
+ return { action: "created" };
111
+ }
112
+ return { action: existingVersion ? "updated" : "created" };
113
+ }
114
+ /**
115
+ * Remove rules from a platform's rules file.
116
+ */
117
+ function uninstallRules(platform, options) {
118
+ const { marker, fileName, dryRun = false } = options;
119
+ if (!platform.rulesPath)
120
+ return false;
121
+ let rulesPath;
122
+ if (fileName) {
123
+ try {
124
+ const stat = fs.statSync(platform.rulesPath);
125
+ rulesPath = stat.isDirectory() ? path.join(platform.rulesPath, fileName) : platform.rulesPath;
126
+ }
127
+ catch {
128
+ rulesPath = path.extname(platform.rulesPath) ? platform.rulesPath : path.join(platform.rulesPath, fileName);
129
+ }
130
+ }
131
+ else {
132
+ rulesPath = platform.rulesPath;
133
+ }
134
+ try {
135
+ if (!fs.statSync(rulesPath).isFile())
136
+ return false;
137
+ }
138
+ catch {
139
+ return false;
140
+ }
141
+ try {
142
+ const content = fs.readFileSync(rulesPath, "utf-8");
143
+ const { MARKER_RE, BLOCK_RE } = markerPatterns(marker);
144
+ if (!MARKER_RE.test(content))
145
+ return false;
146
+ if (!dryRun) {
147
+ const cleaned = content.replace(BLOCK_RE, "").replace(/\n{3,}/g, "\n\n").trim();
148
+ if (cleaned) {
149
+ fs.writeFileSync(rulesPath, cleaned + "\n");
150
+ }
151
+ else {
152
+ fs.unlinkSync(rulesPath);
153
+ }
154
+ }
155
+ return true;
156
+ }
157
+ catch {
158
+ return false;
159
+ }
160
+ }
161
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/lib/rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface ToolPlatformRecord {
2
+ transport: string;
3
+ rulesVersion?: string;
4
+ configPath: string;
5
+ }
6
+ export interface ToolRecord {
7
+ package: string;
8
+ installedAt: string;
9
+ updatedAt?: string;
10
+ platforms: Record<string, ToolPlatformRecord>;
11
+ }
12
+ export interface EquipState {
13
+ equipVersion: string;
14
+ lastUpdated: string;
15
+ tools: Record<string, ToolRecord>;
16
+ }
17
+ export declare function getEquipDir(): string;
18
+ export declare function getStatePath(): string;
19
+ export declare function readState(): EquipState;
20
+ export declare function writeState(state: EquipState): void;
21
+ /**
22
+ * Record that a tool was installed on a platform.
23
+ */
24
+ export declare function trackInstall(toolName: string, pkg: string, platformId: string, record: ToolPlatformRecord): void;
25
+ /**
26
+ * Remove a tool's platform record from state.
27
+ */
28
+ export declare function trackUninstall(toolName: string, platformId?: string): void;
29
+ /**
30
+ * Mark equip as freshly updated.
31
+ */
32
+ export declare function markUpdated(): void;
33
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/lib/state.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACnC;AAOD,wBAAgB,WAAW,IAAI,MAAM,CAAsB;AAC3D,wBAAgB,YAAY,IAAI,MAAM,CAAuB;AAI7D,wBAAgB,SAAS,IAAI,UAAU,CAWtC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAKlD;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAiBhH;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAc1E;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAKlC"}