embark-cli 1.2.3 → 1.2.4

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 (64) hide show
  1. package/.claude/commands/embark-research.md +67 -0
  2. package/.claude/commands/embark-review.md +84 -0
  3. package/.claude/settings.json +15 -0
  4. package/.claude/settings.local.json +7 -1
  5. package/dist/agents/amp.d.ts +5 -0
  6. package/dist/agents/amp.d.ts.map +1 -0
  7. package/dist/agents/amp.js +176 -0
  8. package/dist/agents/amp.js.map +1 -0
  9. package/dist/agents/claude.d.ts +5 -0
  10. package/dist/agents/claude.d.ts.map +1 -0
  11. package/dist/agents/claude.js +172 -0
  12. package/dist/agents/claude.js.map +1 -0
  13. package/dist/agents/codex.d.ts +5 -0
  14. package/dist/agents/codex.d.ts.map +1 -0
  15. package/dist/agents/codex.js +156 -0
  16. package/dist/agents/codex.js.map +1 -0
  17. package/dist/agents/gemini.d.ts +5 -0
  18. package/dist/agents/gemini.d.ts.map +1 -0
  19. package/dist/agents/gemini.js +156 -0
  20. package/dist/agents/gemini.js.map +1 -0
  21. package/dist/agents/index.d.ts +27 -0
  22. package/dist/agents/index.d.ts.map +1 -0
  23. package/dist/agents/index.js +90 -0
  24. package/dist/agents/index.js.map +1 -0
  25. package/dist/cli-history.d.ts +2 -0
  26. package/dist/cli-history.d.ts.map +1 -0
  27. package/dist/cli-history.js +101 -0
  28. package/dist/cli-history.js.map +1 -0
  29. package/dist/cli-index.d.ts.map +1 -1
  30. package/dist/cli-index.js +9 -2
  31. package/dist/cli-index.js.map +1 -1
  32. package/dist/cli-install.d.ts +2 -0
  33. package/dist/cli-install.d.ts.map +1 -0
  34. package/dist/cli-install.js +205 -0
  35. package/dist/cli-install.js.map +1 -0
  36. package/dist/cli-search.js +2 -2
  37. package/dist/cli-search.js.map +1 -1
  38. package/dist/cli-utils.d.ts +26 -0
  39. package/dist/cli-utils.d.ts.map +1 -1
  40. package/dist/cli-utils.js +270 -1
  41. package/dist/cli-utils.js.map +1 -1
  42. package/dist/embark-client.d.ts +14 -0
  43. package/dist/embark-client.d.ts.map +1 -1
  44. package/dist/embark-client.js +115 -0
  45. package/dist/embark-client.js.map +1 -1
  46. package/dist/git-utils.d.ts +7 -1
  47. package/dist/git-utils.d.ts.map +1 -1
  48. package/dist/git-utils.js +88 -1
  49. package/dist/git-utils.js.map +1 -1
  50. package/dist/handlers.d.ts +1 -0
  51. package/dist/handlers.d.ts.map +1 -1
  52. package/dist/index.js +16 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/skills/index.d.ts +3 -0
  55. package/dist/skills/index.d.ts.map +1 -0
  56. package/dist/skills/index.js +150 -0
  57. package/dist/skills/index.js.map +1 -0
  58. package/dist/stats-server.d.ts.map +1 -1
  59. package/dist/stats-server.js +4 -0
  60. package/dist/stats-server.js.map +1 -1
  61. package/dist/stats.d.ts +2 -2
  62. package/dist/stats.d.ts.map +1 -1
  63. package/package.json +1 -1
  64. package/test/cli-utils.test.js +102 -0
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: embark-research
3
+ description: Research codebase
4
+ ---
5
+
6
+
7
+ Use this skill to research and understand unfamiliar parts of the codebase using semantic code search.
8
+
9
+ ## When to Use
10
+
11
+ - Understanding unfamiliar codebases or locating specific functionality
12
+ - Finding implementations, definitions, or usage patterns
13
+ - Identifying code related to specific features or concepts
14
+ - Before making changes to understand the context and impact
15
+
16
+ ## Tools Available
17
+
18
+ ### `embark search`
19
+
20
+ Semantic code search that finds code by meaning, not just exact keywords.
21
+
22
+ ```bash
23
+ embark search "<descriptive query>" [path]
24
+ embark search -p <path> "<query>"
25
+ embark search --json "<query>" # For structured output
26
+ ```
27
+
28
+ **Query Tips:**
29
+ - Be descriptive: "function that validates user email addresses" > "email"
30
+ - Include context: "error handling middleware for HTTP requests with logging"
31
+ - Specify what you're looking for: "React component that renders a modal dialog"
32
+
33
+ ### `embark history`
34
+
35
+ Search through commit messages and changes to understand how code evolved.
36
+
37
+ ```bash
38
+ embark history "<query>"
39
+ embark history -n 20 "<query>" # Get more results
40
+ embark history --json "<query>" # For structured output
41
+ ```
42
+
43
+ **Use Cases:**
44
+ - Find when a feature was added: "add user authentication"
45
+ - Find bug fixes: "fix memory leak in worker"
46
+ - Understand refactoring: "refactor database connection"
47
+
48
+ ## Research Workflow
49
+
50
+ 1. **Start broad**: Use `embark search` with general terms to understand the landscape
51
+ 2. **Narrow down**: Add path filters (`-p`) once you identify relevant directories
52
+ 3. **Check history**: Use `embark history` to understand why code was written a certain way
53
+ 4. **Read the code**: Once you find relevant files, read them to understand the details
54
+
55
+ ## Example Session
56
+
57
+ ```bash
58
+ # Find authentication-related code
59
+ embark search "user authentication login"
60
+
61
+ # Narrow to specific directory
62
+ embark search -p src/auth "JWT token validation"
63
+
64
+ # Understand how auth evolved
65
+ embark history "add JWT authentication"
66
+ embark history "fix authentication bug"
67
+ ```
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: embark-review
3
+ description: Review the branch
4
+ ---
5
+
6
+ Use this skill to review code changes using semantic search to understand context and impact.
7
+
8
+ ## When to Use
9
+
10
+ - Before committing changes to understand what you're about to commit
11
+ - Reviewing pull requests or branches
12
+ - Understanding the impact of changes on the rest of the codebase
13
+
14
+ ## Review Workflow
15
+
16
+ ### 1. Check Current Changes
17
+
18
+ First, see what's changed:
19
+
20
+ ```bash
21
+ git status
22
+ git diff # Unstaged changes
23
+ git diff --staged # Staged changes
24
+ git diff main...HEAD # All changes on current branch
25
+ ```
26
+
27
+ ### 2. Understand Changed Code Context
28
+
29
+ For each significantly changed file, use semantic search to understand:
30
+
31
+ - **Similar patterns**: Find similar code elsewhere that might need the same change using embark-cli
32
+ - **Callers**: Find code that calls the modified functions
33
+ - **Dependencies**: Find code that the modified code depends on
34
+
35
+ ```bash
36
+ # Find similar patterns
37
+ embark search "similar implementation to <describe the change>"
38
+
39
+ # Find callers of a modified function
40
+ embark search "calls to <function name> to understand impact"
41
+
42
+ # Find related test files
43
+ embark search -p test "tests for <feature being modified>"
44
+ ```
45
+
46
+ ### 3. Check Historical Context
47
+
48
+ Understand why the code was written this way:
49
+
50
+ ```bash
51
+ # Find related commits
52
+ embark history "changes to <feature name>"
53
+
54
+ # Find bug fixes in this area
55
+ embark history "fix <area being modified>"
56
+ ```
57
+
58
+ ### 4. Review Checklist
59
+
60
+ For each change, verify:
61
+
62
+ - [ ] The change is consistent with similar patterns in the codebase
63
+ - [ ] All callers of modified functions will still work correctly
64
+ - [ ] Related tests exist and cover the changes
65
+ - [ ] The change doesn't reintroduce previously fixed bugs
66
+
67
+ ## Example Session
68
+
69
+ ```bash
70
+ # See what's changed
71
+ git diff --staged
72
+
73
+ # For a change to auth middleware, find similar patterns
74
+ embark search "authentication middleware pattern"
75
+
76
+ # Find what calls this middleware
77
+ embark search "uses auth middleware to protect routes"
78
+
79
+ # Check if there were related bug fixes
80
+ embark history "fix auth middleware"
81
+
82
+ # Find related tests
83
+ embark search -p test "auth middleware test"
84
+ ```
@@ -0,0 +1,15 @@
1
+ {
2
+ "hooks": {
3
+ "Stop": [
4
+ {
5
+ "matcher": "",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "embark index"
10
+ }
11
+ ]
12
+ }
13
+ ]
14
+ }
15
+ }
@@ -21,7 +21,13 @@
21
21
  "Bash(ENABLE_REMOTE_LOGS=true node:*)",
22
22
  "Bash(ENABLE_LOCAL_LOGS=true node:*)",
23
23
  "Bash(ENABLE_LOCAL_LOGS=1 node dist/index.js:*)",
24
- "mcp__jetbrains-app__semantic_code_search"
24
+ "mcp__jetbrains-app__semantic_code_search",
25
+ "Bash(npm test:*)",
26
+ "Bash(grep:*)",
27
+ "WebSearch",
28
+ "WebFetch(domain:docs.claude.com)",
29
+ "WebFetch(domain:ampcode.com)",
30
+ "WebFetch(domain:google-gemini.github.io)"
25
31
  ],
26
32
  "deny": []
27
33
  },
@@ -0,0 +1,5 @@
1
+ import type { DetectedAgent, InstallOptions, InstallResult } from './index.js';
2
+ export declare function detectAmp(): DetectedAgent | null;
3
+ export declare function checkAmpInstalled(configPath: string): boolean;
4
+ export declare function installAmp(options: InstallOptions): Promise<InstallResult>;
5
+ //# sourceMappingURL=amp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amp.d.ts","sourceRoot":"","sources":["../../src/agents/amp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAyD/E,wBAAgB,SAAS,IAAI,aAAa,GAAG,IAAI,CAgBhD;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAc7D;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAyEhF"}
@@ -0,0 +1,176 @@
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.detectAmp = detectAmp;
37
+ exports.checkAmpInstalled = checkAmpInstalled;
38
+ exports.installAmp = installAmp;
39
+ const os = __importStar(require("os"));
40
+ const path = __importStar(require("path"));
41
+ const fs = __importStar(require("fs"));
42
+ const index_js_1 = require("../skills/index.js");
43
+ function readConfigYaml(configPath) {
44
+ // Amp may use YAML or JSON config - we'll support JSON for simplicity
45
+ const jsonPath = configPath.endsWith('.json') ? configPath : configPath + '.json';
46
+ if (!fs.existsSync(jsonPath)) {
47
+ return {};
48
+ }
49
+ try {
50
+ const content = fs.readFileSync(jsonPath, 'utf-8');
51
+ return JSON.parse(content);
52
+ }
53
+ catch {
54
+ return {};
55
+ }
56
+ }
57
+ function writeConfigJson(configPath, config) {
58
+ const dir = path.dirname(configPath);
59
+ if (!fs.existsSync(dir)) {
60
+ fs.mkdirSync(dir, { recursive: true });
61
+ }
62
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
63
+ }
64
+ const EMBARK_INSTRUCTIONS = `
65
+ ## Embark Code Search
66
+
67
+ You have access to Embark semantic code search via the following commands:
68
+
69
+ ### embark search
70
+ Semantic code search that finds code by meaning:
71
+ \`\`\`bash
72
+ embark search "<descriptive query>" [path]
73
+ \`\`\`
74
+
75
+ ### embark history
76
+ Search through commit messages and changes:
77
+ \`\`\`bash
78
+ embark history "<query>"
79
+ \`\`\`
80
+
81
+ Use these tools to:
82
+ - Understand unfamiliar parts of the codebase
83
+ - Find implementations, definitions, or usage patterns
84
+ - Review code changes by understanding context and impact
85
+ `;
86
+ function detectAmp() {
87
+ const homeDir = os.homedir();
88
+ const globalConfigPath = path.join(homeDir, '.amp');
89
+ const cwd = process.cwd();
90
+ const projectConfigPath = path.join(cwd, '.amp');
91
+ if (!fs.existsSync(globalConfigPath)) {
92
+ return null;
93
+ }
94
+ return {
95
+ type: 'amp',
96
+ globalConfigPath,
97
+ projectConfigPath: fs.existsSync(projectConfigPath) ? projectConfigPath : null,
98
+ isInstalled: false,
99
+ };
100
+ }
101
+ function checkAmpInstalled(configPath) {
102
+ const instructionsPath = path.join(configPath, 'instructions.md');
103
+ if (fs.existsSync(instructionsPath)) {
104
+ const content = fs.readFileSync(instructionsPath, 'utf-8');
105
+ return content.includes('embark');
106
+ }
107
+ const configJsonPath = path.join(configPath, 'config.json');
108
+ if (fs.existsSync(configJsonPath)) {
109
+ const config = readConfigYaml(configJsonPath);
110
+ return config.instructions?.includes('embark') ?? false;
111
+ }
112
+ return false;
113
+ }
114
+ async function installAmp(options) {
115
+ const homeDir = os.homedir();
116
+ const cwd = process.cwd();
117
+ const configPath = options.scope === 'project'
118
+ ? path.join(cwd, '.amp')
119
+ : path.join(homeDir, '.amp');
120
+ const result = {
121
+ agent: 'amp',
122
+ success: true,
123
+ message: '',
124
+ skillsInstalled: [],
125
+ hooksInstalled: [],
126
+ };
127
+ const messages = [];
128
+ // Create config directory if it doesn't exist
129
+ if (!fs.existsSync(configPath)) {
130
+ fs.mkdirSync(configPath, { recursive: true });
131
+ }
132
+ // Install instructions/skills
133
+ if (!options.hooksOnly) {
134
+ const instructionsPath = path.join(configPath, 'instructions.md');
135
+ let existingContent = '';
136
+ if (fs.existsSync(instructionsPath)) {
137
+ existingContent = fs.readFileSync(instructionsPath, 'utf-8');
138
+ }
139
+ if (!existingContent.includes('embark')) {
140
+ const newContent = existingContent + '\n' + EMBARK_INSTRUCTIONS + '\n\n---\n\n' +
141
+ '### /embark-research\n\n' + index_js_1.EMBARK_RESEARCH_SKILL + '\n\n---\n\n' +
142
+ '### /embark-review\n\n' + index_js_1.EMBARK_REVIEW_SKILL;
143
+ fs.writeFileSync(instructionsPath, newContent.trim() + '\n', 'utf-8');
144
+ result.skillsInstalled.push('embark-research', 'embark-review');
145
+ messages.push('Installed Embark instructions and skills');
146
+ }
147
+ else {
148
+ messages.push('Embark instructions already installed');
149
+ }
150
+ }
151
+ // Install hooks if amp supports them
152
+ if (!options.skillsOnly) {
153
+ const configJsonPath = path.join(configPath, 'config.json');
154
+ const config = readConfigYaml(configJsonPath);
155
+ if (!config.hooks) {
156
+ config.hooks = {};
157
+ }
158
+ let hooksAdded = false;
159
+ if (!config.hooks.onStop?.includes('embark index')) {
160
+ config.hooks.onStop = config.hooks.onStop || [];
161
+ config.hooks.onStop.push('embark index');
162
+ result.hooksInstalled.push('onStop');
163
+ hooksAdded = true;
164
+ }
165
+ if (hooksAdded) {
166
+ writeConfigJson(configJsonPath, config);
167
+ messages.push(`Installed hooks: ${result.hooksInstalled.join(', ')}`);
168
+ }
169
+ else {
170
+ messages.push('Hooks already installed');
171
+ }
172
+ }
173
+ result.message = messages.join('. ');
174
+ return result;
175
+ }
176
+ //# sourceMappingURL=amp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amp.js","sourceRoot":"","sources":["../../src/agents/amp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { DetectedAgent, InstallOptions, InstallResult } from './index.js';
2
+ export declare function detectClaude(): DetectedAgent | null;
3
+ export declare function checkClaudeInstalled(configPath: string): boolean;
4
+ export declare function installClaude(options: InstallOptions): Promise<InstallResult>;
5
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqF/E,wBAAgB,YAAY,IAAI,aAAa,GAAG,IAAI,CAgBnD;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAWhE;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAgEnF"}
@@ -0,0 +1,172 @@
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.detectClaude = detectClaude;
37
+ exports.checkClaudeInstalled = checkClaudeInstalled;
38
+ exports.installClaude = installClaude;
39
+ const os = __importStar(require("os"));
40
+ const path = __importStar(require("path"));
41
+ const fs = __importStar(require("fs"));
42
+ const index_js_1 = require("../skills/index.js");
43
+ const HOOK_COMMAND = 'embark index';
44
+ function readSettingsJson(settingsPath) {
45
+ if (!fs.existsSync(settingsPath)) {
46
+ return {};
47
+ }
48
+ try {
49
+ const content = fs.readFileSync(settingsPath, 'utf-8');
50
+ return JSON.parse(content);
51
+ }
52
+ catch {
53
+ return {};
54
+ }
55
+ }
56
+ function writeSettingsJson(settingsPath, settings) {
57
+ const dir = path.dirname(settingsPath);
58
+ if (!fs.existsSync(dir)) {
59
+ fs.mkdirSync(dir, { recursive: true });
60
+ }
61
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
62
+ }
63
+ function hasEmbarkHook(matchers) {
64
+ if (!matchers)
65
+ return false;
66
+ return matchers.some((matcher) => matcher.hooks.some((hook) => hook.command?.includes('embark')));
67
+ }
68
+ function createEmbarkHookMatcher() {
69
+ return {
70
+ matcher: '',
71
+ hooks: [
72
+ {
73
+ type: 'command',
74
+ command: HOOK_COMMAND,
75
+ },
76
+ ],
77
+ };
78
+ }
79
+ function addHookIfMissing(settings, hookType) {
80
+ if (!settings.hooks) {
81
+ settings.hooks = {};
82
+ }
83
+ if (!settings.hooks[hookType]) {
84
+ settings.hooks[hookType] = [];
85
+ }
86
+ if (hasEmbarkHook(settings.hooks[hookType])) {
87
+ return false;
88
+ }
89
+ settings.hooks[hookType].push(createEmbarkHookMatcher());
90
+ return true;
91
+ }
92
+ function detectClaude() {
93
+ const homeDir = os.homedir();
94
+ const globalConfigPath = path.join(homeDir, '.claude');
95
+ const cwd = process.cwd();
96
+ const projectConfigPath = path.join(cwd, '.claude');
97
+ if (!fs.existsSync(globalConfigPath)) {
98
+ return null;
99
+ }
100
+ return {
101
+ type: 'claude',
102
+ globalConfigPath,
103
+ projectConfigPath: fs.existsSync(projectConfigPath) ? projectConfigPath : null,
104
+ isInstalled: false,
105
+ };
106
+ }
107
+ function checkClaudeInstalled(configPath) {
108
+ const settingsPath = path.join(configPath, 'settings.json');
109
+ const settings = readSettingsJson(settingsPath);
110
+ const hasHooks = hasEmbarkHook(settings.hooks?.Stop);
111
+ const commandsPath = path.join(configPath, 'commands');
112
+ const hasResearchSkill = fs.existsSync(path.join(commandsPath, 'embark-research.md'));
113
+ const hasReviewSkill = fs.existsSync(path.join(commandsPath, 'embark-review.md'));
114
+ return hasHooks || hasResearchSkill || hasReviewSkill;
115
+ }
116
+ async function installClaude(options) {
117
+ const homeDir = os.homedir();
118
+ const cwd = process.cwd();
119
+ const configPath = options.scope === 'project'
120
+ ? path.join(cwd, '.claude')
121
+ : path.join(homeDir, '.claude');
122
+ const result = {
123
+ agent: 'claude',
124
+ success: true,
125
+ message: '',
126
+ skillsInstalled: [],
127
+ hooksInstalled: [],
128
+ };
129
+ const messages = [];
130
+ // Install hooks (unless skills-only)
131
+ if (!options.skillsOnly) {
132
+ const settingsPath = path.join(configPath, 'settings.json');
133
+ const settings = readSettingsJson(settingsPath);
134
+ // Add Stop hook for when agent session ends
135
+ if (addHookIfMissing(settings, 'Stop')) {
136
+ result.hooksInstalled.push('Stop');
137
+ }
138
+ if (result.hooksInstalled.length > 0) {
139
+ writeSettingsJson(settingsPath, settings);
140
+ messages.push(`Installed hooks: ${result.hooksInstalled.join(', ')}`);
141
+ }
142
+ else {
143
+ messages.push('Hooks already installed');
144
+ }
145
+ }
146
+ // Install skills/commands (unless hooks-only)
147
+ if (!options.hooksOnly) {
148
+ const commandsPath = path.join(configPath, 'commands');
149
+ if (!fs.existsSync(commandsPath)) {
150
+ fs.mkdirSync(commandsPath, { recursive: true });
151
+ }
152
+ const researchPath = path.join(commandsPath, 'embark-research.md');
153
+ if (!fs.existsSync(researchPath)) {
154
+ fs.writeFileSync(researchPath, index_js_1.EMBARK_RESEARCH_SKILL, 'utf-8');
155
+ result.skillsInstalled.push('embark-research');
156
+ }
157
+ const reviewPath = path.join(commandsPath, 'embark-review.md');
158
+ if (!fs.existsSync(reviewPath)) {
159
+ fs.writeFileSync(reviewPath, index_js_1.EMBARK_REVIEW_SKILL, 'utf-8');
160
+ result.skillsInstalled.push('embark-review');
161
+ }
162
+ if (result.skillsInstalled.length > 0) {
163
+ messages.push(`Installed skills: ${result.skillsInstalled.join(', ')}`);
164
+ }
165
+ else {
166
+ messages.push('Skills already installed');
167
+ }
168
+ }
169
+ result.message = messages.join('. ');
170
+ return result;
171
+ }
172
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { DetectedAgent, InstallOptions, InstallResult } from './index.js';
2
+ export declare function detectCodex(): DetectedAgent | null;
3
+ export declare function checkCodexInstalled(configPath: string): boolean;
4
+ export declare function installCodex(options: InstallOptions): Promise<InstallResult>;
5
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/agents/codex.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAmD/E,wBAAgB,WAAW,IAAI,aAAa,GAAG,IAAI,CAgBlD;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAc/D;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAoDlF"}