@productbrain/cli 0.1.0-beta.36 → 0.1.0-beta.37

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 (96) hide show
  1. package/dist/__tests__/experiment.test.d.ts +6 -0
  2. package/dist/__tests__/experiment.test.d.ts.map +1 -0
  3. package/dist/__tests__/experiment.test.js +69 -0
  4. package/dist/__tests__/experiment.test.js.map +1 -0
  5. package/dist/__tests__/onboarding-path-b.test.d.ts +2 -0
  6. package/dist/__tests__/onboarding-path-b.test.d.ts.map +1 -0
  7. package/dist/__tests__/onboarding-path-b.test.js +46 -0
  8. package/dist/__tests__/onboarding-path-b.test.js.map +1 -0
  9. package/dist/__tests__/onboarding.test.js +242 -89
  10. package/dist/__tests__/onboarding.test.js.map +1 -1
  11. package/dist/commands/connect-integration.test.d.ts +7 -0
  12. package/dist/commands/connect-integration.test.d.ts.map +1 -0
  13. package/dist/commands/connect-integration.test.js +148 -0
  14. package/dist/commands/connect-integration.test.js.map +1 -0
  15. package/dist/commands/connect.d.ts +17 -0
  16. package/dist/commands/connect.d.ts.map +1 -0
  17. package/dist/commands/connect.js +280 -0
  18. package/dist/commands/connect.js.map +1 -0
  19. package/dist/commands/connect.test.d.ts +6 -0
  20. package/dist/commands/connect.test.d.ts.map +1 -0
  21. package/dist/commands/connect.test.js +230 -0
  22. package/dist/commands/connect.test.js.map +1 -0
  23. package/dist/commands/handshake.d.ts +2 -0
  24. package/dist/commands/handshake.d.ts.map +1 -1
  25. package/dist/commands/handshake.js +20 -5
  26. package/dist/commands/handshake.js.map +1 -1
  27. package/dist/commands/setup.d.ts.map +1 -1
  28. package/dist/commands/setup.js +29 -2
  29. package/dist/commands/setup.js.map +1 -1
  30. package/dist/generators/context-md.d.ts +1 -1
  31. package/dist/generators/context-md.d.ts.map +1 -1
  32. package/dist/generators/context-md.js +12 -1
  33. package/dist/generators/context-md.js.map +1 -1
  34. package/dist/index.js +13 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/lib/config.d.ts +1 -0
  37. package/dist/lib/config.d.ts.map +1 -1
  38. package/dist/lib/config.js +25 -1
  39. package/dist/lib/config.js.map +1 -1
  40. package/dist/lib/conversation-engine.d.ts +22 -27
  41. package/dist/lib/conversation-engine.d.ts.map +1 -1
  42. package/dist/lib/conversation-engine.js +58 -80
  43. package/dist/lib/conversation-engine.js.map +1 -1
  44. package/dist/lib/conversation-phases.d.ts +22 -37
  45. package/dist/lib/conversation-phases.d.ts.map +1 -1
  46. package/dist/lib/conversation-phases.js +4 -4
  47. package/dist/lib/conversation-signals.d.ts +3 -0
  48. package/dist/lib/conversation-signals.d.ts.map +1 -1
  49. package/dist/lib/conversation-signals.js +14 -3
  50. package/dist/lib/conversation-signals.js.map +1 -1
  51. package/dist/lib/experiment.d.ts +18 -0
  52. package/dist/lib/experiment.d.ts.map +1 -0
  53. package/dist/lib/experiment.js +28 -0
  54. package/dist/lib/experiment.js.map +1 -0
  55. package/dist/lib/onboarding-path-b.d.ts +10 -0
  56. package/dist/lib/onboarding-path-b.d.ts.map +1 -0
  57. package/dist/lib/onboarding-path-b.js +214 -0
  58. package/dist/lib/onboarding-path-b.js.map +1 -0
  59. package/dist/lib/onboarding-phases.js +1 -1
  60. package/dist/lib/onboarding-shared.d.ts +81 -0
  61. package/dist/lib/onboarding-shared.d.ts.map +1 -0
  62. package/dist/lib/onboarding-shared.js +190 -0
  63. package/dist/lib/onboarding-shared.js.map +1 -0
  64. package/dist/lib/onboarding-topics.d.ts +27 -0
  65. package/dist/lib/onboarding-topics.d.ts.map +1 -0
  66. package/dist/lib/onboarding-topics.js +57 -0
  67. package/dist/lib/onboarding-topics.js.map +1 -0
  68. package/dist/lib/onboarding.d.ts +3 -3
  69. package/dist/lib/onboarding.d.ts.map +1 -1
  70. package/dist/lib/onboarding.js +109 -240
  71. package/dist/lib/onboarding.js.map +1 -1
  72. package/dist/lib/profiles.d.ts +5 -0
  73. package/dist/lib/profiles.d.ts.map +1 -1
  74. package/dist/lib/profiles.js +7 -0
  75. package/dist/lib/profiles.js.map +1 -1
  76. package/dist/lib/telemetry.d.ts +5 -5
  77. package/dist/lib/telemetry.d.ts.map +1 -1
  78. package/dist/lib/telemetry.js +34 -16
  79. package/dist/lib/telemetry.js.map +1 -1
  80. package/dist/lib/wizard-surfaces.d.ts +47 -0
  81. package/dist/lib/wizard-surfaces.d.ts.map +1 -0
  82. package/dist/lib/wizard-surfaces.js +176 -0
  83. package/dist/lib/wizard-surfaces.js.map +1 -0
  84. package/dist/lib/wizard-surfaces.test.d.ts +2 -0
  85. package/dist/lib/wizard-surfaces.test.d.ts.map +1 -0
  86. package/dist/lib/wizard-surfaces.test.js +127 -0
  87. package/dist/lib/wizard-surfaces.test.js.map +1 -0
  88. package/dist/lib/wizard-trust.d.ts +31 -0
  89. package/dist/lib/wizard-trust.d.ts.map +1 -0
  90. package/dist/lib/wizard-trust.js +66 -0
  91. package/dist/lib/wizard-trust.js.map +1 -0
  92. package/dist/lib/wizard-trust.test.d.ts +2 -0
  93. package/dist/lib/wizard-trust.test.d.ts.map +1 -0
  94. package/dist/lib/wizard-trust.test.js +32 -0
  95. package/dist/lib/wizard-trust.test.js.map +1 -0
  96. package/package.json +1 -1
@@ -1,124 +1,24 @@
1
1
  /**
2
- * Onboarding conversation — LLM-powered phase-gated conversation for new workspaces.
3
- * WP-304: Deterministic Shell (CLI phases), Stochastic Core (LLM content).
2
+ * Onboarding conversation — coach-pattern LLM conversation for new workspaces.
3
+ * WP-304: Topics with goal/behaviour/criteria. LLM judges completion, heuristic backup.
4
4
  *
5
5
  * Uses @clack/prompts (WP-303 S1) and the MCP gateway to call the
6
6
  * Convex onboardingChat action for conversation and extraction,
7
7
  * then chain.createEntry for batch-capture.
8
8
  */
9
- import { mcpCall, mcpCallWithSession } from './client.js';
9
+ import { mcpCall } from './client.js';
10
10
  import { ask, confirm, select } from './prompts.js';
11
- import { bold, cyan, dim, green, icons } from './style.js';
11
+ import { bold, dim, green, icons } from './style.js';
12
12
  import { trackEvent } from './telemetry.js';
13
13
  import { detectSignals, mergeSignals } from './conversation-signals.js';
14
- import { evaluatePhase, buildPhaseDirective, sanitizeResponse, enforceBridgeIsStatement, isTooSimilar } from './conversation-engine.js';
15
- import { ONBOARDING_PHASES, userWantsToSkip } from './onboarding-phases.js';
16
- /** Hard cap on total exchanges across all phases. */
14
+ import { evaluateTopic, buildTopicDirective, sanitizeResponse, shouldSkipTopic, isTooSimilar } from './conversation-engine.js';
15
+ import { ONBOARDING_TOPICS, userWantsToSkip } from './onboarding-topics.js';
16
+ import { countWords, validateExtractedEntries, displayEntryExample, showCapturedSummary, batchCaptureEntries, truncate, firstNWords, } from './onboarding-shared.js';
17
+ /** Hard cap on total exchanges across all topics. */
17
18
  const MAX_TOTAL_EXCHANGES = 10;
18
- // ── Extraction → Entries Mapping ────────────────────────────────────────────
19
- // SYNC: Must match packages/mcp-server/src/tools/start-interview.ts:extractionToBatchEntries
20
- // Duplicated due to monorepo import boundary (BR-165). TEN tracked for shared-package extraction.
21
- function truncate(str, maxLen) {
22
- if (str.length <= maxLen)
23
- return str;
24
- const truncated = str.slice(0, maxLen);
25
- const lastSpace = truncated.lastIndexOf(' ');
26
- return lastSpace > maxLen * 0.6 ? truncated.slice(0, lastSpace) : truncated;
27
- }
28
- function firstNWords(str, n) {
29
- return str.split(/\s+/).slice(0, n).join(' ');
30
- }
31
- function countWords(text) {
32
- return text.trim().split(/\s+/).filter(Boolean).length;
33
- }
34
- function extractionToEntries(extracted) {
35
- const entries = [];
36
- if (extracted.vision?.trim()) {
37
- entries.push({
38
- collection: 'strategy',
39
- name: 'Product Vision',
40
- description: extracted.vision,
41
- });
42
- }
43
- if (extracted.audience) {
44
- entries.push({
45
- collection: 'audiences',
46
- name: firstNWords(extracted.audience, 6),
47
- description: extracted.audience,
48
- });
49
- }
50
- if (extracted.techStack?.length) {
51
- entries.push({
52
- collection: 'architecture',
53
- name: 'Tech Stack',
54
- description: `Technology choices: ${extracted.techStack.join(', ')}`,
55
- });
56
- for (const tech of extracted.techStack.slice(0, 3)) {
57
- entries.push({
58
- collection: 'glossary',
59
- name: tech,
60
- description: `${tech} — part of the tech stack`,
61
- });
62
- }
63
- }
64
- if (extracted.keyTerms?.length) {
65
- for (const term of extracted.keyTerms) {
66
- const alreadyAdded = entries.some((e) => e.collection === 'glossary' && e.name.toLowerCase() === term.toLowerCase());
67
- if (!alreadyAdded) {
68
- entries.push({
69
- collection: 'glossary',
70
- name: term,
71
- description: `Core domain term: ${term}`,
72
- });
73
- }
74
- }
75
- }
76
- if (extracted.keyDecisions?.length) {
77
- for (const decision of extracted.keyDecisions) {
78
- entries.push({
79
- collection: 'decisions',
80
- name: truncate(decision, 120),
81
- description: decision,
82
- });
83
- }
84
- }
85
- if (extracted.tensions?.length) {
86
- for (const tension of extracted.tensions) {
87
- entries.push({
88
- collection: 'tensions',
89
- name: truncate(tension, 120),
90
- description: tension,
91
- });
92
- }
93
- }
94
- return entries;
95
- }
96
- // ── Display helpers ─────────────────────────────────────────────────────────
97
- /** Collection type labels — human-friendly names for collections. */
98
- const COLLECTION_LABELS = {
99
- strategy: 'Strategy',
100
- audiences: 'Audience',
101
- architecture: 'Architecture',
102
- glossary: 'Term',
103
- decisions: 'Decision',
104
- tensions: 'Tension',
105
- };
106
- /**
107
- * Display one entry example with schema structure.
108
- * Shows collection type, name, and description in a clean format.
109
- */
110
- function displayEntryExample(entry) {
111
- const typeLabel = COLLECTION_LABELS[entry.collection] ?? entry.collection;
112
- process.stdout.write(` ${cyan(typeLabel)}\n`);
113
- process.stdout.write(` ${bold(entry.name)}\n`);
114
- if (entry.description !== entry.name) {
115
- process.stdout.write(` ${dim(entry.description)}\n`);
116
- }
117
- process.stdout.write('\n');
118
- }
119
19
  // ── Main conversation ───────────────────────────────────────────────────────
120
20
  /**
121
- * Run the onboarding conversation: phase-gated chat, extraction, and auto-capture.
21
+ * Run the onboarding conversation: topic-by-topic coach pattern, extraction, and auto-capture.
122
22
  */
123
23
  export async function runOnboardingConversation(workspaceName) {
124
24
  trackEvent('setup_started', { mode: 'llm' });
@@ -127,26 +27,29 @@ export async function runOnboardingConversation(workspaceName) {
127
27
  messages: [],
128
28
  userMessageCount: 0,
129
29
  totalUserWords: 0,
30
+ topicExchanges: {},
31
+ completedTopics: new Set(),
32
+ currentTopicId: ONBOARDING_TOPICS[0].id,
33
+ completedQA: [],
34
+ // Legacy aliases — kept for type compat during transition
130
35
  phaseExchanges: {},
131
36
  completedPhases: new Set(),
132
- currentPhaseId: ONBOARDING_PHASES[0].id,
37
+ currentPhaseId: ONBOARDING_TOPICS[0].id,
133
38
  signals: detectSignals([]),
134
39
  refusalStreak: 0,
135
40
  };
136
- let currentPhaseIndex = 0;
137
41
  let totalExchanges = 0;
138
42
  let emptyAttempts = 0;
139
43
  const recentAssistantMessages = [];
140
- const accumulatedFragments = [];
141
- // Step 1: Get the LLM's opening greeting (greet phase)
142
- const greetPhase = ONBOARDING_PHASES[0];
143
- const greetDirective = buildPhaseDirective(greetPhase, 0, ONBOARDING_PHASES.length);
44
+ // Step 1: Get the LLM's opening (topic 1 generates the greeting)
45
+ const firstTopic = ONBOARDING_TOPICS[0];
46
+ const openingDirective = buildTopicDirective(firstTopic, 0, ONBOARDING_TOPICS.length, [], workspaceName);
144
47
  let greeting;
145
48
  try {
146
49
  const result = await mcpCall('onboarding.chat', {
147
50
  messages: [],
148
51
  workspaceName,
149
- phaseDirective: greetDirective,
52
+ phaseDirective: openingDirective,
150
53
  turnNumber: 1,
151
54
  totalUserWords: 0,
152
55
  refusalStreak: 0,
@@ -164,14 +67,21 @@ export async function runOnboardingConversation(workspaceName) {
164
67
  process.stdout.write(`\n ${greeting}\n\n`);
165
68
  state.messages.push({ role: 'assistant', content: greeting });
166
69
  recentAssistantMessages.push(greeting);
167
- // Advance past greet phase
168
- state.completedPhases.add('greet');
169
- state.phaseExchanges['greet'] = 1;
170
- currentPhaseIndex = 1;
171
- state.currentPhaseId = ONBOARDING_PHASES[1].id;
172
- // Step 2: Phase-gated conversation loop
173
- while (currentPhaseIndex < ONBOARDING_PHASES.length && totalExchanges < MAX_TOTAL_EXCHANGES) {
174
- const phase = ONBOARDING_PHASES[currentPhaseIndex];
70
+ // Step 2: Topic-by-topic conversation loop
71
+ let currentTopicIndex = 0;
72
+ while (currentTopicIndex < ONBOARDING_TOPICS.length && totalExchanges < MAX_TOTAL_EXCHANGES) {
73
+ const topic = ONBOARDING_TOPICS[currentTopicIndex];
74
+ state.currentTopicId = topic.id;
75
+ // DEBUG: trace loop state
76
+ if (process.env.PB_DEBUG) {
77
+ console.error(`[DEBUG] topic=${topic.id} idx=${currentTopicIndex} exchanges=${totalExchanges} words=${state.totalUserWords} skip=${shouldSkipTopic(topic, state.signals, state.totalUserWords)}`);
78
+ }
79
+ // Skip check: if the signal for this topic is already present AND we have enough content
80
+ if (shouldSkipTopic(topic, state.signals, state.totalUserWords)) {
81
+ state.completedTopics.add(topic.id);
82
+ currentTopicIndex++;
83
+ continue;
84
+ }
175
85
  // Get user input
176
86
  let userInput;
177
87
  try {
@@ -187,7 +97,7 @@ export async function runOnboardingConversation(workspaceName) {
187
97
  if (!userInput.trim()) {
188
98
  emptyAttempts++;
189
99
  if (emptyAttempts >= 2) {
190
- process.stdout.write(`\n ${dim('No problemexplore with')} ${bold('pb orient -b')} ${dim('or capture with')} ${bold('pb capture')}\n\n`);
100
+ process.stdout.write(`\n ${dim('No worriesrun')} ${bold('pb capture')} ${dim('anytime to teach your AI tools more.')}\n\n`);
191
101
  return;
192
102
  }
193
103
  process.stdout.write(` ${dim('Just hit Enter again to skip, or type anything to continue.')}\n\n`);
@@ -196,14 +106,13 @@ export async function runOnboardingConversation(workspaceName) {
196
106
  emptyAttempts = 0;
197
107
  // Check if user wants to skip
198
108
  if (userWantsToSkip(userInput) && state.totalUserWords > 10) {
199
- // Skip to extraction with what we have
200
109
  break;
201
110
  }
202
111
  // Update state
203
112
  state.messages.push({ role: 'user', content: userInput });
204
113
  state.userMessageCount++;
205
114
  state.totalUserWords += countWords(userInput);
206
- state.phaseExchanges[phase.id] = (state.phaseExchanges[phase.id] ?? 0) + 1;
115
+ state.topicExchanges[topic.id] = (state.topicExchanges[topic.id] ?? 0) + 1;
207
116
  totalExchanges++;
208
117
  // Detect refusals (very short non-answers)
209
118
  const wordCount = countWords(userInput);
@@ -215,13 +124,14 @@ export async function runOnboardingConversation(workspaceName) {
215
124
  }
216
125
  // Update heuristic signals
217
126
  state.signals = detectSignals(state.messages);
218
- // Get LLM response with phase directive (bridge gets accumulated fragments)
219
- const phaseDirective = buildPhaseDirective(phase, currentPhaseIndex, ONBOARDING_PHASES.length, accumulatedFragments);
127
+ // Get LLM response with topic directive
128
+ const topicDirective = buildTopicDirective(topic, currentTopicIndex, ONBOARDING_TOPICS.length, state.completedQA, workspaceName);
129
+ let topicComplete = false;
220
130
  try {
221
131
  const result = await mcpCall('onboarding.chat', {
222
132
  messages: state.messages,
223
133
  workspaceName,
224
- phaseDirective,
134
+ phaseDirective: topicDirective,
225
135
  turnNumber: totalExchanges + 1,
226
136
  totalUserWords: state.totalUserWords,
227
137
  refusalStreak: state.refusalStreak,
@@ -230,47 +140,48 @@ export async function runOnboardingConversation(workspaceName) {
230
140
  // Merge LLM-reported signals with heuristic signals
231
141
  if (result.signals) {
232
142
  state.signals = mergeSignals(state.signals, result.signals);
233
- // Accumulate quotable fragments for bridge phase
234
- if (result.signals.quotableFragments?.length) {
235
- for (const frag of result.signals.quotableFragments) {
236
- if (frag.trim() && !accumulatedFragments.includes(frag)) {
237
- accumulatedFragments.push(frag);
238
- }
239
- }
240
- }
241
143
  }
144
+ // Read LLM's topic completion judgment
145
+ topicComplete = result.topicComplete ?? false;
242
146
  // Post-process response
243
147
  let displayMessage = sanitizeResponse(result.content);
244
- displayMessage = enforceBridgeIsStatement(displayMessage, phase.id);
245
- // Detect repetition — if too similar, add a nudge for next call
148
+ // Detect repetition — if too similar, bump refusal streak for next call
246
149
  if (isTooSimilar(displayMessage, recentAssistantMessages)) {
247
- state.refusalStreak++; // Will cause prompt to try different angle
150
+ state.refusalStreak++;
248
151
  }
249
152
  process.stdout.write(`\n ${displayMessage}\n\n`);
250
153
  state.messages.push({ role: 'assistant', content: displayMessage });
251
154
  recentAssistantMessages.push(displayMessage);
252
155
  }
253
156
  }
254
- catch {
157
+ catch (err) {
255
158
  // LLM call failed — try to continue with what we have
159
+ if (process.env.PB_DEBUG)
160
+ console.error(`[DEBUG] LLM catch, breaking. Error:`, err);
256
161
  break;
257
162
  }
258
- // CLI evaluates phase not the LLM
259
- const advance = evaluatePhase(ONBOARDING_PHASES, state);
260
- if (advance.complete) {
261
- state.completedPhases.add(phase.id);
262
- if (advance.readyToExtract) {
263
- break; // All phases done — proceed to extraction
264
- }
265
- if (advance.nextPhase) {
266
- currentPhaseIndex++;
267
- state.currentPhaseId = advance.nextPhase.id;
268
- }
163
+ // Evaluate topic completion: LLM judgment + heuristic backup + forced advancement
164
+ const evalResult = evaluateTopic(topic, state, topicComplete);
165
+ if (process.env.PB_DEBUG) {
166
+ console.error(`[DEBUG] eval: complete=${evalResult.complete} forced=${evalResult.forced} skip=${evalResult.skip} topicComplete=${topicComplete} topicExchanges=${state.topicExchanges[topic.id]}`);
167
+ }
168
+ if (evalResult.complete) {
169
+ // Accumulate the last Q&A for context in later topics
170
+ const lastAssistant = recentAssistantMessages[recentAssistantMessages.length - 1] ?? '';
171
+ state.completedQA.push({
172
+ topicId: topic.id,
173
+ question: lastAssistant,
174
+ answer: userInput,
175
+ });
176
+ state.completedTopics.add(topic.id);
177
+ currentTopicIndex++;
269
178
  }
270
- // else: stay in current phase, loop again
179
+ // else: stay in current topic, loop again
271
180
  }
272
181
  // Hard floor: barely any content — offer manual capture
273
- if (state.totalUserWords < 10 && state.userMessageCount > 0) {
182
+ // Threshold: 3 words means basically no real content. Previous threshold of 10
183
+ // was too aggressive — 3 short answers can be valid (e.g., "a finance app" + "me" = 4 words).
184
+ if (state.totalUserWords < 3 && state.userMessageCount > 0) {
274
185
  process.stdout.write(`\n ${dim('No problem — you can add knowledge at your own pace with')} ${bold('pb capture')}\n\n`);
275
186
  trackEvent('setup_completed', { capturedCount: 0, reason: 'insufficient_content' });
276
187
  return;
@@ -281,39 +192,33 @@ export async function runOnboardingConversation(workspaceName) {
281
192
  process.stdout.write(`\n ${dim('No worries! Run')} ${bold('pb capture')} ${dim('anytime to add knowledge.')}\n\n`);
282
193
  return;
283
194
  }
284
- let extraction;
195
+ let entriesToCapture;
285
196
  try {
286
197
  const result = await mcpCall('onboarding.chat', {
287
198
  messages: state.messages,
288
199
  workspaceName,
289
200
  mode: 'extract',
290
201
  });
291
- if (!result?.extraction?.vision) {
202
+ if (!result?.entries?.length) {
292
203
  process.stdout.write(`\n ${dim("Couldn't organize your answers just yet. Try")} ${bold('pb capture')} ${dim('to add knowledge manually.')}\n\n`);
293
204
  return;
294
205
  }
295
- extraction = result.extraction;
206
+ entriesToCapture = validateExtractedEntries(result.entries).slice(0, 5);
296
207
  }
297
208
  catch {
298
209
  process.stdout.write(`\n ${dim("Couldn't organize your answers just yet. Try")} ${bold('pb capture')} ${dim('to add knowledge manually.')}\n\n`);
299
210
  return;
300
211
  }
301
- // Step 4: Filter and cap entries
302
- const allEntries = extractionToEntries(extraction);
303
- // Filter out junk: single-word names, very short descriptions
304
- const entriesToCapture = allEntries
305
- .filter((e) => e.name.trim().split(/\s+/).length >= 2 || e.collection === 'glossary')
306
- .slice(0, 5);
307
212
  if (entriesToCapture.length === 0) {
308
213
  process.stdout.write(`\n ${dim('Nothing to save yet. Try')} ${bold('pb capture')} ${dim('to add knowledge manually.')}\n\n`);
309
214
  return;
310
215
  }
311
- // Step 5: Show ONE example with schema, offer to browse more
216
+ // Step 4: Show ONE example with schema, offer to browse more
312
217
  const itemCount = entriesToCapture.length;
313
218
  process.stdout.write(`\n From this conversation, I'd remember ${bold(String(itemCount))} item${itemCount === 1 ? '' : 's'}.\n`);
314
219
  process.stdout.write(` Here's an example:\n\n`);
315
220
  displayEntryExample(entriesToCapture[0]);
316
- let exampleIndex = 1; // Already showed index 0
221
+ let exampleIndex = 1;
317
222
  let shouldSave = false;
318
223
  // eslint-disable-next-line no-constant-condition
319
224
  while (true) {
@@ -337,7 +242,7 @@ export async function runOnboardingConversation(workspaceName) {
337
242
  return;
338
243
  }
339
244
  if (choice === 'skip') {
340
- process.stdout.write(`\n ${dim('No problem — explore with')} ${bold('pb orient -b')} ${dim('or add more with')} ${bold('pb capture')}\n\n`);
245
+ process.stdout.write(`\n ${dim('No problem — run')} ${bold('pb capture')} ${dim('anytime to add more.')}\n\n`);
341
246
  return;
342
247
  }
343
248
  if (choice === 'save') {
@@ -351,25 +256,9 @@ export async function runOnboardingConversation(workspaceName) {
351
256
  }
352
257
  if (!shouldSave)
353
258
  return;
354
- // Step 6: Batch-capture entries
355
- let capturedCount = 0;
356
- const errors = [];
357
- for (const entry of entriesToCapture) {
358
- try {
359
- await mcpCallWithSession('chain.createEntry', {
360
- collectionSlug: entry.collection,
361
- name: entry.name,
362
- status: 'active',
363
- data: { description: entry.description },
364
- });
365
- capturedCount++;
366
- }
367
- catch (err) {
368
- const msg = err instanceof Error ? err.message : String(err);
369
- errors.push(`${entry.name}: ${msg}`);
370
- }
371
- }
372
- // Step 7: Report results
259
+ // Step 5: Batch-capture entries
260
+ const { capturedCount, errors } = await batchCaptureEntries(entriesToCapture);
261
+ // Step 6: Report results
373
262
  if (capturedCount > 0) {
374
263
  process.stdout.write(`\n ${green(icons.pass)} Saved ${capturedCount} item${capturedCount === 1 ? '' : 's'} to your product brain.\n`);
375
264
  trackEvent('capture_completed', { mode: 'llm', count: capturedCount });
@@ -377,32 +266,12 @@ export async function runOnboardingConversation(workspaceName) {
377
266
  if (errors.length > 0) {
378
267
  process.stdout.write(`\n ${dim(`${errors.length} couldn't be saved.`)}\n`);
379
268
  }
380
- // Step 8: Retrieval proof + closing
381
- await showRetrievalProof();
382
- process.stdout.write(` ${dim('Explore with')} ${bold('pb orient -b')} ${dim('or add more with')} ${bold('pb capture')}\n\n`);
269
+ // Step 7: Deterministic proof + closing
270
+ showCapturedSummary(entriesToCapture, capturedCount);
271
+ process.stdout.write(` ${dim('Run')} ${bold('pb capture')} ${dim('anytime to teach your AI tools more.')}\n\n`);
383
272
  trackEvent('setup_completed', { capturedCount });
384
273
  }
385
- // ── Auto-retrieval proof ──────────────────────────────────────────────────
386
- async function showRetrievalProof() {
387
- try {
388
- const orient = await mcpCall('orient', { brief: true });
389
- const items = orient?.sections?.flatMap((s) => s.items ?? []).filter((i) => i.name) ?? [];
390
- if (items.length > 0) {
391
- process.stdout.write(`\n ${bold("Here's how your product brain will use this:")}\n\n`);
392
- for (const item of items.slice(0, 5)) {
393
- process.stdout.write(` ${dim(icons.dot)} ${item.name}\n`);
394
- }
395
- if (items.length > 5) {
396
- process.stdout.write(` ${dim(`...and ${items.length - 5} more`)}\n`);
397
- }
398
- process.stdout.write('\n');
399
- }
400
- }
401
- catch {
402
- // Retrieval proof is best-effort
403
- }
404
- }
405
- // ── Deterministic fallback ────────────────────────────────────────────────
274
+ // ── Deterministic fallback ──────────────────────────────────────────��─────
406
275
  const FALLBACK_QUESTIONS = [
407
276
  { message: 'What are you building?', placeholder: 'A tool for...' },
408
277
  { message: 'Who is it for?', placeholder: 'Developers, designers, teams...' },
@@ -430,22 +299,36 @@ export async function runFallbackOnboarding(workspaceName) {
430
299
  return;
431
300
  }
432
301
  trackEvent('first_capture_prompted', { mode: 'fallback' });
433
- const extraction = {
434
- vision: answers[0],
435
- audience: answers[1] || null,
436
- tensions: answers[2] ? [answers[2]] : null,
437
- };
302
+ const entriesToCapture = [];
303
+ if (answers[0]) {
304
+ entriesToCapture.push({
305
+ collection: 'strategy',
306
+ name: 'Product Vision',
307
+ description: answers[0],
308
+ typeLabel: "What you're building",
309
+ });
310
+ }
311
+ if (answers[1]) {
312
+ entriesToCapture.push({
313
+ collection: 'audiences',
314
+ name: firstNWords(answers[1], 6),
315
+ description: answers[1],
316
+ typeLabel: "Who it's for",
317
+ });
318
+ }
319
+ if (answers[2]) {
320
+ entriesToCapture.push({
321
+ collection: 'tensions',
322
+ name: truncate(answers[2], 120),
323
+ description: answers[2],
324
+ typeLabel: "A challenge you're facing",
325
+ });
326
+ }
438
327
  // Show extraction
439
328
  process.stdout.write('\n');
440
- if (extraction.vision)
441
- process.stdout.write(` ${green('\u2726')} ${extraction.vision}\n`);
442
- if (extraction.audience)
443
- process.stdout.write(` ${green('\u2726')} ${extraction.audience}\n`);
444
- if (extraction.tensions?.length) {
445
- for (const t of extraction.tensions)
446
- process.stdout.write(` ${green('\u2726')} ${t}\n`);
329
+ for (const entry of entriesToCapture) {
330
+ displayEntryExample(entry);
447
331
  }
448
- process.stdout.write('\n');
449
332
  let approved;
450
333
  try {
451
334
  approved = await confirm({ message: 'Ready to save these to your product brain?', initialValue: true });
@@ -455,27 +338,13 @@ export async function runFallbackOnboarding(workspaceName) {
455
338
  }
456
339
  if (!approved)
457
340
  return;
458
- const entriesToCapture = extractionToEntries(extraction);
459
- let capturedCount = 0;
460
- for (const entry of entriesToCapture) {
461
- try {
462
- await mcpCallWithSession('chain.createEntry', {
463
- collectionSlug: entry.collection,
464
- name: entry.name,
465
- status: 'active',
466
- data: { description: entry.description },
467
- });
468
- capturedCount++;
469
- }
470
- catch { /* continue on error */ }
471
- }
341
+ const { capturedCount } = await batchCaptureEntries(entriesToCapture);
472
342
  if (capturedCount > 0) {
473
343
  process.stdout.write(`\n ${green(icons.pass)} Saved ${capturedCount} item${capturedCount === 1 ? '' : 's'} to your product brain.\n`);
474
344
  trackEvent('capture_completed', { mode: 'fallback', count: capturedCount });
475
345
  }
476
- await showRetrievalProof();
477
- process.stdout.write(` ${dim('Join the community:')} ${bold('community.productbrain.io')}\n`);
478
- process.stdout.write(` ${dim('Your product brain gets smarter every time you capture.')}\n\n`);
346
+ showCapturedSummary(entriesToCapture, capturedCount);
347
+ process.stdout.write(` ${dim('Run')} ${bold('pb capture')} ${dim('anytime to teach your AI tools more.')}\n\n`);
479
348
  trackEvent('setup_completed', { mode: 'fallback', capturedCount });
480
349
  }
481
350
  //# sourceMappingURL=onboarding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/lib/onboarding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/lib/onboarding.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC/H,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EACL,UAAU,EACV,wBAAwB,EAAE,mBAAmB,EAAE,mBAAmB,EAClE,mBAAmB,EACnB,QAAQ,EAAE,WAAW,GAItB,MAAM,wBAAwB,CAAC;AAEhC,qDAAqD;AACrD,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,aAAqB;IACnE,UAAU,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAE7C,gCAAgC;IAChC,MAAM,KAAK,GAAsB;QAC/B,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EAAE,CAAC;QACnB,cAAc,EAAE,CAAC;QACjB,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,IAAI,GAAG,EAAE;QAC1B,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;QACvC,WAAW,EAAE,EAAE;QACf,0DAA0D;QAC1D,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,IAAI,GAAG,EAAE;QAC1B,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;QACvC,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC;QAC1B,aAAa,EAAE,CAAC;KACjB,CAAC;IAEF,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,uBAAuB,GAAa,EAAE,CAAC;IAE7C,iEAAiE;IACjE,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,EAAE,CAAC,EAAE,iBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;IAEzG,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAA8B,iBAAiB,EAAE;YAC3E,QAAQ,EAAE,EAAE;YACZ,aAAa;YACb,cAAc,EAAE,gBAAgB;YAChC,UAAU,EAAE,CAAC;YACb,cAAc,EAAE,CAAC;YACjB,aAAa,EAAE,CAAC;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACrB,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,QAAQ,MAAM,CAAC,CAAC;IAC5C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9D,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEvC,2CAA2C;IAC3C,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,OAAO,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,IAAI,cAAc,GAAG,mBAAmB,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;QACnD,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,EAAE,CAAC;QAEhC,0BAA0B;QAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,EAAE,QAAQ,iBAAiB,cAAc,cAAc,UAAU,KAAK,CAAC,cAAc,SAAS,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACpM,CAAC;QAED,yFAAyF;QACzF,IAAI,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpC,iBAAiB,EAAE,CAAC;YACpB,SAAS;QACX,CAAC;QAED,iBAAiB;QACjB,IAAI,SAAiB,CAAC;QACtB,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,GAAG,CAAC;gBACpB,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE;aACzE,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,GAAG,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,2BAA2B,CAAC,MAAM,CAC9F,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,aAAa,EAAE,CAAC;YAChB,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,sCAAsC,CAAC,MAAM,CAC1G,CAAC;gBACF,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,6DAA6D,CAAC,MAAM,CAAC,CAAC;YACpG,SAAS;QACX,CAAC;QAED,aAAa,GAAG,CAAC,CAAC;QAElB,8BAA8B;QAC9B,IAAI,eAAe,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,cAAc,GAAG,EAAE,EAAE,CAAC;YAC5D,MAAM;QACR,CAAC;QAED,eAAe;QACf,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzB,KAAK,CAAC,cAAc,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QAC9C,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3E,cAAc,EAAE,CAAC;QAEjB,2CAA2C;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,2BAA2B;QAC3B,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE9C,wCAAwC;QACxC,MAAM,cAAc,GAAG,mBAAmB,CACxC,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,EAClD,KAAK,CAAC,WAAW,EAAE,aAAa,CACjC,CAAC;QAEF,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAA8B,iBAAiB,EAAE;gBAC3E,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,aAAa;gBACb,cAAc,EAAE,cAAc;gBAC9B,UAAU,EAAE,cAAc,GAAG,CAAC;gBAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,aAAa,EAAE,KAAK,CAAC,aAAa;aACnC,CAAC,CAAC;YAEH,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,oDAAoD;gBACpD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC9D,CAAC;gBAED,uCAAuC;gBACvC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC;gBAE9C,wBAAwB;gBACxB,IAAI,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAEtD,wEAAwE;gBACxE,IAAI,YAAY,CAAC,cAAc,EAAE,uBAAuB,CAAC,EAAE,CAAC;oBAC1D,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,CAAC;gBAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,cAAc,MAAM,CAAC,CAAC;gBAClD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;gBACpE,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sDAAsD;YACtD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;gBAAE,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;YACpF,MAAM;QACR,CAAC;QAED,kFAAkF;QAClF,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,0BAA0B,UAAU,CAAC,QAAQ,WAAW,UAAU,CAAC,MAAM,SAAS,UAAU,CAAC,IAAI,kBAAkB,aAAa,mBAAmB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACrM,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,sDAAsD;YACtD,MAAM,aAAa,GAAG,uBAAuB,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACxF,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;gBACrB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,QAAQ,EAAE,aAAa;gBACvB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;YAEH,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpC,iBAAiB,EAAE,CAAC;QACtB,CAAC;QACD,0CAA0C;IAC5C,CAAC;IAED,wDAAwD;IACxD,+EAA+E;IAC/E,8FAA8F;IAC9F,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,GAAG,CAAC,0DAA0D,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CACnG,CAAC;QACF,UAAU,CAAC,iBAAiB,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACpF,OAAO;IACT,CAAC;IAED,UAAU,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;IAEjF,oDAAoD;IACpD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,GAAG,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,2BAA2B,CAAC,MAAM,CAC9F,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,gBAAgC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAiC,iBAAiB,EAAE;YAC9E,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,aAAa;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,GAAG,CAAC,8CAA8C,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,4BAA4B,CAAC,MAAM,CAC5H,CAAC;YACF,OAAO;QACT,CAAC;QAED,gBAAgB,GAAG,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,GAAG,CAAC,8CAA8C,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,4BAA4B,CAAC,MAAM,CAC5H,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,0BAA0B,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAC9H,OAAO;IACT,CAAC;IAED,6DAA6D;IAC7D,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IACjI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEjD,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,iDAAiD;IACjD,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,eAAe,GAAG,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAG/D,MAAM,OAAO,GAAsE;YACjF,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,EAAE,IAAI,EAAE,GAAG,SAAS,QAAQ,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;SACjH,CAAC;QACF,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAExD,IAAI,MAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,MAAM,CAAoB;gBACvC,OAAO,EAAE,EAAE;gBACX,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACpG,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAChH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,UAAU,GAAG,IAAI,CAAC;YAClB,MAAM;QACR,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,mBAAmB,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;YACpD,YAAY,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,gCAAgC;IAChC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAE9E,yBAAyB;IACzB,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,aAAa,QAAQ,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,2BAA2B,CACjH,CAAC;QACF,UAAU,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,wCAAwC;IACxC,mBAAmB,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,sCAAsC,CAAC,MAAM,CAAC,CAAC;IACjH,UAAU,CAAC,iBAAiB,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG;IACzB,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,eAAe,EAAE;IACnE,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,iCAAiC,EAAE;IAC7E,EAAE,OAAO,EAAE,yCAAyC,EAAE,WAAW,EAAE,iCAAiC,EAAE;CACvG,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,aAAqB;IAC/D,UAAU,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,sBAAsB,aAAa,GAAG,CAAC,IAAI,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhH,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7E,IAAI,MAAM,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,wCAAwC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvG,OAAO;IACT,CAAC;IAED,UAAU,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAE3D,MAAM,gBAAgB,GAAmB,EAAE,CAAC;IAC5C,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,gBAAgB,CAAC,IAAI,CAAC;YACpB,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YACvB,SAAS,EAAE,sBAAsB;SAClC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,gBAAgB,CAAC,IAAI,CAAC;YACpB,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YACvB,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,gBAAgB,CAAC,IAAI,CAAC;YACpB,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;YAC/B,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YACvB,SAAS,EAAE,2BAA2B;SACvC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAEtE,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,aAAa,QAAQ,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,2BAA2B,CAAC,CAAC;QACvI,UAAU,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,mBAAmB,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,sCAAsC,CAAC,MAAM,CAAC,CAAC;IACjH,UAAU,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;AACrE,CAAC"}
@@ -30,5 +30,10 @@ export declare function deleteProfile(name: string): void;
30
30
  * Returns null if no profile or config is available.
31
31
  */
32
32
  export declare function resolveProfileConfig(): ProfileConfig | null;
33
+ /**
34
+ * Resolve config for a specific named profile.
35
+ * Returns null if the profile doesn't exist.
36
+ */
37
+ export declare function resolveNamedProfileConfig(name: string): ProfileConfig | null;
33
38
  export { PROFILES_DIR, ACTIVE_PROFILE_PATH, LEGACY_ENV_PATH, HOME_CONFIG_DIR };
34
39
  //# sourceMappingURL=profiles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/lib/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,QAAA,MAAM,eAAe,QAAgD,CAAC;AACtE,QAAA,MAAM,YAAY,QAAuC,CAAC;AAC1D,QAAA,MAAM,mBAAmB,QAA6C,CAAC;AACvE,QAAA,MAAM,eAAe,QAAmC,CAAC;AAKzD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoDD,uCAAuC;AACvC,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAOvC;AAED,mCAAmC;AACnC,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAWhD;AAED,4BAA4B;AAC5B,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAwBlF;AAED,iCAAiC;AACjC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAS7C;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAmBhD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,aAAa,GAAG,IAAI,CAgC3D;AAGD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/lib/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,QAAA,MAAM,eAAe,QAAgD,CAAC;AACtE,QAAA,MAAM,YAAY,QAAuC,CAAC;AAC1D,QAAA,MAAM,mBAAmB,QAA6C,CAAC;AACvE,QAAA,MAAM,eAAe,QAAmC,CAAC;AAKzD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoDD,uCAAuC;AACvC,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAOvC;AAED,mCAAmC;AACnC,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAWhD;AAED,4BAA4B;AAC5B,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAwBlF;AAED,iCAAiC;AACjC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAS7C;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAmBhD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,aAAa,GAAG,IAAI,CAgC3D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAE5E;AAGD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC"}
@@ -168,6 +168,13 @@ export function resolveProfileConfig() {
168
168
  }
169
169
  return null;
170
170
  }
171
+ /**
172
+ * Resolve config for a specific named profile.
173
+ * Returns null if the profile doesn't exist.
174
+ */
175
+ export function resolveNamedProfileConfig(name) {
176
+ return readProfileFile(profilePath(name));
177
+ }
171
178
  // Exported for testing
172
179
  export { PROFILES_DIR, ACTIVE_PROFILE_PATH, LEGACY_ENV_PATH, HOME_CONFIG_DIR };
173
180
  //# sourceMappingURL=profiles.js.map