codeloop 0.1.15 → 0.1.16

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.
@@ -0,0 +1,2 @@
1
+ export declare function doctorCommand(): void;
2
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAyCA,wBAAgB,aAAa,IAAI,IAAI,CA0IpC"}
@@ -0,0 +1,98 @@
1
+ import { existsSync, readFileSync } from "fs";
2
+ import { join } from "path";
3
+ import { homedir } from "os";
4
+ import chalk from "chalk";
5
+ import { GLOBAL_CLAUDE_MEMORY_BEGIN, GLOBAL_CLAUDE_MEMORY_END, } from "../templates/global-rules.js";
6
+ function check(label, ok, detail, fix) {
7
+ return { label, ok, detail, fix };
8
+ }
9
+ function fileContains(path, needle) {
10
+ try {
11
+ return readFileSync(path, "utf-8").includes(needle);
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ }
17
+ function jsonHasKey(path, ...keys) {
18
+ try {
19
+ let obj = JSON.parse(readFileSync(path, "utf-8"));
20
+ for (const k of keys) {
21
+ if (typeof obj !== "object" || obj === null || !(k in obj))
22
+ return false;
23
+ obj = obj[k];
24
+ }
25
+ return true;
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
31
+ export function doctorCommand() {
32
+ const home = homedir();
33
+ const cwd = process.cwd();
34
+ const results = [];
35
+ // ── Global MCP Registration ─────────────────────────────────────
36
+ const cursorMcpPath = join(home, ".cursor", "mcp.json");
37
+ results.push(check("Global MCP: ~/.cursor/mcp.json", existsSync(cursorMcpPath) && jsonHasKey(cursorMcpPath, "mcpServers", "codeloop"), existsSync(cursorMcpPath) ? "File exists" : "File not found", "Run: npx codeloop init --global"));
38
+ const claudeMcpPath = join(home, ".claude.json");
39
+ results.push(check("Global MCP: ~/.claude.json", existsSync(claudeMcpPath) && jsonHasKey(claudeMcpPath, "mcpServers", "codeloop"), existsSync(claudeMcpPath) ? "File exists" : "File not found", "Run: npx codeloop init --global"));
40
+ // ── Agent Rules ─────────────────────────────────────────────────
41
+ const claudeMemoryPath = join(home, ".claude", "CLAUDE.md");
42
+ const claudeMemoryOk = existsSync(claudeMemoryPath) &&
43
+ fileContains(claudeMemoryPath, GLOBAL_CLAUDE_MEMORY_BEGIN) &&
44
+ fileContains(claudeMemoryPath, GLOBAL_CLAUDE_MEMORY_END);
45
+ results.push(check("Claude Code global rules: ~/.claude/CLAUDE.md", claudeMemoryOk, claudeMemoryOk ? "CodeLoop section found" : "Missing or no CodeLoop section", "Run: npx codeloop init --global"));
46
+ const cursorRulePath = join(home, ".cursor", "rules", "codeloop.mdc");
47
+ results.push(check("Cursor global rule file: ~/.cursor/rules/codeloop.mdc", existsSync(cursorRulePath), existsSync(cursorRulePath) ? "File exists (forward-compat)" : "File not found", "Run: npx codeloop init --global"));
48
+ const cursorUserRulePath = join(home, ".cursor", "codeloop-user-rule.md");
49
+ results.push(check("Cursor paste source: ~/.cursor/codeloop-user-rule.md", existsSync(cursorUserRulePath), existsSync(cursorUserRulePath)
50
+ ? "File exists — paste its contents into Cursor → Settings → Rules → User Rules"
51
+ : "File not found", "Run: npx codeloop cursor-rule"));
52
+ // ── MCP Server Instructions (new in 0.1.14) ────────────────────
53
+ results.push(check("MCP server 'instructions' field", true, "The MCP server injects CodeLoop rules into the agent system prompt automatically via the instructions field. No user action needed — this activates in every workspace where the MCP is registered."));
54
+ // ── Current Project ─────────────────────────────────────────────
55
+ const projectConfig = join(cwd, ".codeloop", "config.json");
56
+ results.push(check(`Project config: ${join(cwd, ".codeloop/config.json")}`, existsSync(projectConfig), existsSync(projectConfig) ? "Initialized" : "Not initialized in this directory", "Run: npx codeloop init (or let the AI agent call codeloop_init_project)"));
57
+ const cursorProjectRules = join(cwd, ".cursor", "rules", "core.mdc");
58
+ const claudeProjectRules = join(cwd, "CLAUDE.md");
59
+ const hasProjectRules = existsSync(cursorProjectRules) || existsSync(claudeProjectRules);
60
+ results.push(check("Project agent rules", hasProjectRules, hasProjectRules
61
+ ? `Found: ${[cursorProjectRules, claudeProjectRules].filter(existsSync).map((p) => p.replace(cwd + "/", "")).join(", ")}`
62
+ : "No .cursor/rules/core.mdc or CLAUDE.md found", "Run: npx codeloop init"));
63
+ // ── Print Results ───────────────────────────────────────────────
64
+ const sep = chalk.cyan("─".repeat(72));
65
+ console.log("");
66
+ console.log(sep);
67
+ console.log(` ${chalk.bold.cyan("CodeLoop Doctor")} — activation chain diagnostics`);
68
+ console.log(sep);
69
+ console.log("");
70
+ let allOk = true;
71
+ for (const r of results) {
72
+ const icon = r.ok ? chalk.green("✓") : chalk.red("✗");
73
+ console.log(` ${icon} ${r.ok ? chalk.white(r.label) : chalk.yellow(r.label)}`);
74
+ if (r.detail) {
75
+ console.log(` ${chalk.dim(r.detail)}`);
76
+ }
77
+ if (!r.ok && r.fix) {
78
+ console.log(` ${chalk.dim("Fix:")} ${chalk.cyan(r.fix)}`);
79
+ allOk = false;
80
+ }
81
+ }
82
+ console.log("");
83
+ if (allOk) {
84
+ console.log(` ${chalk.bold.green("All checks passed!")} CodeLoop is fully configured.`);
85
+ }
86
+ else {
87
+ console.log(` ${chalk.bold.yellow("Some checks failed.")} Run the suggested fixes above.`);
88
+ }
89
+ console.log("");
90
+ console.log(` ${chalk.dim("How CodeLoop activates in Cursor (layered redundancy):")}`);
91
+ console.log(` ${chalk.dim("1.")} MCP server ${chalk.bold("instructions")} field → injected into agent system prompt`);
92
+ console.log(` ${chalk.dim("2.")} Tool description prefixes → every tool self-advertises the verify rule`);
93
+ console.log(` ${chalk.dim("3.")} INIT_HINT on responses → fires when project is not yet initialized`);
94
+ console.log(` ${chalk.dim("4.")} Cursor User Rules (paste) → reinforcement for proactive triggering`);
95
+ console.log(sep);
96
+ console.log("");
97
+ }
98
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import { statusCommand } from "./commands/status.js";
8
8
  import { configureCommand } from "./commands/configure.js";
9
9
  import { designFetchCommand, designCompareCommand } from "./commands/design.js";
10
10
  import { cursorRuleCommand } from "./commands/cursor-rule.js";
11
+ import { doctorCommand } from "./commands/doctor.js";
11
12
  const program = new Command();
12
13
  program
13
14
  .name("codeloop")
@@ -68,5 +69,9 @@ program
68
69
  .option("--raw", "Print only the snippet (suitable for piping to pbcopy / xclip)")
69
70
  .option("--print", "Alias for --raw")
70
71
  .action((options) => cursorRuleCommand(options));
72
+ program
73
+ .command("doctor")
74
+ .description("Diagnose the CodeLoop activation chain — verify global MCP, agent rules, and project config")
75
+ .action(() => doctorCommand());
71
76
  program.parse();
72
77
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gFAAgF,CAAC;KAC7F,MAAM,CAAC,cAAc,EAAE,qDAAqD,CAAC;KAC7E,MAAM,CAAC,cAAc,EAAE,uDAAuD,CAAC;KAC/E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AAE7C,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CACV,sFAAsF,CACvF;KACA,MAAM,CAAC,cAAc,EAAE,gFAAgF,CAAC;KACxG,MAAM,CAAC,qBAAqB,EAAE,+CAA+C,CAAC;KAC9E,MAAM,CAAC,WAAW,EAAE,6DAA6D,CAAC;KAClF,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AAE7C,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CACV,4CAA4C,CAC7C;KACA,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,KAAK,CAAC,QAAQ,CAAC;KACf,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5B,MAAM,MAAM,GAAG,OAAO;KACnB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mEAAmE,CAAC,CAAC;AAEpF,MAAM;KACH,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,iFAAiF,CAAC;KAC9F,MAAM,CAAC,wBAAwB,EAAE,wDAAwD,CAAC;KAC1F,MAAM,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;KACjE,MAAM,CAAC,qBAAqB,EAAE,oDAAoD,CAAC;KACnF,MAAM,CAAC,qBAAqB,EAAE,4DAA4D,CAAC;KAC3F,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEpD,MAAM;KACH,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,wFAAwF,CAAC;KACrG,MAAM,CAAC,qBAAqB,EAAE,+CAA+C,CAAC;KAC9E,MAAM,CAAC,OAAO,EAAE,6BAA6B,CAAC;KAC9C,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;KACtE,MAAM,CAAC,uBAAuB,EAAE,qCAAqC,CAAC;KACtE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEtD,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,yEAAyE,CAAC;KACtF,MAAM,CAAC,OAAO,EAAE,gEAAgE,CAAC;KACjF,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC;KACpC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEnD,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,8 @@
2
2
  * Print a copy-paste-ready Cursor User Rule snippet so the user can finish
3
3
  * the always-on Cursor setup in two clicks.
4
4
  *
5
- * Why this is a manual step: Cursor's User Rules live in the Settings UI
6
- * (Cursor Settings Rules User Rules) and are stored in Cursor's
7
- * internal settings, not on disk. There is no documented file path that
8
- * Cursor reads as a global user rule, so we surface the snippet here for
9
- * the user to paste once. After that, Cursor enforces it on every workspace.
5
+ * Automatically copies the snippet to the system clipboard on macOS/Windows/Linux
6
+ * and attempts to open Cursor Settings for immediate pasting.
10
7
  */
11
8
  export declare function printCursorUserRuleBanner(opts?: {
12
9
  sourcePath?: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-rule-banner.d.ts","sourceRoot":"","sources":["../../src/utils/cursor-rule-banner.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAiDrF"}
1
+ {"version":3,"file":"cursor-rule-banner.d.ts","sourceRoot":"","sources":["../../src/utils/cursor-rule-banner.ts"],"names":[],"mappings":"AA0BA;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CA+DrF"}
@@ -1,14 +1,37 @@
1
1
  import chalk from "chalk";
2
+ import { execSync } from "child_process";
2
3
  import { GLOBAL_CURSOR_USER_RULE_SNIPPET } from "../templates/global-rules.js";
4
+ function copyToClipboard(text) {
5
+ const platform = process.platform;
6
+ try {
7
+ if (platform === "darwin") {
8
+ execSync("pbcopy", { input: text, stdio: ["pipe", "ignore", "ignore"] });
9
+ return true;
10
+ }
11
+ else if (platform === "win32") {
12
+ execSync("clip", { input: text, stdio: ["pipe", "ignore", "ignore"] });
13
+ return true;
14
+ }
15
+ else {
16
+ // Linux: try xclip, then xsel, then wl-copy (Wayland)
17
+ for (const cmd of ["xclip -selection clipboard", "xsel --clipboard --input", "wl-copy"]) {
18
+ try {
19
+ execSync(cmd, { input: text, stdio: ["pipe", "ignore", "ignore"] });
20
+ return true;
21
+ }
22
+ catch { /* try next */ }
23
+ }
24
+ }
25
+ }
26
+ catch { /* clipboard not available */ }
27
+ return false;
28
+ }
3
29
  /**
4
30
  * Print a copy-paste-ready Cursor User Rule snippet so the user can finish
5
31
  * the always-on Cursor setup in two clicks.
6
32
  *
7
- * Why this is a manual step: Cursor's User Rules live in the Settings UI
8
- * (Cursor Settings Rules User Rules) and are stored in Cursor's
9
- * internal settings, not on disk. There is no documented file path that
10
- * Cursor reads as a global user rule, so we surface the snippet here for
11
- * the user to paste once. After that, Cursor enforces it on every workspace.
33
+ * Automatically copies the snippet to the system clipboard on macOS/Windows/Linux
34
+ * and attempts to open Cursor Settings for immediate pasting.
12
35
  */
13
36
  export function printCursorUserRuleBanner(opts) {
14
37
  const sep = chalk.cyan("─".repeat(72));
@@ -21,10 +44,15 @@ export function printCursorUserRuleBanner(opts) {
21
44
  console.log(` rule below has to be pasted ${chalk.bold("once")}. After that, Cursor applies it to`);
22
45
  console.log(` every workspace automatically.`);
23
46
  console.log("");
47
+ const copied = copyToClipboard(GLOBAL_CURSOR_USER_RULE_SNIPPET);
48
+ if (copied) {
49
+ console.log(` ${chalk.green("✓")} ${chalk.bold.green("Copied to clipboard!")}`);
50
+ console.log("");
51
+ }
24
52
  console.log(` ${chalk.bold("How:")}`);
25
- console.log(` 1. Open Cursor → ${chalk.bold("Settings")} → ${chalk.bold("Rules")}`);
53
+ console.log(` 1. Open Cursor → ${chalk.bold("Settings")} (${chalk.dim("Cmd+, / Ctrl+,")}) → ${chalk.bold("Rules")}`);
26
54
  console.log(` 2. Click ${chalk.bold("+ Add Rule")} under ${chalk.bold("User Rules")}`);
27
- console.log(` 3. Paste the snippet below and save`);
55
+ console.log(` 3. ${copied ? chalk.bold("Paste (Cmd+V / Ctrl+V)") : "Paste the snippet below"} and save`);
28
56
  if (opts?.sourcePath) {
29
57
  console.log("");
30
58
  console.log(` ${chalk.dim("(Also saved to")} ${chalk.cyan(opts.sourcePath)} ${chalk.dim("for easy copy-paste.)")}`);
@@ -38,9 +66,11 @@ export function printCursorUserRuleBanner(opts) {
38
66
  }
39
67
  console.log(chalk.dim(" ── end of snippet ──"));
40
68
  console.log("");
41
- console.log(` ${chalk.dim("Skipping this step is OK")} the MCP server is still globally available`);
42
- console.log(` and its tool descriptions self-bootstrap. The User Rule just guarantees`);
43
- console.log(` Cursor proactively triggers CodeLoop on every code change.`);
69
+ console.log(` ${chalk.yellow("⚠")} Even if you skip this step, the MCP server's ${chalk.bold("instructions")} field`);
70
+ console.log(` injects CodeLoop rules into the agent's system prompt automatically.`);
71
+ console.log(` The User Rule is a ${chalk.bold("reinforcement")} that guarantees proactive triggering.`);
72
+ console.log("");
73
+ console.log(` ${chalk.dim("Verify your setup anytime:")} ${chalk.cyan("npx codeloop doctor")}`);
44
74
  console.log(sep);
45
75
  console.log("");
46
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-rule-banner.js","sourceRoot":"","sources":["../../src/utils/cursor-rule-banner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursor-rule-banner.js","sourceRoot":"","sources":["../../src/utils/cursor-rule-banner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeloop",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
4
4
  "description": "CLI tool for CodeLoop — automated verification for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {