@cristiancorreau/forge 2.4.2 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -4,7 +4,7 @@ import { audit } from './commands/audit.js';
4
4
  import { generate } from './commands/generate.js';
5
5
  import { validate } from './commands/validate.js';
6
6
  import { doctor } from './commands/doctor.js';
7
- const VERSION = '2.4.2';
7
+ const VERSION = '2.6.0';
8
8
  const HELP = `forge v${VERSION} — Agentic development framework
9
9
 
10
10
  Usage: forge <command> [options]
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAmNA,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsI1D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA0NA,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqL1D"}
@@ -1,10 +1,14 @@
1
1
  import { existsSync, mkdirSync, writeFileSync, readFileSync, copyFileSync, readdirSync, statSync } from 'fs';
2
- import { join, basename } from 'path';
2
+ import { join } from 'path';
3
3
  import { loadProjectYaml } from '../lib/yaml.js';
4
4
  import { runWizard } from '../lib/wizard.js';
5
+ // Detect Bun runtime (OpenTUI requires Bun)
6
+ const isBun = typeof globalThis.Bun !== 'undefined';
5
7
  import { resolveForgeRoot } from '../lib/paths.js';
6
8
  import { buildManifest, saveManifest } from '../lib/lock.js';
7
- import { bold, dim, cyan } from '../ui/colors.js';
9
+ import { dim } from '../ui/colors.js';
10
+ import { printHeader, printSection, printDetected, printAgentList } from '../ui/header.js';
11
+ import { runTasks } from '../ui/tasks.js';
8
12
  import { generateClaudeMd } from '../lib/generators/claude-code.js';
9
13
  import { generateAgentsMd } from '../lib/generators/opencode.js';
10
14
  import { generateCodexAgentsMd } from '../lib/generators/codex.js';
@@ -24,20 +28,14 @@ Options:
24
28
  // Helpers
25
29
  // ---------------------------------------------------------------------------
26
30
  function write(path, content, force) {
27
- if (existsSync(path) && !force) {
28
- console.log(` skip ${basename(path)} (ya existe)`);
31
+ if (existsSync(path) && !force)
29
32
  return;
30
- }
31
33
  writeFileSync(path, content, 'utf-8');
32
- console.log(` write ${basename(path)}`);
33
34
  }
34
35
  function copyFile(src, dest, force) {
35
- if (existsSync(dest) && !force) {
36
- console.log(` skip ${basename(dest)} (ya existe)`);
36
+ if (existsSync(dest) && !force)
37
37
  return;
38
- }
39
38
  copyFileSync(src, dest);
40
- console.log(` copy ${basename(dest)}`);
41
39
  }
42
40
  function copyDir(src, dest, force) {
43
41
  if (!existsSync(dest))
@@ -99,6 +97,15 @@ runtimes:
99
97
  # production_url: https://tu-proyecto.vercel.app
100
98
  `;
101
99
  }
100
+ function getAgentTech(agent) {
101
+ const map = {
102
+ 'orchestrator': 'coordination', 'backend-engineer': 'API', 'api-engineer': 'API',
103
+ 'frontend-engineer': 'UI', 'admin-engineer': 'admin UI', 'mobile-engineer': 'mobile',
104
+ 'test-engineer': 'testing', 'docs-writer': 'docs', 'compliance-reviewer': 'compliance',
105
+ 'security-auditor': 'security', 'fullstack-engineer': 'fullstack',
106
+ };
107
+ return map[agent] ?? 'specialized';
108
+ }
102
109
  function defaultAgentsForMode(mode) {
103
110
  if (mode === 'startup')
104
111
  return ['orchestrator', 'backend-engineer', 'frontend-engineer'];
@@ -210,16 +217,24 @@ export async function init(args) {
210
217
  const runtimeOverride = runtimeIdx !== -1 ? (args[runtimeIdx + 1] ?? null) : null;
211
218
  const projectYamlPath = join(process.cwd(), 'project.yaml');
212
219
  let config;
220
+ // Show header
221
+ printHeader();
213
222
  if (!existsSync(projectYamlPath)) {
214
- // Run interactive wizard
215
- const result = await runWizard();
223
+ // Run interactive wizard — OpenTUI (Bun) or @clack/prompts (Node.js)
224
+ let result;
225
+ if (isBun) {
226
+ const { runOpenTUIWizard } = await import('../tui/wizard.js');
227
+ result = await runOpenTUIWizard();
228
+ }
229
+ else {
230
+ result = await runWizard();
231
+ }
216
232
  if (!result) {
217
233
  console.log('\nCancelado.');
218
234
  return 1;
219
235
  }
220
236
  const yamlContent = buildProjectYaml(result);
221
237
  writeFileSync(projectYamlPath, yamlContent, 'utf-8');
222
- console.log(`\n write project.yaml`);
223
238
  // Build config from wizard result
224
239
  config = {
225
240
  project: { name: result.name, slug: result.slug, description: result.description, language: result.language, mode: result.mode, status: 'active' },
@@ -229,7 +244,6 @@ export async function init(args) {
229
244
  };
230
245
  }
231
246
  else {
232
- console.log('project.yaml encontrado — usando configuración existente.\n');
233
247
  config = loadProjectYaml(projectYamlPath);
234
248
  }
235
249
  const forgeRoot = resolveForgeRoot();
@@ -241,59 +255,105 @@ export async function init(args) {
241
255
  const complianceAgents = config.agents?.compliance ?? [];
242
256
  const profiles = config.agents?.profiles ?? [];
243
257
  const allAgents = [...activeAgents, ...complianceAgents];
258
+ // Show detected stack
259
+ const detectedItems = [];
260
+ if (language && language !== 'typescript')
261
+ detectedItems.push(language.charAt(0).toUpperCase() + language.slice(1));
262
+ if (config.stack?.backend)
263
+ detectedItems.push(config.stack.backend);
264
+ if (config.stack?.frontend)
265
+ detectedItems.push(config.stack.frontend);
266
+ if (config.stack?.database)
267
+ detectedItems.push(config.stack.database);
268
+ if (config.stack?.orm)
269
+ detectedItems.push(config.stack.orm);
270
+ if ((config.stack?.testing ?? []).length > 0)
271
+ detectedItems.push(...(config.stack?.testing ?? []));
272
+ if (language === 'typescript')
273
+ detectedItems.unshift('TypeScript');
274
+ if (detectedItems.length > 0)
275
+ printDetected(detectedItems);
276
+ // Show agent list
277
+ const agentListItems = allAgents.map(a => ({ name: a, tech: getAgentTech(a) }));
278
+ if (agentListItems.length > 0)
279
+ printAgentList(agentListItems);
244
280
  // --dry-run: show what would be installed
245
281
  if (dryRun) {
246
- console.log('\n ' + cyan(bold('forge init --dry-run')) + '\n');
247
- console.log(dim(' Archivos que se crearían:'));
282
+ printSection('Would install (--dry-run)');
248
283
  const dryFiles = [
249
- `.claude/agents/ (${allAgents.length} agentes${profiles.length ? ' + ' + profiles.length + ' profiles' : ''})`,
250
- '.claude/hooks/ (pre-edit-check.js, pre-bash-check.js, post-turn-check.sh)',
251
- '.claude/commands/ (11 slash commands)',
252
- 'CLAUDE.md',
253
- '.claude/settings.json',
254
- '.claude/architecture.rules',
255
- '.forge/manifest.json',
284
+ { title: `.claude/agents/ ${allAgents.length} agents`, tech: runtime },
285
+ { title: '.claude/hooks/ pre-edit-check.js, pre-bash-check.js', tech: 'guardrail' },
286
+ { title: '.claude/commands/ 11 slash commands', tech: 'sdd' },
287
+ { title: 'CLAUDE.md', tech: 'config' },
288
+ { title: '.claude/settings.json', tech: 'config' },
289
+ { title: '.forge/manifest.json', tech: 'manifest' },
256
290
  ];
257
- dryFiles.forEach(f => console.log(' ' + dim('→') + ' ' + f));
258
- console.log('\n' + dim(' Ejecutar sin --dry-run para aplicar los cambios.') + '\n');
291
+ dryFiles.forEach((f, i) => {
292
+ process.stdout.write(` ${dim(String(i + 1).padStart(2) + '.')} ${f.title} ${dim('← ' + f.tech)}\n`);
293
+ });
294
+ console.log('\n' + dim(' Run without --dry-run to apply.') + '\n');
259
295
  return 0;
260
296
  }
261
- console.log(`\nInstalando forge para runtime: ${runtime}\n`);
262
297
  if (runtime === 'claude-code') {
263
298
  const claudeDir = join(projectRoot, '.claude');
264
299
  mkdirSync(claudeDir, { recursive: true });
265
- console.log('Agentes:');
266
- installCoreAgents(forgeRoot, join(claudeDir, 'agents'), allAgents, profiles, force);
267
- console.log('\nHooks:');
268
- installHooks(forgeRoot, join(claudeDir, 'hooks'), mode, force);
269
- console.log('\nSlash commands:');
270
- installCommands(forgeRoot, join(claudeDir, 'commands'), force);
271
- console.log('\nArchivos de configuración:');
272
- write(join(projectRoot, 'CLAUDE.md'), generateClaudeMd(config), force);
273
- write(join(claudeDir, 'settings.json'), generateSettingsJson(language, mode), force);
274
- // Docs structure
275
- mkdirSync(join(projectRoot, 'docs', 'specs'), { recursive: true });
276
- mkdirSync(join(projectRoot, 'docs', 'daily-notes'), { recursive: true });
277
- const specTemplateSrc = join(forgeRoot, 'core', 'templates', 'spec-template.md');
278
- if (existsSync(specTemplateSrc)) {
279
- copyFile(specTemplateSrc, join(projectRoot, 'docs', 'specs', '_template.md'), false);
280
- }
281
- // architecture.rules — never overwrite if exists
282
- const archRulesTemplate = join(forgeRoot, 'core', 'templates', 'claude-md', 'architecture.rules');
283
- const archRulesDest = join(claudeDir, 'architecture.rules');
284
- if (existsSync(archRulesTemplate) && !existsSync(archRulesDest)) {
285
- const content = readFileSync(archRulesTemplate, 'utf-8').replace('<NOMBRE_PROYECTO>', config.project.name ?? 'Mi Proyecto');
286
- writeFileSync(archRulesDest, content, 'utf-8');
287
- console.log(' write architecture.rules');
288
- }
289
- // Write .forge/manifest.json
290
- const installedFiles = [
291
- 'CLAUDE.md', '.claude/settings.json', '.claude/architecture.rules',
292
- ...allAgents.map(a => `.claude/agents/${a}.md`),
293
- ];
294
- const ts = new Date().toISOString();
295
- saveManifest(projectRoot, buildManifest(runtime, installedFiles, projectRoot, '2.4.2', ts));
296
- console.log(' write .forge/manifest.json');
300
+ await runTasks('Installing...', [
301
+ {
302
+ title: `Agents (${allAgents.length})`,
303
+ tech: profiles.length ? `${profiles.join(', ')} profile` : 'core',
304
+ task: () => installCoreAgents(forgeRoot, join(claudeDir, 'agents'), allAgents, profiles, force),
305
+ },
306
+ {
307
+ title: 'Hooks (pre-edit-check.js, pre-bash-check.js)',
308
+ tech: 'guardrail',
309
+ task: () => installHooks(forgeRoot, join(claudeDir, 'hooks'), mode, force),
310
+ },
311
+ {
312
+ title: 'Slash commands (11)',
313
+ tech: 'sdd workflow',
314
+ task: () => installCommands(forgeRoot, join(claudeDir, 'commands'), force),
315
+ },
316
+ {
317
+ title: 'CLAUDE.md',
318
+ tech: 'generated',
319
+ task: () => write(join(projectRoot, 'CLAUDE.md'), generateClaudeMd(config), force),
320
+ },
321
+ {
322
+ title: 'settings.json',
323
+ tech: 'permissions + hooks',
324
+ task: () => write(join(claudeDir, 'settings.json'), generateSettingsJson(language, mode), force),
325
+ },
326
+ {
327
+ title: 'docs/specs/ + architecture.rules',
328
+ tech: 'scaffold',
329
+ task: () => {
330
+ mkdirSync(join(projectRoot, 'docs', 'specs'), { recursive: true });
331
+ mkdirSync(join(projectRoot, 'docs', 'daily-notes'), { recursive: true });
332
+ const specTemplateSrc = join(forgeRoot, 'core', 'templates', 'spec-template.md');
333
+ if (existsSync(specTemplateSrc)) {
334
+ copyFile(specTemplateSrc, join(projectRoot, 'docs', 'specs', '_template.md'), false);
335
+ }
336
+ const archRulesTemplate = join(forgeRoot, 'core', 'templates', 'claude-md', 'architecture.rules');
337
+ const archRulesDest = join(claudeDir, 'architecture.rules');
338
+ if (existsSync(archRulesTemplate) && !existsSync(archRulesDest)) {
339
+ const content = readFileSync(archRulesTemplate, 'utf-8').replace('<NOMBRE_PROYECTO>', config.project.name ?? 'Mi Proyecto');
340
+ writeFileSync(archRulesDest, content, 'utf-8');
341
+ }
342
+ },
343
+ },
344
+ {
345
+ title: '.forge/manifest.json',
346
+ tech: 'sha256 tracking',
347
+ task: () => {
348
+ const installedFiles = [
349
+ 'CLAUDE.md', '.claude/settings.json', '.claude/architecture.rules',
350
+ ...allAgents.map(a => `.claude/agents/${a}.md`),
351
+ ];
352
+ const ts = new Date().toISOString();
353
+ saveManifest(projectRoot, buildManifest(runtime, installedFiles, projectRoot, '2.6.0', ts));
354
+ },
355
+ },
356
+ ]);
297
357
  }
298
358
  else if (runtime === 'opencode') {
299
359
  mkdirSync(join(projectRoot, '.opencode'), { recursive: true });
@@ -305,21 +365,22 @@ export async function init(args) {
305
365
  else if (runtime === 'kiro') {
306
366
  installKiro(forgeRoot, projectRoot, config, force);
307
367
  }
308
- console.log(`\nForge instalado para ${runtime}.\n`);
309
- console.log('Próximos pasos:');
310
- if (runtime === 'claude-code') {
311
- console.log(' 1. Revisar CLAUDE.md y ajustar si es necesario');
312
- console.log(' 2. Abrir el proyecto en Claude Code');
313
- console.log(' 3. Usar /plan para crear tu primera spec');
314
- }
315
- else if (runtime === 'opencode') {
316
- console.log(' 1. Revisar AGENTS.md');
317
- console.log(' 2. Abrir el proyecto en OpenCode');
318
- }
319
- else if (runtime === 'kiro') {
320
- console.log(' 1. Revisar .kiro/steering/');
321
- console.log(' 2. Abrir el proyecto en Kiro IDE');
322
- }
368
+ // Final summary box
369
+ const import_boxen = await import('boxen');
370
+ const importChalk = await import('chalk');
371
+ const nextSteps = runtime === 'claude-code' ? ['Open project in Claude Code', 'Run /plan to create your first spec'] :
372
+ runtime === 'opencode' ? ['Open project in OpenCode'] :
373
+ runtime === 'kiro' ? ['Open project in Kiro IDE'] :
374
+ ['Open project in your AI runtime'];
375
+ const summaryContent = importChalk.default.green.bold('✔ forge installed — ' + runtime) + '\n\n' +
376
+ importChalk.default.dim('Next steps:\n') +
377
+ nextSteps.map((s, i) => importChalk.default.dim(` ${i + 1}. ${s}`)).join('\n');
378
+ process.stdout.write('\n' + import_boxen.default(summaryContent, {
379
+ borderStyle: 'round',
380
+ borderColor: 'green',
381
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
382
+ margin: { top: 0, bottom: 1, left: 0, right: 0 },
383
+ }) + '\n');
323
384
  return 0;
324
385
  }
325
386
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { WizardResult } from '../lib/wizard.js';
2
+ export declare function runOpenTUIWizard(): Promise<WizardResult | null>;
3
+ //# sourceMappingURL=wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/tui/wizard.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAkFrD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA6QrE"}
@@ -0,0 +1,315 @@
1
+ /**
2
+ * forge interactive wizard — OpenTUI panels (Bun runtime only).
3
+ * Layout: header / steps (left) / content (right) / keyhints (bottom)
4
+ */
5
+ // @ts-nocheck — OpenTUI types verified at runtime; Bun-only module
6
+ import { createCliRenderer, BoxRenderable, Text, SelectRenderable, InputRenderable, } from '@opentui/core';
7
+ import { detectStack } from '../lib/detect.js';
8
+ // ─── Palette ─────────────────────────────────────────────────────────────────
9
+ const C = {
10
+ cyan: '#00e5ff',
11
+ yellow: '#ffd740',
12
+ green: '#69ff47',
13
+ muted: '#546e7a',
14
+ dim: '#37474f',
15
+ bg: '#0d1117',
16
+ bgPanel: '#161b22',
17
+ bgActive: '#1f2937',
18
+ white: '#e6edf3',
19
+ };
20
+ const bold = (s) => `\x1b[1m${s}\x1b[0m`;
21
+ const col = (hex, s) => {
22
+ const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
23
+ return `\x1b[38;2;${r};${g};${b}m${s}\x1b[0m`;
24
+ };
25
+ const dim = (s) => `\x1b[2m${s}\x1b[0m`;
26
+ // ─── Steps ────────────────────────────────────────────────────────────────────
27
+ const STEPS = ['Project name', 'Language', 'Mode', 'Backend', 'Frontend', 'Database', 'ORM', 'Package manager', 'Testing', 'Runtime', 'Confirm'];
28
+ // ─── Options ─────────────────────────────────────────────────────────────────
29
+ const opt = (name, value, description = '') => ({ name, value, description });
30
+ const BACKENDS = {
31
+ typescript: [opt('Hono', 'hono', 'Edge-ready, ultralight'), opt('Express', 'express', 'The classic'), opt('NestJS', 'nestjs', 'Enterprise, opinionated'), opt('Fastify', 'fastify', 'High performance'), opt('None', 'none', '')],
32
+ python: [opt('FastAPI', 'fastapi', 'Async Python'), opt('Django', 'django', 'Batteries included'), opt('None', 'none', '')],
33
+ ruby: [opt('Rails', 'rails', 'Full-stack framework'), opt('None', 'none', '')],
34
+ go: [opt('Gin', 'go-gin', 'Fast HTTP router'), opt('None', 'none', '')],
35
+ php: [opt('Laravel', 'laravel', 'Full-stack PHP'), opt('None', 'none', '')],
36
+ };
37
+ const FRONTENDS = [
38
+ opt('Next.js', 'nextjs', 'Fullstack React'), opt('Astro', 'astro', 'Content-first'),
39
+ opt('Nuxt', 'nuxt', 'Vue.js'), opt('SvelteKit', 'sveltekit', 'Svelte'),
40
+ opt('None', 'none', ''),
41
+ ];
42
+ const DATABASES = [
43
+ opt('PostgreSQL', 'postgresql', 'Recommended'), opt('MySQL', 'mysql', ''),
44
+ opt('SQLite', 'sqlite', 'Dev / embedded'), opt('None', 'none', ''),
45
+ ];
46
+ const ORMS = {
47
+ typescript: [opt('Drizzle ORM', 'drizzle', 'Lightweight, type-safe'), opt('Prisma', 'prisma', 'Full ORM + migrations'), opt('TypeORM', 'typeorm', ''), opt('None', 'none', '')],
48
+ python: [opt('SQLAlchemy', 'sqlalchemy', ''), opt('None', 'none', '')],
49
+ ruby: [opt('Active Record', 'active-record', ''), opt('None', 'none', '')],
50
+ };
51
+ const PKG_MANAGERS = {
52
+ typescript: [opt('pnpm', 'pnpm', 'Recommended — fast'), opt('npm', 'npm', ''), opt('yarn', 'yarn', ''), opt('bun', 'bun', 'Ultra-fast')],
53
+ python: [opt('pip', 'pip', ''), opt('poetry', 'poetry', '')],
54
+ ruby: [opt('bundler', 'bundler', '')],
55
+ go: [opt('go modules', 'go', '')],
56
+ php: [opt('composer', 'composer', '')],
57
+ };
58
+ const TESTING = {
59
+ typescript: [opt('Vitest', 'vitest', 'Unit + integration'), opt('Jest', 'jest', ''), opt('Playwright', 'playwright', 'E2E'), opt('Cypress', 'cypress', 'E2E'), opt('None', 'none', 'Skip')],
60
+ python: [opt('pytest', 'pytest', ''), opt('None', 'none', 'Skip')],
61
+ ruby: [opt('RSpec', 'rspec', ''), opt('None', 'none', 'Skip')],
62
+ php: [opt('PHPUnit', 'phpunit', ''), opt('None', 'none', 'Skip')],
63
+ };
64
+ const RUNTIMES = [
65
+ opt('Claude Code', 'claude-code', 'Recommended'), opt('OpenCode', 'opencode', ''),
66
+ opt('Codex CLI', 'codex', ''), opt('Kiro IDE', 'kiro', ''),
67
+ ];
68
+ const PROFILE_MAP = {
69
+ hono: 'hono-drizzle', nextjs: 'nextjs-admin', astro: 'astro',
70
+ fastapi: 'fastapi', rails: 'rails', laravel: 'laravel',
71
+ };
72
+ const toSlug = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
73
+ // ─── Main wizard ──────────────────────────────────────────────────────────────
74
+ export async function runOpenTUIWizard() {
75
+ const detected = detectStack(process.cwd());
76
+ const renderer = await createCliRenderer({ exitOnCtrlC: true });
77
+ const W = renderer.width ?? process.stdout.columns ?? 120;
78
+ const H = renderer.height ?? process.stdout.rows ?? 40;
79
+ const HEADER_H = 5;
80
+ const BOTTOM_H = 2;
81
+ const BODY_H = H - HEADER_H - BOTTOM_H - 2;
82
+ const LEFT_W = Math.max(22, Math.floor(W * 0.24));
83
+ const RIGHT_W = W - LEFT_W - 1;
84
+ // ── Header ──
85
+ const header = new BoxRenderable(renderer, {
86
+ id: 'header', position: 'absolute', left: 0, top: 0, width: W, height: HEADER_H,
87
+ borderStyle: 'double', border: true, borderColor: C.cyan,
88
+ backgroundColor: C.bg,
89
+ });
90
+ header.add(Text({
91
+ id: 'header-text',
92
+ content: col(C.yellow, bold('forge')) + ' '.repeat(Math.max(2, W - 26)) + dim('v2.5.0') + '\n' +
93
+ col(C.muted, 'Configure any project for AI agents') + '\n' +
94
+ dim('Claude Code · OpenCode · Codex · Kiro'),
95
+ }));
96
+ renderer.root.add(header);
97
+ // ── Steps panel ──
98
+ const stepsPanel = new BoxRenderable(renderer, {
99
+ id: 'steps-panel', position: 'absolute',
100
+ left: 0, top: HEADER_H + 1, width: LEFT_W, height: BODY_H,
101
+ borderStyle: 'single', border: true, borderColor: C.dim,
102
+ backgroundColor: C.bgPanel, title: ' Steps ',
103
+ });
104
+ renderer.root.add(stepsPanel);
105
+ // ── Content panel ──
106
+ const contentPanel = new BoxRenderable(renderer, {
107
+ id: 'content-panel', position: 'absolute',
108
+ left: LEFT_W + 1, top: HEADER_H + 1, width: RIGHT_W, height: BODY_H,
109
+ borderStyle: 'single', border: true, borderColor: C.cyan,
110
+ backgroundColor: C.bg,
111
+ });
112
+ renderer.root.add(contentPanel);
113
+ // ── Bottom bar ──
114
+ const bottom = new BoxRenderable(renderer, {
115
+ id: 'bottom', position: 'absolute',
116
+ left: 0, top: H - BOTTOM_H, width: W, height: BOTTOM_H,
117
+ backgroundColor: C.bgPanel,
118
+ });
119
+ bottom.add(Text({ id: 'bottom-text', content: dim(' [↑↓] Navigate [Enter] Confirm [Ctrl+C] Cancel') }));
120
+ renderer.root.add(bottom);
121
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
122
+ let currentStep = 0;
123
+ function renderSteps() {
124
+ stepsPanel.remove('steps-list');
125
+ const lines = STEPS.map((s, i) => {
126
+ if (i < currentStep)
127
+ return col(C.green, ` ✔ ${i + 1}. ${s}`);
128
+ if (i === currentStep)
129
+ return col(C.cyan, ` ► ${bold(String(i + 1))}. ${bold(s)}`);
130
+ return col(C.muted, ` ${i + 1}. ${s}`);
131
+ }).join('\n');
132
+ stepsPanel.add(Text({ id: 'steps-list', content: lines }));
133
+ }
134
+ function clearContent() {
135
+ try {
136
+ contentPanel.remove('content-label');
137
+ }
138
+ catch { }
139
+ try {
140
+ contentPanel.remove('content-widget');
141
+ }
142
+ catch { }
143
+ try {
144
+ renderer.root.remove('float-input');
145
+ }
146
+ catch { }
147
+ try {
148
+ renderer.root.remove('float-select');
149
+ }
150
+ catch { }
151
+ }
152
+ // ─── askInput ─────────────────────────────────────────────────────────────────
153
+ async function askInput(title, hint = '', defVal = '') {
154
+ return new Promise(resolve => {
155
+ renderSteps();
156
+ clearContent();
157
+ contentPanel.add(Text({
158
+ id: 'content-label',
159
+ content: '\n ' + col(C.white, bold(title)) + '\n ' + dim(hint || 'Type and press Enter'),
160
+ }));
161
+ const input = new InputRenderable(renderer, {
162
+ id: 'float-input',
163
+ position: 'absolute',
164
+ left: LEFT_W + 3, top: HEADER_H + 6,
165
+ width: Math.min(60, RIGHT_W - 6),
166
+ backgroundColor: C.bgActive,
167
+ borderStyle: 'single', border: true, borderColor: C.cyan,
168
+ value: defVal,
169
+ });
170
+ renderer.root.add(input);
171
+ renderer.focusRenderable(input);
172
+ input.on('enter', () => {
173
+ const val = input.value?.trim() || defVal;
174
+ clearContent();
175
+ resolve(val);
176
+ });
177
+ });
178
+ }
179
+ // ─── askSelect ────────────────────────────────────────────────────────────────
180
+ async function askSelect(title, hint, options, initialValue) {
181
+ return new Promise(resolve => {
182
+ renderSteps();
183
+ clearContent();
184
+ contentPanel.add(Text({
185
+ id: 'content-label',
186
+ content: '\n ' + col(C.white, bold(title)) + '\n ' + dim(hint),
187
+ }));
188
+ const initIdx = initialValue
189
+ ? Math.max(0, options.findIndex(o => o.value === initialValue))
190
+ : 0;
191
+ const sel = new SelectRenderable(renderer, {
192
+ id: 'float-select',
193
+ position: 'absolute',
194
+ left: LEFT_W + 3, top: HEADER_H + 6,
195
+ width: Math.min(52, RIGHT_W - 6),
196
+ height: Math.min(options.length + 2, BODY_H - 8),
197
+ options,
198
+ selectedIndex: initIdx,
199
+ backgroundColor: C.bgPanel,
200
+ focusedBackgroundColor: C.bgActive,
201
+ focusedTextColor: C.cyan,
202
+ selectedBackgroundColor: C.bgActive,
203
+ selectedTextColor: C.yellow,
204
+ borderStyle: 'single', border: true, borderColor: C.dim,
205
+ });
206
+ renderer.root.add(sel);
207
+ renderer.focusRenderable(sel);
208
+ sel.on('itemSelected', () => {
209
+ const val = sel.getSelectedOption()?.value ?? options[0].value;
210
+ clearContent();
211
+ resolve(val);
212
+ });
213
+ });
214
+ }
215
+ // ─── Run wizard steps ─────────────────────────────────────────────────────────
216
+ const answers = {
217
+ testing: detected.testing ?? [],
218
+ profiles: [],
219
+ detected: !!(detected.language || detected.backend),
220
+ };
221
+ renderSteps();
222
+ answers.name = await askInput('Project name', 'Name for your project (e.g. "My API")');
223
+ answers.slug = toSlug(answers.name);
224
+ currentStep = 1;
225
+ answers.language = await askSelect('Language', 'Primary programming language', [
226
+ opt('TypeScript', 'typescript', 'Recommended'), opt('Python', 'python', ''),
227
+ opt('Ruby', 'ruby', ''), opt('Go', 'go', ''), opt('PHP', 'php', ''),
228
+ ], detected.language ?? 'typescript');
229
+ currentStep = 2;
230
+ answers.mode = await askSelect('Project mode', 'Determines agents and guardrails installed', [
231
+ opt('startup', 'startup', 'Minimal — small team'),
232
+ opt('standard', 'standard', 'CI/CD, code review, testing'),
233
+ opt('enterprise', 'enterprise', 'Compliance, multi-team'),
234
+ ], 'standard');
235
+ currentStep = 3;
236
+ const backendOpts = BACKENDS[answers.language] ?? [opt('None', 'none', '')];
237
+ const backend = await askSelect('Backend framework', 'Select backend (or None)', backendOpts, detected.backend ?? 'none');
238
+ answers.backend = backend === 'none' ? undefined : backend;
239
+ currentStep = 4;
240
+ const frontend = await askSelect('Frontend framework', 'Select frontend (or None)', FRONTENDS, detected.frontend ?? 'none');
241
+ answers.frontend = frontend === 'none' ? undefined : frontend;
242
+ currentStep = 5;
243
+ const database = await askSelect('Database', 'Select primary database', DATABASES, detected.database ?? 'postgresql');
244
+ answers.database = database === 'none' ? undefined : database;
245
+ currentStep = 6;
246
+ if (answers.database) {
247
+ const ormOpts = ORMS[answers.language] ?? [opt('None', 'none', '')];
248
+ const orm = await askSelect('ORM / query builder', 'Select ORM or query builder', ormOpts, detected.orm ?? 'none');
249
+ answers.orm = orm === 'none' ? undefined : orm;
250
+ }
251
+ currentStep = 7;
252
+ const pmOpts = PKG_MANAGERS[answers.language] ?? [opt('npm', 'npm', '')];
253
+ answers.packageManager = await askSelect('Package manager', 'Select package manager', pmOpts, detected.packageManager ?? 'pnpm');
254
+ currentStep = 8;
255
+ const testOpts = TESTING[answers.language] ?? [opt('None', 'none', 'Skip')];
256
+ const test = await askSelect('Testing', 'Select primary testing framework', testOpts, (detected.testing ?? [])[0] ?? 'none');
257
+ answers.testing = test === 'none' ? [] : [test];
258
+ currentStep = 9;
259
+ answers.runtime = await askSelect('AI Runtime', 'Select the primary AI coding runtime', RUNTIMES, 'claude-code');
260
+ currentStep = 10;
261
+ // Confirm
262
+ renderSteps();
263
+ clearContent();
264
+ const summaryLines = [
265
+ '\n ' + col(C.white, bold('Configuration summary')), '',
266
+ ` ${col(C.muted, 'Name:')} ${col(C.yellow, answers.name)}`,
267
+ ` ${col(C.muted, 'Language:')} ${answers.language} ${col(C.muted, 'Mode:')} ${answers.mode}`,
268
+ answers.backend ? ` ${col(C.muted, 'Backend:')} ${answers.backend}` : '',
269
+ answers.frontend ? ` ${col(C.muted, 'Frontend:')} ${answers.frontend}` : '',
270
+ answers.database ? ` ${col(C.muted, 'Database:')} ${answers.database}${answers.orm ? ' + ' + answers.orm : ''}` : '',
271
+ answers.testing?.length ? ` ${col(C.muted, 'Testing:')} ${answers.testing.join(', ')}` : '',
272
+ ` ${col(C.muted, 'Runtime:')} ${answers.runtime}`,
273
+ '',
274
+ ].filter(l => l !== '');
275
+ contentPanel.add(Text({ id: 'content-label', content: summaryLines.join('\n') }));
276
+ const confirmed = await askSelect('', 'Install with this configuration?', [
277
+ opt('✔ Yes, install forge', 'yes', ''),
278
+ opt('✗ Cancel', 'no', ''),
279
+ ]) === 'yes';
280
+ if (!confirmed) {
281
+ renderer.destroy();
282
+ return null;
283
+ }
284
+ renderSteps();
285
+ clearContent();
286
+ contentPanel.add(Text({
287
+ id: 'content-label',
288
+ content: '\n\n ' + col(C.green, bold(' ✔ Configuration complete')) + '\n ' + dim(' Installing forge...'),
289
+ }));
290
+ await new Promise(r => setTimeout(r, 500));
291
+ renderer.destroy();
292
+ // Auto profiles
293
+ const profiles = [];
294
+ if (answers.backend && PROFILE_MAP[answers.backend])
295
+ profiles.push(PROFILE_MAP[answers.backend]);
296
+ if (answers.frontend && PROFILE_MAP[answers.frontend])
297
+ profiles.push(PROFILE_MAP[answers.frontend]);
298
+ return {
299
+ name: answers.name,
300
+ slug: answers.slug,
301
+ description: '',
302
+ language: answers.language,
303
+ mode: answers.mode,
304
+ backend: answers.backend,
305
+ frontend: answers.frontend,
306
+ database: answers.database,
307
+ orm: answers.orm,
308
+ packageManager: answers.packageManager,
309
+ testing: answers.testing,
310
+ profiles: [...new Set(profiles)],
311
+ runtime: answers.runtime,
312
+ detected: answers.detected,
313
+ };
314
+ }
315
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/tui/wizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function printHeader(): void;
2
+ export declare function printSection(title: string): void;
3
+ export declare function printDetected(items: string[]): void;
4
+ export declare function printAgentList(agents: Array<{
5
+ name: string;
6
+ tech: string;
7
+ }>): void;
8
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/ui/header.ts"],"names":[],"mappings":"AAKA,wBAAgB,WAAW,IAAI,IAAI,CAclC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAiBnD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAQlF"}
@@ -0,0 +1,46 @@
1
+ import boxen from 'boxen';
2
+ import chalk from 'chalk';
3
+ const VERSION = '2.4.2';
4
+ export function printHeader() {
5
+ const content = chalk.yellow.bold('forge') + ' ' + chalk.dim('v' + '2.6.0') + '\n' +
6
+ chalk.dim('Configure any project for AI agents') + '\n' +
7
+ chalk.dim('Claude Code · OpenCode · Codex · Kiro');
8
+ const output = boxen(content, {
9
+ borderStyle: 'double',
10
+ borderColor: 'cyan',
11
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
12
+ margin: { top: 1, bottom: 1, left: 0, right: 0 },
13
+ });
14
+ process.stdout.write(output + '\n');
15
+ }
16
+ export function printSection(title) {
17
+ process.stdout.write('\n' + chalk.bold('► ') + chalk.bold(title) + '\n\n');
18
+ }
19
+ export function printDetected(items) {
20
+ if (items.length === 0)
21
+ return;
22
+ printSection('Detected technologies:');
23
+ // 3 columns
24
+ const cols = 3;
25
+ const rows = Math.ceil(items.length / cols);
26
+ for (let r = 0; r < rows; r++) {
27
+ let line = ' ';
28
+ for (let c = 0; c < cols; c++) {
29
+ const idx = r + c * rows;
30
+ if (idx < items.length) {
31
+ line += chalk.green('✔ ') + chalk.bold(items[idx]).padEnd(20);
32
+ }
33
+ }
34
+ process.stdout.write(line.trimEnd() + '\n');
35
+ }
36
+ }
37
+ export function printAgentList(agents) {
38
+ printSection(`Agents to install (${agents.length})`);
39
+ agents.forEach((a, i) => {
40
+ const num = chalk.dim(String(i + 1).padStart(2) + '.');
41
+ const name = chalk.cyan(a.name.padEnd(30));
42
+ const tech = chalk.dim('← ' + a.tech);
43
+ process.stdout.write(` ${num} ${name} ${tech}\n`);
44
+ });
45
+ }
46
+ //# sourceMappingURL=header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/ui/header.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface InstallTask {
2
+ title: string;
3
+ task: () => void | Promise<void>;
4
+ tech?: string;
5
+ }
6
+ /**
7
+ * Runs an installation task list with listr2 — renders checkmarks as each task completes,
8
+ * matching the autoskills aesthetic.
9
+ */
10
+ export declare function runTasks(sectionTitle: string, tasks: InstallTask[]): Promise<void>;
11
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/ui/tasks.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,WAAW,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CAiBf"}
@@ -0,0 +1,22 @@
1
+ import { Listr } from 'listr2';
2
+ import chalk from 'chalk';
3
+ /**
4
+ * Runs an installation task list with listr2 — renders checkmarks as each task completes,
5
+ * matching the autoskills aesthetic.
6
+ */
7
+ export async function runTasks(sectionTitle, tasks) {
8
+ process.stdout.write('\n' + chalk.bold('► ') + chalk.bold(sectionTitle) + '\n\n');
9
+ const listrTasks = tasks.map(t => ({
10
+ title: chalk.cyan(t.title) + (t.tech ? chalk.dim(' ← ' + t.tech) : ''),
11
+ task: async () => { await t.task(); },
12
+ }));
13
+ const runner = new Listr(listrTasks, {
14
+ concurrent: false,
15
+ rendererOptions: {
16
+ collapseErrors: false,
17
+ showSkipMessage: false,
18
+ },
19
+ });
20
+ await runner.run();
21
+ }
22
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/ui/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,YAAoB,EACpB,KAAoB;IAEpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC;IAElF,MAAM,UAAU,GAAgB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACtC,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE;QACnC,UAAU,EAAE,KAAK;QACjB,eAAe,EAAE;YACf,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,KAAK;SACvB;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cristiancorreau/forge",
3
- "version": "2.4.2",
3
+ "version": "2.6.0",
4
4
  "description": "Agentic development framework — multi-runtime support for Claude Code, OpenCode, Codex and Kiro",
5
5
  "author": "Cristian Correa <cristian@socialweb.cl>",
6
6
  "license": "Apache-2.0",
@@ -37,6 +37,7 @@
37
37
  "CHANGELOG.md"
38
38
  ],
39
39
  "devDependencies": {
40
+ "@types/boxen": "^2.1.0",
40
41
  "@types/js-yaml": "^4.0.9",
41
42
  "@types/node": "^20.0.0",
42
43
  "typescript": "^5.4.0"
@@ -46,8 +47,12 @@
46
47
  },
47
48
  "dependencies": {
48
49
  "@clack/prompts": "^0.9.1",
50
+ "@opentui/core": "^0.3.1",
49
51
  "ajv": "^8.20.0",
50
52
  "ajv-formats": "^3.0.1",
51
- "js-yaml": "^4.2.0"
53
+ "boxen": "^8.0.1",
54
+ "chalk": "^5.6.2",
55
+ "js-yaml": "^4.2.0",
56
+ "listr2": "^10.2.1"
52
57
  }
53
58
  }