@coodra/cli 0.2.0-beta.0 → 0.2.0-beta.2
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/commands/agents.d.ts +55 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +240 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +79 -47
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +10 -5
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/index.js +3373 -2915
- package/dist/index.js.map +4 -4
- package/dist/lib/detect.d.ts +60 -5
- package/dist/lib/detect.d.ts.map +1 -1
- package/dist/lib/detect.js +93 -13
- package/dist/lib/detect.js.map +1 -1
- package/dist/lib/init/cursor-merge.d.ts +48 -0
- package/dist/lib/init/cursor-merge.d.ts.map +1 -0
- package/dist/lib/init/cursor-merge.js +97 -0
- package/dist/lib/init/cursor-merge.js.map +1 -0
- package/dist/lib/init/instruction-files.d.ts +14 -8
- package/dist/lib/init/instruction-files.d.ts.map +1 -1
- package/dist/lib/init/instruction-files.js +13 -7
- package/dist/lib/init/instruction-files.js.map +1 -1
- package/dist/program.d.ts +3 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +9 -0
- package/dist/program.js.map +1 -1
- package/dist/tui/command-catalog.d.ts +8 -0
- package/dist/tui/command-catalog.d.ts.map +1 -1
- package/dist/tui/command-catalog.js +15 -0
- package/dist/tui/command-catalog.js.map +1 -1
- package/dist/tui/views/CommandsView.d.ts.map +1 -1
- package/dist/tui/views/CommandsView.js +13 -2
- package/dist/tui/views/CommandsView.js.map +1 -1
- package/dist/tui/views/TerminalView.d.ts.map +1 -1
- package/dist/tui/views/TerminalView.js +10 -1
- package/dist/tui/views/TerminalView.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/lib/detect.d.ts
CHANGED
|
@@ -10,24 +10,79 @@ export interface DetectionDeps {
|
|
|
10
10
|
/** Override $HOME for test fixtures. */
|
|
11
11
|
readonly homeDir?: string;
|
|
12
12
|
}
|
|
13
|
+
export interface DetectProjectRootResult {
|
|
14
|
+
readonly root: string;
|
|
15
|
+
readonly markers: string[];
|
|
16
|
+
/**
|
|
17
|
+
* Set when the walk-up hit a marker at `$HOME` (e.g. `~/.git` from
|
|
18
|
+
* dotfiles), the home match was rejected, and `cwd` was used as the
|
|
19
|
+
* project root instead. Callers (init) surface this to the user so the
|
|
20
|
+
* "why isn't my project the project?" surprise has a clear explanation.
|
|
21
|
+
*/
|
|
22
|
+
readonly skippedHomeMatch?: {
|
|
23
|
+
homeDir: string;
|
|
24
|
+
markers: readonly string[];
|
|
25
|
+
};
|
|
26
|
+
}
|
|
13
27
|
/**
|
|
14
28
|
* Walk up from `cwd` looking for a project root marker (`package.json`,
|
|
15
29
|
* `pyproject.toml`, `Cargo.toml`, `.git`). Returns the deepest match —
|
|
16
30
|
* useful when a tool is run from a subdirectory of the repo.
|
|
17
31
|
*
|
|
32
|
+
* **`$HOME` is never a valid project root.** Many users have `.git` in
|
|
33
|
+
* their home directory (dotfiles repos) or `package.json` (npm globals);
|
|
34
|
+
* treating home as a project root makes `coodra init` write
|
|
35
|
+
* `CLAUDE.md`, `.mcp.json`, `docs/feature-packs/` etc. into the user's
|
|
36
|
+
* home, with the project slug taken from the home dir's basename. We
|
|
37
|
+
* skip any walk-up match that lands at exactly `$HOME`.
|
|
38
|
+
*
|
|
18
39
|
* Returns the original cwd as a fallback if no marker is found anywhere
|
|
19
|
-
* up the tree, so callers always get a usable
|
|
40
|
+
* up the tree (or only at `$HOME`), so callers always get a usable
|
|
41
|
+
* path.
|
|
20
42
|
*/
|
|
21
|
-
export declare function detectProjectRoot(cwd: string
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}>;
|
|
43
|
+
export declare function detectProjectRoot(cwd: string, options?: {
|
|
44
|
+
readonly homeDir?: string;
|
|
45
|
+
}): Promise<DetectProjectRootResult>;
|
|
25
46
|
/**
|
|
26
47
|
* Returns languages present in the project root, deduped + ordered by total
|
|
27
48
|
* file count (descending). Hidden directories and conventional build/install
|
|
28
49
|
* outputs are excluded so the result reflects user-authored code.
|
|
29
50
|
*/
|
|
30
51
|
export declare function detectLanguages(root: string): Promise<Language[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Canonical IDE order. Used by `detectIDE` to keep the detected list
|
|
54
|
+
* stable and by `resolveIdeSelection` to return its result in the same
|
|
55
|
+
* order regardless of how the user typed the flag.
|
|
56
|
+
*/
|
|
57
|
+
export declare const IDE_ORDER: readonly IDE[];
|
|
58
|
+
/**
|
|
59
|
+
* Resolve the final list of IDEs to wire from the `--ide` flag and the
|
|
60
|
+
* `detectIDE` result.
|
|
61
|
+
*
|
|
62
|
+
* Semantics:
|
|
63
|
+
* - flag undefined → autodetect (use `detected` as-is)
|
|
64
|
+
* - `--ide all` → wire every known IDE regardless of detection
|
|
65
|
+
* - `--ide <name>` → wire just that IDE, regardless of detection
|
|
66
|
+
* - `--ide <a>,<b>,<c>` → wire that exact list, regardless of detection
|
|
67
|
+
* - unknown name in list → return `{ ok: false, error }` — the caller
|
|
68
|
+
* prints the message and exits non-zero
|
|
69
|
+
*
|
|
70
|
+
* "Regardless of detection" is the explicit-override semantics. The user
|
|
71
|
+
* is telling Coodra to wire that IDE — perhaps they're setting up
|
|
72
|
+
* before installing the IDE. The flag should not silently no-op.
|
|
73
|
+
*/
|
|
74
|
+
export interface ResolveIdeSelectionInput {
|
|
75
|
+
readonly flag: string | undefined;
|
|
76
|
+
readonly detected: readonly IDE[];
|
|
77
|
+
}
|
|
78
|
+
export type ResolveIdeSelectionResult = {
|
|
79
|
+
readonly ok: true;
|
|
80
|
+
readonly ides: readonly IDE[];
|
|
81
|
+
} | {
|
|
82
|
+
readonly ok: false;
|
|
83
|
+
readonly error: string;
|
|
84
|
+
};
|
|
85
|
+
export declare function resolveIdeSelection(input: ResolveIdeSelectionInput): ResolveIdeSelectionResult;
|
|
31
86
|
/**
|
|
32
87
|
* Look for IDE config dirs in $HOME. Each detected IDE gets one entry; the
|
|
33
88
|
* order matches the candidate list (Claude, Cursor, Windsurf, Codex). An
|
package/dist/lib/detect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/lib/detect.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE7D,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhG,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/lib/detect.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE7D,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhG,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CAC7E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,uBAAuB,CAAC,CA8ClC;AAwBD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAWvE;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,SAAS,GAAG,EAAuD,CAAC;AAE5F;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,EAAE,CAAC;CACnC;AAED,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,yBAAyB,CA6B9F;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAkBxE;AAUD,QAAA,MAAM,eAAe;;;;;;iBAIL,CAAC;AAEjB,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAWrF"}
|
package/dist/lib/detect.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { access, readFile } from 'node:fs/promises';
|
|
1
|
+
import { access, readFile, realpath } from 'node:fs/promises';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { dirname, join, resolve } from 'node:path';
|
|
4
4
|
import { glob } from 'glob';
|
|
@@ -9,17 +9,31 @@ const PROJECT_ROOT_MARKERS = ['package.json', 'pyproject.toml', 'Cargo.toml', '.
|
|
|
9
9
|
* `pyproject.toml`, `Cargo.toml`, `.git`). Returns the deepest match —
|
|
10
10
|
* useful when a tool is run from a subdirectory of the repo.
|
|
11
11
|
*
|
|
12
|
+
* **`$HOME` is never a valid project root.** Many users have `.git` in
|
|
13
|
+
* their home directory (dotfiles repos) or `package.json` (npm globals);
|
|
14
|
+
* treating home as a project root makes `coodra init` write
|
|
15
|
+
* `CLAUDE.md`, `.mcp.json`, `docs/feature-packs/` etc. into the user's
|
|
16
|
+
* home, with the project slug taken from the home dir's basename. We
|
|
17
|
+
* skip any walk-up match that lands at exactly `$HOME`.
|
|
18
|
+
*
|
|
12
19
|
* Returns the original cwd as a fallback if no marker is found anywhere
|
|
13
|
-
* up the tree, so callers always get a usable
|
|
20
|
+
* up the tree (or only at `$HOME`), so callers always get a usable
|
|
21
|
+
* path.
|
|
14
22
|
*/
|
|
15
|
-
export async function detectProjectRoot(cwd) {
|
|
16
|
-
|
|
17
|
-
|
|
23
|
+
export async function detectProjectRoot(cwd, options = {}) {
|
|
24
|
+
// Two views per path: `lexical` (what callers receive — preserves
|
|
25
|
+
// pre-fix semantics) and `canonical` (realpath-normalized, used ONLY
|
|
26
|
+
// for the $HOME equality check). This matters on macOS where /tmp
|
|
27
|
+
// and /var lexically differ from /private/tmp and /private/var, and
|
|
28
|
+
// anywhere else home is reached via a symlink or bind mount.
|
|
29
|
+
const homeCanonical = await canonicalize(options.homeDir ?? homedir());
|
|
30
|
+
let currentLex = resolve(cwd);
|
|
31
|
+
const allMatches = [];
|
|
18
32
|
for (let depth = 0; depth < 12; depth++) {
|
|
19
33
|
const found = [];
|
|
20
34
|
for (const marker of PROJECT_ROOT_MARKERS) {
|
|
21
35
|
try {
|
|
22
|
-
await access(join(
|
|
36
|
+
await access(join(currentLex, marker));
|
|
23
37
|
found.push(marker);
|
|
24
38
|
}
|
|
25
39
|
catch {
|
|
@@ -27,18 +41,32 @@ export async function detectProjectRoot(cwd) {
|
|
|
27
41
|
}
|
|
28
42
|
}
|
|
29
43
|
if (found.length > 0) {
|
|
30
|
-
|
|
44
|
+
const rootCanonical = await canonicalize(currentLex);
|
|
45
|
+
allMatches.push({ rootLex: currentLex, rootCanonical, markers: found });
|
|
31
46
|
}
|
|
32
|
-
const parent = dirname(
|
|
33
|
-
if (parent ===
|
|
47
|
+
const parent = dirname(currentLex);
|
|
48
|
+
if (parent === currentLex)
|
|
34
49
|
break;
|
|
35
|
-
|
|
50
|
+
currentLex = parent;
|
|
36
51
|
}
|
|
37
|
-
|
|
38
|
-
|
|
52
|
+
// Drop any match whose CANONICAL path is $HOME — home is not a project.
|
|
53
|
+
const filtered = allMatches.filter((m) => m.rootCanonical !== homeCanonical);
|
|
54
|
+
const droppedHomeMatch = allMatches.find((m) => m.rootCanonical === homeCanonical);
|
|
55
|
+
if (filtered.length === 0) {
|
|
56
|
+
const fallback = { root: resolve(cwd), markers: [] };
|
|
57
|
+
if (droppedHomeMatch !== undefined) {
|
|
58
|
+
return {
|
|
59
|
+
...fallback,
|
|
60
|
+
skippedHomeMatch: { homeDir: droppedHomeMatch.rootLex, markers: droppedHomeMatch.markers },
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return fallback;
|
|
39
64
|
}
|
|
40
65
|
// The deepest match wins — that's the closest enclosing project root.
|
|
41
|
-
|
|
66
|
+
// `allMatches` was appended in walk order (cwd first, ancestors next),
|
|
67
|
+
// and `filtered` preserves that order — so `filtered[0]` is the closest.
|
|
68
|
+
const winner = filtered[0];
|
|
69
|
+
return { root: winner.rootLex, markers: winner.markers };
|
|
42
70
|
}
|
|
43
71
|
const LANGUAGE_PATTERNS = [
|
|
44
72
|
{ language: 'typescript', patterns: ['**/*.ts', '**/*.tsx'] },
|
|
@@ -78,6 +106,42 @@ export async function detectLanguages(root) {
|
|
|
78
106
|
}
|
|
79
107
|
return [...counts.entries()].sort((a, b) => b[1] - a[1]).map(([lang]) => lang);
|
|
80
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Canonical IDE order. Used by `detectIDE` to keep the detected list
|
|
111
|
+
* stable and by `resolveIdeSelection` to return its result in the same
|
|
112
|
+
* order regardless of how the user typed the flag.
|
|
113
|
+
*/
|
|
114
|
+
export const IDE_ORDER = ['claude', 'cursor', 'windsurf', 'codex'];
|
|
115
|
+
export function resolveIdeSelection(input) {
|
|
116
|
+
if (input.flag === undefined) {
|
|
117
|
+
return { ok: true, ides: [...input.detected] };
|
|
118
|
+
}
|
|
119
|
+
const tokens = input.flag
|
|
120
|
+
.split(',')
|
|
121
|
+
.map((t) => t.trim().toLowerCase())
|
|
122
|
+
.filter((t) => t.length > 0);
|
|
123
|
+
if (tokens.length === 0) {
|
|
124
|
+
return { ok: false, error: "--ide value is empty. Pass one of: claude, cursor, windsurf, codex, all (comma-separated for multiple)." };
|
|
125
|
+
}
|
|
126
|
+
if (tokens.includes('all')) {
|
|
127
|
+
if (tokens.length > 1) {
|
|
128
|
+
return { ok: false, error: "--ide all is exclusive — drop the other names or pick a specific list." };
|
|
129
|
+
}
|
|
130
|
+
return { ok: true, ides: [...IDE_ORDER] };
|
|
131
|
+
}
|
|
132
|
+
const allowed = new Set(IDE_ORDER);
|
|
133
|
+
const seen = new Set();
|
|
134
|
+
for (const token of tokens) {
|
|
135
|
+
if (!allowed.has(token)) {
|
|
136
|
+
return {
|
|
137
|
+
ok: false,
|
|
138
|
+
error: `--ide: unknown agent '${token}'. Valid: claude, cursor, windsurf, codex, all.`,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
seen.add(token);
|
|
142
|
+
}
|
|
143
|
+
return { ok: true, ides: IDE_ORDER.filter((ide) => seen.has(ide)) };
|
|
144
|
+
}
|
|
81
145
|
/**
|
|
82
146
|
* Look for IDE config dirs in $HOME. Each detected IDE gets one entry; the
|
|
83
147
|
* order matches the candidate list (Claude, Cursor, Windsurf, Codex). An
|
|
@@ -140,4 +204,20 @@ export async function detectExistingMCPConfig(root) {
|
|
|
140
204
|
}
|
|
141
205
|
return mcpConfigSchema.parse(JSON.parse(raw));
|
|
142
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Best-effort `realpath` — resolves symlinks so `/tmp/foo` and
|
|
209
|
+
* `/private/tmp/foo` (macOS) or `/home/x` and a bind-mount alias
|
|
210
|
+
* compare equal. Falls back to the lexical `resolve` result when the
|
|
211
|
+
* path doesn't exist on disk (the walk-up climbs through parents that
|
|
212
|
+
* sometimes don't exist, and `realpath` would otherwise throw).
|
|
213
|
+
*/
|
|
214
|
+
async function canonicalize(path) {
|
|
215
|
+
const lex = resolve(path);
|
|
216
|
+
try {
|
|
217
|
+
return await realpath(lex);
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
return lex;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
143
223
|
//# sourceMappingURL=detect.js.map
|
package/dist/lib/detect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/lib/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/lib/detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type CoodraMcpEntry } from './mcp-merge.js';
|
|
2
|
+
import type { WriteOutcome } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* `packages/cli/src/lib/init/cursor-merge.ts` — Scope B (0.2.0-beta.1).
|
|
5
|
+
*
|
|
6
|
+
* Writes the `coodra` MCP entry into Cursor's per-project MCP config so a
|
|
7
|
+
* Cursor session can spawn the bundled Coodra MCP server and call the
|
|
8
|
+
* 26 `coodra__*` tools.
|
|
9
|
+
*
|
|
10
|
+
* **Project-scoped, not global.** Cursor reads MCP servers from either
|
|
11
|
+
* `~/.cursor/mcp.json` (global) or `<repo>/.cursor/mcp.json`
|
|
12
|
+
* (project-scoped). We write the PROJECT file — same model as Codex
|
|
13
|
+
* (`.codex/config.toml`) and Claude Code (`.mcp.json`): repo-scoped,
|
|
14
|
+
* uninstall removes it cleanly, never touches the user's shared global
|
|
15
|
+
* Cursor config.
|
|
16
|
+
*
|
|
17
|
+
* The file shape matches `.mcp.json` / Windsurf MCP config —
|
|
18
|
+
* `{ "mcpServers": { "<name>": { command, args, env } } }` — so we
|
|
19
|
+
* reuse the `CoodraMcpEntry` shape and the `isCoodraEntryEqual`
|
|
20
|
+
* canonical comparator from `mcp-merge.ts`. This module only owns the
|
|
21
|
+
* project-scoped path resolution.
|
|
22
|
+
*
|
|
23
|
+
* Merge contract mirrors `mergeMcpJson` (spec §11 Decision 3): never
|
|
24
|
+
* destroys user edits — an existing drifted `coodra` entry is preserved
|
|
25
|
+
* unless `--force`; every other server entry in the file is left
|
|
26
|
+
* untouched.
|
|
27
|
+
*/
|
|
28
|
+
export interface MergeCursorMcpConfigOptions {
|
|
29
|
+
readonly cwd: string;
|
|
30
|
+
readonly entry: CoodraMcpEntry;
|
|
31
|
+
readonly force: boolean;
|
|
32
|
+
readonly dryRun: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Idempotent merge of the `coodra` entry into
|
|
36
|
+
* `<cwd>/.cursor/mcp.json` under `mcpServers.coodra`.
|
|
37
|
+
*/
|
|
38
|
+
export declare function mergeCursorMcpConfig(options: MergeCursorMcpConfigOptions): Promise<WriteOutcome>;
|
|
39
|
+
/**
|
|
40
|
+
* `coodra uninstall` reverse — removes the `coodra` key from
|
|
41
|
+
* `mcpServers` in `<cwd>/.cursor/mcp.json`. Every other server entry is
|
|
42
|
+
* left untouched. Idempotent: a no-op when there's no `coodra` entry.
|
|
43
|
+
*/
|
|
44
|
+
export declare function removeCursorMcpConfig(options: {
|
|
45
|
+
cwd: string;
|
|
46
|
+
dryRun: boolean;
|
|
47
|
+
}): Promise<WriteOutcome>;
|
|
48
|
+
//# sourceMappingURL=cursor-merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-merge.d.ts","sourceRoot":"","sources":["../../../src/lib/init/cursor-merge.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAsB,MAAM,gBAAgB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,YAAY,CAAC,CAiDtG;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CA+B5G"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { access, mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { isCoodraEntryEqual } from './mcp-merge.js';
|
|
4
|
+
/**
|
|
5
|
+
* Idempotent merge of the `coodra` entry into
|
|
6
|
+
* `<cwd>/.cursor/mcp.json` under `mcpServers.coodra`.
|
|
7
|
+
*/
|
|
8
|
+
export async function mergeCursorMcpConfig(options) {
|
|
9
|
+
const path = join(options.cwd, '.cursor', 'mcp.json');
|
|
10
|
+
const exists = await pathExists(path);
|
|
11
|
+
if (!exists) {
|
|
12
|
+
const baseline = { mcpServers: { coodra: options.entry } };
|
|
13
|
+
if (!options.dryRun) {
|
|
14
|
+
await mkdir(dirname(path), { recursive: true });
|
|
15
|
+
await writeFile(path, `${JSON.stringify(baseline, null, 2)}\n`, 'utf8');
|
|
16
|
+
}
|
|
17
|
+
return { path, action: 'wrote', notes: 'created baseline .cursor/mcp.json with coodra entry' };
|
|
18
|
+
}
|
|
19
|
+
const raw = await readFile(path, 'utf8');
|
|
20
|
+
let parsed;
|
|
21
|
+
try {
|
|
22
|
+
parsed = JSON.parse(raw);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
throw new Error(`Cannot parse existing ${path}: ${err.message}`);
|
|
26
|
+
}
|
|
27
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
28
|
+
throw new Error(`${path} must be a JSON object`);
|
|
29
|
+
}
|
|
30
|
+
const servers = parsed.mcpServers ?? {};
|
|
31
|
+
const existingCoodra = servers.coodra;
|
|
32
|
+
if (options.force) {
|
|
33
|
+
parsed.mcpServers = { ...servers, coodra: options.entry };
|
|
34
|
+
if (!options.dryRun)
|
|
35
|
+
await writeFile(path, `${JSON.stringify(parsed, null, 2)}\n`, 'utf8');
|
|
36
|
+
return { path, action: 'forced', notes: 'overwrote coodra entry in .cursor/mcp.json with baseline' };
|
|
37
|
+
}
|
|
38
|
+
if (existingCoodra === undefined) {
|
|
39
|
+
parsed.mcpServers = { ...servers, coodra: options.entry };
|
|
40
|
+
if (!options.dryRun)
|
|
41
|
+
await writeFile(path, `${JSON.stringify(parsed, null, 2)}\n`, 'utf8');
|
|
42
|
+
return { path, action: 'merged', notes: 'added coodra entry to existing .cursor/mcp.json' };
|
|
43
|
+
}
|
|
44
|
+
if (isCoodraEntryEqual(options.entry, existingCoodra)) {
|
|
45
|
+
return { path, action: 'unchanged', notes: 'coodra entry in .cursor/mcp.json already matches baseline' };
|
|
46
|
+
}
|
|
47
|
+
// Drift: preserve the user's edits (Decision 3).
|
|
48
|
+
return {
|
|
49
|
+
path,
|
|
50
|
+
action: 'unchanged',
|
|
51
|
+
notes: 'coodra entry in .cursor/mcp.json exists with custom config; pass --force to overwrite with baseline',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* `coodra uninstall` reverse — removes the `coodra` key from
|
|
56
|
+
* `mcpServers` in `<cwd>/.cursor/mcp.json`. Every other server entry is
|
|
57
|
+
* left untouched. Idempotent: a no-op when there's no `coodra` entry.
|
|
58
|
+
*/
|
|
59
|
+
export async function removeCursorMcpConfig(options) {
|
|
60
|
+
const path = join(options.cwd, '.cursor', 'mcp.json');
|
|
61
|
+
const exists = await pathExists(path);
|
|
62
|
+
if (!exists) {
|
|
63
|
+
return { path, action: 'unchanged', notes: '.cursor/mcp.json does not exist; nothing to remove' };
|
|
64
|
+
}
|
|
65
|
+
const raw = await readFile(path, 'utf8');
|
|
66
|
+
let parsed;
|
|
67
|
+
try {
|
|
68
|
+
parsed = JSON.parse(raw);
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
throw new Error(`Cannot parse existing ${path}: ${err.message}`);
|
|
72
|
+
}
|
|
73
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
74
|
+
throw new Error(`${path} must be a JSON object`);
|
|
75
|
+
}
|
|
76
|
+
const servers = parsed.mcpServers ?? {};
|
|
77
|
+
if (!Object.hasOwn(servers, 'coodra')) {
|
|
78
|
+
return { path, action: 'unchanged', notes: 'no coodra entry in .cursor/mcp.json to remove' };
|
|
79
|
+
}
|
|
80
|
+
const next = { ...servers };
|
|
81
|
+
delete next.coodra;
|
|
82
|
+
parsed.mcpServers = next;
|
|
83
|
+
if (!options.dryRun) {
|
|
84
|
+
await writeFile(path, `${JSON.stringify(parsed, null, 2)}\n`, 'utf8');
|
|
85
|
+
}
|
|
86
|
+
return { path, action: 'merged', notes: 'removed coodra entry from .cursor/mcp.json' };
|
|
87
|
+
}
|
|
88
|
+
async function pathExists(path) {
|
|
89
|
+
try {
|
|
90
|
+
await access(path);
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=cursor-merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-merge.js","sourceRoot":"","sources":["../../../src/lib/init/cursor-merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import type { WriteOutcome } from './types.js';
|
|
2
2
|
/**
|
|
3
|
-
* `packages/cli/src/lib/init/instruction-files.ts
|
|
3
|
+
* `packages/cli/src/lib/init/instruction-files.ts`.
|
|
4
4
|
*
|
|
5
5
|
* Generates the Coodra **agent operating contract** into the per-agent
|
|
6
6
|
* project instruction file:
|
|
7
|
+
* - Claude → `<repo>/CLAUDE.md` (Claude Code auto-reads at session start)
|
|
8
|
+
* - Cursor → `<repo>/.cursorrules` (Cursor applies it to every chat)
|
|
7
9
|
* - Codex → `<repo>/AGENTS.md` (Codex reads it on the first turn)
|
|
8
10
|
* - Windsurf→ `<repo>/.windsurfrules` (Cascade applies it to everything)
|
|
9
11
|
*
|
|
10
|
-
* Why this matters
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* Why this matters: the agent has the 26 `coodra__*` MCP tools wired
|
|
13
|
+
* via `.mcp.json` / `.codex/config.toml` / `.cursor/mcp.json` /
|
|
14
|
+
* `~/.codeium/windsurf/mcp_config.json`, but without an instruction
|
|
15
|
+
* file it doesn't know WHEN to call them. The instruction file IS the
|
|
16
|
+
* trigger contract.
|
|
17
|
+
*
|
|
18
|
+
* For Claude Code specifically, the hooks-bridge ALSO injects a
|
|
19
|
+
* runtime `additionalContext` payload at SessionStart — so CLAUDE.md
|
|
20
|
+
* is defense-in-depth: it works even when the bridge isn't running,
|
|
21
|
+
* and gives the user something visible/editable on disk.
|
|
16
22
|
*
|
|
17
23
|
* **Marker-block discipline.** The generated content lives between
|
|
18
24
|
* `<!-- coodra:start -->` / `<!-- coodra:end -->`. `init` only ever
|
|
@@ -23,7 +29,7 @@ import type { WriteOutcome } from './types.js';
|
|
|
23
29
|
*/
|
|
24
30
|
export declare const INSTRUCTION_BLOCK_START = "<!-- coodra:start -->";
|
|
25
31
|
export declare const INSTRUCTION_BLOCK_END = "<!-- coodra:end -->";
|
|
26
|
-
export type InstructionFileName = 'AGENTS.md' | '.windsurfrules';
|
|
32
|
+
export type InstructionFileName = 'AGENTS.md' | '.windsurfrules' | '.cursorrules' | 'CLAUDE.md';
|
|
27
33
|
/**
|
|
28
34
|
* Build the marker-wrapped agent operating contract for `projectSlug`.
|
|
29
35
|
* Agent-neutral — the same block works for Codex (`AGENTS.md`) and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instruction-files.d.ts","sourceRoot":"","sources":["../../../src/lib/init/instruction-files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C
|
|
1
|
+
{"version":3,"file":"instruction-files.d.ts","sourceRoot":"","sources":["../../../src/lib/init/instruction-files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,gBAAgB,GAAG,cAAc,GAAG,WAAW,CAAC;AAEhG;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAyDjE;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,YAAY,CAAC,CA6BtG;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,YAAY,CAAC,CA0BxB"}
|
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
import { access, readFile, unlink, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
/**
|
|
4
|
-
* `packages/cli/src/lib/init/instruction-files.ts
|
|
4
|
+
* `packages/cli/src/lib/init/instruction-files.ts`.
|
|
5
5
|
*
|
|
6
6
|
* Generates the Coodra **agent operating contract** into the per-agent
|
|
7
7
|
* project instruction file:
|
|
8
|
+
* - Claude → `<repo>/CLAUDE.md` (Claude Code auto-reads at session start)
|
|
9
|
+
* - Cursor → `<repo>/.cursorrules` (Cursor applies it to every chat)
|
|
8
10
|
* - Codex → `<repo>/AGENTS.md` (Codex reads it on the first turn)
|
|
9
11
|
* - Windsurf→ `<repo>/.windsurfrules` (Cascade applies it to everything)
|
|
10
12
|
*
|
|
11
|
-
* Why this matters
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
13
|
+
* Why this matters: the agent has the 26 `coodra__*` MCP tools wired
|
|
14
|
+
* via `.mcp.json` / `.codex/config.toml` / `.cursor/mcp.json` /
|
|
15
|
+
* `~/.codeium/windsurf/mcp_config.json`, but without an instruction
|
|
16
|
+
* file it doesn't know WHEN to call them. The instruction file IS the
|
|
17
|
+
* trigger contract.
|
|
18
|
+
*
|
|
19
|
+
* For Claude Code specifically, the hooks-bridge ALSO injects a
|
|
20
|
+
* runtime `additionalContext` payload at SessionStart — so CLAUDE.md
|
|
21
|
+
* is defense-in-depth: it works even when the bridge isn't running,
|
|
22
|
+
* and gives the user something visible/editable on disk.
|
|
17
23
|
*
|
|
18
24
|
* **Marker-block discipline.** The generated content lives between
|
|
19
25
|
* `<!-- coodra:start -->` / `<!-- coodra:end -->`. `init` only ever
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instruction-files.js","sourceRoot":"","sources":["../../../src/lib/init/instruction-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC
|
|
1
|
+
{"version":3,"file":"instruction-files.js","sourceRoot":"","sources":["../../../src/lib/init/instruction-files.ts"],"names":[],"mappings":"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"}
|
package/dist/program.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { type AgentsIO, type AgentsOptions } from './commands/agents.js';
|
|
2
3
|
import { type CloudMigrateIO, type CloudMigrateOptions } from './commands/cloud-migrate.js';
|
|
3
4
|
import { type DbBackupIO, type DbBackupOptions } from './commands/db-backup.js';
|
|
4
5
|
import { type DbMigrateIO, type DbMigrateOptions } from './commands/db-migrate.js';
|
|
@@ -47,6 +48,8 @@ interface BuildProgramOptions {
|
|
|
47
48
|
readonly runStop?: (options: StopOptions, io?: StopIO) => Promise<unknown>;
|
|
48
49
|
readonly statusIO?: StatusIO;
|
|
49
50
|
readonly runStatus?: (options: StatusOptions, io?: StatusIO) => Promise<unknown>;
|
|
51
|
+
readonly agentsIO?: AgentsIO;
|
|
52
|
+
readonly runAgents?: (options: AgentsOptions, io?: AgentsIO) => Promise<unknown>;
|
|
50
53
|
readonly teamIO?: TeamCommandIO;
|
|
51
54
|
readonly runTeamLogin?: (options: TeamLoginOptions, io?: TeamCommandIO) => Promise<unknown>;
|
|
52
55
|
readonly runTeamLogout?: (io?: TeamCommandIO) => Promise<unknown>;
|
package/dist/program.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
|
package/dist/program.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { runAgentsCommand } from './commands/agents.js';
|
|
2
3
|
import { runCloudMigrateCommand } from './commands/cloud-migrate.js';
|
|
3
4
|
import { runDbBackupCommand } from './commands/db-backup.js';
|
|
4
5
|
import { runDbMigrateCommand } from './commands/db-migrate.js';
|
|
@@ -101,6 +102,14 @@ export function buildProgram(options = {}) {
|
|
|
101
102
|
.action(async (opts) => {
|
|
102
103
|
await statusRunner(opts, options.statusIO);
|
|
103
104
|
});
|
|
105
|
+
const agentsRunner = options.runAgents ?? runAgentsCommand;
|
|
106
|
+
program
|
|
107
|
+
.command('agents')
|
|
108
|
+
.description('Show per-agent wiring status (Claude Code, Cursor, Windsurf, Codex). Read-only — use `coodra init` to wire and `coodra uninstall` to strip.')
|
|
109
|
+
.option('--json', 'Emit structured JSON instead of human-readable text.')
|
|
110
|
+
.action(async (opts) => {
|
|
111
|
+
await agentsRunner(opts, options.agentsIO);
|
|
112
|
+
});
|
|
104
113
|
// Phase G slice G.3 — top-level `coodra login` for browser-handoff auth.
|
|
105
114
|
// The `team login` subcommand is kept as a backward-compat alias.
|
|
106
115
|
const loginRunnerPhaseG = options.runLogin ?? runLoginCommand;
|