@helmai/cli 1.0.0

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/bin/helm.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import('../dist/index.js');
@@ -0,0 +1,6 @@
1
+ interface CaptureOptions {
2
+ format?: 'claude' | 'cursor';
3
+ }
4
+ export declare function captureCommand(options: CaptureOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"AAGA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC9B;AAQD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C3E"}
@@ -0,0 +1,148 @@
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.captureCommand = captureCommand;
37
+ const api = __importStar(require("../lib/api.js"));
38
+ const config_js_1 = require("../lib/config.js");
39
+ async function captureCommand(options) {
40
+ // Read response from stdin
41
+ let response = '';
42
+ if (!process.stdin.isTTY) {
43
+ response = await readStdin();
44
+ }
45
+ if (!response) {
46
+ process.exit(0);
47
+ }
48
+ const credentials = (0, config_js_1.loadCredentials)();
49
+ if (!credentials) {
50
+ // No credentials, just exit silently
51
+ process.exit(0);
52
+ }
53
+ // Get the prompt ID from environment or try to find it
54
+ const promptId = process.env.HELM_LAST_PROMPT_ID;
55
+ if (!promptId) {
56
+ // No prompt ID, can't capture
57
+ process.exit(0);
58
+ }
59
+ try {
60
+ const codeBlocks = extractCodeBlocks(response);
61
+ if (codeBlocks.length === 0) {
62
+ // No code blocks to capture
63
+ process.exit(0);
64
+ }
65
+ await api.capture({
66
+ prompt_id: promptId,
67
+ code_blocks: codeBlocks,
68
+ raw_response: response.length < 50000 ? response : null, // Don't store huge responses
69
+ });
70
+ }
71
+ catch {
72
+ // Silently fail - don't interrupt user flow
73
+ process.exit(0);
74
+ }
75
+ }
76
+ function extractCodeBlocks(text) {
77
+ const codeBlocks = [];
78
+ // Match markdown code blocks: ```language\ncode\n```
79
+ const codeBlockRegex = /```(\w*)\n([\s\S]*?)```/g;
80
+ let match;
81
+ while ((match = codeBlockRegex.exec(text)) !== null) {
82
+ const language = match[1] || 'text';
83
+ const content = match[2].trim();
84
+ if (content.length > 0) {
85
+ // Try to extract file hint from content or surrounding context
86
+ const fileHint = extractFileHint(text, match.index, language);
87
+ codeBlocks.push({
88
+ language,
89
+ content,
90
+ file_hint: fileHint,
91
+ });
92
+ }
93
+ }
94
+ return codeBlocks;
95
+ }
96
+ function extractFileHint(text, codeBlockStart, language) {
97
+ // Look for file paths in the text before the code block
98
+ const textBefore = text.substring(Math.max(0, codeBlockStart - 200), codeBlockStart);
99
+ // Common patterns for file references
100
+ const patterns = [
101
+ // "file: path/to/file.ext"
102
+ /(?:file|path):\s*[`"]?([^\s`"]+\.\w+)[`"]?/i,
103
+ // "`path/to/file.ext`"
104
+ /`([a-zA-Z0-9_\-/.]+\.\w+)`/,
105
+ // "in path/to/file.ext"
106
+ /\bin\s+[`"]?([a-zA-Z0-9_\-/.]+\.\w+)[`"]?/i,
107
+ // "Create path/to/file.ext"
108
+ /(?:create|edit|update|modify)\s+[`"]?([a-zA-Z0-9_\-/.]+\.\w+)[`"]?/i,
109
+ ];
110
+ for (const pattern of patterns) {
111
+ const match = textBefore.match(pattern);
112
+ if (match) {
113
+ return match[1];
114
+ }
115
+ }
116
+ // Try to infer from language
117
+ const languageExtensions = {
118
+ php: '.php',
119
+ typescript: '.ts',
120
+ javascript: '.js',
121
+ python: '.py',
122
+ rust: '.rs',
123
+ go: '.go',
124
+ ruby: '.rb',
125
+ };
126
+ // Can't determine file hint
127
+ return null;
128
+ }
129
+ async function readStdin() {
130
+ return new Promise((resolve) => {
131
+ let data = '';
132
+ process.stdin.setEncoding('utf8');
133
+ process.stdin.on('readable', () => {
134
+ let chunk;
135
+ while ((chunk = process.stdin.read()) !== null) {
136
+ data += chunk;
137
+ }
138
+ });
139
+ process.stdin.on('end', () => {
140
+ resolve(data);
141
+ });
142
+ // Set a timeout in case stdin never closes
143
+ setTimeout(() => {
144
+ resolve(data);
145
+ }, 2000);
146
+ });
147
+ }
148
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,wCA0CC;AAvDD,mDAAqC;AACrC,gDAAmD;AAY5C,KAAK,UAAU,cAAc,CAAC,OAAuB;IAC1D,2BAA2B;IAC3B,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,QAAQ,GAAG,MAAM,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,2BAAe,GAAE,CAAC;IACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,qCAAqC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,uDAAuD;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,8BAA8B;QAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,4BAA4B;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,CAAC,OAAO,CAAC;YAChB,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,6BAA6B;SACvF,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,qDAAqD;IACrD,MAAM,cAAc,GAAG,0BAA0B,CAAC;IAClD,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEhC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,+DAA+D;YAC/D,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAE9D,UAAU,CAAC,IAAI,CAAC;gBACd,QAAQ;gBACR,OAAO;gBACP,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,cAAsB,EAAE,QAAgB;IAC7E,wDAAwD;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;IAErF,sCAAsC;IACtC,MAAM,QAAQ,GAAG;QACf,2BAA2B;QAC3B,6CAA6C;QAC7C,uBAAuB;QACvB,4BAA4B;QAC5B,wBAAwB;QACxB,4CAA4C;QAC5C,4BAA4B;QAC5B,qEAAqE;KACtE,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,kBAAkB,GAA2B;QACjD,GAAG,EAAE,MAAM;QACX,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,KAAK;KACZ,CAAC;IAEF,4BAA4B;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;YAChC,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/C,IAAI,IAAI,KAAK,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,2CAA2C;QAC3C,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function initCommand(): Promise<void>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AASA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA0EjD"}
@@ -0,0 +1,220 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.initCommand = initCommand;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const inquirer_1 = __importDefault(require("inquirer"));
42
+ const ora_1 = __importDefault(require("ora"));
43
+ const api = __importStar(require("../lib/api.js"));
44
+ const config_js_1 = require("../lib/config.js");
45
+ const detect_js_1 = require("../lib/detect.js");
46
+ const hooks_js_1 = require("../lib/hooks.js");
47
+ async function initCommand() {
48
+ console.log(chalk_1.default.cyan('\nšŸš€ Welcome to Helm!\n'));
49
+ // Step 1: Detect IDEs
50
+ const spinner = (0, ora_1.default)('Detecting AI coding assistants...').start();
51
+ const ides = (0, detect_js_1.detectIDEs)();
52
+ const detectedIDEs = ides.filter(ide => ide.detected);
53
+ spinner.succeed(`Found ${detectedIDEs.length} IDE(s)`);
54
+ for (const ide of detectedIDEs) {
55
+ console.log(chalk_1.default.green(` āœ“ ${ide.displayName}`));
56
+ }
57
+ if (detectedIDEs.length === 0) {
58
+ console.log(chalk_1.default.yellow(' No supported IDEs detected. You can still use Helm via the CLI.'));
59
+ }
60
+ // Step 2: Check for existing credentials
61
+ const existingCredentials = (0, config_js_1.loadCredentials)();
62
+ if (existingCredentials) {
63
+ const { useExisting } = await inquirer_1.default.prompt([
64
+ {
65
+ type: 'confirm',
66
+ name: 'useExisting',
67
+ message: 'Found existing Helm credentials. Use them?',
68
+ default: true,
69
+ },
70
+ ]);
71
+ if (useExisting) {
72
+ await verifyAndSetupHooks(detectedIDEs);
73
+ return;
74
+ }
75
+ }
76
+ // Step 3: Authentication
77
+ console.log(chalk_1.default.cyan('\nšŸ”‘ Connect to Helm:\n'));
78
+ const { authChoice } = await inquirer_1.default.prompt([
79
+ {
80
+ type: 'list',
81
+ name: 'authChoice',
82
+ message: 'How would you like to connect?',
83
+ choices: [
84
+ { name: 'Create new account', value: 'register' },
85
+ { name: 'I have a Helm account', value: 'login' },
86
+ ],
87
+ },
88
+ ]);
89
+ if (authChoice === 'register') {
90
+ await handleRegister();
91
+ }
92
+ else {
93
+ await handleLogin();
94
+ }
95
+ // Step 4: Setup hooks
96
+ await setupHooks(detectedIDEs);
97
+ // Step 5: Scan repo
98
+ console.log(chalk_1.default.cyan('\nšŸ“‚ Scanning repository...\n'));
99
+ const stack = (0, detect_js_1.detectStack)();
100
+ if (stack.length > 0) {
101
+ console.log(' Detected:');
102
+ for (const s of stack) {
103
+ console.log(chalk_1.default.green(` • ${s}`));
104
+ }
105
+ }
106
+ else {
107
+ console.log(chalk_1.default.yellow(' No specific stack detected'));
108
+ }
109
+ // Done!
110
+ console.log(chalk_1.default.green('\nāœ… Helm is ready!'));
111
+ console.log(chalk_1.default.gray(' Your prompts now include intelligent context.\n'));
112
+ }
113
+ async function handleRegister() {
114
+ const answers = await inquirer_1.default.prompt([
115
+ {
116
+ type: 'input',
117
+ name: 'name',
118
+ message: 'Your name:',
119
+ validate: (input) => input.length > 0 || 'Name is required',
120
+ },
121
+ {
122
+ type: 'input',
123
+ name: 'email',
124
+ message: 'Email:',
125
+ validate: (input) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(input) || 'Please enter a valid email',
126
+ },
127
+ {
128
+ type: 'password',
129
+ name: 'password',
130
+ message: 'Password:',
131
+ mask: '*',
132
+ validate: (input) => input.length >= 8 || 'Password must be at least 8 characters',
133
+ },
134
+ ]);
135
+ const spinner = (0, ora_1.default)('Creating your account...').start();
136
+ try {
137
+ const result = await api.register(answers.name, answers.email, answers.password);
138
+ const credentials = {
139
+ api_key: result.api_key,
140
+ organization_id: result.organization.id,
141
+ user_id: result.user.id,
142
+ api_url: (0, config_js_1.getApiUrl)(),
143
+ };
144
+ (0, config_js_1.saveCredentials)(credentials);
145
+ spinner.succeed('Account created!');
146
+ console.log(chalk_1.default.green(` Organization: ${result.organization.name}`));
147
+ }
148
+ catch (error) {
149
+ spinner.fail('Failed to create account');
150
+ console.log(chalk_1.default.red(` ${error instanceof Error ? error.message : 'Unknown error'}`));
151
+ process.exit(1);
152
+ }
153
+ }
154
+ async function handleLogin() {
155
+ const answers = await inquirer_1.default.prompt([
156
+ {
157
+ type: 'input',
158
+ name: 'email',
159
+ message: 'Email:',
160
+ validate: (input) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(input) || 'Please enter a valid email',
161
+ },
162
+ {
163
+ type: 'password',
164
+ name: 'password',
165
+ message: 'Password:',
166
+ mask: '*',
167
+ },
168
+ ]);
169
+ const spinner = (0, ora_1.default)('Logging in...').start();
170
+ try {
171
+ const result = await api.login(answers.email, answers.password);
172
+ const credentials = {
173
+ api_key: result.api_key,
174
+ organization_id: result.organization.id,
175
+ user_id: result.user.id,
176
+ api_url: (0, config_js_1.getApiUrl)(),
177
+ };
178
+ (0, config_js_1.saveCredentials)(credentials);
179
+ spinner.succeed('Logged in!');
180
+ console.log(chalk_1.default.green(` Organization: ${result.organization.name}`));
181
+ }
182
+ catch (error) {
183
+ spinner.fail('Failed to log in');
184
+ console.log(chalk_1.default.red(` ${error instanceof Error ? error.message : 'Unknown error'}`));
185
+ process.exit(1);
186
+ }
187
+ }
188
+ async function setupHooks(detectedIDEs) {
189
+ if (detectedIDEs.length === 0) {
190
+ return;
191
+ }
192
+ console.log(chalk_1.default.cyan('\nšŸ”§ Setting up IDE hooks...\n'));
193
+ for (const ide of detectedIDEs) {
194
+ const result = (0, hooks_js_1.installHooks)(ide.name);
195
+ if (result.success) {
196
+ console.log(chalk_1.default.green(` āœ“ ${ide.displayName} hooks installed`));
197
+ }
198
+ else {
199
+ console.log(chalk_1.default.yellow(` ⚠ ${ide.displayName}: ${result.message}`));
200
+ }
201
+ }
202
+ }
203
+ async function verifyAndSetupHooks(detectedIDEs) {
204
+ const spinner = (0, ora_1.default)('Verifying credentials...').start();
205
+ try {
206
+ const result = await api.me();
207
+ spinner.succeed(`Connected as ${result.user.name}`);
208
+ console.log(chalk_1.default.green(` Organization: ${result.organization.name}`));
209
+ await setupHooks(detectedIDEs);
210
+ console.log(chalk_1.default.green('\nāœ… Helm is ready!'));
211
+ console.log(chalk_1.default.gray(' Your prompts now include intelligent context.\n'));
212
+ }
213
+ catch (error) {
214
+ spinner.fail('Failed to verify credentials');
215
+ console.log(chalk_1.default.red(` ${error instanceof Error ? error.message : 'Unknown error'}`));
216
+ console.log(chalk_1.default.yellow(' Run `helm init` again to re-authenticate.\n'));
217
+ process.exit(1);
218
+ }
219
+ }
220
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface InjectOptions {
2
+ format?: 'claude' | 'cursor';
3
+ }
4
+ export declare function injectCommand(options: InjectOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../src/commands/inject.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC9B;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CzE"}
@@ -0,0 +1,102 @@
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.injectCommand = injectCommand;
37
+ const api = __importStar(require("../lib/api.js"));
38
+ const config_js_1 = require("../lib/config.js");
39
+ const detect_js_1 = require("../lib/detect.js");
40
+ const crypto_1 = require("crypto");
41
+ async function injectCommand(options) {
42
+ // Read prompt from stdin
43
+ let prompt = '';
44
+ // Check if there's input on stdin
45
+ if (!process.stdin.isTTY) {
46
+ prompt = await readStdin();
47
+ }
48
+ if (!prompt) {
49
+ // No input, nothing to do
50
+ process.exit(0);
51
+ }
52
+ const credentials = (0, config_js_1.loadCredentials)();
53
+ if (!credentials) {
54
+ // No credentials, pass through unchanged
55
+ console.log(prompt);
56
+ process.exit(0);
57
+ }
58
+ try {
59
+ const cwd = process.cwd();
60
+ const stack = (0, detect_js_1.detectStack)(cwd);
61
+ const branch = (0, detect_js_1.getCurrentBranch)(cwd);
62
+ const result = await api.inject({
63
+ prompt,
64
+ context: {
65
+ cwd,
66
+ detected_stack: stack,
67
+ session_id: process.env.HELM_SESSION_ID || (0, crypto_1.randomUUID)(),
68
+ branch: branch || undefined,
69
+ },
70
+ });
71
+ // Store prompt_id for capture command
72
+ if (result.prompt_id) {
73
+ process.env.HELM_LAST_PROMPT_ID = result.prompt_id;
74
+ }
75
+ // Output enhanced prompt
76
+ console.log(result.enhanced_prompt);
77
+ }
78
+ catch {
79
+ // On error, pass through original prompt
80
+ console.log(prompt);
81
+ }
82
+ }
83
+ async function readStdin() {
84
+ return new Promise((resolve) => {
85
+ let data = '';
86
+ process.stdin.setEncoding('utf8');
87
+ process.stdin.on('readable', () => {
88
+ let chunk;
89
+ while ((chunk = process.stdin.read()) !== null) {
90
+ data += chunk;
91
+ }
92
+ });
93
+ process.stdin.on('end', () => {
94
+ resolve(data.trim());
95
+ });
96
+ // Set a timeout in case stdin never closes
97
+ setTimeout(() => {
98
+ resolve(data.trim());
99
+ }, 2000);
100
+ });
101
+ }
102
+ //# sourceMappingURL=inject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/commands/inject.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,sCA+CC;AAxDD,mDAAqC;AACrC,gDAAmD;AACnD,gDAAiE;AACjE,mCAAoC;AAM7B,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,yBAAyB;IACzB,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,kCAAkC;IAClC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,0BAA0B;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,2BAAe,GAAE,CAAC;IACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,yCAAyC;QACzC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAA,uBAAW,EAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAA,4BAAgB,EAAC,GAAG,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;YAC9B,MAAM;YACN,OAAO,EAAE;gBACP,GAAG;gBACH,cAAc,EAAE,KAAK;gBACrB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAA,mBAAU,GAAE;gBACvD,MAAM,EAAE,MAAM,IAAI,SAAS;aAC5B;SACF,CAAC,CAAC;QAEH,sCAAsC;QACtC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC,SAAS,CAAC;QACrD,CAAC;QAED,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;QACzC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;YAChC,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/C,IAAI,IAAI,KAAK,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,2CAA2C;QAC3C,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACvB,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const init_js_1 = require("./commands/init.js");
6
+ const inject_js_1 = require("./commands/inject.js");
7
+ const capture_js_1 = require("./commands/capture.js");
8
+ const program = new commander_1.Command();
9
+ program
10
+ .name('helm')
11
+ .description('Intelligent context injection for AI coding assistants')
12
+ .version('0.1.0');
13
+ program
14
+ .command('init')
15
+ .description('Set up Helm in your environment')
16
+ .action(async () => {
17
+ await (0, init_js_1.initCommand)();
18
+ });
19
+ program
20
+ .command('inject')
21
+ .description('Inject context into a prompt (used by IDE hooks)')
22
+ .option('--format <format>', 'Output format (claude, cursor)', 'claude')
23
+ .action(async (options) => {
24
+ await (0, inject_js_1.injectCommand)(options);
25
+ });
26
+ program
27
+ .command('capture')
28
+ .description('Capture AI response (used by IDE hooks)')
29
+ .option('--format <format>', 'Input format (claude, cursor)', 'claude')
30
+ .action(async (options) => {
31
+ await (0, capture_js_1.captureCommand)(options);
32
+ });
33
+ program
34
+ .command('status')
35
+ .description('Show current Helm configuration')
36
+ .action(async () => {
37
+ const { loadCredentials } = await import('./lib/config.js');
38
+ const { detectIDEs, detectStack } = await import('./lib/detect.js');
39
+ const chalk = (await import('chalk')).default;
40
+ const credentials = loadCredentials();
41
+ console.log(chalk.cyan('\nšŸ”§ Helm Status\n'));
42
+ if (credentials) {
43
+ console.log(chalk.green('āœ“ Authenticated'));
44
+ console.log(` Organization ID: ${credentials.organization_id}`);
45
+ console.log(` API URL: ${credentials.api_url}`);
46
+ }
47
+ else {
48
+ console.log(chalk.yellow('āœ— Not authenticated'));
49
+ console.log(' Run `helm init` to get started');
50
+ }
51
+ console.log(chalk.cyan('\nšŸ“± IDEs:\n'));
52
+ const ides = detectIDEs();
53
+ for (const ide of ides) {
54
+ const status = ide.detected ? chalk.green('āœ“') : chalk.gray('āœ—');
55
+ console.log(` ${status} ${ide.displayName}`);
56
+ }
57
+ console.log(chalk.cyan('\nšŸ“‚ Current Directory Stack:\n'));
58
+ const stack = detectStack();
59
+ if (stack.length > 0) {
60
+ for (const s of stack) {
61
+ console.log(chalk.green(` • ${s}`));
62
+ }
63
+ }
64
+ else {
65
+ console.log(chalk.gray(' No specific stack detected'));
66
+ }
67
+ console.log('');
68
+ });
69
+ program
70
+ .command('logout')
71
+ .description('Clear Helm credentials')
72
+ .action(async () => {
73
+ const { clearCredentials } = await import('./lib/config.js');
74
+ const chalk = (await import('chalk')).default;
75
+ clearCredentials();
76
+ console.log(chalk.green('\nāœ“ Logged out successfully\n'));
77
+ });
78
+ program.parse();
79
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { RegisterResponse, LoginResponse, InjectRequest, InjectResponse, CaptureRequest, CaptureResponse } from '../types.js';
2
+ export declare function register(name: string, email: string, password: string): Promise<RegisterResponse>;
3
+ export declare function login(email: string, password: string): Promise<LoginResponse>;
4
+ export declare function inject(data: InjectRequest): Promise<InjectResponse>;
5
+ export declare function capture(data: CaptureRequest): Promise<CaptureResponse>;
6
+ export declare function me(): Promise<{
7
+ user: {
8
+ id: string;
9
+ name: string;
10
+ email: string;
11
+ };
12
+ organization: {
13
+ id: string;
14
+ name: string;
15
+ slug: string;
16
+ };
17
+ }>;
18
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EAChB,MAAM,aAAa,CAAC;AA4CrB,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CAU3B;AAED,wBAAsB,KAAK,CACzB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,CAAC,CAKxB;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAKzE;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAK5E;AAED,wBAAsB,EAAE,IAAI,OAAO,CAAC;IAAE,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CAEnJ"}