embark-cli 1.2.2 → 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.
- package/.claude/commands/embark-research.md +67 -0
- package/.claude/commands/embark-review.md +84 -0
- package/.claude/settings.json +15 -0
- package/.claude/settings.local.json +7 -1
- package/README.md +40 -0
- package/dist/agents/amp.d.ts +5 -0
- package/dist/agents/amp.d.ts.map +1 -0
- package/dist/agents/amp.js +176 -0
- package/dist/agents/amp.js.map +1 -0
- package/dist/agents/claude.d.ts +5 -0
- package/dist/agents/claude.d.ts.map +1 -0
- package/dist/agents/claude.js +172 -0
- package/dist/agents/claude.js.map +1 -0
- package/dist/agents/codex.d.ts +5 -0
- package/dist/agents/codex.d.ts.map +1 -0
- package/dist/agents/codex.js +156 -0
- package/dist/agents/codex.js.map +1 -0
- package/dist/agents/gemini.d.ts +5 -0
- package/dist/agents/gemini.d.ts.map +1 -0
- package/dist/agents/gemini.js +156 -0
- package/dist/agents/gemini.js.map +1 -0
- package/dist/agents/index.d.ts +27 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +90 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/cli-history.d.ts +2 -0
- package/dist/cli-history.d.ts.map +1 -0
- package/dist/cli-history.js +101 -0
- package/dist/cli-history.js.map +1 -0
- package/dist/cli-index.d.ts +2 -0
- package/dist/cli-index.d.ts.map +1 -0
- package/dist/cli-index.js +245 -0
- package/dist/cli-index.js.map +1 -0
- package/dist/cli-install.d.ts +2 -0
- package/dist/cli-install.d.ts.map +1 -0
- package/dist/cli-install.js +205 -0
- package/dist/cli-install.js.map +1 -0
- package/dist/cli-search.js +2 -2
- package/dist/cli-search.js.map +1 -1
- package/dist/cli-utils.d.ts +46 -0
- package/dist/cli-utils.d.ts.map +1 -1
- package/dist/cli-utils.js +561 -1
- package/dist/cli-utils.js.map +1 -1
- package/dist/embark-client.d.ts +37 -0
- package/dist/embark-client.d.ts.map +1 -1
- package/dist/embark-client.js +172 -0
- package/dist/embark-client.js.map +1 -1
- package/dist/git-utils.d.ts +7 -1
- package/dist/git-utils.d.ts.map +1 -1
- package/dist/git-utils.js +88 -1
- package/dist/git-utils.js.map +1 -1
- package/dist/handlers.d.ts +1 -0
- package/dist/handlers.d.ts.map +1 -1
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -1
- package/dist/skills/index.d.ts +3 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +150 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/stats-server.d.ts.map +1 -1
- package/dist/stats-server.js +4 -0
- package/dist/stats-server.js.map +1 -1
- package/dist/stats.d.ts +2 -2
- package/dist/stats.d.ts.map +1 -1
- package/package.json +1 -1
- 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
|
+
```
|
|
@@ -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
|
},
|
package/README.md
CHANGED
|
@@ -65,6 +65,17 @@ The authorization tokens are securely saved in `~/.jbaccount` for future session
|
|
|
65
65
|
- `REPOSITORY_ID` (optional): Alternative way to specify default repository (fallback for `REPOSITORY_GIT_REMOTE_URL`)
|
|
66
66
|
- `REPOSITORY_REVISION` (optional): Default repository revision (commit hash, branch name, or tag) to search in. If not set, searches the latest indexed version.
|
|
67
67
|
|
|
68
|
+
#### Indexing Configuration
|
|
69
|
+
- `INDEX_DESCRIPTOR_JSON` (optional for `embark index --remote`): JSON descriptor for the index job. Must include `scope`, `embedModelId`, `dimensions`, `precision`, `env`, `version` (optional: `clusterType`, `uniqueName`, `flavor`).
|
|
70
|
+
- `INDEX_SCOPE` (optional): Descriptor scope when building JSON (default: `CODE_BLOCKS`).
|
|
71
|
+
- `INDEX_VERSION` (optional): Descriptor version when building JSON (default: `2`).
|
|
72
|
+
- `INDEX_EMBED_MODEL_ID` (optional): Descriptor embed model id when building JSON (default: `openai-embedding-large`).
|
|
73
|
+
- `INDEX_DIMENSIONS` (optional): Descriptor dimensions when building JSON (default: `3072`).
|
|
74
|
+
- `INDEX_ENV` (optional): Descriptor environment when building JSON (`stable` or `bench`, default: `stable`).
|
|
75
|
+
- `INDEX_BENCH_CLIENT_ID` (optional): Benchmark client id when `INDEX_ENV=bench`.
|
|
76
|
+
- `INDEX_REPOSITORY_JSON` (optional for `embark index --remote`): JSON descriptor for the repository. Must include `id`, `source`, `sourceId` (optional: `customerCode`).
|
|
77
|
+
- `INDEX_CUSTOMER_CODE` (optional): Repository customerCode when deriving Space repository JSON.
|
|
78
|
+
|
|
68
79
|
#### Multi-Repository Filtering
|
|
69
80
|
- `INCLUDE_REPOSITORY_URLS` (optional): Comma-separated list of Git repository URLs to add to searches. These repositories are searched in addition to any discovered from workspace roots. Useful when your working directory does not contain all repos you want to search. Example: `"https://github.com/owner/repo1.git,https://github.com/owner/repo2.git"`
|
|
70
81
|
- `EXCLUDE_REPOSITORY_URLS` (optional): Comma-separated list of Git repository URLs to exclude from searches. When set, these repositories will be skipped. Example: `"https://github.com/owner/large-repo.git"`
|
|
@@ -123,6 +134,35 @@ npx embark-cli search "authorization middleware" src
|
|
|
123
134
|
- `--json`: Emit JSON results instead of grep-like lines
|
|
124
135
|
- `-h, --help`: Show CLI usage
|
|
125
136
|
|
|
137
|
+
### CLI Indexing
|
|
138
|
+
|
|
139
|
+
Use `embark index` to kick off indexing. The default (local) mode currently just prints a stub message; pass `--remote` to schedule indexing through the Embark API using the Git remote from your current repository or `REPOSITORY_GIT_REMOTE_URL`.
|
|
140
|
+
|
|
141
|
+
Examples:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
embark index --remote
|
|
145
|
+
embark index --remote --repo https://github.com/owner/repo.git --revision main
|
|
146
|
+
embark index --remote --reschedule-period 24
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Options:
|
|
150
|
+
- `--remote`: Call the Embark API to schedule indexing
|
|
151
|
+
- `-r, --repo <url>`: Repository Git remote URL (defaults to current repo or `REPOSITORY_GIT_REMOTE_URL`)
|
|
152
|
+
- `-R, --revision <rev>`: Revision/branch/tag to index
|
|
153
|
+
- `--descriptor <name>`: Legacy index descriptor name (use `--descriptor-json` for scheduling)
|
|
154
|
+
- `--descriptor-json <json>`: Full index descriptor JSON for remote scheduling
|
|
155
|
+
- `--repository-json <json>`: Repository JSON for remote scheduling
|
|
156
|
+
- `--scope <name>`: Descriptor scope when building JSON (default: `CODE_BLOCKS`)
|
|
157
|
+
- `--version <int>`: Descriptor version when building JSON (default: `2`)
|
|
158
|
+
- `--embed-model <id>`: Embedding model id when building JSON (default: `openai-embedding-large`)
|
|
159
|
+
- `--dimensions <int>`: Embedding dimensions when building JSON (default: `3072`)
|
|
160
|
+
- `--env <stable|bench>`: Descriptor environment when building JSON (default: `stable`)
|
|
161
|
+
- `--bench-client-id <id>`: Benchmark client id when env=bench
|
|
162
|
+
- `--customer-code <code>`: Repository customerCode (required for Space)
|
|
163
|
+
- `--reschedule-period <int>`: Reschedule period for recurring jobs
|
|
164
|
+
- `-h, --help`: Show CLI usage
|
|
165
|
+
|
|
126
166
|
### Running the Server
|
|
127
167
|
|
|
128
168
|
#### Using npx (Recommended)
|
|
@@ -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"}
|