| 495 | const SHIPPING_CATEGORIES = new Set(['auth', 'database', 'orm', 'deploy']) |
| 496 | |
| 497 | function buildNextSteps(options: Options): string { |
| 498 | const collectedEnv = new Set(Object.keys(options.envVarValues || {})) |
| 499 | const listedEnvVars = new Set<string>() |
| 500 | const envVarLines: Array<string> = [] |
| 501 | const docLines: Array<string> = [] |
| 502 | |
| 503 | for (const addOn of options.chosenAddOns) { |
| 504 | if (addOn.link && addOn.category && SHIPPING_CATEGORIES.has(addOn.category)) { |
| 505 | docLines.push(` - ${addOn.name} (${addOn.category}): ${addOn.link}`) |
| 506 | } |
| 507 | |
| 508 | for (const envVar of addOn.envVars || []) { |
| 509 | if (listedEnvVars.has(envVar.name)) continue |
| 510 | listedEnvVars.add(envVar.name) |
| 511 | const required = envVar.required ? ' (required)' : '' |
| 512 | const status = collectedEnv.has(envVar.name) |
| 513 | ? ' - already set from your input' |
| 514 | : ' - needs a value' |
| 515 | const desc = envVar.description ? ` - ${envVar.description}` : '' |
| 516 | envVarLines.push(` - ${envVar.name}${required}${desc}${status}`) |
| 517 | } |
| 518 | } |
| 519 | |
| 520 | const sections: Array<string> = [] |
| 521 | if (envVarLines.length > 0) { |
| 522 | sections.push( |
| 523 | `Environment variables (review/fill in .env.local before deploying):\n${envVarLines.join('\n')}`, |
| 524 | ) |
| 525 | } |
| 526 | if (docLines.length > 0) { |
| 527 | sections.push(`Docs for the integrations you picked:\n${docLines.join('\n')}`) |
| 528 | } |
| 529 | if (options.intent) { |
| 530 | sections.push( |
| 531 | `Working with an AI agent? Your agent config (AGENTS.md / CLAUDE.md) was wired up by TanStack Intent\nwith explicit skill mappings for the libraries you installed. Try asking your agent:\n - "migrate this Next.js page to TanStack Start"\n - "add a protected /dashboard route"\n - "show me how to use TanStack Router search params"`, |
| 532 | ) |
| 533 | } |
| 534 | |
| 535 | return sections.length > 0 ? `\nNext steps:\n\n${sections.join('\n\n')}\n` : '' |
| 536 | } |
| 537 | |
| 538 | function report(environment: Environment, options: Options) { |
| 539 | const warnings: Array<string> = [] |