@helmai/cli 1.0.12 → 1.0.13

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.
@@ -1 +1 @@
1
- {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../src/commands/inject.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DzE"}
1
+ {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../src/commands/inject.ts"],"names":[],"mappings":"AAgBA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EzE"}
@@ -45,6 +45,9 @@ const session_js_1 = require("../lib/session.js");
45
45
  const project_js_1 = require("../lib/project.js");
46
46
  const update_check_js_1 = require("../lib/update-check.js");
47
47
  const codebase_scan_js_1 = require("../lib/codebase-scan.js");
48
+ const concurrent_js_1 = require("../lib/concurrent.js");
49
+ const capability_router_js_1 = require("../lib/capability-router.js");
50
+ const onboarding_js_1 = require("../lib/onboarding.js");
48
51
  const NUDGE_THRESHOLD = 50;
49
52
  const NUDGE_COOLDOWN_MS = 7 * 24 * 60 * 60 * 1000; // 1 week
50
53
  async function injectCommand(options) {
@@ -56,21 +59,31 @@ async function injectCommand(options) {
56
59
  process.exit(0);
57
60
  }
58
61
  const cwd = process.cwd();
62
+ const stack = (0, detect_js_1.detectStack)(cwd);
63
+ const routedCapabilities = (0, capability_router_js_1.routeCapabilities)(prompt, stack);
64
+ const onboarding = (0, onboarding_js_1.trackOnboardingProgress)(cwd);
65
+ (0, capability_router_js_1.persistCapabilities)(cwd, routedCapabilities);
59
66
  const credentials = (0, config_js_1.loadCredentials)();
60
67
  const forceLocal = Boolean(options.local) || !credentials;
61
68
  // Ensure stable project identity exists even in local-only mode (used for future cloud/project scoping).
62
69
  (0, project_js_1.ensureProjectSlug)(cwd);
63
70
  if (forceLocal) {
64
- const enhanced = buildLocalEnhancedPrompt({ cwd, prompt });
71
+ const enhanced = buildLocalEnhancedPrompt({
72
+ cwd,
73
+ prompt,
74
+ capabilities: routedCapabilities,
75
+ onboarding,
76
+ });
65
77
  console.log(enhanced);
66
78
  maybeNudgeUpgrade(cwd);
67
79
  (0, update_check_js_1.checkForUpdate)();
68
80
  return;
69
81
  }
70
82
  try {
71
- const stack = (0, detect_js_1.detectStack)(cwd);
72
83
  const branch = (0, detect_js_1.getCurrentBranch)(cwd);
73
84
  const sessionId = (0, session_js_1.getOrCreateSession)(cwd, branch);
85
+ // Write heartbeat for concurrent session detection
86
+ (0, concurrent_js_1.writeSessionHeartbeat)(cwd, sessionId, branch);
74
87
  // Ensure a stable project identity exists and pass it to the API so rules/projects can be scoped correctly.
75
88
  const projectSlug = (0, project_js_1.loadProjectSlug)(cwd) ?? (0, project_js_1.ensureProjectSlug)(cwd).project_slug;
76
89
  const result = await api.inject({
@@ -78,6 +91,8 @@ async function injectCommand(options) {
78
91
  context: {
79
92
  cwd,
80
93
  detected_stack: stack,
94
+ detected_capabilities: routedCapabilities.map(capability => capability.id),
95
+ onboarding_stage: onboarding.stage_id ?? undefined,
81
96
  session_id: sessionId,
82
97
  branch: branch || undefined,
83
98
  project_slug: projectSlug,
@@ -86,16 +101,58 @@ async function injectCommand(options) {
86
101
  if (result.prompt_id) {
87
102
  process.env.HELM_LAST_PROMPT_ID = result.prompt_id;
88
103
  }
104
+ printCloudInjectionReceipt(result, routedCapabilities, onboarding);
89
105
  console.log(result.enhanced_prompt);
90
106
  }
91
107
  catch {
92
108
  // fallback to local injection rather than passthrough
93
- const enhanced = buildLocalEnhancedPrompt({ cwd, prompt });
109
+ const enhanced = buildLocalEnhancedPrompt({
110
+ cwd,
111
+ prompt,
112
+ capabilities: routedCapabilities,
113
+ onboarding,
114
+ });
94
115
  console.log(enhanced);
95
116
  }
96
117
  (0, update_check_js_1.checkForUpdate)();
97
118
  }
119
+ function printCloudInjectionReceipt(result, routedCapabilities, onboarding) {
120
+ const parts = [];
121
+ const injectionCount = result.injections.length;
122
+ if (injectionCount > 0) {
123
+ parts.push(`${injectionCount} injection(s)`);
124
+ }
125
+ const matchesCount = result.analysis?.injection_matches.length ?? 0;
126
+ if (matchesCount > 0) {
127
+ parts.push(`${matchesCount} match reason(s)`);
128
+ }
129
+ if (result.analysis?.intent) {
130
+ parts.push(`intent:${result.analysis.intent}`);
131
+ }
132
+ const activeCapabilities = result.analysis?.capabilities ?? routedCapabilities;
133
+ if (activeCapabilities.length > 0) {
134
+ parts.push(`${activeCapabilities.length} capability(ies)`);
135
+ }
136
+ if (parts.length > 0) {
137
+ process.stderr.write(`[helm] ✓ Injected ${parts.join(' + ')}\n`);
138
+ }
139
+ if (onboarding.stage_id && onboarding.stage_title) {
140
+ process.stderr.write(`[helm] Onboarding stage ${onboarding.prompt_count}/5: ${onboarding.stage_title}\n`);
141
+ }
142
+ const quality = result.analysis?.prompt_quality;
143
+ if (quality) {
144
+ process.stderr.write(`[helm] Prompt quality score: ${quality.score}/100\n`);
145
+ if (quality.suggestions.length > 0) {
146
+ process.stderr.write(`[helm] Coach: ${quality.suggestions[0]}\n`);
147
+ }
148
+ }
149
+ }
98
150
  function buildLocalEnhancedPrompt(input) {
151
+ // Session heartbeat + concurrent detection
152
+ const branch = (0, detect_js_1.getCurrentBranch)(input.cwd);
153
+ const sessionId = (0, session_js_1.getOrCreateSession)(input.cwd, branch);
154
+ (0, concurrent_js_1.writeSessionHeartbeat)(input.cwd, sessionId, branch);
155
+ const concurrent = (0, concurrent_js_1.detectConcurrentSessions)(input.cwd, sessionId);
99
156
  const rulesFile = (0, local_rules_js_1.findRulesFile)(input.cwd);
100
157
  let sectionsText = '';
101
158
  let injectedSectionIds = [];
@@ -153,10 +210,54 @@ function buildLocalEnhancedPrompt(input) {
153
210
  if (structureSummary) {
154
211
  parts.push('project map');
155
212
  }
213
+ if (input.capabilities.length > 0) {
214
+ parts.push(`${input.capabilities.length} capability(ies)`);
215
+ }
216
+ if (input.onboarding.stage_id && input.onboarding.stage_title) {
217
+ parts.push(`onboarding:${input.onboarding.stage_title.toLowerCase()}`);
218
+ }
219
+ if (concurrent) {
220
+ parts.push(`⚠ ${concurrent.count} concurrent session(s)`);
221
+ }
156
222
  if (parts.length > 0) {
157
223
  process.stderr.write(`[helm] ✓ Injected ${parts.join(' + ')}\n`);
158
224
  }
159
225
  const blocks = [];
226
+ // Concurrent session warning — injected FIRST so the agent sees it immediately
227
+ if (concurrent) {
228
+ const sessionDescriptions = concurrent.sessions
229
+ .map(s => {
230
+ const parts = [s.ide ?? 'unknown IDE'];
231
+ if (s.branch)
232
+ parts.push(`on branch ${s.branch}`);
233
+ if (s.user)
234
+ parts.push(`(${s.user})`);
235
+ return parts.join(' ');
236
+ })
237
+ .join('; ');
238
+ const sameBranch = concurrent.sessions.some(s => s.branch === branch);
239
+ let directive;
240
+ if (sameBranch) {
241
+ directive = `⚠ **CONCURRENT SESSION DETECTED**: ${concurrent.count} other agent(s) are currently active on this project (${sessionDescriptions}), working on the SAME branch (\`${branch ?? 'unknown'}\`).
242
+
243
+ **You MUST create a new git worktree or branch before making any changes.** Do not work directly on \`${branch ?? 'main'}\` — you will conflict with the other session(s).
244
+
245
+ Run: \`git worktree add ../worktree-<short-description> -b helm/<short-description>\` or at minimum \`git checkout -b helm/<short-description>\` before writing any code.`;
246
+ }
247
+ else {
248
+ directive = `ℹ **Concurrent sessions active**: ${concurrent.count} other agent(s) are working on this project (${sessionDescriptions}). They are on different branches, so no action needed — just be aware.`;
249
+ }
250
+ blocks.push(`## Session\n${directive}`);
251
+ }
252
+ if (input.capabilities.length > 0) {
253
+ const capabilityLines = input.capabilities
254
+ .map(capability => `- **${capability.title}**: ${capability.reason}`)
255
+ .join('\n');
256
+ blocks.push(`## Active Capabilities\n${capabilityLines}`);
257
+ }
258
+ if (input.onboarding.stage_id && input.onboarding.stage_title && input.onboarding.stage_instruction) {
259
+ blocks.push(`## Onboarding (${input.onboarding.stage_title})\n- ${input.onboarding.stage_instruction}`);
260
+ }
160
261
  if (structureSummary) {
161
262
  blocks.push(`## Project Structure\n${structureSummary}`);
162
263
  }
@@ -169,8 +270,6 @@ function buildLocalEnhancedPrompt(input) {
169
270
  if (blocks.length === 0) {
170
271
  return input.prompt;
171
272
  }
172
- // Track inject_count in local mode for first-run detection
173
- const isFirstRun = trackLocalInjectCount(input.cwd);
174
273
  const preamble = `Helm is active for this project. The rules and knowledge below are project-specific context — use them to write better, more consistent code.
175
274
 
176
275
  ## Helm CLI
@@ -180,36 +279,7 @@ The user has Helm installed. You can use these commands:
180
279
  - \`helm dashboard\` — Open the web dashboard
181
280
  - \`helm update\` — Update Helm to the latest version
182
281
  - \`helm status\` — Show current config and detected stack`;
183
- const firstRunMessage = isFirstRun
184
- ? '\n\nThis is the user\'s first prompt with Helm active. Start your response with a short, confident confirmation that Helm is providing project-specific context (e.g. "Helm is active — I have your project rules and codebase context loaded."). Then answer their question normally. If they seem to be exploring, mention they can add team rules with `helm rule add "<rule>"` and view their dashboard with `helm dashboard`.'
185
- : '';
186
- return `<helm>\n${preamble}${firstRunMessage}\n\n${blocks.join('\n\n')}\n</helm>\n\n${input.prompt}`;
187
- }
188
- function trackLocalInjectCount(cwd) {
189
- const helmDir = path.join(cwd, '.helm');
190
- const statePath = path.join(helmDir, 'state.json');
191
- try {
192
- if (!fs.existsSync(helmDir)) {
193
- fs.mkdirSync(helmDir, { recursive: true });
194
- }
195
- if (fs.existsSync(statePath)) {
196
- const raw = JSON.parse(fs.readFileSync(statePath, 'utf-8'));
197
- const previousCount = raw.inject_count ?? 0;
198
- raw.inject_count = previousCount + 1;
199
- raw.last_prompt_at = new Date().toISOString();
200
- fs.writeFileSync(statePath, JSON.stringify(raw, null, 2));
201
- return previousCount === 0;
202
- }
203
- // state.json doesn't exist — this is the first run
204
- fs.writeFileSync(statePath, JSON.stringify({
205
- inject_count: 1,
206
- last_prompt_at: new Date().toISOString(),
207
- }, null, 2));
208
- return true;
209
- }
210
- catch {
211
- return false;
212
- }
282
+ return `<helm>\n${preamble}\n\n${blocks.join('\n\n')}\n</helm>\n\n${input.prompt}`;
213
283
  }
214
284
  function maybeNudgeUpgrade(cwd) {
215
285
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/commands/inject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/commands/inject.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -106,14 +106,18 @@ program
106
106
  const { execSync } = await import('child_process');
107
107
  console.log(chalk.cyan('\n⬆️ Updating Helm CLI...\n'));
108
108
  try {
109
- const output = execSync('npm install -g @helmai/cli@latest', {
109
+ execSync('npm install -g @helmai/cli@latest', {
110
110
  encoding: 'utf-8',
111
111
  stdio: ['pipe', 'pipe', 'pipe'],
112
112
  });
113
- // Extract installed version from npm output
114
- const versionMatch = output.match(/@helmai\/cli@([\d.]+)/);
115
- const version = versionMatch ? versionMatch[1] : 'latest';
116
- console.log(chalk.green(`✓ Updated to v${version}`));
113
+ // Read the actual installed version
114
+ const version = execSync('npm list -g @helmai/cli --depth=0 --json', {
115
+ encoding: 'utf-8',
116
+ stdio: ['pipe', 'pipe', 'pipe'],
117
+ });
118
+ const parsed = JSON.parse(version);
119
+ const installedVersion = parsed.dependencies?.['@helmai/cli']?.version ?? 'unknown';
120
+ console.log(chalk.green(`✓ Updated to v${installedVersion}`));
117
121
  console.log(chalk.gray(' Restart your terminal or IDE to use the new version.\n'));
118
122
  }
119
123
  catch (error) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,gDAAiD;AACjD,oDAAqD;AACrD,sDAAuD;AACvD,gDAAiD;AACjD,gDAAiD;AACjD,gDAAoD;AAEpD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,WAAW,EAAE,uCAAuC,EAAE,KAAK,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,OAA8B,EAAE,EAAE;IAC/C,MAAM,IAAA,qBAAW,EAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,EAAE,QAAQ,CAAC;KACvE,MAAM,CAAC,SAAS,EAAE,yCAAyC,EAAE,KAAK,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,OAA0D,EAAE,EAAE;IAC3E,MAAM,IAAA,yBAAa,EAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,EAAE,QAAQ,CAAC;KACtE,MAAM,CAAC,KAAK,EAAE,OAAyC,EAAE,EAAE;IAC1D,MAAM,IAAA,2BAAc,EAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8CAA8C,CAAC;KAC3D,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;KAC7C,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,UAAU,EAAE,0DAA0D,EAAE,KAAK,CAAC;KACrF,MAAM,CAAC,KAAK,EAAE,KAAyB,EAAE,OAA4C,EAAE,EAAE;IACxF,MAAM,IAAA,qBAAW,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,QAAQ,EAAE,gCAAgC,EAAE,KAAK,CAAC;KACzD,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,MAAM,IAAA,qBAAW,EAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,MAAM,IAAI,GAAG,OAAO;KACjB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAEvC,IAAI;KACD,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,8BAA8B,CAAC;KAC3C,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;KAC1C,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,EAAE,UAAU,CAAC;KAClF,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA6B,EAAE,EAAE;IAC5D,MAAM,IAAA,wBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC5D,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAE9C,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IAEtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE9C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,sBAAsB,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAEnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,QAAQ,CAAC,mCAAmC,EAAE;YAC5C,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,oCAAoC;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,0CAA0C,EAAE;YACnE,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4D,CAAC;QAC9F,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,IAAI,SAAS,CAAC;QAEpF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAC;IAClF,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAE5C,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,GAAG,MAAM,YAAY,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,YAAY,IAAI,CAAC,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAE9C,gBAAgB,EAAE,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface RoutedCapability {
2
+ id: 'browser_automation' | 'frontend_specialist' | 'testing_specialist';
3
+ title: string;
4
+ reason: string;
5
+ confidence: 'high' | 'medium';
6
+ }
7
+ export declare function routeCapabilities(prompt: string, stack: string[]): RoutedCapability[];
8
+ export declare function persistCapabilities(cwd: string, capabilities: RoutedCapability[]): void;
9
+ //# sourceMappingURL=capability-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-router.d.ts","sourceRoot":"","sources":["../../src/lib/capability-router.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,oBAAoB,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC/B;AAkBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAoCrF;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAiCvF"}
@@ -0,0 +1,134 @@
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.routeCapabilities = routeCapabilities;
37
+ exports.persistCapabilities = persistCapabilities;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ function routeCapabilities(prompt, stack) {
41
+ const promptLower = prompt.toLowerCase();
42
+ const capabilities = [];
43
+ const hasBrowserSignal = /\b(screenshot|visual|browser|playwright|ui flow|pixel|rendering)\b/.test(promptLower);
44
+ const hasFrontendSignal = /\b(css|tailwind|style|styling|layout|responsive|ui|component|frontend)\b/.test(promptLower);
45
+ const hasTestingSignal = /\b(test|tests|testing|pest|phpunit|assert|coverage|spec)\b/.test(promptLower);
46
+ if (hasBrowserSignal) {
47
+ capabilities.push({
48
+ id: 'browser_automation',
49
+ title: 'Browser Automation',
50
+ reason: 'Prompt references screenshots, visual checks, or browser interaction.',
51
+ confidence: 'high',
52
+ });
53
+ }
54
+ if (hasFrontendSignal) {
55
+ capabilities.push({
56
+ id: 'frontend_specialist',
57
+ title: 'Frontend Specialist',
58
+ reason: 'Prompt references UI, layout, or styling work.',
59
+ confidence: stack.includes('react') || stack.includes('inertia') || stack.includes('tailwind') ? 'high' : 'medium',
60
+ });
61
+ }
62
+ if (hasTestingSignal) {
63
+ capabilities.push({
64
+ id: 'testing_specialist',
65
+ title: 'Testing Specialist',
66
+ reason: 'Prompt references tests or assertions.',
67
+ confidence: stack.includes('pest') ? 'high' : 'medium',
68
+ });
69
+ }
70
+ return dedupeCapabilities(capabilities);
71
+ }
72
+ function persistCapabilities(cwd, capabilities) {
73
+ const helmDir = path.join(cwd, '.helm');
74
+ const capabilitiesPath = path.join(helmDir, 'capabilities.json');
75
+ try {
76
+ if (!fs.existsSync(helmDir)) {
77
+ fs.mkdirSync(helmDir, { recursive: true });
78
+ }
79
+ const now = new Date().toISOString();
80
+ const state = loadCapabilityState(capabilitiesPath);
81
+ state.updated_at = now;
82
+ state.active = capabilities.map(capability => ({
83
+ id: capability.id,
84
+ title: capability.title,
85
+ reason: capability.reason,
86
+ confidence: capability.confidence,
87
+ }));
88
+ for (const capability of capabilities) {
89
+ const existing = state.history[capability.id];
90
+ state.history[capability.id] = {
91
+ title: capability.title,
92
+ last_reason: capability.reason,
93
+ last_detected_at: now,
94
+ detected_count: (existing?.detected_count ?? 0) + 1,
95
+ };
96
+ }
97
+ fs.writeFileSync(capabilitiesPath, JSON.stringify(state, null, 2));
98
+ }
99
+ catch {
100
+ // Capability persistence is best-effort and should never block injection.
101
+ }
102
+ }
103
+ function dedupeCapabilities(capabilities) {
104
+ const seen = new Set();
105
+ const deduped = [];
106
+ for (const capability of capabilities) {
107
+ if (seen.has(capability.id)) {
108
+ continue;
109
+ }
110
+ seen.add(capability.id);
111
+ deduped.push(capability);
112
+ }
113
+ return deduped;
114
+ }
115
+ function loadCapabilityState(capabilitiesPath) {
116
+ if (!fs.existsSync(capabilitiesPath)) {
117
+ return {
118
+ updated_at: new Date().toISOString(),
119
+ active: [],
120
+ history: {},
121
+ };
122
+ }
123
+ try {
124
+ return JSON.parse(fs.readFileSync(capabilitiesPath, 'utf-8'));
125
+ }
126
+ catch {
127
+ return {
128
+ updated_at: new Date().toISOString(),
129
+ active: [],
130
+ history: {},
131
+ };
132
+ }
133
+ }
134
+ //# sourceMappingURL=capability-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-router.js","sourceRoot":"","sources":["../../src/lib/capability-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export interface ConcurrentSessionInfo {
2
+ count: number;
3
+ sessions: Array<{
4
+ session_id: string;
5
+ branch: string | null;
6
+ user: string | null;
7
+ ide: string | null;
8
+ age_seconds: number;
9
+ }>;
10
+ }
11
+ /**
12
+ * Write a heartbeat for this session. Called on every inject.
13
+ */
14
+ export declare function writeSessionHeartbeat(cwd: string, sessionId: string, branch: string | null): void;
15
+ /**
16
+ * Check for other active sessions on the same project.
17
+ * Returns info about concurrent sessions (excluding this one).
18
+ */
19
+ export declare function detectConcurrentSessions(cwd: string, currentSessionId: string): ConcurrentSessionInfo | null;
20
+ /**
21
+ * Mark a session as finished (called by capture hook).
22
+ * Doesn't delete immediately — just updates the heartbeat so the timeout handles cleanup.
23
+ */
24
+ export declare function clearSessionHeartbeat(cwd: string, sessionId: string): void;
25
+ //# sourceMappingURL=concurrent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrent.d.ts","sourceRoot":"","sources":["../../src/lib/concurrent.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,IAAI,CAyBN;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,GACvB,qBAAqB,GAAG,IAAI,CA0D9B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAU1E"}
@@ -0,0 +1,206 @@
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.writeSessionHeartbeat = writeSessionHeartbeat;
37
+ exports.detectConcurrentSessions = detectConcurrentSessions;
38
+ exports.clearSessionHeartbeat = clearSessionHeartbeat;
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ const SESSION_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes — session is "active" if heartbeat is within this window
42
+ /**
43
+ * Write a heartbeat for this session. Called on every inject.
44
+ */
45
+ function writeSessionHeartbeat(cwd, sessionId, branch) {
46
+ const sessionsDir = path.join(cwd, '.helm', 'sessions');
47
+ try {
48
+ if (!fs.existsSync(sessionsDir)) {
49
+ fs.mkdirSync(sessionsDir, { recursive: true });
50
+ }
51
+ const heartbeat = {
52
+ session_id: sessionId,
53
+ pid: process.pid,
54
+ branch,
55
+ user: getGitUser(cwd),
56
+ ide: detectCurrentIDE(),
57
+ started_at: getExistingStartTime(sessionsDir, sessionId) ?? new Date().toISOString(),
58
+ last_heartbeat: new Date().toISOString(),
59
+ };
60
+ fs.writeFileSync(path.join(sessionsDir, `${sessionId}.json`), JSON.stringify(heartbeat, null, 2));
61
+ }
62
+ catch {
63
+ // Never break injection for heartbeat
64
+ }
65
+ }
66
+ /**
67
+ * Check for other active sessions on the same project.
68
+ * Returns info about concurrent sessions (excluding this one).
69
+ */
70
+ function detectConcurrentSessions(cwd, currentSessionId) {
71
+ const sessionsDir = path.join(cwd, '.helm', 'sessions');
72
+ if (!fs.existsSync(sessionsDir)) {
73
+ return null;
74
+ }
75
+ try {
76
+ const now = Date.now();
77
+ const files = fs.readdirSync(sessionsDir).filter(f => f.endsWith('.json'));
78
+ const activeSessions = [];
79
+ for (const file of files) {
80
+ const filePath = path.join(sessionsDir, file);
81
+ try {
82
+ const raw = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
83
+ // Skip our own session
84
+ if (raw.session_id === currentSessionId)
85
+ continue;
86
+ const lastHeartbeat = new Date(raw.last_heartbeat).getTime();
87
+ const elapsed = now - lastHeartbeat;
88
+ // Check if session is still active (heartbeat within timeout)
89
+ if (elapsed < SESSION_TIMEOUT_MS) {
90
+ // Double-check: is the process still running?
91
+ if (isProcessAlive(raw.pid)) {
92
+ activeSessions.push({
93
+ session_id: raw.session_id,
94
+ branch: raw.branch,
95
+ user: raw.user,
96
+ ide: raw.ide,
97
+ age_seconds: Math.round(elapsed / 1000),
98
+ });
99
+ }
100
+ else {
101
+ // Process is dead — clean up stale heartbeat
102
+ try {
103
+ fs.unlinkSync(filePath);
104
+ }
105
+ catch { /* ignore */ }
106
+ }
107
+ }
108
+ else {
109
+ // Heartbeat is too old — clean up
110
+ try {
111
+ fs.unlinkSync(filePath);
112
+ }
113
+ catch { /* ignore */ }
114
+ }
115
+ }
116
+ catch {
117
+ // Corrupt file — remove it
118
+ try {
119
+ fs.unlinkSync(filePath);
120
+ }
121
+ catch { /* ignore */ }
122
+ }
123
+ }
124
+ if (activeSessions.length === 0)
125
+ return null;
126
+ return {
127
+ count: activeSessions.length,
128
+ sessions: activeSessions,
129
+ };
130
+ }
131
+ catch {
132
+ return null;
133
+ }
134
+ }
135
+ /**
136
+ * Mark a session as finished (called by capture hook).
137
+ * Doesn't delete immediately — just updates the heartbeat so the timeout handles cleanup.
138
+ */
139
+ function clearSessionHeartbeat(cwd, sessionId) {
140
+ const filePath = path.join(cwd, '.helm', 'sessions', `${sessionId}.json`);
141
+ try {
142
+ if (fs.existsSync(filePath)) {
143
+ fs.unlinkSync(filePath);
144
+ }
145
+ }
146
+ catch {
147
+ // ignore
148
+ }
149
+ }
150
+ function getGitUser(cwd) {
151
+ try {
152
+ const { execSync } = require('child_process');
153
+ return execSync('git config user.name', { cwd, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim() || null;
154
+ }
155
+ catch {
156
+ return null;
157
+ }
158
+ }
159
+ function detectCurrentIDE() {
160
+ // Check common environment variables set by IDEs
161
+ if (process.env.CURSOR_TRACE_DIR || process.env.CURSOR_CHANNEL)
162
+ return 'Cursor';
163
+ if (process.env.CLAUDE_CODE)
164
+ return 'Claude Code';
165
+ if (process.env.TERM_PROGRAM === 'vscode')
166
+ return 'VS Code';
167
+ // Check parent process name (best-effort)
168
+ try {
169
+ const { execSync } = require('child_process');
170
+ const ppid = process.ppid;
171
+ const parentName = execSync(`ps -p ${ppid} -o comm=`, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
172
+ if (parentName.includes('cursor'))
173
+ return 'Cursor';
174
+ if (parentName.includes('claude'))
175
+ return 'Claude Code';
176
+ if (parentName.includes('code'))
177
+ return 'VS Code';
178
+ }
179
+ catch {
180
+ // ignore
181
+ }
182
+ return null;
183
+ }
184
+ function getExistingStartTime(sessionsDir, sessionId) {
185
+ try {
186
+ const filePath = path.join(sessionsDir, `${sessionId}.json`);
187
+ if (fs.existsSync(filePath)) {
188
+ const raw = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
189
+ return raw.started_at;
190
+ }
191
+ }
192
+ catch {
193
+ // ignore
194
+ }
195
+ return null;
196
+ }
197
+ function isProcessAlive(pid) {
198
+ try {
199
+ process.kill(pid, 0); // signal 0 = just check if process exists
200
+ return true;
201
+ }
202
+ catch {
203
+ return false;
204
+ }
205
+ }
206
+ //# sourceMappingURL=concurrent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrent.js","sourceRoot":"","sources":["../../src/lib/concurrent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface OnboardingProgress {
2
+ prompt_count: number;
3
+ stage_id: 'trust' | 'coach' | 'autonomy' | 'replicate' | 'personalize' | null;
4
+ stage_title: string | null;
5
+ stage_instruction: string | null;
6
+ }
7
+ export declare function trackOnboardingProgress(cwd: string): OnboardingProgress;
8
+ //# sourceMappingURL=onboarding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/lib/onboarding.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,IAAI,CAAC;IAC9E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAOD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CA+BvE"}
@@ -0,0 +1,126 @@
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.trackOnboardingProgress = trackOnboardingProgress;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ function trackOnboardingProgress(cwd) {
40
+ const helmDir = path.join(cwd, '.helm');
41
+ const statePath = path.join(helmDir, 'onboarding-state.json');
42
+ try {
43
+ if (!fs.existsSync(helmDir)) {
44
+ fs.mkdirSync(helmDir, { recursive: true });
45
+ }
46
+ const currentState = loadState(statePath);
47
+ const promptCount = currentState.prompt_count + 1;
48
+ const nextState = {
49
+ prompt_count: promptCount,
50
+ updated_at: new Date().toISOString(),
51
+ };
52
+ fs.writeFileSync(statePath, JSON.stringify(nextState, null, 2));
53
+ return {
54
+ prompt_count: promptCount,
55
+ ...resolveStage(promptCount),
56
+ };
57
+ }
58
+ catch {
59
+ return {
60
+ prompt_count: 0,
61
+ stage_id: null,
62
+ stage_title: null,
63
+ stage_instruction: null,
64
+ };
65
+ }
66
+ }
67
+ function loadState(statePath) {
68
+ if (!fs.existsSync(statePath)) {
69
+ return {
70
+ prompt_count: 0,
71
+ updated_at: new Date().toISOString(),
72
+ };
73
+ }
74
+ try {
75
+ return JSON.parse(fs.readFileSync(statePath, 'utf-8'));
76
+ }
77
+ catch {
78
+ return {
79
+ prompt_count: 0,
80
+ updated_at: new Date().toISOString(),
81
+ };
82
+ }
83
+ }
84
+ function resolveStage(promptCount) {
85
+ if (promptCount === 1) {
86
+ return {
87
+ stage_id: 'trust',
88
+ stage_title: 'Trust',
89
+ stage_instruction: 'Start with a short confirmation that Helm context is active and summarize what context was used.',
90
+ };
91
+ }
92
+ if (promptCount === 2) {
93
+ return {
94
+ stage_id: 'coach',
95
+ stage_title: 'Coach',
96
+ stage_instruction: 'Offer one concrete prompt improvement that makes the task more actionable.',
97
+ };
98
+ }
99
+ if (promptCount === 3) {
100
+ return {
101
+ stage_id: 'autonomy',
102
+ stage_title: 'Autonomy',
103
+ stage_instruction: 'Take initiative with a concise plan and execute it with validation steps.',
104
+ };
105
+ }
106
+ if (promptCount === 4) {
107
+ return {
108
+ stage_id: 'replicate',
109
+ stage_title: 'Replicate',
110
+ stage_instruction: 'Highlight repeatable workflow patterns the user can reuse for similar tasks.',
111
+ };
112
+ }
113
+ if (promptCount === 5) {
114
+ return {
115
+ stage_id: 'personalize',
116
+ stage_title: 'Personalize',
117
+ stage_instruction: 'Ask for one high-leverage preference to better tailor future prompts and outputs.',
118
+ };
119
+ }
120
+ return {
121
+ stage_id: null,
122
+ stage_title: null,
123
+ stage_instruction: null,
124
+ };
125
+ }
126
+ //# sourceMappingURL=onboarding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/lib/onboarding.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -46,6 +46,8 @@ export interface InjectRequest {
46
46
  context?: {
47
47
  cwd?: string;
48
48
  detected_stack?: string[];
49
+ detected_capabilities?: string[];
50
+ onboarding_stage?: 'trust' | 'coach' | 'autonomy' | 'replicate' | 'personalize';
49
51
  session_id?: string;
50
52
  branch?: string;
51
53
  project_slug?: string;
@@ -58,6 +60,35 @@ export interface InjectResponse {
58
60
  source: string;
59
61
  content: string;
60
62
  }>;
63
+ analysis?: {
64
+ intent: string | null;
65
+ keywords: string[];
66
+ capabilities: Array<{
67
+ id: string;
68
+ title: string;
69
+ confidence: string;
70
+ reason: string;
71
+ instruction: string;
72
+ }>;
73
+ onboarding?: {
74
+ stage: string;
75
+ title: string;
76
+ instruction: string;
77
+ } | null;
78
+ injection_matches: Array<{
79
+ source: string;
80
+ score: number;
81
+ matched_keywords: string[];
82
+ reason: string;
83
+ }>;
84
+ prompt_quality: {
85
+ score: number;
86
+ strengths: string[];
87
+ issues: string[];
88
+ suggestions: string[];
89
+ improved_prompt: string | null;
90
+ };
91
+ };
61
92
  }
62
93
  export interface CaptureRequest {
63
94
  prompt_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,YAAY,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,YAAY,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,KAAK,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,GAAG,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,GAAG,CAAC;IACV,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helmai/cli",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "Helm CLI - Intelligent context injection for AI coding assistants",
5
5
  "main": "dist/index.js",
6
6
  "bin": {