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.
Files changed (66) 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/README.md +40 -0
  6. package/dist/agents/amp.d.ts +5 -0
  7. package/dist/agents/amp.d.ts.map +1 -0
  8. package/dist/agents/amp.js +176 -0
  9. package/dist/agents/amp.js.map +1 -0
  10. package/dist/agents/claude.d.ts +5 -0
  11. package/dist/agents/claude.d.ts.map +1 -0
  12. package/dist/agents/claude.js +172 -0
  13. package/dist/agents/claude.js.map +1 -0
  14. package/dist/agents/codex.d.ts +5 -0
  15. package/dist/agents/codex.d.ts.map +1 -0
  16. package/dist/agents/codex.js +156 -0
  17. package/dist/agents/codex.js.map +1 -0
  18. package/dist/agents/gemini.d.ts +5 -0
  19. package/dist/agents/gemini.d.ts.map +1 -0
  20. package/dist/agents/gemini.js +156 -0
  21. package/dist/agents/gemini.js.map +1 -0
  22. package/dist/agents/index.d.ts +27 -0
  23. package/dist/agents/index.d.ts.map +1 -0
  24. package/dist/agents/index.js +90 -0
  25. package/dist/agents/index.js.map +1 -0
  26. package/dist/cli-history.d.ts +2 -0
  27. package/dist/cli-history.d.ts.map +1 -0
  28. package/dist/cli-history.js +101 -0
  29. package/dist/cli-history.js.map +1 -0
  30. package/dist/cli-index.d.ts +2 -0
  31. package/dist/cli-index.d.ts.map +1 -0
  32. package/dist/cli-index.js +245 -0
  33. package/dist/cli-index.js.map +1 -0
  34. package/dist/cli-install.d.ts +2 -0
  35. package/dist/cli-install.d.ts.map +1 -0
  36. package/dist/cli-install.js +205 -0
  37. package/dist/cli-install.js.map +1 -0
  38. package/dist/cli-search.js +2 -2
  39. package/dist/cli-search.js.map +1 -1
  40. package/dist/cli-utils.d.ts +46 -0
  41. package/dist/cli-utils.d.ts.map +1 -1
  42. package/dist/cli-utils.js +561 -1
  43. package/dist/cli-utils.js.map +1 -1
  44. package/dist/embark-client.d.ts +37 -0
  45. package/dist/embark-client.d.ts.map +1 -1
  46. package/dist/embark-client.js +172 -0
  47. package/dist/embark-client.js.map +1 -1
  48. package/dist/git-utils.d.ts +7 -1
  49. package/dist/git-utils.d.ts.map +1 -1
  50. package/dist/git-utils.js +88 -1
  51. package/dist/git-utils.js.map +1 -1
  52. package/dist/handlers.d.ts +1 -0
  53. package/dist/handlers.d.ts.map +1 -1
  54. package/dist/index.js +24 -0
  55. package/dist/index.js.map +1 -1
  56. package/dist/skills/index.d.ts +3 -0
  57. package/dist/skills/index.d.ts.map +1 -0
  58. package/dist/skills/index.js +150 -0
  59. package/dist/skills/index.js.map +1 -0
  60. package/dist/stats-server.d.ts.map +1 -1
  61. package/dist/stats-server.js +4 -0
  62. package/dist/stats-server.js.map +1 -1
  63. package/dist/stats.d.ts +2 -2
  64. package/dist/stats.d.ts.map +1 -1
  65. package/package.json +1 -1
  66. package/test/cli-utils.test.js +102 -0
@@ -0,0 +1,156 @@
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.detectCodex = detectCodex;
37
+ exports.checkCodexInstalled = checkCodexInstalled;
38
+ exports.installCodex = installCodex;
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 readConfigJson(configPath) {
44
+ if (!fs.existsSync(configPath)) {
45
+ return {};
46
+ }
47
+ try {
48
+ const content = fs.readFileSync(configPath, 'utf-8');
49
+ return JSON.parse(content);
50
+ }
51
+ catch {
52
+ return {};
53
+ }
54
+ }
55
+ function writeConfigJson(configPath, config) {
56
+ const dir = path.dirname(configPath);
57
+ if (!fs.existsSync(dir)) {
58
+ fs.mkdirSync(dir, { recursive: true });
59
+ }
60
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
61
+ }
62
+ const EMBARK_INSTRUCTIONS = `
63
+ ## Embark Code Search
64
+
65
+ You have access to Embark semantic code search via the following commands:
66
+
67
+ ### embark search
68
+ Semantic code search that finds code by meaning:
69
+ \`\`\`bash
70
+ embark search "<descriptive query>" [path]
71
+ \`\`\`
72
+
73
+ ### embark history
74
+ Search through commit messages and changes:
75
+ \`\`\`bash
76
+ embark history "<query>"
77
+ \`\`\`
78
+
79
+ Use these tools to:
80
+ - Understand unfamiliar parts of the codebase
81
+ - Find implementations, definitions, or usage patterns
82
+ - Review code changes by understanding context and impact
83
+ `;
84
+ function detectCodex() {
85
+ const homeDir = os.homedir();
86
+ const globalConfigPath = path.join(homeDir, '.codex');
87
+ const cwd = process.cwd();
88
+ const projectConfigPath = path.join(cwd, '.codex');
89
+ if (!fs.existsSync(globalConfigPath)) {
90
+ return null;
91
+ }
92
+ return {
93
+ type: 'codex',
94
+ globalConfigPath,
95
+ projectConfigPath: fs.existsSync(projectConfigPath) ? projectConfigPath : null,
96
+ isInstalled: false,
97
+ };
98
+ }
99
+ function checkCodexInstalled(configPath) {
100
+ const instructionsPath = path.join(configPath, 'instructions.md');
101
+ if (fs.existsSync(instructionsPath)) {
102
+ const content = fs.readFileSync(instructionsPath, 'utf-8');
103
+ return content.includes('embark');
104
+ }
105
+ const configJsonPath = path.join(configPath, 'config.json');
106
+ if (fs.existsSync(configJsonPath)) {
107
+ const config = readConfigJson(configJsonPath);
108
+ return config.instructions?.includes('embark') ?? false;
109
+ }
110
+ return false;
111
+ }
112
+ async function installCodex(options) {
113
+ const homeDir = os.homedir();
114
+ const cwd = process.cwd();
115
+ const configPath = options.scope === 'project'
116
+ ? path.join(cwd, '.codex')
117
+ : path.join(homeDir, '.codex');
118
+ const result = {
119
+ agent: 'codex',
120
+ success: true,
121
+ message: '',
122
+ skillsInstalled: [],
123
+ hooksInstalled: [],
124
+ };
125
+ const messages = [];
126
+ // Create config directory if it doesn't exist
127
+ if (!fs.existsSync(configPath)) {
128
+ fs.mkdirSync(configPath, { recursive: true });
129
+ }
130
+ // Install instructions/skills (Codex uses instructions.md file)
131
+ if (!options.hooksOnly) {
132
+ const instructionsPath = path.join(configPath, 'instructions.md');
133
+ let existingContent = '';
134
+ if (fs.existsSync(instructionsPath)) {
135
+ existingContent = fs.readFileSync(instructionsPath, 'utf-8');
136
+ }
137
+ if (!existingContent.includes('embark')) {
138
+ const newContent = existingContent + '\n' + EMBARK_INSTRUCTIONS + '\n\n---\n\n' +
139
+ '### /embark-research\n\n' + index_js_1.EMBARK_RESEARCH_SKILL + '\n\n---\n\n' +
140
+ '### /embark-review\n\n' + index_js_1.EMBARK_REVIEW_SKILL;
141
+ fs.writeFileSync(instructionsPath, newContent.trim() + '\n', 'utf-8');
142
+ result.skillsInstalled.push('embark-research', 'embark-review');
143
+ messages.push('Installed Embark instructions and skills');
144
+ }
145
+ else {
146
+ messages.push('Embark instructions already installed');
147
+ }
148
+ }
149
+ // Note: Codex doesn't have hooks in the same way as Claude
150
+ if (!options.skillsOnly) {
151
+ messages.push('Codex does not support hooks (index runs on each session via instructions)');
152
+ }
153
+ result.message = messages.join('. ');
154
+ return result;
155
+ }
156
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/agents/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { DetectedAgent, InstallOptions, InstallResult } from './index.js';
2
+ export declare function detectGemini(): DetectedAgent | null;
3
+ export declare function checkGeminiInstalled(configPath: string): boolean;
4
+ export declare function installGemini(options: InstallOptions): Promise<InstallResult>;
5
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/agents/gemini.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAmD/E,wBAAgB,YAAY,IAAI,aAAa,GAAG,IAAI,CAgBnD;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAchE;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAoDnF"}
@@ -0,0 +1,156 @@
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.detectGemini = detectGemini;
37
+ exports.checkGeminiInstalled = checkGeminiInstalled;
38
+ exports.installGemini = installGemini;
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 readConfigJson(configPath) {
44
+ if (!fs.existsSync(configPath)) {
45
+ return {};
46
+ }
47
+ try {
48
+ const content = fs.readFileSync(configPath, 'utf-8');
49
+ return JSON.parse(content);
50
+ }
51
+ catch {
52
+ return {};
53
+ }
54
+ }
55
+ function writeConfigJson(configPath, config) {
56
+ const dir = path.dirname(configPath);
57
+ if (!fs.existsSync(dir)) {
58
+ fs.mkdirSync(dir, { recursive: true });
59
+ }
60
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
61
+ }
62
+ const EMBARK_INSTRUCTIONS = `
63
+ ## Embark Code Search
64
+
65
+ You have access to Embark semantic code search via the following commands:
66
+
67
+ ### embark search
68
+ Semantic code search that finds code by meaning:
69
+ \`\`\`bash
70
+ embark search "<descriptive query>" [path]
71
+ \`\`\`
72
+
73
+ ### embark history
74
+ Search through commit messages and changes:
75
+ \`\`\`bash
76
+ embark history "<query>"
77
+ \`\`\`
78
+
79
+ Use these tools to:
80
+ - Understand unfamiliar parts of the codebase
81
+ - Find implementations, definitions, or usage patterns
82
+ - Review code changes by understanding context and impact
83
+ `;
84
+ function detectGemini() {
85
+ const homeDir = os.homedir();
86
+ const globalConfigPath = path.join(homeDir, '.gemini');
87
+ const cwd = process.cwd();
88
+ const projectConfigPath = path.join(cwd, '.gemini');
89
+ if (!fs.existsSync(globalConfigPath)) {
90
+ return null;
91
+ }
92
+ return {
93
+ type: 'gemini',
94
+ globalConfigPath,
95
+ projectConfigPath: fs.existsSync(projectConfigPath) ? projectConfigPath : null,
96
+ isInstalled: false,
97
+ };
98
+ }
99
+ function checkGeminiInstalled(configPath) {
100
+ const instructionsPath = path.join(configPath, 'instructions.md');
101
+ if (fs.existsSync(instructionsPath)) {
102
+ const content = fs.readFileSync(instructionsPath, 'utf-8');
103
+ return content.includes('embark');
104
+ }
105
+ const configJsonPath = path.join(configPath, 'config.json');
106
+ if (fs.existsSync(configJsonPath)) {
107
+ const config = readConfigJson(configJsonPath);
108
+ return config.instructions?.includes('embark') ?? false;
109
+ }
110
+ return false;
111
+ }
112
+ async function installGemini(options) {
113
+ const homeDir = os.homedir();
114
+ const cwd = process.cwd();
115
+ const configPath = options.scope === 'project'
116
+ ? path.join(cwd, '.gemini')
117
+ : path.join(homeDir, '.gemini');
118
+ const result = {
119
+ agent: 'gemini',
120
+ success: true,
121
+ message: '',
122
+ skillsInstalled: [],
123
+ hooksInstalled: [],
124
+ };
125
+ const messages = [];
126
+ // Create config directory if it doesn't exist
127
+ if (!fs.existsSync(configPath)) {
128
+ fs.mkdirSync(configPath, { recursive: true });
129
+ }
130
+ // Install instructions/skills
131
+ if (!options.hooksOnly) {
132
+ const instructionsPath = path.join(configPath, 'instructions.md');
133
+ let existingContent = '';
134
+ if (fs.existsSync(instructionsPath)) {
135
+ existingContent = fs.readFileSync(instructionsPath, 'utf-8');
136
+ }
137
+ if (!existingContent.includes('embark')) {
138
+ const newContent = existingContent + '\n' + EMBARK_INSTRUCTIONS + '\n\n---\n\n' +
139
+ '### /embark-research\n\n' + index_js_1.EMBARK_RESEARCH_SKILL + '\n\n---\n\n' +
140
+ '### /embark-review\n\n' + index_js_1.EMBARK_REVIEW_SKILL;
141
+ fs.writeFileSync(instructionsPath, newContent.trim() + '\n', 'utf-8');
142
+ result.skillsInstalled.push('embark-research', 'embark-review');
143
+ messages.push('Installed Embark instructions and skills');
144
+ }
145
+ else {
146
+ messages.push('Embark instructions already installed');
147
+ }
148
+ }
149
+ // Note: Gemini Code Assist doesn't have CLI hooks in the same way
150
+ if (!options.skillsOnly) {
151
+ messages.push('Gemini does not support CLI hooks (use VS Code extension settings instead)');
152
+ }
153
+ result.message = messages.join('. ');
154
+ return result;
155
+ }
156
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/agents/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { AgentName, InstallScope } from '../cli-utils.js';
2
+ export interface DetectedAgent {
3
+ type: AgentName;
4
+ globalConfigPath: string;
5
+ projectConfigPath: string | null;
6
+ isInstalled: boolean;
7
+ }
8
+ export interface InstallOptions {
9
+ scope: InstallScope;
10
+ skillsOnly: boolean;
11
+ hooksOnly: boolean;
12
+ }
13
+ export interface InstallResult {
14
+ agent: AgentName;
15
+ success: boolean;
16
+ message: string;
17
+ skillsInstalled: string[];
18
+ hooksInstalled: string[];
19
+ }
20
+ export interface AgentInstaller {
21
+ detect(): DetectedAgent | null;
22
+ checkInstalled(configPath: string): boolean;
23
+ install(options: InstallOptions): Promise<InstallResult>;
24
+ }
25
+ export declare function detectAgents(): DetectedAgent[];
26
+ export declare function getConfigPath(agent: DetectedAgent, scope: InstallScope): string;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,IAAI,aAAa,GAAG,IAAI,CAAC;IAC/B,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1D;AAED,wBAAgB,YAAY,IAAI,aAAa,EAAE,CA+C9C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAK/E"}
@@ -0,0 +1,90 @@
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.detectAgents = detectAgents;
37
+ exports.getConfigPath = getConfigPath;
38
+ const os = __importStar(require("os"));
39
+ const path = __importStar(require("path"));
40
+ const fs = __importStar(require("fs"));
41
+ function detectAgents() {
42
+ const agents = [];
43
+ const homeDir = os.homedir();
44
+ const cwd = process.cwd();
45
+ // Import installers lazily to avoid circular dependencies
46
+ const claudeConfigPath = path.join(homeDir, '.claude');
47
+ if (fs.existsSync(claudeConfigPath)) {
48
+ agents.push({
49
+ type: 'claude',
50
+ globalConfigPath: claudeConfigPath,
51
+ projectConfigPath: fs.existsSync(path.join(cwd, '.claude')) ? path.join(cwd, '.claude') : null,
52
+ isInstalled: false,
53
+ });
54
+ }
55
+ const codexConfigPath = path.join(homeDir, '.codex');
56
+ if (fs.existsSync(codexConfigPath)) {
57
+ agents.push({
58
+ type: 'codex',
59
+ globalConfigPath: codexConfigPath,
60
+ projectConfigPath: fs.existsSync(path.join(cwd, '.codex')) ? path.join(cwd, '.codex') : null,
61
+ isInstalled: false,
62
+ });
63
+ }
64
+ const ampConfigPath = path.join(homeDir, '.amp');
65
+ if (fs.existsSync(ampConfigPath)) {
66
+ agents.push({
67
+ type: 'amp',
68
+ globalConfigPath: ampConfigPath,
69
+ projectConfigPath: fs.existsSync(path.join(cwd, '.amp')) ? path.join(cwd, '.amp') : null,
70
+ isInstalled: false,
71
+ });
72
+ }
73
+ const geminiConfigPath = path.join(homeDir, '.gemini');
74
+ if (fs.existsSync(geminiConfigPath)) {
75
+ agents.push({
76
+ type: 'gemini',
77
+ globalConfigPath: geminiConfigPath,
78
+ projectConfigPath: fs.existsSync(path.join(cwd, '.gemini')) ? path.join(cwd, '.gemini') : null,
79
+ isInstalled: false,
80
+ });
81
+ }
82
+ return agents;
83
+ }
84
+ function getConfigPath(agent, scope) {
85
+ if (scope === 'project' && agent.projectConfigPath) {
86
+ return agent.projectConfigPath;
87
+ }
88
+ return agent.globalConfigPath;
89
+ }
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runHistory(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=cli-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-history.d.ts","sourceRoot":"","sources":["../src/cli-history.ts"],"names":[],"mappings":"AAoEA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,iBAkE9C"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runHistory = runHistory;
7
+ const package_json_1 = __importDefault(require("../package.json"));
8
+ const config_js_1 = require("./config.js");
9
+ const logger_js_1 = require("./logger.js");
10
+ const embark_client_js_1 = require("./embark-client.js");
11
+ const git_utils_js_1 = require("./git-utils.js");
12
+ const cli_utils_js_1 = require("./cli-utils.js");
13
+ function resolveRepositoryUrl(requestedUrl, configRepoUrl, configWorkingDir) {
14
+ const cwd = process.cwd();
15
+ if (requestedUrl) {
16
+ return requestedUrl;
17
+ }
18
+ if ((0, git_utils_js_1.isGitRepository)(cwd)) {
19
+ const url = (0, git_utils_js_1.getGitRemoteUrlCached)(cwd);
20
+ if (url) {
21
+ return url;
22
+ }
23
+ }
24
+ if (configWorkingDir && (0, git_utils_js_1.isGitRepository)(configWorkingDir)) {
25
+ const url = (0, git_utils_js_1.getGitRemoteUrlCached)(configWorkingDir);
26
+ if (url) {
27
+ return url;
28
+ }
29
+ }
30
+ if (configRepoUrl) {
31
+ return configRepoUrl;
32
+ }
33
+ throw new Error('No repository available for history search. Run from a Git repository or set REPOSITORY_GIT_REMOTE_URL.');
34
+ }
35
+ function formatTimestamp(timestamp) {
36
+ if (timestamp === null) {
37
+ return '';
38
+ }
39
+ const date = new Date(timestamp * 1000);
40
+ return date.toISOString().replace('T', ' ').replace(/\.\d{3}Z$/, '');
41
+ }
42
+ function formatCommitResult(commit, index) {
43
+ const parts = [`${index + 1}. ${commit.revision.substring(0, 12)}`];
44
+ if (commit.timestamp !== null) {
45
+ parts.push(`(${formatTimestamp(commit.timestamp)})`);
46
+ }
47
+ parts.push(`score=${commit.score.toFixed(3)}`);
48
+ if (commit.paths.length > 0) {
49
+ const pathsPreview = commit.paths.length <= 3
50
+ ? commit.paths.join(', ')
51
+ : `${commit.paths.slice(0, 3).join(', ')} (+${commit.paths.length - 3} more)`;
52
+ parts.push(`files: ${pathsPreview}`);
53
+ }
54
+ return parts.join(' ');
55
+ }
56
+ async function runHistory(argv) {
57
+ const parsed = (0, cli_utils_js_1.parseHistoryArgs)(argv);
58
+ if (parsed.showHelp) {
59
+ console.log(cli_utils_js_1.HISTORY_USAGE);
60
+ return;
61
+ }
62
+ if (parsed.error) {
63
+ console.error(`Error: ${parsed.error}\n\n${cli_utils_js_1.HISTORY_USAGE}`);
64
+ process.exitCode = 1;
65
+ return;
66
+ }
67
+ const config = (0, config_js_1.loadConfig)();
68
+ const repositoryGitRemoteUrl = resolveRepositoryUrl(parsed.repositoryGitRemoteUrl, config.repositoryGitRemoteUrl, config.workingDir);
69
+ const revision = parsed.revision || config.repositoryRevision;
70
+ try {
71
+ const { commits } = await (0, embark_client_js_1.searchCommits)(parsed.query, repositoryGitRemoteUrl, revision, parsed.maxResults, parsed.minScore, config, package_json_1.default);
72
+ if (parsed.format === 'json') {
73
+ console.log(JSON.stringify({ query: parsed.query, commits }, null, 2));
74
+ return;
75
+ }
76
+ if (commits.length === 0) {
77
+ console.error(`No commits found for "${parsed.query}"`);
78
+ process.exitCode = 1;
79
+ return;
80
+ }
81
+ console.log(`Found ${commits.length} commits for "${parsed.query}":\n`);
82
+ commits.forEach((commit, index) => {
83
+ console.log(formatCommitResult(commit, index));
84
+ });
85
+ (0, logger_js_1.logToFile)('info', 'CLI history search completed', {
86
+ query: parsed.query,
87
+ resultCount: commits.length,
88
+ repositoryGitRemoteUrl,
89
+ });
90
+ }
91
+ catch (error) {
92
+ (0, logger_js_1.logToFile)('error', 'CLI history search failed', {
93
+ query: parsed.query,
94
+ repositoryGitRemoteUrl,
95
+ error: error instanceof Error ? error.message : String(error),
96
+ });
97
+ console.error(`History search failed: ${error instanceof Error ? error.message : String(error)}`);
98
+ process.exitCode = 1;
99
+ }
100
+ }
101
+ //# sourceMappingURL=cli-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-history.js","sourceRoot":"","sources":["../src/cli-history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runIndex(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=cli-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-index.d.ts","sourceRoot":"","sources":["../src/cli-index.ts"],"names":[],"mappings":"AA2MA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,iBAiG5C"}