@actrun_ai/tastekit-cli 0.1.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.
Files changed (57) hide show
  1. package/dist/cli.d.ts +8 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +67 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/commands/compile.d.ts +3 -0
  6. package/dist/commands/compile.d.ts.map +1 -0
  7. package/dist/commands/compile.js +61 -0
  8. package/dist/commands/compile.js.map +1 -0
  9. package/dist/commands/completion.d.ts +9 -0
  10. package/dist/commands/completion.d.ts.map +1 -0
  11. package/dist/commands/completion.js +191 -0
  12. package/dist/commands/completion.js.map +1 -0
  13. package/dist/commands/drift.d.ts +3 -0
  14. package/dist/commands/drift.d.ts.map +1 -0
  15. package/dist/commands/drift.js +175 -0
  16. package/dist/commands/drift.js.map +1 -0
  17. package/dist/commands/eval.d.ts +3 -0
  18. package/dist/commands/eval.d.ts.map +1 -0
  19. package/dist/commands/eval.js +147 -0
  20. package/dist/commands/eval.js.map +1 -0
  21. package/dist/commands/export.d.ts +3 -0
  22. package/dist/commands/export.d.ts.map +1 -0
  23. package/dist/commands/export.js +279 -0
  24. package/dist/commands/export.js.map +1 -0
  25. package/dist/commands/import.d.ts +3 -0
  26. package/dist/commands/import.d.ts.map +1 -0
  27. package/dist/commands/import.js +315 -0
  28. package/dist/commands/import.js.map +1 -0
  29. package/dist/commands/init.d.ts +5 -0
  30. package/dist/commands/init.d.ts.map +1 -0
  31. package/dist/commands/init.js +213 -0
  32. package/dist/commands/init.js.map +1 -0
  33. package/dist/commands/mcp.d.ts +3 -0
  34. package/dist/commands/mcp.d.ts.map +1 -0
  35. package/dist/commands/mcp.js +226 -0
  36. package/dist/commands/mcp.js.map +1 -0
  37. package/dist/commands/onboard.d.ts +6 -0
  38. package/dist/commands/onboard.d.ts.map +1 -0
  39. package/dist/commands/onboard.js +186 -0
  40. package/dist/commands/onboard.js.map +1 -0
  41. package/dist/commands/simulate.d.ts +3 -0
  42. package/dist/commands/simulate.d.ts.map +1 -0
  43. package/dist/commands/simulate.js +14 -0
  44. package/dist/commands/simulate.js.map +1 -0
  45. package/dist/commands/skills.d.ts +3 -0
  46. package/dist/commands/skills.d.ts.map +1 -0
  47. package/dist/commands/skills.js +419 -0
  48. package/dist/commands/skills.js.map +1 -0
  49. package/dist/commands/trust.d.ts +3 -0
  50. package/dist/commands/trust.d.ts.map +1 -0
  51. package/dist/commands/trust.js +183 -0
  52. package/dist/commands/trust.js.map +1 -0
  53. package/dist/ui.d.ts +70 -0
  54. package/dist/ui.d.ts.map +1 -0
  55. package/dist/ui.js +144 -0
  56. package/dist/ui.js.map +1 -0
  57. package/package.json +51 -0
@@ -0,0 +1,315 @@
1
+ import { Command, createOption } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
5
+ import { join } from 'path';
6
+ import { detail, hint, handleError } from '../ui.js';
7
+ export const importCommand = new Command('import')
8
+ .description('Import from runtime format, SOUL.md, or Agent File (.af)')
9
+ .addOption(createOption('--target <adapter>', 'Source format').choices(['claude-code', 'manus', 'openclaw', 'autopilots', 'soul-md', 'agent-file']))
10
+ .option('--source <path>', 'Source path or directory')
11
+ .action(async (options) => {
12
+ if (!options.target) {
13
+ console.error(chalk.red('Please specify a source format with --target'));
14
+ console.log(chalk.gray('Available: claude-code, manus, openclaw, autopilots, soul-md, agent-file'));
15
+ process.exit(1);
16
+ }
17
+ if (!options.source) {
18
+ console.error(chalk.red('Please specify a source path with --source'));
19
+ process.exit(1);
20
+ }
21
+ if (options.target === 'soul-md') {
22
+ await importSoulMd(options.source);
23
+ return;
24
+ }
25
+ if (options.target === 'agent-file') {
26
+ await importAgentFile(options.source);
27
+ return;
28
+ }
29
+ console.error(chalk.yellow(`Import from ${options.target} adapter format not yet implemented.`));
30
+ console.log(chalk.cyan('Use --target soul-md or --target agent-file to import.'));
31
+ process.exit(1);
32
+ });
33
+ /**
34
+ * Import from OpenClaw SOUL.md and IDENTITY.md files into TasteKit constitution.
35
+ */
36
+ async function importSoulMd(sourcePath) {
37
+ const spinner = ora('Importing from SOUL.md...').start();
38
+ try {
39
+ // Try to find SOUL.md and IDENTITY.md
40
+ const soulPath = existsSync(join(sourcePath, 'SOUL.md'))
41
+ ? join(sourcePath, 'SOUL.md')
42
+ : existsSync(sourcePath) && sourcePath.endsWith('.md')
43
+ ? sourcePath
44
+ : null;
45
+ if (!soulPath) {
46
+ spinner.fail(chalk.red(`SOUL.md not found at ${sourcePath}`));
47
+ process.exit(1);
48
+ }
49
+ const soulContent = readFileSync(soulPath, 'utf-8');
50
+ // Try to read IDENTITY.md from same directory
51
+ const identityPath = join(soulPath, '..', 'IDENTITY.md');
52
+ const identityContent = existsSync(identityPath)
53
+ ? readFileSync(identityPath, 'utf-8')
54
+ : null;
55
+ // Parse SOUL.md sections
56
+ const sections = parseMdSections(soulContent);
57
+ const identitySections = identityContent ? parseMdSections(identityContent) : {};
58
+ // Build constitution from parsed content
59
+ const constitution = buildConstitutionFromSoul(sections, identitySections);
60
+ // Write to .tastekit/
61
+ const tastekitDir = join(process.cwd(), '.tastekit');
62
+ const constitutionPath = join(tastekitDir, 'constitution.v1.json');
63
+ mkdirSync(tastekitDir, { recursive: true });
64
+ writeFileSync(constitutionPath, JSON.stringify(constitution, null, 2), 'utf-8');
65
+ spinner.succeed(chalk.green('Imported SOUL.md into TasteKit constitution'));
66
+ console.log('');
67
+ detail('SOUL.md', soulPath);
68
+ if (identityContent) {
69
+ detail('IDENTITY.md', identityPath);
70
+ }
71
+ detail('Artifact', constitutionPath);
72
+ console.log('');
73
+ hint('tastekit compile', 'generate remaining artifacts');
74
+ }
75
+ catch (error) {
76
+ handleError(error, spinner);
77
+ }
78
+ }
79
+ function parseMdSections(content) {
80
+ const sections = {};
81
+ const lines = content.split('\n');
82
+ let currentSection = '_preamble';
83
+ let currentContent = [];
84
+ for (const line of lines) {
85
+ const headingMatch = line.match(/^#{1,3}\s+(.+)/);
86
+ if (headingMatch) {
87
+ if (currentContent.length > 0) {
88
+ sections[currentSection] = currentContent.join('\n').trim();
89
+ }
90
+ currentSection = headingMatch[1].trim().toLowerCase();
91
+ currentContent = [];
92
+ }
93
+ else {
94
+ currentContent.push(line);
95
+ }
96
+ }
97
+ if (currentContent.length > 0) {
98
+ sections[currentSection] = currentContent.join('\n').trim();
99
+ }
100
+ return sections;
101
+ }
102
+ /**
103
+ * Import from Letta Agent File (.af) format into TasteKit constitution.
104
+ *
105
+ * Extracts persona/soul/preferences blocks and agent system prompt.
106
+ * Ignores runtime state (messages, llm_config, tools).
107
+ */
108
+ async function importAgentFile(sourcePath) {
109
+ const spinner = ora('Importing from Agent File (.af)...').start();
110
+ try {
111
+ if (!existsSync(sourcePath)) {
112
+ spinner.fail(chalk.red(`File not found: ${sourcePath}`));
113
+ process.exit(1);
114
+ }
115
+ const raw = readFileSync(sourcePath, 'utf-8');
116
+ const af = JSON.parse(raw);
117
+ // Support both v2 (top-level arrays) and v1 (flat agent) formats
118
+ const agents = af.agents || (af.agent_type ? [af] : []);
119
+ const blocks = af.blocks || [];
120
+ if (agents.length === 0) {
121
+ spinner.fail(chalk.red('No agents found in the .af file'));
122
+ process.exit(1);
123
+ }
124
+ const agent = agents[0];
125
+ // Resolve blocks referenced by the agent
126
+ const agentBlockIds = new Set(agent.block_ids || []);
127
+ const agentBlocks = blocks.filter((b) => agentBlockIds.has(b.id));
128
+ // If no block_ids, try inline blocks or use all blocks
129
+ if (agentBlocks.length === 0 && blocks.length > 0) {
130
+ agentBlocks.push(...blocks);
131
+ }
132
+ const constitution = buildConstitutionFromAgentFile(agent, agentBlocks);
133
+ // Write to .tastekit/
134
+ const tastekitDir = join(process.cwd(), '.tastekit');
135
+ const constitutionPath = join(tastekitDir, 'constitution.v1.json');
136
+ mkdirSync(tastekitDir, { recursive: true });
137
+ writeFileSync(constitutionPath, JSON.stringify(constitution, null, 2), 'utf-8');
138
+ spinner.succeed(chalk.green('Imported Agent File (.af) into TasteKit constitution'));
139
+ console.log('');
140
+ detail('Agent File', sourcePath);
141
+ detail('Agent', agent.name || 'unnamed');
142
+ detail('Blocks found', String(agentBlocks.length));
143
+ detail('Artifact', constitutionPath);
144
+ console.log('');
145
+ hint('tastekit compile', 'generate remaining artifacts');
146
+ }
147
+ catch (error) {
148
+ handleError(error, spinner);
149
+ }
150
+ }
151
+ function buildConstitutionFromAgentFile(agent, blocks) {
152
+ const principles = [];
153
+ let priority = 1;
154
+ // Extract personality from persona/soul blocks
155
+ const personalityBlocks = ['persona', 'soul', 'custom_instructions'];
156
+ for (const block of blocks) {
157
+ if (personalityBlocks.includes(block.label)) {
158
+ const bullets = block.value.split('\n')
159
+ .filter(l => l.trim().startsWith('-') || l.trim().startsWith('*'))
160
+ .map(l => l.replace(/^[\s*-]+/, '').trim())
161
+ .filter(l => l.length > 0);
162
+ if (bullets.length > 0) {
163
+ for (const bullet of bullets) {
164
+ principles.push({
165
+ id: `af_${block.label}_${priority}`,
166
+ statement: bullet,
167
+ priority: priority++,
168
+ applies_to: ['*'],
169
+ });
170
+ }
171
+ }
172
+ else if (block.value.trim().length > 0) {
173
+ // Treat the whole block as a principle
174
+ for (const line of block.value.split('\n').filter(l => l.trim().length > 0)) {
175
+ principles.push({
176
+ id: `af_${block.label}_${priority}`,
177
+ statement: line.trim(),
178
+ priority: priority++,
179
+ applies_to: ['*'],
180
+ });
181
+ }
182
+ }
183
+ }
184
+ }
185
+ // Extract from system prompt if no blocks yielded principles
186
+ if (principles.length === 0 && agent.system) {
187
+ const lines = agent.system.split('\n')
188
+ .filter((l) => l.trim().length > 10)
189
+ .slice(0, 10);
190
+ for (const line of lines) {
191
+ principles.push({
192
+ id: `af_system_${priority}`,
193
+ statement: line.trim(),
194
+ priority: priority++,
195
+ applies_to: ['*'],
196
+ });
197
+ }
198
+ }
199
+ // Extract voice keywords from personality-related blocks
200
+ const voiceKeywords = [];
201
+ const preferenceBlocks = ['preferences', 'conversation_patterns'];
202
+ for (const block of blocks) {
203
+ if (preferenceBlocks.includes(block.label)) {
204
+ const words = block.value.split(/[,\n]/)
205
+ .map(w => w.replace(/^[\s*-]+/, '').trim())
206
+ .filter(w => w.length > 0 && w.length < 30);
207
+ voiceKeywords.push(...words.slice(0, 5));
208
+ }
209
+ }
210
+ // Check for read-only blocks that might be constraints
211
+ const forbiddenPhrases = [];
212
+ for (const block of blocks) {
213
+ if (block.read_only && block.label !== 'persona') {
214
+ const lines = block.value.split('\n')
215
+ .filter(l => l.trim().startsWith('-') || l.trim().startsWith('*'))
216
+ .map(l => l.replace(/^[\s*-]+/, '').trim())
217
+ .filter(l => l.length > 0 && (l.toLowerCase().includes('never') || l.toLowerCase().includes('avoid') || l.toLowerCase().includes("don't")));
218
+ forbiddenPhrases.push(...lines.slice(0, 5));
219
+ }
220
+ }
221
+ return {
222
+ schema_version: 'constitution.v1',
223
+ generator_version: '0.5.0',
224
+ principles: principles.slice(0, 20),
225
+ tone: {
226
+ voice_keywords: voiceKeywords.slice(0, 10),
227
+ forbidden_phrases: forbiddenPhrases.slice(0, 10),
228
+ },
229
+ tradeoffs: {
230
+ autonomy_level: 'medium',
231
+ },
232
+ evidence_policy: {
233
+ require_citations_for: [],
234
+ },
235
+ taboos: forbiddenPhrases.slice(0, 5),
236
+ imported_from: 'agent-file',
237
+ imported_at: new Date().toISOString(),
238
+ agent_name: agent.name || undefined,
239
+ agent_description: agent.description || undefined,
240
+ };
241
+ }
242
+ function buildConstitutionFromSoul(soul, identity) {
243
+ // Extract principles from SOUL.md sections
244
+ const principles = [];
245
+ let priority = 1;
246
+ for (const [section, content] of Object.entries(soul)) {
247
+ if (section === '_preamble')
248
+ continue;
249
+ // Extract bullet points as principles
250
+ const bullets = content.split('\n')
251
+ .filter(l => l.trim().startsWith('-') || l.trim().startsWith('*'))
252
+ .map(l => l.replace(/^[\s*-]+/, '').trim())
253
+ .filter(l => l.length > 0);
254
+ if (bullets.length > 0) {
255
+ for (const bullet of bullets) {
256
+ principles.push({
257
+ id: `soul_${section.replace(/\s+/g, '_')}_${priority}`,
258
+ statement: bullet,
259
+ priority: priority++,
260
+ });
261
+ }
262
+ }
263
+ else if (content.trim().length > 0) {
264
+ principles.push({
265
+ id: `soul_${section.replace(/\s+/g, '_')}`,
266
+ statement: content.trim().split('\n')[0],
267
+ priority: priority++,
268
+ });
269
+ }
270
+ }
271
+ // Extract voice keywords from identity or soul
272
+ const voiceKeywords = [];
273
+ const voiceSections = ['voice', 'tone', 'personality', 'communication style'];
274
+ for (const key of voiceSections) {
275
+ const content = soul[key] || identity[key];
276
+ if (content) {
277
+ const words = content.split(/[,\n]/)
278
+ .map(w => w.replace(/^[\s*-]+/, '').trim())
279
+ .filter(w => w.length > 0 && w.length < 30);
280
+ voiceKeywords.push(...words);
281
+ }
282
+ }
283
+ // Extract forbidden phrases
284
+ const forbiddenPhrases = [];
285
+ const avoidSections = ['avoid', 'don\'t', 'never', 'restrictions', 'taboos'];
286
+ for (const key of avoidSections) {
287
+ const content = soul[key];
288
+ if (content) {
289
+ const phrases = content.split('\n')
290
+ .filter(l => l.trim().startsWith('-') || l.trim().startsWith('*'))
291
+ .map(l => l.replace(/^[\s*-]+/, '').trim())
292
+ .filter(l => l.length > 0);
293
+ forbiddenPhrases.push(...phrases);
294
+ }
295
+ }
296
+ return {
297
+ schema_version: 'constitution.v1',
298
+ generator_version: '0.5.0',
299
+ principles: principles.slice(0, 20), // Cap at 20 for readability
300
+ tone: {
301
+ voice_keywords: voiceKeywords.slice(0, 10),
302
+ forbidden_phrases: forbiddenPhrases.slice(0, 10),
303
+ },
304
+ tradeoffs: {
305
+ autonomy_level: 'medium',
306
+ },
307
+ evidence_policy: {
308
+ require_citations_for: [],
309
+ },
310
+ taboos: forbiddenPhrases.slice(0, 5),
311
+ imported_from: 'soul-md',
312
+ imported_at: new Date().toISOString(),
313
+ };
314
+ }
315
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Command } from 'commander';
2
+ export declare const initCommand: Command;
3
+ export declare function detectInstalledOllamaModel(baseUrl?: string): Promise<string | undefined>;
4
+ export declare function resolvePreferredOllamaModel(baseUrl?: string): Promise<string | undefined>;
5
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAgBlD,eAAO,MAAM,WAAW,SAyJpB,CAAC;AAqCL,wBAAsB,0BAA0B,CAAC,OAAO,SAA2B,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgBhH;AAED,wBAAsB,2BAA2B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM/F"}
@@ -0,0 +1,213 @@
1
+ import { Command, createOption } from 'commander';
2
+ import { existsSync, writeFileSync } from 'fs';
3
+ import { join } from 'path';
4
+ import chalk from 'chalk';
5
+ import ora from 'ora';
6
+ import inquirer from 'inquirer';
7
+ import YAML from 'yaml';
8
+ import { listDomains, getDomainRubric } from '@actrun_ai/tastekit-core/domains';
9
+ import { autoDetectProvider } from '@actrun_ai/tastekit-core/llm';
10
+ import { ensureDir } from '@actrun_ai/tastekit-core/utils';
11
+ import { detail, hint, handleError } from '../ui.js';
12
+ export const initCommand = new Command('init')
13
+ .description('Initialize a new TasteKit workspace')
14
+ .argument('[path]', 'Path to initialize workspace', '.')
15
+ .option('--domain <id>', 'Domain ID (skip interactive selection)')
16
+ .addOption(createOption('--depth <type>', 'Onboarding depth').choices(['quick', 'guided', 'operator']))
17
+ .action(async (path, options) => {
18
+ try {
19
+ const workspacePath = join(process.cwd(), path, '.tastekit');
20
+ // Check if workspace already exists
21
+ if (existsSync(workspacePath)) {
22
+ console.error(chalk.red('TasteKit workspace already exists at this location.'));
23
+ console.log(chalk.gray('To reinitialize, delete .tastekit/ first.'));
24
+ process.exit(1);
25
+ }
26
+ console.log(chalk.bold.cyan('\nTasteKit Workspace Setup\n'));
27
+ // Domain selection
28
+ let domainId;
29
+ if (options.domain) {
30
+ domainId = options.domain;
31
+ }
32
+ else {
33
+ const domains = listDomains();
34
+ const { selectedDomain } = await inquirer.prompt([{
35
+ type: 'list',
36
+ name: 'selectedDomain',
37
+ message: 'What type of agent are you building?',
38
+ choices: domains.map(d => ({
39
+ name: `${d.name}${d.is_stub ? chalk.gray(' (coming soon)') : ''}`,
40
+ value: d.id,
41
+ disabled: d.is_stub ? 'Not yet available' : false,
42
+ })),
43
+ }]);
44
+ domainId = selectedDomain;
45
+ }
46
+ // Check if domain has a rubric
47
+ const rubric = getDomainRubric(domainId);
48
+ if (!rubric) {
49
+ console.log(chalk.yellow(`Note: Domain "${domainId}" doesn't have an interview rubric yet.`));
50
+ console.log(chalk.yellow('The onboarding will use universal dimensions only.'));
51
+ }
52
+ // Depth selection
53
+ let depth;
54
+ if (options.depth) {
55
+ depth = options.depth;
56
+ }
57
+ else {
58
+ const { selectedDepth } = await inquirer.prompt([{
59
+ type: 'list',
60
+ name: 'selectedDepth',
61
+ message: 'How deep should the onboarding interview go?',
62
+ choices: [
63
+ { name: 'Quick (~5 min) - Essential preferences only', value: 'quick' },
64
+ { name: 'Guided (~15 min) - Thorough profile', value: 'guided' },
65
+ { name: 'Operator (~30 min) - Deep exploration with examples', value: 'operator' },
66
+ ],
67
+ default: 'guided',
68
+ }]);
69
+ depth = selectedDepth;
70
+ }
71
+ // LLM provider detection
72
+ let llmConfig;
73
+ const envOllamaModel = process.env.OLLAMA_MODEL?.trim();
74
+ if (envOllamaModel) {
75
+ llmConfig = {
76
+ provider: 'ollama',
77
+ model: envOllamaModel,
78
+ ...(process.env.OLLAMA_HOST?.trim() ? { base_url: process.env.OLLAMA_HOST.trim() } : {}),
79
+ };
80
+ }
81
+ else {
82
+ const detectSpinner = ora('Detecting LLM provider...').start();
83
+ try {
84
+ const detected = await autoDetectProvider();
85
+ detectSpinner.succeed(`Detected LLM provider: ${chalk.bold(detected.provider)}`);
86
+ const { useDetected } = await inquirer.prompt([{
87
+ type: 'confirm',
88
+ name: 'useDetected',
89
+ message: `Use ${detected.provider} for onboarding interview?`,
90
+ default: true,
91
+ }]);
92
+ if (useDetected) {
93
+ if (detected.provider === 'ollama') {
94
+ const model = await resolvePreferredOllamaModel(detected.base_url);
95
+ if (model) {
96
+ llmConfig = { ...detected, model };
97
+ }
98
+ else {
99
+ const { selectedModel } = await inquirer.prompt([{
100
+ type: 'input',
101
+ name: 'selectedModel',
102
+ message: 'Ollama model name:',
103
+ default: 'llama3.1',
104
+ }]);
105
+ llmConfig = { ...detected, model: selectedModel };
106
+ }
107
+ }
108
+ else {
109
+ llmConfig = detected;
110
+ }
111
+ }
112
+ else {
113
+ llmConfig = await promptForProvider();
114
+ }
115
+ }
116
+ catch {
117
+ detectSpinner.warn('No LLM provider auto-detected');
118
+ llmConfig = await promptForProvider();
119
+ }
120
+ }
121
+ // Create workspace structure
122
+ const createSpinner = ora('Creating workspace...').start();
123
+ ensureDir(workspacePath);
124
+ ensureDir(join(workspacePath, 'skills'));
125
+ ensureDir(join(workspacePath, 'traces'));
126
+ ensureDir(join(workspacePath, 'drift'));
127
+ // Create tastekit.yaml with domain and LLM config
128
+ const config = {
129
+ version: '1.0.0',
130
+ project_name: 'my-taste-profile',
131
+ created_at: new Date().toISOString(),
132
+ domain_id: domainId,
133
+ onboarding: {
134
+ depth,
135
+ completed: false,
136
+ },
137
+ };
138
+ if (llmConfig) {
139
+ config.llm_provider = llmConfig;
140
+ }
141
+ writeFileSync(join(workspacePath, 'tastekit.yaml'), YAML.stringify(config));
142
+ createSpinner.succeed(chalk.green('TasteKit workspace initialized'));
143
+ console.log('');
144
+ detail('Domain', domainId);
145
+ detail('Depth', depth);
146
+ if (llmConfig) {
147
+ detail('LLM', `${llmConfig.provider}${llmConfig.model ? ` (${llmConfig.model})` : ''}`);
148
+ }
149
+ console.log('');
150
+ hint('tastekit onboard', 'start the interview');
151
+ }
152
+ catch (error) {
153
+ handleError(error);
154
+ }
155
+ });
156
+ async function promptForProvider() {
157
+ const preferredFromEnv = process.env.OLLAMA_MODEL?.trim();
158
+ const { provider } = await inquirer.prompt([{
159
+ type: 'list',
160
+ name: 'provider',
161
+ message: 'Select your LLM provider:',
162
+ default: preferredFromEnv ? 'ollama' : undefined,
163
+ choices: [
164
+ { name: 'Anthropic (Claude)', value: 'anthropic' },
165
+ { name: 'OpenAI (GPT-4)', value: 'openai' },
166
+ { name: 'Ollama (local)', value: 'ollama' },
167
+ ],
168
+ }]);
169
+ const config = { provider };
170
+ if (provider === 'ollama') {
171
+ const suggestedModel = await resolvePreferredOllamaModel();
172
+ const { model } = await inquirer.prompt([{
173
+ type: 'input',
174
+ name: 'model',
175
+ message: 'Ollama model name:',
176
+ default: suggestedModel ?? 'llama3.1',
177
+ }]);
178
+ if (model)
179
+ config.model = model;
180
+ }
181
+ else {
182
+ const envVar = provider === 'anthropic' ? 'ANTHROPIC_API_KEY' : 'OPENAI_API_KEY';
183
+ if (!process.env[envVar]) {
184
+ console.log(chalk.yellow(`\nNote: Set ${chalk.bold(envVar)} before running onboard.`));
185
+ }
186
+ }
187
+ return config;
188
+ }
189
+ export async function detectInstalledOllamaModel(baseUrl = 'http://localhost:11434') {
190
+ try {
191
+ const response = await fetch(`${baseUrl}/api/tags`, {
192
+ signal: AbortSignal.timeout(2000),
193
+ });
194
+ if (!response.ok) {
195
+ return undefined;
196
+ }
197
+ const data = await response.json();
198
+ const model = data.models?.find((entry) => entry.name || entry.model);
199
+ const resolved = (model?.name ?? model?.model)?.trim();
200
+ return resolved && resolved.length > 0 ? resolved : undefined;
201
+ }
202
+ catch {
203
+ return undefined;
204
+ }
205
+ }
206
+ export async function resolvePreferredOllamaModel(baseUrl) {
207
+ const fromEnv = process.env.OLLAMA_MODEL?.trim();
208
+ if (fromEnv) {
209
+ return fromEnv;
210
+ }
211
+ return await detectInstalledOllamaModel(baseUrl);
212
+ }
213
+ //# 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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const mcpCommand: Command;
3
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4RpC,eAAO,MAAM,UAAU,SAKM,CAAC"}