@agent-native/core 0.131.6 → 0.131.9

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 (113) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +31 -0
  3. package/corpus/core/docs/content/deployment.mdx +12 -10
  4. package/corpus/core/docs/content/security.mdx +2 -2
  5. package/corpus/core/package.json +1 -1
  6. package/corpus/core/src/a2a/invoke.ts +4 -2
  7. package/corpus/core/src/agent/action-continuation-guidance.ts +2 -1
  8. package/corpus/core/src/agent/engine/registry.ts +61 -9
  9. package/corpus/core/src/application-state/store.ts +18 -31
  10. package/corpus/core/src/cli/create.ts +115 -16
  11. package/corpus/core/src/client/AssistantChat.tsx +10 -2
  12. package/corpus/core/src/client/frame-protocol.ts +5 -1
  13. package/corpus/core/src/guards/no-env-credentials.ts +2 -0
  14. package/corpus/core/src/scripts/call-agent.ts +4 -2
  15. package/corpus/core/src/secrets/crypto.ts +44 -15
  16. package/corpus/core/src/secrets/storage.ts +6 -4
  17. package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +2 -0
  18. package/corpus/core/src/templates/default/.agents/skills/secrets/SKILL.md +14 -9
  19. package/corpus/core/src/templates/headless/.agents/skills/secrets/SKILL.md +14 -9
  20. package/corpus/core/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -9
  21. package/corpus/core/src/workspace-files/tool.ts +18 -11
  22. package/corpus/templates/analytics/AGENTS.md +1 -0
  23. package/corpus/templates/analytics/changelog/2026-07-30-delegated-analytics-questions-now-return-a-useful-current-me.md +6 -0
  24. package/corpus/templates/analytics/server/lib/real-data-actions.ts +10 -0
  25. package/corpus/templates/clips/actions/generate-workflow.ts +6 -4
  26. package/corpus/templates/clips/actions/reconcile-workflow-generation.ts +257 -0
  27. package/corpus/templates/clips/app/hooks/use-auto-title.ts +166 -4
  28. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +1 -1
  29. package/corpus/templates/clips/changelog/2026-07-27-stopped-agent-runs-no-longer-leave-generated-workflow-cards-.md +6 -0
  30. package/corpus/templates/clips/changelog/2026-07-30-workflow-generation-now-stops-retrying-after-repeated-failur.md +6 -0
  31. package/corpus/templates/clips/shared/workflow.ts +5 -0
  32. package/corpus/templates/plan/actions/get-visual-plan.ts +10 -6
  33. package/corpus/templates/plan/actions/patch-visual-plan-source.ts +117 -1
  34. package/corpus/templates/plan/actions/update-visual-plan.ts +56 -14
  35. package/corpus/templates/plan/app/pages/PlansPage.tsx +1 -1
  36. package/corpus/templates/plan/changelog/2026-07-30-plan-agents-recover-with-targeted-writes.md +6 -0
  37. package/corpus/templates/plan/shared/plan-content.ts +35 -0
  38. package/corpus/templates/slides/actions/create-deck.ts +1 -1
  39. package/corpus/templates/slides/changelog/2026-07-30-new-decks-now-start-with-an-empty-slide-list-when-no-slides-.md +6 -0
  40. package/dist/a2a/invoke.d.ts.map +1 -1
  41. package/dist/a2a/invoke.js +4 -2
  42. package/dist/a2a/invoke.js.map +1 -1
  43. package/dist/agent/action-continuation-guidance.d.ts.map +1 -1
  44. package/dist/agent/action-continuation-guidance.js +2 -1
  45. package/dist/agent/action-continuation-guidance.js.map +1 -1
  46. package/dist/agent/engine/registry.d.ts.map +1 -1
  47. package/dist/agent/engine/registry.js +59 -12
  48. package/dist/agent/engine/registry.js.map +1 -1
  49. package/dist/application-state/store.d.ts.map +1 -1
  50. package/dist/application-state/store.js +20 -36
  51. package/dist/application-state/store.js.map +1 -1
  52. package/dist/cli/create.d.ts +8 -1
  53. package/dist/cli/create.d.ts.map +1 -1
  54. package/dist/cli/create.js +98 -16
  55. package/dist/cli/create.js.map +1 -1
  56. package/dist/client/AssistantChat.d.ts.map +1 -1
  57. package/dist/client/AssistantChat.js +10 -2
  58. package/dist/client/AssistantChat.js.map +1 -1
  59. package/dist/client/frame-protocol.d.ts +1 -0
  60. package/dist/client/frame-protocol.d.ts.map +1 -1
  61. package/dist/client/frame-protocol.js.map +1 -1
  62. package/dist/collab/routes.d.ts +1 -1
  63. package/dist/collab/struct-routes.d.ts +1 -1
  64. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  65. package/dist/guards/no-env-credentials.d.ts.map +1 -1
  66. package/dist/guards/no-env-credentials.js +2 -0
  67. package/dist/guards/no-env-credentials.js.map +1 -1
  68. package/dist/mcp/screen-memory-stdio.d.ts +7 -7
  69. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -1
  70. package/dist/notifications/routes.d.ts +6 -6
  71. package/dist/observability/routes.d.ts +3 -3
  72. package/dist/scripts/call-agent.d.ts.map +1 -1
  73. package/dist/scripts/call-agent.js +4 -2
  74. package/dist/scripts/call-agent.js.map +1 -1
  75. package/dist/secrets/crypto.d.ts +14 -9
  76. package/dist/secrets/crypto.d.ts.map +1 -1
  77. package/dist/secrets/crypto.js +42 -16
  78. package/dist/secrets/crypto.js.map +1 -1
  79. package/dist/secrets/storage.d.ts +6 -4
  80. package/dist/secrets/storage.d.ts.map +1 -1
  81. package/dist/secrets/storage.js +6 -4
  82. package/dist/secrets/storage.js.map +1 -1
  83. package/dist/server/agent-chat/action-filters-a2a.d.ts +1 -1
  84. package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
  85. package/dist/server/agent-chat/action-filters-a2a.js +2 -0
  86. package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
  87. package/dist/server/realtime-token.d.ts +1 -1
  88. package/dist/server/transcribe-voice.d.ts +1 -1
  89. package/dist/templates/default/.agents/skills/secrets/SKILL.md +14 -9
  90. package/dist/templates/headless/.agents/skills/secrets/SKILL.md +14 -9
  91. package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -9
  92. package/dist/workspace-files/tool.d.ts.map +1 -1
  93. package/dist/workspace-files/tool.js +18 -11
  94. package/dist/workspace-files/tool.js.map +1 -1
  95. package/docs/content/deployment.mdx +12 -10
  96. package/docs/content/security.mdx +2 -2
  97. package/package.json +1 -1
  98. package/src/a2a/invoke.ts +4 -2
  99. package/src/agent/action-continuation-guidance.ts +2 -1
  100. package/src/agent/engine/registry.ts +61 -9
  101. package/src/application-state/store.ts +18 -31
  102. package/src/cli/create.ts +115 -16
  103. package/src/client/AssistantChat.tsx +10 -2
  104. package/src/client/frame-protocol.ts +5 -1
  105. package/src/guards/no-env-credentials.ts +2 -0
  106. package/src/scripts/call-agent.ts +4 -2
  107. package/src/secrets/crypto.ts +44 -15
  108. package/src/secrets/storage.ts +6 -4
  109. package/src/server/agent-chat/action-filters-a2a.ts +2 -0
  110. package/src/templates/default/.agents/skills/secrets/SKILL.md +14 -9
  111. package/src/templates/headless/.agents/skills/secrets/SKILL.md +14 -9
  112. package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -9
  113. package/src/workspace-files/tool.ts +18 -11
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFile, execFileSync } from \"child_process\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\nimport { fileURLToPath, pathToFileURL } from \"url\";\n\nimport {\n DISPATCH_WORKSPACE_ROOT_REDIRECTS,\n getWorkspaceAppIdValidationError,\n} from \"../shared/workspace-app-id.js\";\nimport { setupAgentSymlinks } from \"./setup-agents.js\";\nimport {\n coreTemplates,\n getTemplate,\n allTemplateNames,\n type TemplateMeta,\n} from \"./templates-meta.js\";\nimport { workspacifyApp, parseWorkspaceScope } from \"./workspacify.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst REPO = \"BuilderIO/agent-native\";\nconst TEMPLATES_DIR = \"templates\";\nconst POSTGRES_DEPENDENCY_VERSION = \"^3.4.9\";\nconst STANDALONE_EXACT_DEPENDENCY_OVERRIDES: Record<string, string> = {\n \"@react-router/dev\": \"8.1.0\",\n \"@react-router/fs-routes\": \"8.1.0\",\n \"react-router\": \"8.1.0\",\n};\nconst REACT_ROUTER_BUILD_DEPENDENCIES = [\n \"@react-router/dev\",\n \"@react-router/fs-routes\",\n \"react-router\",\n \"vite\",\n] as const;\nconst MINIMUM_RELEASE_AGE_EXCLUDES = [\n '\"@modelcontextprotocol/client\"',\n '\"@modelcontextprotocol/core\"',\n '\"@modelcontextprotocol/node\"',\n '\"@modelcontextprotocol/server\"',\n '\"@typescript/*\"',\n '\"@sentry/*\"',\n \"fast-xml-parser\",\n \"typescript\",\n \"typescript-7\",\n];\nconst FIRST_PARTY_TARBALL_SYMLINK_EXCLUDES = [\n \"*/CLAUDE.md\",\n \"*/.claude/skills\",\n];\nconst localPackageTarballs = new Map<string, string>();\n\n/**\n * Tagged error for input that fails CLI-level validation (repo names, app\n * names, etc.). The Sentry `beforeSend` hook in cli/index.ts drops events\n * whose top-level exception type is `ValidationError` so we don't pollute\n * Sentry with expected user-input rejections.\n */\nexport class ValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ValidationError\";\n }\n}\n\n/**\n * Move the primitive-first and chat on-ramps to the top of the list so they\n * line up with clack's default highlight.\n */\nfunction onRampFirst(templates: TemplateMeta[]): TemplateMeta[] {\n return moveTemplatesToFront(templates, [\"headless\", \"chat\"]);\n}\n\nfunction moveTemplatesToFront(\n templates: TemplateMeta[],\n preferredNames: string[],\n): TemplateMeta[] {\n const preferred = preferredNames\n .map((name) => templates.find((t) => t.name === name))\n .filter((template): template is TemplateMeta => Boolean(template));\n if (preferred.length === 0) return templates;\n const preferredSet = new Set(preferred.map((t) => t.name));\n return [...preferred, ...templates.filter((t) => !preferredSet.has(t.name))];\n}\n\n/** Primitive-first scaffold option appended to standalone pickers. */\nconst HEADLESS_OPTION = {\n name: \"headless\",\n label: \"Headless\",\n hint: \"Action-first app with one hello primitive and no UI shell\",\n};\n\nconst COMMUNITY_OPTION = {\n name: \"community\",\n label: \"Community template\",\n hint: \"Install a third-party Agent Native app from a public GitHub repository\",\n};\n\nexport interface CreateAppOptions {\n /** Pre-select these templates in the picker. Comma-separated string or array. */\n template?: string;\n /** Scaffold a single standalone app (old behavior). Skips workspace creation. */\n standalone?: boolean;\n /** Internal: skip pnpm install at the end (for tests). */\n noInstall?: boolean;\n /**\n * Internal: always scaffold a workspace and skip the start-shape prompt.\n * Used by the deprecated `create-workspace` alias, whose contract is an\n * unconditional workspace scaffold.\n */\n forceWorkspace?: boolean;\n}\n\n/**\n * Main entry for `agent-native create [name]`.\n *\n * Default behavior: scaffold a workspace at <name>/ with a multi-select\n * template picker. Use --standalone for the single-app standalone flow.\n *\n * If run *inside* an existing workspace, falls through to the add-app\n * flow that scaffolds one new app under apps/<name>/.\n */\nexport async function createApp(\n name?: string,\n opts?: CreateAppOptions,\n): Promise<void> {\n const clack = await import(\"@clack/prompts\");\n\n // Reject an invalid provided name before any interactive prompt so bad input\n // fails fast instead of blocking on the start-shape picker below.\n if (name !== undefined) {\n assertValidProjectName(name, clack);\n }\n\n // If we're already inside a workspace, the meaning of `create <name>` is\n // \"add a new app to this workspace\". Delegate to add-app.\n const workspace = detectWorkspace(process.cwd());\n if (workspace) {\n await addAppToWorkspace(name, opts);\n return;\n }\n\n // Standalone escape hatch — behaves like the old single-app flow.\n if (opts?.standalone) {\n await createStandaloneApp(name, opts, clack);\n return;\n }\n\n // When exactly one template is specified explicitly, treat it as a\n // standalone scaffold (script-friendly, matches historic behavior).\n // Use `--template a,b` or pass no --template to opt into the workspace\n // flow with the multi-select picker.\n const parsed = parseTemplateList(opts?.template);\n // Headless can't live in a workspace, so reject it when more than one\n // template is requested or when workspace semantics are forced.\n if (\n parsed.includes(\"headless\") &&\n (parsed.length > 1 || opts?.forceWorkspace)\n ) {\n clack.cancel(\n \"The headless scaffold is standalone-only. Use `agent-native create my-app --headless`, or use the Chat template when adding a UI app to a workspace.\",\n );\n process.exit(1);\n }\n // A single explicit template scaffolds a standalone app, unless the caller\n // forces workspace semantics (the deprecated `create-workspace` alias), in\n // which case the template is preselected in the workspace picker below.\n if (parsed.length === 1 && !opts?.forceWorkspace) {\n await createStandaloneApp(name, opts, clack);\n return;\n }\n\n // No template specified: ask what shape to start from before diving into\n // \"which templates?\". The on-ramp choice implies the project structure, so\n // we don't ask a separate \"workspace or standalone?\" question — Chat and\n // Headless scaffold a single standalone app (the lightest starts; headless\n // cannot live in a workspace), while Template continues into the workspace\n // multi-select.\n if (parsed.length === 0) {\n // The deprecated `create-workspace` alias forces workspace semantics, so\n // it must skip the start-shape prompt and scaffold a workspace directly.\n if (opts?.forceWorkspace) {\n await createWorkspaceInteractive(name, opts, clack);\n return;\n }\n const shape = await promptStartShape(clack);\n if (shape === \"headless\" || shape === \"chat\") {\n await createStandaloneApp(name, { ...opts, template: shape }, clack);\n return;\n }\n if (shape === \"community\") {\n const template = await promptCommunityTemplate(clack);\n await createStandaloneApp(name, { ...opts, template }, clack);\n return;\n }\n // shape === \"template\" → full app(s) in a workspace.\n await createWorkspaceInteractive(name, opts, clack);\n return;\n }\n\n // Multiple explicit templates: create a workspace with them.\n await createWorkspaceInteractive(name, opts, clack);\n}\n\n/**\n * Top-level on-ramp shown by the bare `create <name>` command (no flags). The\n * choice made here implies the project structure, so we deliberately avoid a\n * separate \"workspace or standalone?\" question:\n * - \"template\" → full app(s) in a workspace (the multi-select picker)\n * - \"community\" → a single standalone app from a public GitHub repository\n * - \"chat\" → a single standalone chat UI app\n * - \"headless\" → a single standalone action-first app with no UI shell\n * Chat and headless are standalone on purpose: a monorepo is unnecessary\n * ceremony for the lightest on-ramps, and headless cannot be a workspace\n * member. Either can grow into a workspace later via `add-app`.\n */\nasync function promptStartShape(\n clack: typeof import(\"@clack/prompts\"),\n): Promise<\"template\" | \"chat\" | \"community\" | \"headless\"> {\n const choice = await clack.select(startShapePromptOptions());\n if (clack.isCancel(choice)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return choice as \"template\" | \"chat\" | \"community\" | \"headless\";\n}\n\nfunction startShapePromptOptions() {\n return {\n message: \"How do you want to start?\",\n initialValue: \"chat\",\n options: [\n {\n value: \"chat\",\n label: \"Chat\",\n hint: \"A single app with a minimal chat UI and the browser shell wired up\",\n },\n {\n value: \"template\",\n label: \"First-party template(s)\",\n hint: \"Clone official apps (Mail, Calendar, Slides, ...) into a workspace\",\n },\n {\n value: COMMUNITY_OPTION.name,\n label: COMMUNITY_OPTION.label,\n hint: COMMUNITY_OPTION.hint,\n },\n {\n value: \"headless\",\n label: \"Headless\",\n hint: \"A single action-first app with one primitive and no UI shell\",\n },\n ],\n };\n}\n\nasync function promptCommunityTemplate(\n clack: typeof import(\"@clack/prompts\"),\n): Promise<string> {\n const selection = await clack.text({\n message: \"Which community template do you want to install?\",\n placeholder: \"https://github.com/owner/repo[?app=id][#ref]\",\n validate(value) {\n try {\n parseCommunityPromptValue(String(value ?? \"\"));\n } catch (error) {\n return error instanceof Error ? error.message : String(error);\n }\n },\n });\n if (clack.isCancel(selection)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return parseCommunityPromptValue(String(selection)).canonical;\n}\n\ninterface CommunityWorkspaceAppOption {\n name: string;\n label: string;\n}\n\nasync function promptCommunityWorkspaceApp(\n apps: CommunityWorkspaceAppOption[],\n clack: typeof import(\"@clack/prompts\"),\n): Promise<string> {\n const selection = await clack.select({\n message: \"Which app from this community workspace do you want to install?\",\n options: apps.map((app) => ({\n value: app.name,\n label: app.label,\n hint: app.label === app.name ? undefined : app.name,\n })),\n });\n if (clack.isCancel(selection)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return String(selection);\n}\n\nfunction communityScaffoldOptions(\n clack: typeof import(\"@clack/prompts\"),\n shape: \"standalone\" | \"workspace\",\n destinationAppName: string,\n targetWorkspaceCoreName?: string,\n): ScaffoldAppTemplateOptions {\n return {\n shape,\n destinationAppName,\n targetWorkspaceCoreName,\n ...(process.stdin.isTTY && process.stdout.isTTY\n ? {\n selectCommunityWorkspaceApp: (apps: CommunityWorkspaceAppOption[]) =>\n promptCommunityWorkspaceApp(apps, clack),\n }\n : {}),\n };\n}\n\n/**\n * Validate a project name supplied on the command line. Mirrors the rule in\n * `promptNameIfMissing` so an invalid name is rejected before any interactive\n * prompt runs (the sub-flows re-validate, which is a harmless no-op).\n */\nfunction assertValidProjectName(\n name: string,\n clack: typeof import(\"@clack/prompts\"),\n): void {\n if (!/^[a-z][a-z0-9-]*$/.test(name)) {\n clack.cancel(\n `Invalid name \"${name}\". Use lowercase letters, numbers, and hyphens (must start with a letter).`,\n );\n process.exit(1);\n }\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Workspace creation (new default)\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function createWorkspaceInteractive(\n name: string | undefined,\n opts: CreateAppOptions | undefined,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n clack.intro(\"Create a new agent-native workspace\");\n\n name = await promptNameIfMissing(name, clack, \"workspace\", \"my-platform\");\n const preselected = parseTemplateList(opts?.template);\n\n clack.note(\n [\n `You're creating a workspace named \"${name}\". A workspace is a monorepo`,\n \"container — it isn't an app itself. Inside it you pick one or more apps\",\n \"(below), and each app gets its own route, agent, and UI. Apps in the\",\n \"same workspace share auth, database, and the agent chat. Add more apps\",\n \"later with `npx @agent-native/core@latest add-app`. Chat is the UI on-ramp\",\n \"for a minimal chat-first app with the browser shell already wired.\",\n \"Dispatch is always included as the workspace control plane —\",\n \"it owns shared secrets, messaging, approvals, and cross-app routing.\",\n ].join(\"\\n\"),\n \"About workspaces\",\n );\n\n // Dispatch is the workspace control plane (shared secrets, messaging,\n // approvals, cross-app routing) and is always scaffolded — the picker\n // only shows the optional apps. If the user explicitly passed\n // `--template=...`, those entries get unioned with dispatch.\n const optionalPicks =\n preselected.length > 0\n ? preselected.filter((t) => t !== \"dispatch\")\n : await promptTemplatePicker(preselected, clack, {\n defaultTemplates: [\"chat\"],\n preferredFirst: [\"chat\"],\n excludeNames: [\"dispatch\"],\n });\n const templates = [\"dispatch\", ...optionalPicks];\n\n const targetDir = path.resolve(process.cwd(), name);\n if (fs.existsSync(targetDir)) {\n clack.cancel(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n const s = clack.spinner();\n for (const template of templates) {\n showCommunityTemplateTrustNote(template, clack);\n }\n s.start(`Scaffolding workspace \"${name}\"...`);\n const appNames = new Set<string>();\n const scaffoldedApps: string[] = [];\n\n try {\n await scaffoldWorkspaceRoot(targetDir, name);\n const workspaceCoreName = `@${name}/shared`;\n\n for (let i = 0; i < templates.length; i++) {\n const templateName = templates[i];\n const appName = workspaceAppNameForTemplateSelection(templateName);\n validateWorkspaceAppName(appName, clack, {\n allowDispatch: appName === \"dispatch\" && templateName === \"dispatch\",\n });\n if (appNames.has(appName)) {\n clack.cancel(\n `Workspace app \"${appName}\" is selected more than once. Choose unique app templates or app names.`,\n );\n process.exit(1);\n }\n appNames.add(appName);\n scaffoldedApps.push(appName);\n // Distinguish download vs local copy in the spinner so a multi-second\n // GitHub fetch doesn't look like a frozen \"Scaffolding...\" message.\n // Mirrors the local-vs-remote decision inside scaffoldAppTemplate.\n const willDownload =\n templateName !== \"headless\" &&\n (isCommunityTemplateSelection(templateName) ||\n !findLocalTemplate(normalizeTemplateName(templateName)));\n s.message(\n willDownload\n ? `Downloading ${titleCase(appName)} template (${i + 1}/${templates.length})...`\n : `Scaffolding ${titleCase(appName)} (${i + 1}/${templates.length})...`,\n );\n const appDir = path.join(targetDir, \"apps\", appName);\n const resolution = await scaffoldAppTemplate(\n appDir,\n templateName,\n communityScaffoldOptions(\n clack,\n \"workspace\",\n appName,\n workspaceCoreName,\n ),\n );\n s.message(\n `Configuring ${titleCase(appName)} (${i + 1}/${templates.length})...`,\n );\n replacePlaceholders(appDir, appName, appTitleForScaffold(appName), name);\n if (resolution.sourceIdentity) {\n applyScaffoldIdentity(\n appDir,\n appName,\n templateName,\n resolution.sourceIdentity,\n );\n } else {\n rewriteTrackingAppId(appDir, appName, templateName);\n }\n workspacifyApp({\n appDir,\n appName,\n templateName,\n workspaceRoot: targetDir,\n workspaceCoreName,\n coreDependencyVersion: getCoreDependencyVersion(),\n dispatchDependencyVersion: getDispatchDependencyVersion(),\n toolkitDependencyVersion: getToolkitDependencyVersion(),\n });\n fixPackageJsonName(appDir, appName, templateName, {\n ...resolution,\n shape: \"workspace\",\n });\n fixWebManifestName(\n appDir,\n appName,\n templateName,\n resolution.sourceIdentity,\n );\n rewriteNetlifyToml(appDir, appName, \"workspace\");\n renameGitignore(appDir);\n // Each app owns its own .claude / .agents symlinks.\n setupAgentSymlinks(appDir);\n }\n\n s.message(\"Adding shared packages...\");\n await scaffoldRequiredPackages(templates, targetDir);\n\n s.stop(\n `Workspace scaffolded with ${templates.length} app${templates.length === 1 ? \"\" : \"s\"}.`,\n );\n } catch (err: any) {\n s.stop(\"Failed to scaffold workspace.\");\n // Remove the partially-scaffolded workspace so a retry of `agent-native\n // create <name>` doesn't trip the \"Directory already exists\" guard.\n cleanupOnFailure(targetDir);\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n tryGitInit(targetDir);\n\n // Show the user the tree we just built so the workspace/app distinction is\n // visible, not just described. First-time users routinely expect their\n // workspace name to be the app — seeing apps/<template>/ subdirectories\n // makes the structure concrete.\n const treeLines = [\n ` ${name}/ ← your workspace`,\n ...scaffoldedApps.map(\n (appName, i) =>\n ` ${i === scaffoldedApps.length - 1 ? \"└─\" : \"├─\"} apps/${appName}/`.padEnd(\n 30,\n ) + ` ← app`,\n ),\n ];\n const dispatchNextStep = [\n `Once running, open Dispatch — you'll see \"Workspace: ${titleCase(name)}\"`,\n `at the top, with all your apps listed under it.`,\n ];\n\n const installSteps = hasPnpm()\n ? [\n ` pnpm install`,\n ` pnpm dev # starts Dispatch on http://localhost:8092`,\n ]\n : [\n ` # pnpm is required but wasn't found on your PATH. Install it first:`,\n ` npm install -g pnpm`,\n ``,\n ` pnpm install`,\n ` pnpm dev # starts Dispatch on http://localhost:8092`,\n ];\n\n clack.outro(\n [\n `Created workspace \"${name}\" with ${templates.length} app${templates.length === 1 ? \"\" : \"s\"}:`,\n ``,\n ...treeLines,\n ``,\n `Next steps:`,\n ``,\n ` cd ${name}`,\n ...installSteps,\n ``,\n ...dispatchNextStep,\n ``,\n `Add another app later: npx @agent-native/core@latest add-app`,\n `Deploy the whole workspace: pnpm exec agent-native deploy`,\n ].join(\"\\n\"),\n );\n}\n\nfunction workspaceAppNameForTemplateSelection(templateName: string): string {\n const normalized = normalizeTemplateName(templateName);\n const community = parseCommunityTemplateSelection(normalized, false);\n if (!community) return templateName;\n const repoName = community.app ?? community.repo.split(\"/\").pop() ?? \"app\";\n let appName = repoName\n .toLowerCase()\n .replace(/[^a-z0-9-]+/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n if (!appName) appName = \"app\";\n if (!/^[a-z]/.test(appName)) appName = `app-${appName}`;\n return appName;\n}\n\n/**\n * Detect whether pnpm is on PATH. End-user machines often have npm/yarn but\n * not pnpm; the workspace scaffold uses pnpm workspaces, so we surface a\n * specific install hint in the outro when it's missing rather than letting\n * the user hit `zsh: command not found: pnpm`.\n */\nfunction hasPnpm(): boolean {\n try {\n execFileSync(\"pnpm\", [\"--version\"], { stdio: \"ignore\" });\n return true;\n } catch {\n return false;\n }\n}\n\nasync function scaffoldWorkspaceRoot(\n targetDir: string,\n name: string,\n): Promise<void> {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const rootTemplate = path.join(packageRoot, \"src/templates/workspace-root\");\n const coreTemplate = path.join(packageRoot, \"src/templates/workspace-core\");\n\n copyDir(rootTemplate, targetDir);\n replacePlaceholders(targetDir, name, titleCase(name));\n rewriteCoreDependencyVersions(targetDir);\n renameGitignore(targetDir);\n\n // Inject the catalog from this repo's pnpm-workspace.yaml so templates'\n // `catalog:` version references resolve in the scaffolded workspace.\n const catalog = loadCatalog();\n if (Object.keys(catalog).length > 0) {\n const wsPath = path.join(targetDir, \"pnpm-workspace.yaml\");\n const existing = fs.existsSync(wsPath)\n ? fs.readFileSync(wsPath, \"utf-8\")\n : \"\";\n if (!existing.includes(\"catalog:\")) {\n const catalogYaml = Object.entries(catalog)\n .map(([k, v]) => ` \"${k}\": \"${v}\"`)\n .join(\"\\n\");\n fs.writeFileSync(\n wsPath,\n existing.trimEnd() + \"\\ncatalog:\\n\" + catalogYaml + \"\\n\",\n );\n }\n }\n\n applyLocalWorkspaceOverrides(targetDir);\n\n const corePackageDir = path.join(targetDir, \"packages\", \"shared\");\n fs.mkdirSync(path.join(targetDir, \"packages\"), { recursive: true });\n copyDir(coreTemplate, corePackageDir);\n replacePlaceholders(corePackageDir, name, titleCase(name));\n rewriteCoreDependencyVersions(corePackageDir);\n setupAgentSymlinks(corePackageDir);\n\n // Ensure apps/ exists (even if empty).\n fs.mkdirSync(path.join(targetDir, \"apps\"), { recursive: true });\n\n // Root-level agent instructions apply before an agent descends into an app.\n linkWorkspaceRootSkills(targetDir);\n setupAgentSymlinks(targetDir);\n}\n\nfunction linkWorkspaceRootSkills(targetDir: string): void {\n const sharedSkillsDir = path.join(\n targetDir,\n \"packages\",\n \"shared\",\n \".agents\",\n \"skills\",\n );\n if (!fs.existsSync(sharedSkillsDir)) return;\n\n const agentsDir = path.join(targetDir, \".agents\");\n const linkPath = path.join(agentsDir, \"skills\");\n const target = \"../packages/shared/.agents/skills\";\n\n fs.mkdirSync(agentsDir, { recursive: true });\n\n try {\n const stat = fs.lstatSync(linkPath);\n if (stat.isSymbolicLink()) {\n if (fs.readlinkSync(linkPath) === target) return;\n fs.unlinkSync(linkPath);\n } else {\n return;\n }\n } catch {\n // Missing link; create below.\n }\n\n try {\n fs.symlinkSync(\n target,\n linkPath,\n process.platform === \"win32\" ? \"junction\" : \"dir\",\n );\n } catch {\n try {\n copyDir(sharedSkillsDir, linkPath);\n } catch {\n // Best-effort fallback for environments that disallow symlinks.\n }\n }\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Adding an app into an existing workspace\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Entry for `agent-native add-app [name]`. Called from inside a workspace.\n * Shows the multi-select picker (excluding already-installed apps) and\n * scaffolds each selected template under apps/<name>/.\n *\n * When `name` is provided with `--template foo`, scaffolds exactly one app\n * named <name> using template foo (non-interactive).\n */\nexport async function addAppToWorkspace(\n name?: string,\n opts?: CreateAppOptions,\n): Promise<void> {\n const clack = await import(\"@clack/prompts\");\n const workspace = detectWorkspace(process.cwd());\n if (!workspace) {\n clack.cancel(\n \"Not inside a workspace. Run `agent-native create` to make one first, or use `--standalone`.\",\n );\n process.exit(1);\n }\n\n applyLocalWorkspaceOverrides(workspace.workspaceRoot);\n\n clack.intro(\"Add an app to your workspace\");\n\n const installed = listInstalledApps(workspace.workspaceRoot);\n\n // Non-interactive path: name + single --template\n const preselected = parseTemplateList(opts?.template);\n if (preselected.includes(\"headless\")) {\n clack.cancel(\n \"The headless scaffold is standalone-only. Use `agent-native create my-app --headless` outside a workspace, or use the Chat template when adding a UI app to a workspace.\",\n );\n process.exit(1);\n }\n if (name && preselected.length === 1) {\n const tpl = preselected[0];\n await scaffoldOneAppIntoWorkspace(workspace, name, tpl, clack);\n return;\n }\n\n const hasDispatch = installed.includes(\"dispatch\");\n const availableTemplates = coreTemplates().filter(\n (template) => !installed.includes(template.name),\n );\n if (availableTemplates.length === 0) {\n clack.cancel(\"All available apps are already installed.\");\n process.exit(0);\n }\n\n const templates = await promptTemplatePicker(preselected, clack, {\n excludeNames: installed,\n message: \"Which apps do you want to add?\",\n defaultTemplates: hasDispatch ? undefined : [\"dispatch\"],\n preferredFirst: hasDispatch ? [\"chat\"] : [\"dispatch\", \"chat\"],\n recommendedNames: hasDispatch ? [] : [\"dispatch\"],\n });\n if (templates.length === 0) {\n clack.cancel(\n \"No apps selected. Press space to select an app, then press enter to continue.\",\n );\n process.exit(0);\n }\n\n for (const t of templates) {\n await scaffoldOneAppIntoWorkspace(workspace, t, t, clack);\n }\n}\n\nasync function scaffoldOneAppIntoWorkspace(\n workspace: { workspaceRoot: string; workspaceCoreName: string },\n appName: string,\n templateName: string,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n // Dispatch is the one reserved-route exception: the canonical workspace\n // control-plane app intentionally owns /dispatch.\n validateWorkspaceAppName(appName, clack, {\n allowDispatch: appName === \"dispatch\" && templateName === \"dispatch\",\n });\n const appsDir = path.join(workspace.workspaceRoot, \"apps\");\n fs.mkdirSync(appsDir, { recursive: true });\n const appDir = path.join(appsDir, appName);\n\n if (fs.existsSync(appDir)) {\n clack.cancel(`Directory \"apps/${appName}\" already exists.`);\n process.exit(1);\n }\n\n const s = clack.spinner();\n showCommunityTemplateTrustNote(templateName, clack);\n s.start(\n `Working... no action needed. Scaffolding apps/${appName} from ${templateName}.`,\n );\n\n try {\n const resolution = await scaffoldAppTemplate(\n appDir,\n templateName,\n communityScaffoldOptions(\n clack,\n \"workspace\",\n appName,\n workspace.workspaceCoreName,\n ),\n );\n replacePlaceholders(\n appDir,\n appName,\n appTitleForScaffold(appName),\n path.basename(workspace.workspaceRoot),\n );\n if (resolution.sourceIdentity) {\n applyScaffoldIdentity(\n appDir,\n appName,\n templateName,\n resolution.sourceIdentity,\n );\n } else {\n rewriteTrackingAppId(appDir, appName, templateName);\n }\n workspacifyApp({\n appDir,\n appName,\n templateName,\n workspaceRoot: workspace.workspaceRoot,\n workspaceCoreName: workspace.workspaceCoreName,\n coreDependencyVersion: getCoreDependencyVersion(),\n dispatchDependencyVersion: getDispatchDependencyVersion(),\n toolkitDependencyVersion: getToolkitDependencyVersion(),\n });\n fixPackageJsonName(appDir, appName, templateName, {\n ...resolution,\n shape: \"workspace\",\n });\n fixWebManifestName(\n appDir,\n appName,\n templateName,\n resolution.sourceIdentity,\n );\n rewriteNetlifyToml(appDir, appName, \"workspace\");\n renameGitignore(appDir);\n setupAgentSymlinks(appDir);\n await scaffoldRequiredPackages([templateName], workspace.workspaceRoot);\n s.stop(`Scaffolded apps/${appName}.`);\n } catch (err: any) {\n s.stop(`Failed to scaffold apps/${appName}.`);\n cleanupOnFailure(appDir);\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n clack.outro(\n [\n `Done!`,\n ``,\n ` pnpm install`,\n ` pnpm dev`,\n ``,\n `The workspace gateway will detect apps/${appName} and serve it at /${appName}.`,\n ].join(\"\\n\"),\n );\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Standalone creation (escape hatch)\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function createStandaloneApp(\n name: string | undefined,\n opts: CreateAppOptions | undefined,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n clack.intro(\"Create a new standalone agent-native app\");\n\n name = await promptNameIfMissing(name, clack, \"app\", \"my-app\");\n\n const targetDir = path.resolve(process.cwd(), name);\n if (fs.existsSync(targetDir)) {\n clack.cancel(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n // Standalone is single-select — pick one template.\n let template =\n opts?.template && !opts.template.includes(\",\") ? opts.template : undefined;\n if (!template) {\n const picked = await clack.select({\n message: \"Which template would you like to use?\",\n options: standaloneTemplatePromptOptions(),\n });\n if (clack.isCancel(picked)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n template = picked as string;\n }\n template = normalizeTemplateName(template);\n if (template === COMMUNITY_OPTION.name) {\n template = await promptCommunityTemplate(clack);\n }\n\n const s = clack.spinner();\n showCommunityTemplateTrustNote(template, clack);\n s.start(\n template === \"headless\"\n ? \"Scaffolding the headless agent app...\"\n : (communityTemplateDownloadMessage(template) ??\n `Downloading the ${template} template from GitHub...`),\n );\n try {\n const resolution = await scaffoldAppTemplate(\n targetDir,\n template,\n communityScaffoldOptions(clack, \"standalone\", name),\n );\n s.message(`Setting up ${name}…`);\n postProcessStandalone(name, targetDir, template, resolution);\n s.stop(\"App created!\");\n } catch (err: any) {\n s.stop(\"Failed to create app.\");\n cleanupOnFailure(targetDir);\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n tryGitInit(targetDir);\n\n if (template === \"headless\") {\n clack.outro(\n [\n \"Done! Next steps:\",\n \"\",\n ` cd ${name}`,\n \" pnpm install\",\n \" pnpm action hello --name Builder\",\n ` pnpm agent \"Call hello for Builder\"`,\n \"\",\n \"Add a UI later by starting from the Chat template; `agent-native add` is reserved for integration blueprints.\",\n ].join(\"\\n\"),\n );\n } else {\n clack.outro(\n `Done! Next steps:\\n\\n cd ${name}\\n pnpm install\\n pnpm dev`,\n );\n }\n}\n\nfunction standaloneTemplatePromptOptions() {\n return [\n {\n value: HEADLESS_OPTION.name,\n label: HEADLESS_OPTION.label,\n hint: HEADLESS_OPTION.hint,\n },\n ...onRampFirst(coreTemplates())\n .filter((t) => t.name !== HEADLESS_OPTION.name)\n .map((t) => ({\n value: t.name,\n label: t.label,\n hint: t.hint,\n })),\n {\n value: COMMUNITY_OPTION.name,\n label: COMMUNITY_OPTION.label,\n hint: COMMUNITY_OPTION.hint,\n },\n ];\n}\n\n/**\n * Remove a partially-scaffolded target directory after a scaffold failure so a\n * retry doesn't hit the \"Directory already exists\" guard. Best-effort — the\n * underlying failure is what we want surfaced, so we swallow rm errors and\n * skip if the directory is somehow already gone.\n */\nfunction cleanupOnFailure(targetDir: string): void {\n try {\n if (fs.existsSync(targetDir)) {\n fs.rmSync(targetDir, { recursive: true, force: true });\n }\n } catch {\n // Ignore — original error is more useful than a cleanup failure.\n }\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Shared scaffolding helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\n/** Where a scaffolded template's bytes came from, recorded so\n * `agent-native template sync` can reproduce them later. */\nexport interface ScaffoldTemplateResolution {\n templateRef?: string;\n templateSource?: \"github\" | \"bundled\" | \"local-checkout\";\n sourceIdentity?: ScaffoldSourceIdentity;\n communityTemplate?: {\n source: string;\n ref: string;\n app?: string;\n };\n}\n\ninterface ScaffoldSourceIdentity {\n appName: string;\n appTitle: string;\n}\n\ninterface ScaffoldAppTemplateOptions {\n shape?: \"standalone\" | \"workspace\";\n destinationAppName?: string;\n targetWorkspaceCoreName?: string;\n selectCommunityWorkspaceApp?: (\n apps: CommunityWorkspaceAppOption[],\n ) => Promise<string>;\n}\n\nexport interface ScaffoldProvenance extends ScaffoldTemplateResolution {\n shape?: \"workspace\" | \"standalone\";\n}\n\n/**\n * Scaffold a single app template into `targetDir`. Resolves:\n * - \"headless\" / legacy \"blank\" → bundled action-first template\n * - \"community:user/repo[#ref]\" → download and validate the whole repo\n * - legacy \"github:user/repo[#ref]\" and clean GitHub HTTPS URLs → community\n * - first-party template name → use a bundled copy or download its subdir\n * from BuilderIO/agent-native\n */\nasync function scaffoldAppTemplate(\n targetDir: string,\n template: string,\n options: ScaffoldAppTemplateOptions = {},\n): Promise<ScaffoldTemplateResolution> {\n fs.mkdirSync(path.dirname(targetDir), { recursive: true });\n\n // Normalize legacy / renamed aliases.\n let resolved = normalizeTemplateName(template);\n\n if (resolved === \"headless\") {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const headlessDir = path.join(packageRoot, \"src/templates/headless\");\n if (!fs.existsSync(headlessDir)) {\n throw new Error(\n `Headless template not found at ${headlessDir}. Is the package installed correctly?`,\n );\n }\n copyDir(headlessDir, targetDir);\n return {\n templateSource: \"bundled\",\n templateRef: getGitHubTemplateRefCandidates()[0],\n };\n }\n\n const community = parseCommunityTemplateSelection(resolved, false);\n if (community) {\n const stagingDir = path.join(\n path.dirname(targetDir),\n `.agent-native-community-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,\n );\n try {\n const ref = await downloadGitHubRepo(\n community.repo,\n stagingDir,\n community.ref,\n );\n const source = await resolveCommunityTemplateSource(\n stagingDir,\n community,\n options,\n );\n copyDir(source.sourceDir, targetDir);\n if (source.workspaceRoot) {\n normalizeCommunityWorkspaceAppDependencies(\n targetDir,\n source.workspaceRoot,\n {\n shape: options.shape,\n destinationAppName:\n options.destinationAppName ?? path.basename(targetDir),\n targetWorkspaceCoreName: options.targetWorkspaceCoreName,\n sourceIdentity: source.sourceIdentity,\n },\n );\n }\n return {\n templateSource: \"github\",\n templateRef: ref,\n sourceIdentity: source.sourceIdentity,\n communityTemplate: {\n source: `https://github.com/${community.repo}`,\n ref,\n ...(source.app ? { app: source.app } : {}),\n },\n };\n } finally {\n fs.rmSync(stagingDir, { recursive: true, force: true });\n }\n }\n\n if (!getTemplate(resolved)) {\n throw new Error(\n `Unknown template \"${template}\". Known first-party templates: ${allTemplateNames().join(\", \")}. For a community template, use community:owner/repo.`,\n );\n }\n\n // If running from the framework monorepo with a local templates/ dir, use\n // that. Otherwise download from GitHub. This keeps `agent-native create`\n // fast during framework development.\n const sourceTemplate = templateSourceName(resolved);\n const localTemplate = findLocalTemplate(sourceTemplate);\n if (localTemplate) {\n copyDir(localTemplate, targetDir);\n return {\n templateSource: localTemplateSourceKind(localTemplate),\n templateRef: getGitHubTemplateRefCandidates()[0],\n };\n }\n const templateRef = await downloadGitHubSubdir(\n REPO,\n `${TEMPLATES_DIR}/${sourceTemplate}`,\n targetDir,\n );\n return { templateSource: \"github\", templateRef };\n}\n\n/** A template dir inside the installed core package ships with the CLI;\n * anything above it belongs to a framework checkout. */\nfunction localTemplateSourceKind(\n localTemplate: string,\n): \"bundled\" | \"local-checkout\" {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const rel = path.relative(packageRoot, path.resolve(localTemplate));\n return rel && !rel.startsWith(\"..\") && !path.isAbsolute(rel)\n ? \"bundled\"\n : \"local-checkout\";\n}\n\nfunction templateSourceName(name: string): string {\n if (name === \"starter\") return \"chat\";\n return name;\n}\n\n/**\n * Prefer a nearby templates/<name> or src/templates/<name> directory. This\n * covers the framework checkout, the dist/templates copy bundled into\n * published CLI packages, and source templates included in package files;\n * packages that do not bundle a template fall back to GitHub.\n */\nfunction findLocalTemplate(name: string): string | undefined {\n return findLocalTemplateFrom(path.resolve(__dirname), name);\n}\n\nfunction findLocalTemplateFrom(\n startDir: string,\n name: string,\n): string | undefined {\n let dir = path.resolve(startDir);\n for (let i = 0; i < 10; i++) {\n for (const templatesDir of [\"templates\", \"src/templates\"]) {\n const candidate = path.join(dir, templatesDir, name);\n if (fs.existsSync(path.join(candidate, \"package.json\"))) {\n return candidate;\n }\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return undefined;\n}\n\nfunction normalizeTemplateName(template: string): string {\n if (template === \"blank\") return \"headless\";\n if (template === \"image\" || template === \"images\" || template === \"asset\") {\n return \"assets\";\n }\n const community = parseCommunityTemplateSelection(template, false);\n if (community) return community.canonical;\n return template;\n}\n\ninterface CommunityTemplateSelection {\n repo: string;\n app?: string;\n ref?: string;\n canonical: string;\n}\n\nfunction parseCommunityTemplateSelection(\n selection: string,\n): CommunityTemplateSelection;\nfunction parseCommunityTemplateSelection(\n selection: string,\n required: true,\n): CommunityTemplateSelection;\nfunction parseCommunityTemplateSelection(\n selection: string,\n required: false,\n): CommunityTemplateSelection | undefined;\nfunction parseCommunityTemplateSelection(\n selection: string,\n required = true,\n): CommunityTemplateSelection | undefined {\n const value = selection.trim();\n let raw: string | undefined;\n if (value.startsWith(\"community:\")) {\n raw = value.slice(\"community:\".length).trim();\n } else if (value.startsWith(\"github:\")) {\n raw = value.slice(\"github:\".length).trim();\n } else if (value.startsWith(\"https://github.com/\")) {\n raw = value;\n } else {\n if (!required) return undefined;\n throw new ValidationError(\n `Invalid community template \"${selection}\". Use community:owner/repo, optionally with #branch, #tag, or #commit.`,\n );\n }\n\n if (!raw) {\n throw new ValidationError(\n \"A community template repository is required. Use owner/repo or a GitHub URL.\",\n );\n }\n\n let repo: string;\n let app: string | undefined;\n let ref: string | undefined;\n if (raw.includes(\"://\")) {\n let url: URL;\n try {\n url = new URL(raw);\n } catch {\n throw new ValidationError(\n `Invalid GitHub repository URL \"${raw}\". Expected https://github.com/owner/repo.`,\n );\n }\n const parts = url.pathname.split(\"/\").filter(Boolean);\n if (\n url.protocol !== \"https:\" ||\n url.hostname !== \"github.com\" ||\n url.port ||\n url.username ||\n url.password ||\n parts.length !== 2\n ) {\n throw new ValidationError(\n `Invalid GitHub repository URL \"${raw}\". Expected https://github.com/owner/repo with an optional #ref.`,\n );\n }\n repo = `${parts[0]}/${parts[1]!.replace(/\\.git$/, \"\")}`;\n app = parseCommunityAppSearchParams(url.searchParams, raw);\n if (url.hash.length > 1) {\n try {\n ref = decodeURIComponent(url.hash.slice(1));\n } catch {\n throw new ValidationError(`Invalid encoded Git ref in \"${raw}\".`);\n }\n }\n } else {\n const hash = raw.indexOf(\"#\");\n const beforeHash = hash === -1 ? raw : raw.slice(0, hash);\n const query = beforeHash.indexOf(\"?\");\n repo = (query === -1 ? beforeHash : beforeHash.slice(0, query)).replace(\n /\\.git$/,\n \"\",\n );\n if (query !== -1) {\n app = parseCommunityAppSearchParams(\n new URLSearchParams(beforeHash.slice(query + 1)),\n raw,\n );\n }\n ref = hash === -1 ? undefined : raw.slice(hash + 1);\n }\n\n validateRepoName(repo);\n if (app !== undefined) validateCommunityAppSelector(app);\n if (ref !== undefined) validateGitRef(ref);\n return {\n repo,\n ...(app ? { app } : {}),\n ...(ref ? { ref } : {}),\n canonical: `community:${repo}${app ? `?app=${app}` : \"\"}${ref ? `#${ref}` : \"\"}`,\n };\n}\n\nfunction parseCommunityAppSearchParams(\n params: URLSearchParams,\n source: string,\n): string | undefined {\n const entries = [...params.entries()];\n if (entries.length === 0) return undefined;\n if (entries.length !== 1 || entries[0]?.[0] !== \"app\" || !entries[0][1]) {\n throw new ValidationError(\n `Invalid community template selector in \"${source}\". Only ?app=<app-name> is supported.`,\n );\n }\n return entries[0][1];\n}\n\nfunction validateCommunityAppSelector(app: string): void {\n if (app === \"dispatch\") {\n throw new ValidationError(\n \"Dispatch cannot be installed from a community workspace.\",\n );\n }\n const error = getWorkspaceAppIdValidationError(app);\n if (error) throw new ValidationError(error);\n}\n\nfunction isCommunityTemplateSelection(selection: string): boolean {\n return parseCommunityTemplateSelection(selection, false) !== undefined;\n}\n\nfunction parseCommunityPromptValue(value: string): CommunityTemplateSelection {\n const trimmed = value.trim();\n const selection =\n trimmed.startsWith(\"community:\") ||\n trimmed.startsWith(\"github:\") ||\n trimmed.startsWith(\"https://github.com/\")\n ? trimmed\n : `community:${trimmed}`;\n return parseCommunityTemplateSelection(selection);\n}\n\nfunction validateGitRef(ref: string): void {\n if (\n !ref ||\n !/^[a-zA-Z0-9][a-zA-Z0-9._/+-]*$/.test(ref) ||\n ref.includes(\"..\") ||\n ref.includes(\"//\") ||\n ref.includes(\"@{\") ||\n ref.endsWith(\"/\") ||\n ref.endsWith(\".\") ||\n ref.split(\"/\").some((part) => !part || part.endsWith(\".lock\"))\n ) {\n throw new ValidationError(\n `Invalid Git ref \"${ref}\". Use a branch, tag, or commit SHA without spaces or Git ref control characters.`,\n );\n }\n}\n\nfunction communityTemplateTrustMessage(selection: string): string | undefined {\n const community = parseCommunityTemplateSelection(selection, false);\n if (!community) return undefined;\n return [\n `${community.repo} is third-party code and is not reviewed or maintained by Agent Native.`,\n \"The CLI downloads source only; it does not install dependencies or run template scripts.\",\n \"Review the generated files before running pnpm install.\",\n community.ref\n ? `Requested ref: ${community.ref}`\n : \"No ref supplied; the CLI will try main, then master.\",\n ].join(\"\\n\");\n}\n\nfunction communityTemplateDownloadMessage(\n selection: string,\n): string | undefined {\n const community = parseCommunityTemplateSelection(selection, false);\n return community\n ? `Downloading community template ${community.repo} from GitHub...`\n : undefined;\n}\n\nfunction showCommunityTemplateTrustNote(\n selection: string,\n clack: typeof import(\"@clack/prompts\"),\n): void {\n const message = communityTemplateTrustMessage(selection);\n if (message) clack.note(message, \"Community template — review before use\");\n}\n\n/**\n * Find a local packages/<name> directory (for framework development).\n * Returns undefined when running as a published npm package.\n */\nfunction findLocalPackage(name: string): string | undefined {\n let dir = path.resolve(__dirname);\n for (let i = 0; i < 10; i++) {\n const candidate = path.join(dir, \"packages\", name);\n if (fs.existsSync(path.join(candidate, \"package.json\"))) {\n return candidate;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return undefined;\n}\n\n/**\n * Pack a local framework package before linking it into a generated app.\n * Raw file: dependencies retain workspace-only catalog references, while a\n * packed artifact has the publish-ready manifest that consumers receive.\n */\nfunction localPackageTarball(packageDir: string): string {\n const cached = localPackageTarballs.get(packageDir);\n if (cached) return cached;\n\n const packDir = fs.mkdtempSync(\n path.join(os.tmpdir(), \"agent-native-local-package-\"),\n );\n const pnpm = process.platform === \"win32\" ? \"pnpm.cmd\" : \"pnpm\";\n execFileSync(pnpm, [\"pack\", \"--pack-destination\", packDir], {\n cwd: packageDir,\n encoding: \"utf-8\",\n env: { ...process.env, npm_config_ignore_scripts: \"true\" },\n stdio: \"pipe\",\n });\n\n const tarballs = fs\n .readdirSync(packDir)\n .filter((entry) => entry.endsWith(\".tgz\"));\n if (tarballs.length !== 1) {\n throw new Error(\n `Expected one packed local package artifact in ${packDir}, found ${tarballs.length}.`,\n );\n }\n\n const tarball = pathToFileURL(path.join(packDir, tarballs[0]!)).href;\n localPackageTarballs.set(packageDir, tarball);\n return tarball;\n}\n\n/**\n * Scaffold internal workspace packages required by the selected templates.\n * Deduplicates so each package is only copied once even if multiple\n * templates need it.\n */\nasync function scaffoldRequiredPackages(\n templateNames: string[],\n workspaceRoot: string,\n): Promise<void> {\n const needed = new Set<string>();\n for (const t of templateNames) {\n const meta = getTemplate(t);\n if (meta?.requiredPackages) {\n for (const p of meta.requiredPackages) needed.add(p);\n }\n }\n\n for (const pkgName of needed) {\n const targetDir = path.join(workspaceRoot, \"packages\", pkgName);\n if (fs.existsSync(targetDir)) continue;\n\n fs.mkdirSync(path.join(workspaceRoot, \"packages\"), { recursive: true });\n\n const localPkg = findLocalPackage(pkgName);\n if (localPkg) {\n copyDir(localPkg, targetDir);\n } else {\n await downloadGitHubSubdir(REPO, `packages/${pkgName}`, targetDir);\n }\n\n // The copied package may have published framework packages as workspace:*\n // deps. Convert them to published ranges because these package-backed\n // modules are npm dependencies, not scaffolded workspace members.\n const pkgJsonPath = path.join(targetDir, \"package.json\");\n if (fs.existsSync(pkgJsonPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n if (\n typeof val === \"string\" &&\n val.startsWith(\"workspace:\") &&\n key === \"@agent-native/core\"\n ) {\n deps[key] = getCoreDependencyVersion();\n }\n if (\n typeof val === \"string\" &&\n val.startsWith(\"workspace:\") &&\n key === \"@agent-native/toolkit\"\n ) {\n deps[key] = getToolkitDependencyVersion();\n }\n }\n }\n // These packages' `exports` maps point at `./dist/*`, and `dist/` is\n // gitignored (never committed), so a scaffolded workspace must build\n // it on install. pnpm always runs `prepare` for workspace packages,\n // unlike `postinstall`, so this is the reliable hook.\n if (\n pkg.scripts &&\n typeof pkg.scripts.build === \"string\" &&\n !pkg.scripts.prepare\n ) {\n pkg.scripts.prepare = \"npm run build\";\n }\n fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n }\n }\n\n // Add a postinstall script to build workspace packages so their dist/\n // directories exist even when downloaded from GitHub (where dist/ is\n // gitignored).\n if (needed.size > 0) {\n const rootPkgPath = path.join(workspaceRoot, \"package.json\");\n if (fs.existsSync(rootPkgPath)) {\n try {\n const rootPkg = JSON.parse(fs.readFileSync(rootPkgPath, \"utf-8\"));\n rootPkg.scripts = rootPkg.scripts ?? {};\n const builds = [...needed]\n .map((n) => `pnpm --filter ./packages/${n} build`)\n .join(\" && \");\n const existing = rootPkg.scripts.postinstall;\n if (existing) {\n if (!existing.includes(builds)) {\n rootPkg.scripts.postinstall = `${existing} && ${builds}`;\n }\n } else {\n rootPkg.scripts.postinstall = builds;\n }\n fs.writeFileSync(rootPkgPath, JSON.stringify(rootPkg, null, 2) + \"\\n\");\n } catch {}\n }\n }\n}\n\n/**\n * Post-process a standalone scaffold: replace placeholders, strip\n * workspace:* deps, set up agent symlinks, etc.\n */\nfunction postProcessStandalone(\n name: string,\n targetDir: string,\n templateName?: string,\n resolution?: ScaffoldTemplateResolution,\n): void {\n const appTitle = appTitleForScaffold(name);\n replacePlaceholders(targetDir, name, appTitle);\n applyScaffoldIdentity(\n targetDir,\n name,\n templateName,\n resolution?.sourceIdentity,\n );\n fixPackageJsonName(targetDir, name, templateName, {\n ...resolution,\n shape: \"standalone\",\n });\n fixWebManifestName(targetDir, name, templateName, resolution?.sourceIdentity);\n rewriteNetlifyToml(targetDir, name, \"standalone\");\n\n for (const base of [\"learnings\"]) {\n const defaultsFile = path.join(targetDir, `${base}.defaults.md`);\n const targetFile = path.join(targetDir, `${base}.md`);\n if (fs.existsSync(defaultsFile) && !fs.existsSync(targetFile)) {\n fs.copyFileSync(defaultsFile, targetFile);\n }\n }\n\n renameGitignore(targetDir);\n\n // No monorepo-only files to drop for standalone scaffolds.\n // DEVELOPING.md is intentionally kept: it documents local run commands,\n // DATABASE_URL defaults, and other local-run instructions that are equally\n // valid for standalone apps.\n\n // Resolve workspace:* and catalog: deps for standalone projects.\n // catalog: references only resolve inside a pnpm workspace with a catalog\n // defined in pnpm-workspace.yaml — standalone scaffolds don't have one.\n const catalog = loadCatalog();\n const pkgPath = path.join(targetDir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n const exactOverride = STANDALONE_EXACT_DEPENDENCY_OVERRIDES[key];\n if (exactOverride) {\n deps[key] = exactOverride;\n } else if (key === \"@agent-native/core\") {\n deps[key] = getCoreDependencyVersion();\n } else if (key === \"@agent-native/toolkit\") {\n deps[key] = getToolkitDependencyVersion();\n } else if (typeof val === \"string\" && val.startsWith(\"workspace:\")) {\n deps[key] = \"latest\";\n } else if (typeof val === \"string\" && val === \"catalog:\") {\n deps[key] = catalog[key] ?? \"latest\";\n }\n }\n }\n // Ensure pnpm.onlyBuiltDependencies is set so native packages\n // (better-sqlite3, esbuild, node-pty) compile their postinstall scripts\n // under pnpm 10+ without prompting for `pnpm approve-builds`.\n pkg.dependencies = pkg.dependencies ?? {};\n pkg.dependencies.postgres ??= POSTGRES_DEPENDENCY_VERSION;\n ensureReactRouterBuildDependencies(pkg);\n\n const requiredBuilt = [\"better-sqlite3\", \"esbuild\", \"node-pty\"];\n if (!pkg.pnpm || typeof pkg.pnpm !== \"object\") {\n pkg.pnpm = {};\n }\n const existing = Array.isArray(pkg.pnpm.onlyBuiltDependencies)\n ? pkg.pnpm.onlyBuiltDependencies\n : [];\n pkg.pnpm.onlyBuiltDependencies = Array.from(\n new Set([...existing, ...requiredBuilt]),\n );\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n }\n\n // Write pnpm-workspace.yaml for pnpm v11 compatibility. pnpm v11 no longer\n // reads the pnpm field in package.json, so allowBuilds and overrides must\n // live here. Merge into any existing file (e.g. from the default template)\n // without creating duplicate section headers.\n const wsPath = path.join(targetDir, \"pnpm-workspace.yaml\");\n try {\n const existing = fs.existsSync(wsPath)\n ? fs.readFileSync(wsPath, \"utf-8\")\n : \"\";\n const sections: Record<string, Record<string, string>> = {\n allowBuilds: {\n \"better-sqlite3\": \"true\",\n esbuild: \"true\",\n \"node-pty\": \"true\",\n },\n };\n if (templateName !== \"headless\") {\n sections.overrides = {\n '\"@assistant-ui/store\"': '\">=0.2.9 <0.2.14\"',\n '\"@assistant-ui/tap\"': '\"^0.5.14\"',\n nf3: '\"0.3.17\"',\n };\n }\n const localToolkit = localToolkitOverride();\n if (localToolkit) {\n sections.overrides ??= {};\n sections.overrides['\"@agent-native/toolkit\"'] =\n JSON.stringify(localToolkit);\n }\n const localRecapCli = localRecapCliOverride();\n if (localRecapCli) {\n sections.overrides ??= {};\n sections.overrides['\"@agent-native/recap-cli\"'] =\n JSON.stringify(localRecapCli);\n }\n let updated = mergeWorkspaceYamlSections(existing, sections);\n updated = mergeWorkspaceYamlListItems(\n updated,\n \"minimumReleaseAgeExclude\",\n MINIMUM_RELEASE_AGE_EXCLUDES,\n );\n if (updated !== existing) {\n fs.writeFileSync(wsPath, updated);\n }\n } catch {}\n\n fixStandaloneTsconfig(targetDir, templateName);\n\n setupAgentSymlinks(targetDir);\n}\n\nfunction ensureReactRouterBuildDependencies(pkg: Record<string, any>): void {\n const allDeps = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n ...pkg.peerDependencies,\n };\n if (\n !allDeps[\"@react-router/dev\"] &&\n !allDeps[\"react-router\"] &&\n !allDeps[\"@react-router/fs-routes\"]\n ) {\n return;\n }\n\n pkg.dependencies = pkg.dependencies ?? {};\n for (const key of REACT_ROUTER_BUILD_DEPENDENCIES) {\n const existing =\n pkg.dependencies[key] ??\n pkg.devDependencies?.[key] ??\n pkg.peerDependencies?.[key];\n if (!existing) continue;\n pkg.dependencies[key] =\n STANDALONE_EXACT_DEPENDENCY_OVERRIDES[key] ?? existing;\n delete pkg.devDependencies?.[key];\n delete pkg.peerDependencies?.[key];\n }\n}\n\nfunction fixStandaloneTsconfig(targetDir: string, templateName?: string): void {\n const tsconfigPath = path.join(targetDir, \"tsconfig.json\");\n if (!fs.existsSync(tsconfigPath)) return;\n try {\n const tsconfig = JSON.parse(fs.readFileSync(tsconfigPath, \"utf-8\")) as {\n compilerOptions?: Record<string, unknown>;\n };\n tsconfig.compilerOptions ??= {};\n const hasUiApp =\n templateName !== \"headless\" && fs.existsSync(path.join(targetDir, \"app\"));\n const paths = {\n ...((tsconfig.compilerOptions.paths as Record<string, string[]>) ?? {}),\n };\n paths[\"*\"] ??= [\"./*\"];\n if (hasUiApp) {\n paths[\"@/*\"] ??= [\"./app/*\"];\n paths[\"@shared/*\"] ??= [\"./shared/*\"];\n }\n // baseUrl is deprecated/errors in TS 6 (TS5101/TS5102) and removed in TS 7\n // (tsc, which CI runs). paths already resolve relative to this tsconfig,\n // and the \"*\": [\"./*\"] entry replaces baseUrl's bare-specifier resolution,\n // so never emit baseUrl into scaffolds.\n delete tsconfig.compilerOptions.baseUrl;\n tsconfig.compilerOptions.paths = paths;\n fs.writeFileSync(tsconfigPath, `${JSON.stringify(tsconfig, null, 2)}\\n`);\n } catch {}\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Prompting helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function promptNameIfMissing(\n name: string | undefined,\n clack: typeof import(\"@clack/prompts\"),\n kind: \"workspace\" | \"app\",\n placeholder: string,\n): Promise<string> {\n if (name) {\n if (!/^[a-z][a-z0-9-]*$/.test(name)) {\n clack.cancel(\n `Invalid ${kind} name \"${name}\". Use lowercase letters, numbers, and hyphens.`,\n );\n process.exit(1);\n }\n return name;\n }\n const result = await clack.text({\n message: `What is your ${kind} name?`,\n placeholder,\n validate(value) {\n if (!value)\n return `${kind[0].toUpperCase() + kind.slice(1)} name is required`;\n if (!/^[a-z][a-z0-9-]*$/.test(value)) {\n return \"Use lowercase letters, numbers, and hyphens (must start with a letter)\";\n }\n if (fs.existsSync(path.resolve(process.cwd(), value))) {\n return `Directory \"${value}\" already exists`;\n }\n },\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return result as string;\n}\n\nasync function promptTemplatePicker(\n preselected: string[],\n clack: typeof import(\"@clack/prompts\"),\n opts?: {\n defaultTemplates?: string[];\n excludeNames?: string[];\n message?: string;\n preferredFirst?: string[];\n recommendedNames?: string[];\n },\n): Promise<string[]> {\n const excluded = new Set(opts?.excludeNames ?? []);\n const orderedTemplates = opts?.preferredFirst\n ? moveTemplatesToFront(coreTemplates(), opts.preferredFirst)\n : onRampFirst(coreTemplates());\n const recommendedNames = new Set(opts?.recommendedNames ?? []);\n const options = orderedTemplates\n .filter((t) => !excluded.has(t.name))\n .map((t) => ({\n value: t.name,\n label: recommendedNames.has(t.name)\n ? `${t.label} (recommended)`\n : t.label,\n hint:\n recommendedNames.has(t.name) && t.name === \"dispatch\"\n ? \"Recommended workspace control plane: secrets, messaging, approvals, and A2A delegation\"\n : t.hint,\n }));\n\n // If there's nothing left to pick, the caller gets an empty selection —\n // they decide how to handle it.\n if (options.length === 0) return [];\n\n // Default pre-selection: what the user passed via --template, falling\n // back to caller defaults, then to \"chat\" when available.\n const defaults =\n preselected.length > 0\n ? preselected.filter((p) => options.some((o) => o.value === p))\n : opts?.defaultTemplates\n ? opts.defaultTemplates.filter((p) =>\n options.some((o) => o.value === p),\n )\n : options.some((o) => o.value === \"chat\")\n ? [\"chat\"]\n : [];\n\n const baseMessage = opts?.message ?? \"Which apps would you like to include?\";\n const result = await clack.multiselect({\n message: `${baseMessage}\\n (↑/↓ move · space to toggle · enter to confirm)`,\n options,\n initialValues: defaults,\n required: false,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return result as string[];\n}\n\nfunction parseTemplateList(input?: string): string[] {\n if (!input) return [];\n return input\n .split(\",\")\n .map((s) => normalizeTemplateName(s.trim()))\n .filter(Boolean);\n}\n\nfunction listInstalledApps(workspaceRoot: string): string[] {\n const appsDir = path.join(workspaceRoot, \"apps\");\n if (!fs.existsSync(appsDir)) return [];\n return fs\n .readdirSync(appsDir, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Workspace detection\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Walk up from startDir looking for a package.json with\n * `agent-native.workspaceCore` set. Returns the workspace root and core\n * package name, or null if not inside a workspace.\n */\nexport function detectWorkspace(\n startDir: string,\n): { workspaceRoot: string; workspaceCoreName: string } | null {\n let dir = path.resolve(startDir);\n for (let i = 0; i < 20; i++) {\n const pkgPath = path.join(dir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n const wsCore = pkg?.[\"agent-native\"]?.workspaceCore;\n if (typeof wsCore === \"string\" && wsCore.length > 0) {\n return { workspaceRoot: dir, workspaceCoreName: wsCore };\n }\n } catch {}\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\nexport { parseWorkspaceScope };\n\n/** @internal — exported for E2E tests */\nexport {\n scaffoldWorkspaceRoot as _scaffoldWorkspaceRoot,\n scaffoldAppTemplate as _scaffoldAppTemplate,\n scaffoldRequiredPackages as _scaffoldRequiredPackages,\n postProcessStandalone as _postProcessStandalone,\n loadCatalog as _loadCatalog,\n fixPackageJsonName as _fixPackageJsonName,\n renameGitignore as _renameGitignore,\n rewriteNetlifyToml as _rewriteNetlifyToml,\n getCoreDependencyVersion as _getCoreDependencyVersion,\n getDispatchDependencyVersion as _getDispatchDependencyVersion,\n getToolkitDependencyVersion as _getToolkitDependencyVersion,\n getCorePackageVersion as _getCorePackageVersion,\n getGitHubTemplateRef as _getGitHubTemplateRef,\n getGitHubTemplateRefCandidates as _getGitHubTemplateRefCandidates,\n githubTarballUrl as _githubTarballUrl,\n findLocalTemplateFrom as _findLocalTemplateFrom,\n workspaceAppNameForTemplateSelection as _workspaceAppNameForTemplateSelection,\n startShapePromptOptions as _startShapePromptOptions,\n standaloneTemplatePromptOptions as _standaloneTemplatePromptOptions,\n parseCommunityTemplateSelection as _parseCommunityTemplateSelection,\n communityTemplateTrustMessage as _communityTemplateTrustMessage,\n communityTemplateTarballUrl as _communityTemplateTarballUrl,\n assertCommunityTemplateRoot as _assertCommunityTemplateRoot,\n assertSafeCommunityArchiveListing as _assertSafeCommunityArchiveListing,\n validateCommunityArchive as _validateCommunityArchive,\n resolveCommunityTemplateSource as _resolveCommunityTemplateSource,\n discoverCommunityWorkspaceApps as _discoverCommunityWorkspaceApps,\n normalizeCommunityWorkspaceAppDependencies as _normalizeCommunityWorkspaceAppDependencies,\n shouldSkipScaffoldEntry as _shouldSkipScaffoldEntry,\n tarExtractArgs as _tarExtractArgs,\n downloadGitHubSubdir as _downloadGitHubSubdir,\n findLocalTemplate as _findLocalTemplate,\n templateSourceName as _templateSourceName,\n normalizeTemplateName as _normalizeTemplateName,\n appTitleForScaffold as _appTitleForScaffold,\n replacePlaceholders as _replacePlaceholders,\n rewriteTrackingAppId as _rewriteTrackingAppId,\n rewriteAgentChatAppId as _rewriteAgentChatAppId,\n applyScaffoldIdentity as _applyScaffoldIdentity,\n fixWebManifestName as _fixWebManifestName,\n copyDir as _copyDir,\n localTemplateSourceKind as _localTemplateSourceKind,\n REPO as _REPO,\n TEMPLATES_DIR as _TEMPLATES_DIR,\n};\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Download / copy helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\nfunction validateRepoName(repo: string): void {\n const parts = repo.split(\"/\");\n if (\n !/^[a-zA-Z0-9_.-]+\\/[a-zA-Z0-9_.-]+$/.test(repo) ||\n parts.some((part) => part === \".\" || part === \"..\")\n ) {\n throw new ValidationError(\n `Invalid repository name \"${repo}\". Expected format: user/repo`,\n );\n }\n}\n\nfunction tarExtractArgs(\n tarPath: string,\n destDir: string,\n options: {\n skipAgentSymlinks?: boolean;\n untrustedCommunityArchive?: boolean;\n } = {},\n): string[] {\n const excludes = options.skipAgentSymlinks\n ? FIRST_PARTY_TARBALL_SYMLINK_EXCLUDES.flatMap((pattern) => [\n \"--exclude\",\n pattern,\n ])\n : [];\n const safeOwnership = options.untrustedCommunityArchive\n ? [\"--no-same-owner\", \"--no-same-permissions\"]\n : [];\n return [\n \"xzf\",\n tarPath,\n \"--strip-components=1\",\n ...safeOwnership,\n ...excludes,\n \"-C\",\n destDir,\n ];\n}\n\nfunction execFileBuffer(\n command: string,\n args: string[],\n options: { maxBuffer: number },\n): Promise<Buffer> {\n return new Promise((resolve, reject) => {\n execFile(\n command,\n args,\n { ...options, encoding: \"buffer\" },\n (error, stdout, stderr) => {\n if (error) {\n const detail = stderr?.toString().trim();\n if (detail) error.message = `${error.message}: ${detail}`;\n reject(error);\n return;\n }\n resolve(Buffer.isBuffer(stdout) ? stdout : Buffer.from(stdout));\n },\n );\n });\n}\n\nasync function downloadAndExtract(\n url: string,\n destDir: string,\n options: {\n skipAgentSymlinks?: boolean;\n untrustedCommunityArchive?: boolean;\n } = {},\n): Promise<void> {\n fs.mkdirSync(destDir, { recursive: true });\n // --fail-with-body so curl exits non-zero on HTTP 4xx/5xx instead of writing\n // the error body (HTML/JSON) to disk where tar then fails with the opaque\n // \"Unrecognized archive format\" message.\n // Keep this asynchronous: a synchronous curl blocks the event loop, which\n // makes the create command's spinner look frozen during the GitHub fetch.\n const tarball = await execFileBuffer(\n \"curl\",\n [\n \"--fail-with-body\",\n \"--connect-timeout\",\n \"10\",\n \"--max-time\",\n \"120\",\n \"-sSL\",\n url,\n ],\n { maxBuffer: 100 * 1024 * 1024 },\n );\n const tarPath = path.join(destDir, \".download.tar.gz\");\n fs.writeFileSync(tarPath, tarball);\n try {\n if (options.untrustedCommunityArchive) {\n validateCommunityArchive(tarPath);\n }\n execFileSync(\"tar\", tarExtractArgs(tarPath, destDir, options), {\n stdio: \"pipe\",\n });\n } finally {\n fs.unlinkSync(tarPath);\n }\n}\n\nfunction validateCommunityArchive(tarPath: string): void {\n const listing = execFileSync(\"tar\", [\"tvzf\", tarPath], {\n encoding: \"utf-8\",\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n assertSafeCommunityArchiveListing(listing);\n}\n\nfunction assertSafeCommunityArchiveListing(listing: string): void {\n const unsafeEntry = listing.split(/\\r?\\n/).find((line) => {\n if (line.startsWith(\"h\")) return true;\n if (!line.startsWith(\"l\")) return false;\n return !isCanonicalAgentSymlinkListing(line);\n });\n if (unsafeEntry) {\n throw new ValidationError(\n \"Community template archives may only contain Agent Native's canonical internal symlinks (CLAUDE.md and .claude/skills). Remove other symbolic or hard links and try again.\",\n );\n }\n}\n\nfunction isCanonicalAgentSymlinkListing(line: string): boolean {\n const match = line.match(/\\s(\\S+)\\s+->\\s+(\\S+)\\s*$/);\n if (!match) return false;\n const archivePath = match[1]!;\n const target = match[2]!;\n const parts = archivePath.split(\"/\");\n if (\n parts.some(\n (part) => !part || part === \".\" || part === \"..\" || part.includes(\"\\\\\"),\n )\n ) {\n return false;\n }\n return (\n (parts.at(-1) === \"CLAUDE.md\" && target === \"AGENTS.md\") ||\n (parts.at(-2) === \".claude\" &&\n parts.at(-1) === \"skills\" &&\n target === \"../.agents/skills\")\n );\n}\n\n/** Resolves to the ref that actually succeeded so callers can record it. */\nasync function downloadGitHubSubdir(\n repo: string,\n subdir: string,\n targetDir: string,\n refOverride?: string[],\n): Promise<string> {\n validateRepoName(repo);\n const refs = refOverride?.length\n ? refOverride\n : getGitHubTemplateRefCandidates();\n if (refs.length === 0) {\n throw new Error(\n \"Cannot download first-party scaffold files without a versioned @agent-native/core package.\",\n );\n }\n const errors: string[] = [];\n for (const ref of refs) {\n const tarUrl = githubTarballUrl(repo, ref, \"tag\");\n const tmpDir = path.join(\n targetDir,\n \"..\",\n `.agent-native-tmp-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,\n );\n try {\n await downloadAndExtract(tarUrl, tmpDir, {\n skipAgentSymlinks: repo === REPO,\n });\n const srcDir = path.join(tmpDir, subdir);\n if (!fs.existsSync(srcDir)) {\n throw new Error(\n `Template directory \"${subdir}\" not found at ref \"${ref}\".`,\n );\n }\n copyDir(srcDir, targetDir);\n return ref;\n } catch (err) {\n errors.push(\n ` ${ref}: ${err instanceof Error ? err.message.split(\"\\n\")[0] : String(err)}`,\n );\n } finally {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n }\n }\n throw new Error(\n `Failed to download templates from ${repo}. Tried refs:\\n${errors.join(\"\\n\")}`,\n );\n}\n\nasync function downloadGitHubRepo(\n repo: string,\n targetDir: string,\n requestedRef?: string,\n): Promise<string> {\n validateRepoName(repo);\n const refs = requestedRef ? [requestedRef] : [\"main\", \"master\"];\n const errors: string[] = [];\n for (const ref of refs) {\n try {\n await downloadAndExtract(\n communityTemplateTarballUrl(repo, ref),\n targetDir,\n { untrustedCommunityArchive: true },\n );\n return ref;\n } catch (error) {\n errors.push(\n ` ${ref}: ${error instanceof Error ? error.message.split(\"\\n\")[0] : String(error)}`,\n );\n cleanupOnFailure(targetDir);\n }\n }\n throw new Error(\n `Failed to download community template ${repo}. Tried refs:\\n${errors.join(\"\\n\")}\\nThe repository must be public, and the requested branch, tag, or commit must exist.`,\n );\n}\n\nfunction communityTemplateTarballUrl(repo: string, ref: string): string {\n return `https://codeload.github.com/${repo}/tar.gz/${encodeURIComponent(ref)}`;\n}\n\nfunction assertCommunityTemplateRoot(targetDir: string, repo: string): void {\n const packagePath = path.join(targetDir, \"package.json\");\n if (!fs.existsSync(packagePath)) {\n throw new ValidationError(\n `Community template ${repo} is not an Agent Native app at the repository root: package.json was not found. Point to a repository whose root is the app.`,\n );\n }\n\n let pkg: Record<string, unknown>;\n try {\n pkg = JSON.parse(fs.readFileSync(packagePath, \"utf-8\"));\n } catch {\n throw new ValidationError(\n `Community template ${repo} has an unreadable package.json at the repository root.`,\n );\n }\n const dependencyGroups = [\n pkg.dependencies,\n pkg.devDependencies,\n pkg.peerDependencies,\n ];\n const usesAgentNativeCore = dependencyGroups.some(\n (group) =>\n group !== null &&\n typeof group === \"object\" &&\n !Array.isArray(group) &&\n typeof (group as Record<string, unknown>)[\"@agent-native/core\"] ===\n \"string\",\n );\n if (!usesAgentNativeCore) {\n throw new ValidationError(\n `Community template ${repo} is not an Agent Native app at the repository root. Its package.json must directly depend on @agent-native/core in dependencies, devDependencies, or peerDependencies.`,\n );\n }\n}\n\ninterface ResolvedCommunityTemplateSource {\n sourceDir: string;\n sourceIdentity: ScaffoldSourceIdentity;\n app?: string;\n workspaceRoot?: string;\n}\n\nasync function resolveCommunityTemplateSource(\n stagingDir: string,\n selection: CommunityTemplateSelection,\n options: ScaffoldAppTemplateOptions = {},\n): Promise<ResolvedCommunityTemplateSource> {\n const rootPkg = readPackageJsonObject(path.join(stagingDir, \"package.json\"));\n const agentNative =\n rootPkg?.[\"agent-native\"] &&\n typeof rootPkg[\"agent-native\"] === \"object\" &&\n !Array.isArray(rootPkg[\"agent-native\"])\n ? (rootPkg[\"agent-native\"] as Record<string, unknown>)\n : undefined;\n const hasWorkspaceCoreMarker =\n agentNative && Object.hasOwn(agentNative, \"workspaceCore\");\n const workspaceCore = agentNative?.workspaceCore;\n if (\n hasWorkspaceCoreMarker &&\n (typeof workspaceCore !== \"string\" || !workspaceCore.trim())\n ) {\n throw new ValidationError(\n `Community repository ${selection.repo} has invalid agent-native.workspaceCore metadata. Expected a non-empty workspace package name.`,\n );\n }\n const isWorkspace = typeof workspaceCore === \"string\";\n\n if (!isWorkspace) {\n assertCommunityTemplateRoot(stagingDir, selection.repo);\n const sourceIdentity = readCommunitySourceIdentity(\n stagingDir,\n selection.repo,\n );\n if (selection.app) {\n throw new ValidationError(\n `Community repository ${selection.repo} is a single app at its root. Remove ?app=${selection.app}; app selectors are only for workspace repositories.`,\n );\n }\n return { sourceDir: stagingDir, sourceIdentity };\n }\n\n const workspaceApps = discoverCommunityWorkspaceApps(stagingDir);\n if (workspaceApps.length === 0) {\n throw new ValidationError(\n `Community workspace ${selection.repo} has no installable apps. Dispatch cannot be installed from a community workspace, and apps must directly depend on @agent-native/core.`,\n );\n }\n\n let selectedApp = selection.app;\n if (!selectedApp) {\n if (!options.selectCommunityWorkspaceApp) {\n throw new ValidationError(\n `Community workspace ${selection.repo} requires an app selection, but no interactive terminal is available. Select one with ?app=<app-name>. Available apps: ${workspaceApps.map((app) => app.name).join(\", \")}.`,\n );\n } else {\n selectedApp = await options.selectCommunityWorkspaceApp(\n workspaceApps.map(({ name, label }) => ({ name, label })),\n );\n validateCommunityAppSelector(selectedApp);\n }\n }\n const selected = workspaceApps.find((app) => app.name === selectedApp);\n if (!selected) {\n throw new ValidationError(\n `App \"${selectedApp}\" was not found in community workspace ${selection.repo}. Available apps: ${workspaceApps.map((app) => app.name).join(\", \")}.`,\n );\n }\n return {\n sourceDir: selected.dir,\n sourceIdentity: selected.sourceIdentity,\n app: selected.name,\n workspaceRoot: stagingDir,\n };\n}\n\ninterface DiscoveredCommunityWorkspaceApp extends CommunityWorkspaceAppOption {\n dir: string;\n sourceIdentity: ScaffoldSourceIdentity;\n}\n\nfunction discoverCommunityWorkspaceApps(\n workspaceRoot: string,\n): DiscoveredCommunityWorkspaceApp[] {\n const appsDir = path.join(workspaceRoot, \"apps\");\n if (!fs.existsSync(appsDir)) return [];\n return fs\n .readdirSync(appsDir, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .flatMap((entry): DiscoveredCommunityWorkspaceApp[] => {\n const appDir = path.join(appsDir, entry.name);\n const packagePath = path.join(appDir, \"package.json\");\n if (!fs.existsSync(packagePath)) return [];\n const pkg = readPackageJsonObject(packagePath);\n if (!pkg) {\n throw new ValidationError(\n `Community workspace app \"${entry.name}\" has an unreadable package.json.`,\n );\n }\n if (getWorkspaceAppIdValidationError(entry.name)) return [];\n if (!packageDirectlyDependsOnAgentNativeCore(pkg)) return [];\n const sourceIdentity = readCommunitySourceIdentity(\n appDir,\n `${path.basename(workspaceRoot)}/${entry.name}`,\n );\n const packageName =\n sourceIdentity.appName.split(\"/\").pop() ?? sourceIdentity.appName;\n if (packageName === \"dispatch\") return [];\n return [\n {\n name: entry.name,\n label: sourceIdentity.appTitle,\n dir: appDir,\n sourceIdentity,\n },\n ];\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n}\n\nfunction readPackageJsonObject(\n packagePath: string,\n): Record<string, unknown> | undefined {\n try {\n const value = JSON.parse(fs.readFileSync(packagePath, \"utf-8\"));\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? value\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction packageDirectlyDependsOnAgentNativeCore(\n pkg: Record<string, unknown>,\n): boolean {\n return [pkg.dependencies, pkg.devDependencies, pkg.peerDependencies].some(\n (group) =>\n group !== null &&\n typeof group === \"object\" &&\n !Array.isArray(group) &&\n typeof (group as Record<string, unknown>)[\"@agent-native/core\"] ===\n \"string\",\n );\n}\n\nfunction normalizeCommunityWorkspaceAppDependencies(\n appDir: string,\n sourceWorkspaceRoot: string,\n options: {\n shape?: \"standalone\" | \"workspace\";\n destinationAppName: string;\n targetWorkspaceCoreName?: string;\n sourceIdentity: ScaffoldSourceIdentity;\n },\n): void {\n const appPackagePath = path.join(appDir, \"package.json\");\n const pkg = readPackageJsonObject(appPackagePath);\n if (!pkg) {\n throw new ValidationError(\n \"Selected community workspace app has an unreadable package.json.\",\n );\n }\n const rootPkg = readPackageJsonObject(\n path.join(sourceWorkspaceRoot, \"package.json\"),\n );\n const agentNative =\n rootPkg?.[\"agent-native\"] &&\n typeof rootPkg[\"agent-native\"] === \"object\" &&\n !Array.isArray(rootPkg[\"agent-native\"])\n ? (rootPkg[\"agent-native\"] as Record<string, unknown>)\n : undefined;\n const sourceWorkspaceCore =\n typeof agentNative?.workspaceCore === \"string\"\n ? agentNative.workspaceCore\n : undefined;\n const catalog = loadCommunityWorkspaceCatalog(sourceWorkspaceRoot);\n const supportedWorkspacePackages = new Set([\n \"@agent-native/core\",\n \"@agent-native/dispatch\",\n \"@agent-native/toolkit\",\n ]);\n\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps || typeof deps !== \"object\" || Array.isArray(deps)) continue;\n for (const [key, value] of Object.entries(\n deps as Record<string, unknown>,\n )) {\n if (key === sourceWorkspaceCore) {\n delete (deps as Record<string, unknown>)[key];\n continue;\n }\n if (value === \"catalog:\") {\n const resolved = catalog[key];\n if (!resolved) {\n throw new ValidationError(\n `Community workspace app dependency \"${key}\" uses catalog:, but no value was found in the source pnpm-workspace.yaml catalog.`,\n );\n }\n (deps as Record<string, unknown>)[key] = resolved;\n continue;\n }\n if (typeof value === \"string\" && value.startsWith(\"catalog:\")) {\n throw new ValidationError(\n `Community workspace app dependency \"${key}\" uses unsupported named catalog reference \"${value}\". Use a concrete version or the default catalog.`,\n );\n }\n if (\n typeof value === \"string\" &&\n value.startsWith(\"workspace:\") &&\n supportedWorkspacePackages.has(key)\n ) {\n (deps as Record<string, unknown>)[key] =\n key === \"@agent-native/core\"\n ? getCoreDependencyVersion()\n : key === \"@agent-native/dispatch\"\n ? getDispatchDependencyVersion()\n : getToolkitDependencyVersion();\n continue;\n }\n if (typeof value === \"string\" && value.startsWith(\"workspace:\")) {\n throw new ValidationError(\n `Community workspace app dependency \"${key}\" uses \"${value}\", but that source workspace package is not included when installing one app. Publish it with a concrete version or remove the dependency.`,\n );\n }\n }\n }\n fs.writeFileSync(appPackagePath, JSON.stringify(pkg, null, 2) + \"\\n\");\n if (sourceWorkspaceCore) {\n rewriteCanonicalCommunityWorkspacePlugins(\n appDir,\n sourceWorkspaceCore,\n options,\n );\n }\n if (\n sourceWorkspaceCore &&\n findSourceImportSpecifier(appDir, sourceWorkspaceCore)\n ) {\n throw new ValidationError(\n `Community workspace app imports its source shared package \"${sourceWorkspaceCore}\", which is not included when installing one app. Move that code into the app or publish it as a concrete dependency.`,\n );\n }\n}\n\nfunction rewriteCanonicalCommunityWorkspacePlugins(\n appDir: string,\n sourceWorkspaceCore: string,\n options: {\n shape?: \"standalone\" | \"workspace\";\n destinationAppName: string;\n targetWorkspaceCoreName?: string;\n sourceIdentity: ScaffoldSourceIdentity;\n },\n): void {\n const authPath = path.join(appDir, \"server\", \"plugins\", \"auth.ts\");\n const agentChatPath = path.join(appDir, \"server\", \"plugins\", \"agent-chat.ts\");\n if (options.shape === \"standalone\") {\n if (fs.existsSync(authPath)) {\n const auth = fs.readFileSync(authPath, \"utf-8\");\n if (\n containsModuleSpecifier(auth, sourceWorkspaceCore) &&\n auth.includes(\"defaultAuthPlugin\") &&\n auth.includes(\"workspaceServer\")\n ) {\n fs.writeFileSync(\n authPath,\n 'export { defaultAuthPlugin as default } from \"@agent-native/core/server\";\\n',\n );\n }\n }\n if (fs.existsSync(agentChatPath)) {\n const agentChat = fs.readFileSync(agentChatPath, \"utf-8\");\n if (\n containsModuleSpecifier(agentChat, sourceWorkspaceCore) &&\n agentChat.includes(\"createWorkspaceAgentChatPlugin\") &&\n agentChat.includes(\"actionsRegistry\")\n ) {\n fs.writeFileSync(\n agentChatPath,\n [\n 'import { createAgentChatPlugin, loadActionsFromStaticRegistry } from \"@agent-native/core/server\";',\n 'import actionsRegistry from \"../../.generated/actions-registry.js\";',\n \"\",\n \"export default createAgentChatPlugin({\",\n ` appId: ${JSON.stringify(options.destinationAppName)},`,\n \" actions: loadActionsFromStaticRegistry(actionsRegistry),\",\n \"});\",\n \"\",\n ].join(\"\\n\"),\n );\n }\n }\n return;\n }\n\n if (options.shape === \"workspace\" && options.targetWorkspaceCoreName) {\n for (const pluginPath of [authPath, agentChatPath]) {\n if (!fs.existsSync(pluginPath)) continue;\n const content = fs.readFileSync(pluginPath, \"utf-8\");\n const next = replaceModuleSpecifierPrefix(\n content,\n sourceWorkspaceCore,\n options.targetWorkspaceCoreName,\n );\n if (next !== content) fs.writeFileSync(pluginPath, next);\n }\n }\n}\n\nfunction containsModuleSpecifier(content: string, moduleName: string): boolean {\n return new RegExp(`([\"'])${escapeRegExp(moduleName)}(?:/[^\"']*)?\\\\1`).test(\n content,\n );\n}\n\nfunction replaceModuleSpecifierPrefix(\n content: string,\n sourceModule: string,\n targetModule: string,\n): string {\n return content.replace(\n new RegExp(`([\"'])${escapeRegExp(sourceModule)}((?:/[^\"']*)?)\\\\1`, \"g\"),\n (_match, quote: string, suffix: string) =>\n `${quote}${targetModule}${suffix}${quote}`,\n );\n}\n\nfunction findSourceImportSpecifier(\n dir: string,\n moduleName: string,\n): string | undefined {\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n if (entry.isSymbolicLink()) continue;\n const filePath = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n const nested = findSourceImportSpecifier(filePath, moduleName);\n if (nested) return nested;\n continue;\n }\n if (!/\\.(?:[cm]?[jt]sx?)$/.test(entry.name)) continue;\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n const escaped = escapeRegExp(moduleName);\n if (\n new RegExp(\n `(?:from\\\\s*|import\\\\s*\\\\(\\\\s*|import\\\\s*|require\\\\s*\\\\(\\\\s*)([\"'])${escaped}(?:/[^\"']*)?\\\\1`,\n ).test(content)\n ) {\n return filePath;\n }\n } catch {\n // Ignore unreadable source files; package validation reports main issues.\n }\n }\n return undefined;\n}\n\nfunction loadCommunityWorkspaceCatalog(\n workspaceRoot: string,\n): Record<string, string> {\n const workspacePath = path.join(workspaceRoot, \"pnpm-workspace.yaml\");\n if (!fs.existsSync(workspacePath)) return {};\n const result: Record<string, string> = {};\n let inCatalog = false;\n for (const line of fs.readFileSync(workspacePath, \"utf-8\").split(\"\\n\")) {\n if (/^catalog:\\s*$/.test(line)) {\n inCatalog = true;\n continue;\n }\n if (!inCatalog) continue;\n if (/^\\S/.test(line)) break;\n const match = line.match(/^\\s+\"?([^\":]+)\"?\\s*:\\s*\"?([^\"]+)\"?\\s*$/);\n if (match) result[match[1]!] = match[2]!;\n }\n return result;\n}\n\nfunction readCommunitySourceIdentity(\n targetDir: string,\n repo: string,\n): ScaffoldSourceIdentity {\n const fallbackName = repo.split(\"/\").pop() ?? \"app\";\n try {\n const pkg = JSON.parse(\n fs.readFileSync(path.join(targetDir, \"package.json\"), \"utf-8\"),\n );\n const appName =\n typeof pkg.name === \"string\" && pkg.name.trim()\n ? pkg.name.trim()\n : fallbackName;\n const unscopedName = appName.split(\"/\").pop() ?? appName;\n const appTitle =\n typeof pkg.displayName === \"string\" && pkg.displayName.trim()\n ? pkg.displayName.trim()\n : titleCase(unscopedName);\n return { appName, appTitle };\n } catch {\n return { appName: fallbackName, appTitle: titleCase(fallbackName) };\n }\n}\n\nfunction githubTarballUrl(\n repo: string,\n ref: string,\n kind: \"branch\" | \"tag\",\n): string {\n return `https://codeload.github.com/${repo}/tar.gz/refs/${kind === \"tag\" ? \"tags\" : \"heads\"}/${encodeURIComponent(ref)}`;\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Text / filesystem helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Merge key-value entries into named sections of a pnpm-workspace.yaml string\n * without creating duplicate section headers. For each section:\n * - If the section already exists, new entries are injected after its header.\n * - If the section is absent, a new block is appended at the end.\n * Entries already present (by key) are skipped.\n */\nfunction mergeWorkspaceYamlSections(\n yaml: string,\n sections: Record<string, Record<string, string>>,\n): string {\n let result = yaml;\n for (const [section, entries] of Object.entries(sections)) {\n for (const [key, value] of Object.entries(entries)) {\n if (result.includes(key)) continue;\n const sectionHeader = new RegExp(`^${section}:\\\\s*$`, \"m\");\n const match = sectionHeader.exec(result);\n if (match) {\n const insertAt = match.index + match[0].length;\n result =\n result.slice(0, insertAt) +\n `\\n ${key}: ${value}` +\n result.slice(insertAt);\n } else {\n result =\n result.trimEnd() +\n (result ? \"\\n\" : \"\") +\n `\\n${section}:\\n ${key}: ${value}\\n`;\n }\n }\n }\n return result;\n}\n\nfunction mergeWorkspaceYamlListItems(\n yaml: string,\n section: string,\n items: string[],\n): string {\n let result = yaml;\n for (const item of items) {\n const rendered = ` - ${item}`;\n if (result.includes(rendered)) continue;\n const sectionHeader = new RegExp(`^${section}:\\\\s*$`, \"m\");\n const match = sectionHeader.exec(result);\n if (match) {\n const insertAt = match.index + match[0].length;\n result =\n result.slice(0, insertAt) + `\\n${rendered}` + result.slice(insertAt);\n } else {\n result =\n result.trimEnd() +\n (result ? \"\\n\" : \"\") +\n `\\n${section}:\\n${rendered}\\n`;\n }\n }\n return result;\n}\n\n/**\n * Load the pnpm workspace catalog.\n * First tries the build-time snapshot at dist/catalog.json (works when\n * running as a published npm package). Falls back to parsing the monorepo\n * pnpm-workspace.yaml (works during local framework development).\n */\nfunction loadCatalog(): Record<string, string> {\n try {\n // Build-time snapshot generated by finalize-build.mjs\n const snapshotPath = path.resolve(__dirname, \"../catalog.json\");\n if (fs.existsSync(snapshotPath)) {\n return JSON.parse(fs.readFileSync(snapshotPath, \"utf-8\"));\n }\n\n // Fallback: parse pnpm-workspace.yaml from the monorepo root\n // From dist/cli/ or src/cli/: 4 levels up → packages/core → packages → repo root\n const repoRoot = path.resolve(__dirname, \"../../../..\");\n const wsPath = path.join(repoRoot, \"pnpm-workspace.yaml\");\n if (!fs.existsSync(wsPath)) return {};\n const content = fs.readFileSync(wsPath, \"utf-8\");\n const result: Record<string, string> = {};\n let inCatalog = false;\n for (const line of content.split(\"\\n\")) {\n if (/^catalog:\\s*$/.test(line)) {\n inCatalog = true;\n continue;\n }\n if (inCatalog) {\n if (/^\\S/.test(line)) break;\n const match = line.match(/^\\s+\"?([^\":]+)\"?\\s*:\\s*\"?([^\"]+)\"?\\s*$/);\n if (match) result[match[1]] = match[2];\n }\n }\n return result;\n } catch {\n return {};\n }\n}\n\nfunction titleCase(name: string): string {\n return name\n .split(\"-\")\n .map((w) => (w ? w[0].toUpperCase() + w.slice(1) : w))\n .join(\" \");\n}\n\nfunction appTitleForScaffold(appName: string): string {\n return titleCase(appName);\n}\n\nfunction isChatOnRampTemplate(templateName: string | undefined): boolean {\n return templateName === \"chat\" || templateName === \"starter\";\n}\n\nfunction trackingTemplateName(\n templateName: string | undefined,\n): string | undefined {\n if (templateName && isCommunityTemplateSelection(templateName)) {\n return undefined;\n }\n return templateName === \"starter\" ? \"chat\" : templateName;\n}\n\nfunction defaultPackageDescriptionForScaffold(appName: string): string {\n const appTitle = appTitleForScaffold(appName);\n return `Workspace app for ${appTitle}.`;\n}\n\nfunction shouldReplaceScaffoldDescription(value: unknown): boolean {\n if (typeof value !== \"string\" || !value.trim()) return true;\n return /\\b(starter|new app|blank\\b.*\\bapp)\\b/i.test(value);\n}\n\nfunction fixPackageJsonName(\n appDir: string,\n name: string,\n templateName?: string,\n provenance?: ScaffoldProvenance,\n): void {\n const pkgPath = path.join(appDir, \"package.json\");\n if (!fs.existsSync(pkgPath)) return;\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n pkg.name = name;\n const appTitle = appTitleForScaffold(name);\n // When the user picked a custom name (e.g. `add-app todo --template=chat`)\n // the template's displayName would otherwise leak into the workspace apps\n // grid as the new app's label. Overwrite it so the app shows up as \"Todo\"\n // instead of the source template's branding.\n if (templateName && name !== templateName) {\n pkg.displayName = appTitle;\n }\n if (\n shouldReplaceScaffoldDescription(pkg.description) ||\n (isChatOnRampTemplate(templateName) && name !== templateName)\n ) {\n pkg.description = defaultPackageDescriptionForScaffold(name);\n } else if (\n provenance?.sourceIdentity &&\n typeof pkg.description === \"string\"\n ) {\n pkg.description = replaceSourceIdentityText(\n pkg.description,\n provenance.sourceIdentity,\n name,\n appTitle,\n );\n }\n const scaffoldGuidance = scaffoldGuidanceForTemplate(templateName);\n if (scaffoldGuidance || provenance?.communityTemplate) {\n const agentNative =\n pkg[\"agent-native\"] &&\n typeof pkg[\"agent-native\"] === \"object\" &&\n !Array.isArray(pkg[\"agent-native\"])\n ? pkg[\"agent-native\"]\n : {};\n if (scaffoldGuidance) {\n const coreVersion = getCorePackageVersion();\n agentNative.scaffold = {\n template: trackingTemplateName(templateName),\n frameworkSkills: scaffoldGuidance,\n ...(provenance?.templateRef\n ? { templateRef: provenance.templateRef }\n : {}),\n ...(provenance?.templateSource\n ? { templateSource: provenance.templateSource }\n : {}),\n ...(coreVersion ? { coreVersion } : {}),\n ...(provenance?.shape ? { shape: provenance.shape } : {}),\n };\n }\n if (provenance?.communityTemplate) {\n delete agentNative.scaffold;\n agentNative.communityTemplate = provenance.communityTemplate;\n }\n pkg[\"agent-native\"] = agentNative;\n }\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n}\n\nfunction scaffoldGuidanceForTemplate(\n templateName: string | undefined,\n): \"default\" | \"headless\" | undefined {\n if (!templateName || templateName.startsWith(\"github:\")) return undefined;\n const normalized = normalizeTemplateName(templateName);\n if (normalized === \"headless\") return \"headless\";\n return getTemplate(normalized) ? \"default\" : undefined;\n}\n\nfunction fixWebManifestName(\n appDir: string,\n name: string,\n templateName?: string,\n sourceIdentity?: ScaffoldSourceIdentity,\n): void {\n if (\n (!isChatOnRampTemplate(templateName) || name === templateName) &&\n !sourceIdentity\n ) {\n return;\n }\n const manifestPath = path.join(appDir, \"public\", \"manifest.json\");\n if (!fs.existsSync(manifestPath)) return;\n try {\n const manifest = JSON.parse(fs.readFileSync(manifestPath, \"utf-8\"));\n const appTitle = titleCase(name);\n manifest.name = appTitle;\n manifest.short_name = appTitle;\n if (sourceIdentity && typeof manifest.description === \"string\") {\n manifest.description = replaceSourceIdentityText(\n manifest.description,\n sourceIdentity,\n name,\n appTitle,\n );\n } else if (\n typeof manifest.description !== \"string\" ||\n /\\b(blank app|starter|chat-first)\\b/i.test(manifest.description)\n ) {\n manifest.description = defaultPackageDescriptionForScaffold(name);\n }\n fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + \"\\n\");\n } catch {}\n}\n\nfunction replaceSourceIdentityText(\n value: string,\n sourceIdentity: ScaffoldSourceIdentity,\n appName: string,\n appTitle: string,\n): string {\n const unscopedSourceName =\n sourceIdentity.appName.split(\"/\").pop() ?? sourceIdentity.appName;\n const replacements = new Map<string, string>([\n [sourceIdentity.appTitle, appTitle],\n [sourceIdentity.appName, appName],\n [unscopedSourceName, appName],\n ]);\n const sourceValues = [...replacements.keys()]\n .filter(Boolean)\n .sort((a, b) => b.length - a.length);\n if (sourceValues.length === 0) return value;\n const pattern = new RegExp(sourceValues.map(escapeRegExp).join(\"|\"), \"g\");\n return value.replace(pattern, (match) => replacements.get(match) ?? match);\n}\n\nfunction getCoreDependencyVersion(): string {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE === \"1\") {\n const localCore = findLocalPackage(\"core\");\n if (localCore) return localPackageTarball(localCore);\n }\n\n // Pin to the exact core version running this CLI rather than the npm\n // `latest` dist-tag. `latest` can drift forward after `create` runs (a\n // stale/cached CLI invocation, or simply time passing before `npm\n // install`), installing a newer core release whose internal toolkit\n // dependency no longer matches the toolkit range this CLI just wrote into\n // the scaffold via getOwnPackageDependencyVersion() — reintroducing the\n // exact duplicate/mismatched-toolkit class of bug this pinning exists to\n // prevent. For the common case — `npx @agent-native/core@<version> create`\n // against the public registry — this exact version is guaranteed\n // installable, since npx just fetched it. Private/offline mirrors with a\n // retention window narrower than \"every historical version\" are a known\n // gap; `getCorePackageVersion()` returning undefined (e.g. malformed own\n // package.json) falls back to `latest` rather than failing scaffolding\n // outright. Local file deps stay opt-in so scaffolded repos remain\n // portable by default.\n return getCorePackageVersion() ?? \"latest\";\n}\n\nfunction getDispatchDependencyVersion(): string {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE === \"1\") {\n const localDispatch = findLocalPackage(\"dispatch\");\n if (localDispatch) return pathToFileURL(localDispatch).href;\n }\n\n // Unlike toolkit, core's own package.json does not declare\n // @agent-native/dispatch as a dependency, so there is no published\n // compatible range to read here — \"latest\" is the best available signal.\n return \"latest\";\n}\n\nfunction getToolkitDependencyVersion(): string {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE === \"1\") {\n const localToolkit = findLocalPackage(\"toolkit\");\n if (localToolkit) return localPackageTarball(localToolkit);\n }\n\n return getOwnPackageDependencyVersion(\"@agent-native/toolkit\");\n}\n\n/**\n * Toolkit is versioned and published independently of core, so its npm\n * `latest` dist-tag can briefly point to an incompatible release relative to\n * the core version currently running this CLI. The published core\n * `package.json` already carries the exact compatible range changesets\n * resolved at release time — read it from there instead of trusting\n * `latest`, which is only safe for pinning `core` itself.\n */\nfunction getOwnPackageDependencyVersion(depName: string): string {\n try {\n const ownPkgPath = path.join(__dirname, \"../../package.json\");\n const ownPkg = JSON.parse(fs.readFileSync(ownPkgPath, \"utf-8\"));\n const range = ownPkg.dependencies?.[depName];\n const isPublishedRange =\n typeof range === \"string\" &&\n range.length > 0 &&\n !range.startsWith(\"workspace:\") &&\n range !== \"catalog:\";\n if (isPublishedRange) return range;\n } catch {}\n\n return \"latest\";\n}\n\nfunction localToolkitOverride(): string | null {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE !== \"1\") return null;\n const localToolkit = findLocalPackage(\"toolkit\");\n return localToolkit ? localPackageTarball(localToolkit) : null;\n}\n\nfunction localRecapCliOverride(): string | null {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE !== \"1\") return null;\n const localRecapCli = findLocalPackage(\"recap-cli\");\n return localRecapCli ? pathToFileURL(localRecapCli).href : null;\n}\n\nfunction applyLocalWorkspaceOverrides(targetDir: string): void {\n const localToolkit = localToolkitOverride();\n const localRecapCli = localRecapCliOverride();\n if (!localToolkit && !localRecapCli) return;\n\n const wsPath = path.join(targetDir, \"pnpm-workspace.yaml\");\n const existing = fs.existsSync(wsPath)\n ? fs.readFileSync(wsPath, \"utf-8\")\n : \"\";\n const updated = mergeWorkspaceYamlSections(existing, {\n overrides: {\n ...(localToolkit\n ? { '\"@agent-native/toolkit\"': JSON.stringify(localToolkit) }\n : {}),\n ...(localRecapCli\n ? { '\"@agent-native/recap-cli\"': JSON.stringify(localRecapCli) }\n : {}),\n },\n });\n if (updated !== existing) fs.writeFileSync(wsPath, updated);\n}\n\nfunction getCorePackageVersion(): string | undefined {\n try {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const pkg = JSON.parse(\n fs.readFileSync(path.join(packageRoot, \"package.json\"), \"utf-8\"),\n );\n return typeof pkg.version === \"string\" ? pkg.version : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Git refs to try, in priority order, when downloading templates from the\n * framework repo. The release tag scheme has shifted over time:\n *\n * - ≤ 0.7.83: single repo-wide tag `v<version>` (legacy).\n * - ≥ 0.8.0: changesets per-package tags\n * `@agent-native/core@<version>` (current).\n *\n * Published CLIs intentionally use only immutable version tags. Falling back\n * to mutable `main` can copy a template that imports exports not present in\n * the installed core package, leaving a generated app broken at SSR startup.\n * Local framework development uses the checkout's templates and packages\n * before this downloader runs, so it does not need a mutable fallback.\n */\nfunction getGitHubTemplateRefCandidates(): string[] {\n const version = getCorePackageVersion();\n const candidates: string[] = [];\n if (version && /^\\d+\\.\\d+\\.\\d+(?:-.+)?$/.test(version)) {\n candidates.push(`@agent-native/core@${version}`);\n candidates.push(`v${version}`);\n }\n return candidates;\n}\n\n/** @deprecated Kept for backward-compatible test imports. Returns the\n * highest-priority candidate; callers that need the full fallback list\n * should use `getGitHubTemplateRefCandidates()`. */\nfunction getGitHubTemplateRef(): string {\n return getGitHubTemplateRefCandidates()[0]!;\n}\n\nfunction rewriteCoreDependencyVersions(projectDir: string): void {\n const pkgPath = path.join(projectDir, \"package.json\");\n if (!fs.existsSync(pkgPath)) return;\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (deps?.[\"@agent-native/core\"]) {\n deps[\"@agent-native/core\"] = getCoreDependencyVersion();\n }\n if (deps?.[\"@agent-native/toolkit\"]) {\n deps[\"@agent-native/toolkit\"] = getToolkitDependencyVersion();\n }\n }\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n}\n\nfunction validateWorkspaceAppName(\n appName: string,\n clack: typeof import(\"@clack/prompts\"),\n opts?: { allowDispatch?: boolean },\n): void {\n const error =\n opts?.allowDispatch && appName === \"dispatch\"\n ? null\n : getWorkspaceAppIdValidationError(appName);\n if (error) {\n clack.cancel(error);\n process.exit(1);\n }\n}\n\nfunction upsertTomlBuildEnvironment(\n content: string,\n vars: Record<string, string>,\n): string {\n const lines = content.split(\"\\n\");\n const sectionIndex = lines.findIndex(\n (line) => line.trim() === \"[build.environment]\",\n );\n if (sectionIndex === -1) {\n const envLines = [\"\", \"[build.environment]\"].concat(\n Object.entries(vars).map(([key, value]) => ` ${key} = \"${value}\"`),\n );\n return content.trimEnd() + \"\\n\" + envLines.join(\"\\n\") + \"\\n\";\n }\n\n let nextSectionIndex = lines.findIndex(\n (line, index) => index > sectionIndex && /^\\s*\\[/.test(line),\n );\n if (nextSectionIndex === -1) nextSectionIndex = lines.length;\n\n for (const [key, value] of Object.entries(vars)) {\n const existingIndex = lines.findIndex(\n (line, index) =>\n index > sectionIndex &&\n index < nextSectionIndex &&\n new RegExp(`^\\\\s*${key}\\\\s*=`).test(line),\n );\n const nextLine = ` ${key} = \"${value}\"`;\n if (existingIndex === -1) {\n lines.splice(nextSectionIndex, 0, nextLine);\n nextSectionIndex += 1;\n } else {\n lines[existingIndex] = nextLine;\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction ensureRedirect(\n content: string,\n from: string,\n to: string,\n status: number,\n): string {\n const escapedFrom = from.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const redirectPattern = new RegExp(\n `\\\\n?\\\\[\\\\[redirects\\\\]\\\\]\\\\s+from\\\\s*=\\\\s*\"${escapedFrom}\"\\\\s+to\\\\s*=\\\\s*\"[^\"]*\"\\\\s+status\\\\s*=\\\\s*\\\\d+(?:\\\\s+force\\\\s*=\\\\s*(?:true|false))?`,\n \"m\",\n );\n const block = [\n \"\",\n \"[[redirects]]\",\n ` from = \"${from}\"`,\n ` to = \"${to}\"`,\n ` status = ${status}`,\n ].join(\"\\n\");\n if (redirectPattern.test(content)) {\n return content.replace(redirectPattern, block);\n }\n return content.trimEnd() + \"\\n\" + block + \"\\n\";\n}\n\nfunction removeRedirect(content: string, from: string): string {\n const escapedFrom = from.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const redirectPattern = new RegExp(\n `\\\\n?\\\\[\\\\[redirects\\\\]\\\\]\\\\s+from\\\\s*=\\\\s*\"${escapedFrom}\"\\\\s+to\\\\s*=\\\\s*\"[^\"]*\"\\\\s+status\\\\s*=\\\\s*\\\\d+(?:\\\\s+force\\\\s*=\\\\s*(?:true|false))?`,\n \"gm\",\n );\n return content.replace(redirectPattern, \"\").replace(/\\n{3,}/g, \"\\n\\n\");\n}\n\nfunction addWorkspaceMountNetlifyConfig(\n content: string,\n appName: string,\n): string {\n const basePath = `/${appName}`;\n let next = upsertTomlBuildEnvironment(content, {\n APP_BASE_PATH: basePath,\n VITE_APP_BASE_PATH: basePath,\n NITRO_PRESET: \"netlify\",\n NPM_CONFIG_PRODUCTION: \"false\",\n });\n\n if (appName === \"dispatch\") {\n next = ensureRedirect(next, \"/\", \"/dispatch/overview\", 302);\n next = ensureRedirect(next, \"/dispatch\", \"/dispatch/overview\", 302);\n for (const [from, to] of DISPATCH_WORKSPACE_ROOT_REDIRECTS) {\n next = ensureRedirect(next, `/${from}`, `/dispatch/${to}`, 302);\n }\n next = removeRedirect(next, \"/dispatch/*\");\n }\n\n return next;\n}\n\nfunction rewriteNetlifyToml(\n appDir: string,\n appName: string,\n mode: \"standalone\" | \"workspace\",\n): void {\n const netlifyPath = path.join(appDir, \"netlify.toml\");\n if (!fs.existsSync(netlifyPath)) return;\n\n try {\n let content = fs.readFileSync(netlifyPath, \"utf-8\");\n const originalCommand = content.match(/^\\s*command = \"([^\"]*)\"$/m)?.[1];\n const usesUnpooledDatabase =\n originalCommand?.includes(\"NETLIFY_DATABASE_URL_UNPOOLED\") ?? false;\n const buildCommand =\n mode === \"workspace\"\n ? `APP_BASE_PATH=/${appName} VITE_APP_BASE_PATH=/${appName} NITRO_PRESET=netlify pnpm --filter ${appName} build`\n : \"NITRO_PRESET=netlify pnpm build\";\n const databaseSetup =\n 'export DATABASE_URL=\\\\\"${NETLIFY_DATABASE_URL:-$DATABASE_URL}\\\\\"';\n const buildDatabasePrefix = usesUnpooledDatabase\n ? 'DATABASE_URL=\\\\\"${NETLIFY_DATABASE_URL_UNPOOLED:-$DATABASE_URL}\\\\\" '\n : \"\";\n const command = `${databaseSetup} && ${buildDatabasePrefix}${buildCommand}`;\n const publishPath = mode === \"workspace\" ? `apps/${appName}/dist` : \"dist\";\n const functionsPath =\n mode === \"workspace\"\n ? `apps/${appName}/.netlify/functions-internal`\n : \".netlify/functions-internal\";\n\n content = content\n .replace(/^(\\s*)command = \".*\"$/m, `$1command = \"${command}\"`)\n .replace(\n /publish = \"templates\\/[^\"]+\\/dist\"/g,\n `publish = \"${publishPath}\"`,\n )\n .replace(\n /functions = \"templates\\/[^\"]+\\/\\.netlify\\/functions-internal\"/g,\n `functions = \"${functionsPath}\"`,\n )\n // Strip the `ignore` script line: it references a monorepo script path\n // (scripts/netlify-ignore-build.mjs) that doesn't exist in scaffolds, so\n // skip-unchanged would never work and every deploy logs a not-found error.\n .replace(/^\\s*ignore\\s*=\\s*\"[^\"]*\"\\s*\\n/m, \"\");\n\n if (mode === \"workspace\") {\n content = addWorkspaceMountNetlifyConfig(content, appName);\n }\n\n fs.writeFileSync(netlifyPath, content);\n } catch {}\n}\n\nfunction applyScaffoldIdentity(\n appDir: string,\n appName: string,\n templateName?: string,\n sourceIdentity?: ScaffoldSourceIdentity,\n): void {\n rewriteTrackingAppId(appDir, appName, templateName, sourceIdentity);\n rewriteAgentChatAppId(appDir, appName, templateName, sourceIdentity);\n rewriteAppConfigIdentity(appDir, appName, sourceIdentity);\n}\n\nfunction rewriteAgentChatAppId(\n appDir: string,\n appName: string,\n templateName?: string,\n sourceIdentity?: ScaffoldSourceIdentity,\n): void {\n const pluginPath = path.join(appDir, \"server\", \"plugins\", \"agent-chat.ts\");\n if (!fs.existsSync(pluginPath)) return;\n\n try {\n const content = fs.readFileSync(pluginPath, \"utf-8\");\n if (sourceIdentity) {\n const next = content\n .replace(\n /(createAgentChatPlugin\\(\\{[\\s\\S]*?\\bappId:\\s*)([\"'])[^\"']+\\2/,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appName}${quote}`,\n )\n .replace(\n /(const\\s+options\\s*=\\s*\\{[\\s\\S]*?\\bappId:\\s*)([\"'])[^\"']+\\2/,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appName}${quote}`,\n );\n if (next !== content) fs.writeFileSync(pluginPath, next);\n return;\n }\n const sourceAppIds = [\"chat\", \"starter\"];\n if (templateName && templateName !== appName) {\n sourceAppIds.push(templateName);\n }\n const pattern = new RegExp(\n `(appId:\\\\s*)([\"'])(${sourceAppIds.map(escapeRegExp).join(\"|\")})\\\\2`,\n );\n if (!pattern.test(content)) return;\n\n const next = content.replace(\n pattern,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appName}${quote}`,\n );\n if (next !== content) {\n fs.writeFileSync(pluginPath, next);\n }\n } catch {}\n}\n\nfunction rewriteTrackingAppId(\n appDir: string,\n appName: string,\n templateName?: string,\n sourceIdentity?: ScaffoldSourceIdentity,\n): void {\n const rootPath = path.join(appDir, \"app\", \"root.tsx\");\n if (!fs.existsSync(rootPath)) return;\n\n try {\n const content = fs.readFileSync(rootPath, \"utf-8\");\n const trackedTemplateName = trackingTemplateName(templateName);\n if (sourceIdentity) {\n const next = content.replace(\n /(configureTracking\\(\\{[\\s\\S]*?\\bapp:\\s*)([\"'])[^\"']+\\2/,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appName}${quote}`,\n );\n if (next !== content) fs.writeFileSync(rootPath, next);\n return;\n }\n const sourceAppIds = [\"agent-native-[^\\\"']+\", \"\\\\{\\\\{APP_NAME\\\\}\\\\}\"];\n if (templateName && templateName !== appName) {\n sourceAppIds.push(escapeRegExp(templateName));\n }\n if (isChatOnRampTemplate(templateName)) {\n sourceAppIds.push(\"starter\", \"chat\");\n }\n const pattern = new RegExp(\n `(^\\\\s*app:\\\\s*)([\"'])(?:${sourceAppIds.join(\"|\")})\\\\2(\\\\s*,?)`,\n \"m\",\n );\n if (!pattern.test(content)) return;\n\n let next = content.replace(\n pattern,\n (_match, prefix: string, quote: string, suffix: string) =>\n `${prefix}${quote}${appName}${quote}${suffix}`,\n );\n\n if (\n trackedTemplateName &&\n trackedTemplateName !== appName &&\n !hasTrackingTemplate(next)\n ) {\n next = next.replace(\n /(^\\s*app:\\s*[\"'][^\"']+[\"'],?\\s*$)/m,\n (line) =>\n `${line}\\n template: ${JSON.stringify(trackedTemplateName)},`,\n );\n }\n\n if (next !== content) {\n fs.writeFileSync(rootPath, next);\n }\n } catch {}\n}\n\nfunction rewriteAppConfigIdentity(\n appDir: string,\n appName: string,\n sourceIdentity?: ScaffoldSourceIdentity,\n): void {\n if (!sourceIdentity) return;\n const configPath = path.join(appDir, \"app\", \"lib\", \"app-config.ts\");\n if (!fs.existsSync(configPath)) return;\n try {\n const content = fs.readFileSync(configPath, \"utf-8\");\n const appTitle = appTitleForScaffold(appName);\n const next = content\n .replace(\n /(const\\s+rawAppName\\s*=\\s*)([\"'])[^\"']*\\2/,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appName}${quote}`,\n )\n .replace(\n /(const\\s+rawAppTitle\\s*=\\s*)([\"'])[^\"']*\\2/,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appTitle}${quote}`,\n );\n if (next !== content) fs.writeFileSync(configPath, next);\n } catch {}\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction hasTrackingTemplate(content: string): boolean {\n const match = content.match(/configureTracking\\(\\{[\\s\\S]*?\\}\\);/);\n return !!match && /^\\s*template\\s*:/m.test(match[0]);\n}\n\nfunction tryGitInit(dir: string): boolean {\n try {\n execFileSync(\"git\", [\"init\"], { cwd: dir, stdio: \"pipe\" });\n execFileSync(\"git\", [\"add\", \"-A\"], { cwd: dir, stdio: \"pipe\" });\n execFileSync(\n \"git\",\n [\"commit\", \"-m\", \"Initial commit from agent-native create\"],\n {\n cwd: dir,\n stdio: \"pipe\",\n env: {\n ...process.env,\n GIT_AUTHOR_NAME: \"agent-native\",\n GIT_AUTHOR_EMAIL: \"noreply@agent-native.com\",\n GIT_COMMITTER_NAME: \"agent-native\",\n GIT_COMMITTER_EMAIL: \"noreply@agent-native.com\",\n },\n },\n );\n return true;\n } catch {\n return false;\n }\n}\n\nfunction renameGitignore(dir: string): void {\n const src = path.join(dir, \"_gitignore\");\n const dst = path.join(dir, \".gitignore\");\n if (fs.existsSync(src)) fs.renameSync(src, dst);\n}\n\nfunction replacePlaceholders(\n dir: string,\n appName: string,\n appTitle: string,\n workspaceName?: string,\n): void {\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n const p = path.join(dir, entry.name);\n if (entry.isSymbolicLink()) continue;\n if (entry.isDirectory()) {\n replacePlaceholders(p, appName, appTitle, workspaceName);\n continue;\n }\n let content: string;\n try {\n content = fs.readFileSync(p, \"utf-8\");\n } catch {\n continue;\n }\n const hasWs =\n workspaceName !== undefined && content.includes(\"{{WORKSPACE_NAME}}\");\n if (\n !content.includes(\"{{APP_NAME}}\") &&\n !content.includes(\"{{APP_TITLE}}\") &&\n !hasWs\n ) {\n continue;\n }\n let next = content;\n if (workspaceName !== undefined) {\n next = next.replace(/\\{\\{WORKSPACE_NAME\\}\\}/g, workspaceName);\n }\n next = next\n .replace(/\\{\\{APP_NAME\\}\\}/g, appName)\n .replace(/\\{\\{APP_TITLE\\}\\}/g, appTitle);\n fs.writeFileSync(p, next);\n }\n}\n\nfunction copyDir(src: string, dest: string, root?: string): void {\n const resolvedRoot = root ?? path.resolve(src);\n fs.mkdirSync(dest, { recursive: true });\n for (const entry of fs.readdirSync(src, { withFileTypes: true })) {\n const srcPath = path.join(src, entry.name);\n if (shouldSkipScaffoldEntry(entry.name, srcPath)) continue;\n const destPath = path.join(dest, entry.name);\n if (entry.isSymbolicLink()) {\n const target = fs.readlinkSync(srcPath);\n const resolvedTarget = path.resolve(path.dirname(srcPath), target);\n if (resolvedTarget.startsWith(resolvedRoot)) {\n fs.symlinkSync(target, destPath);\n } else {\n try {\n const stat = fs.statSync(srcPath);\n if (stat.isDirectory()) {\n copyDir(srcPath, destPath, resolvedRoot);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n } catch {\n // Broken symlink — skip silently\n }\n }\n } else if (entry.isDirectory()) {\n copyDir(srcPath, destPath, resolvedRoot);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n\nfunction shouldSkipScaffoldEntry(name: string, srcPath?: string): boolean {\n const pathParts = srcPath?.split(path.sep);\n if (\n name === \"plans\" &&\n pathParts?.at(-2) === \"plan\" &&\n pathParts.at(-3) === \"templates\"\n ) {\n return true;\n }\n if (name === \"preview.html\" && srcPath?.split(path.sep).includes(\"plans\")) {\n return true;\n }\n if (\n /^settings(?:\\..*)?\\.json$/.test(name) &&\n srcPath?.split(path.sep).includes(\".claude\")\n ) {\n return true;\n }\n // `.generated/bridge` is committed source, not a build artifact: the design\n // app imports it at module load, so skipping it yields a workspace that 500s\n // on every page. Everything else under `.generated` is regenerated at dev time.\n if (pathParts?.at(-2) === \".generated\") {\n return name !== \"bridge\";\n }\n if (\n name === \".generated\" &&\n srcPath &&\n fs.existsSync(path.join(srcPath, \"bridge\"))\n ) {\n return false;\n }\n if (\n name === \"node_modules\" ||\n name === \".agent-native\" ||\n name === \".env\" ||\n name === \".env.local\" ||\n name === \"pnpm-lock.yaml\" ||\n name === \".netlify\" ||\n name === \".vercel\" ||\n name === \".generated\" ||\n name === \".react-router\" ||\n name === \".output\" ||\n name === \"build\" ||\n name === \"dist\" ||\n name === \"test-results\" ||\n name === \"playwright-report\" ||\n name === \".DS_Store\"\n ) {\n return true;\n }\n return name.endsWith(\".tmp.json\") || /\\.db(?:-shm|-wal)?$/.test(name);\n}\n"]}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFile, execFileSync } from \"child_process\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\nimport { fileURLToPath, pathToFileURL } from \"url\";\n\nimport {\n DISPATCH_WORKSPACE_ROOT_REDIRECTS,\n getWorkspaceAppIdValidationError,\n} from \"../shared/workspace-app-id.js\";\nimport { setupAgentSymlinks } from \"./setup-agents.js\";\nimport {\n coreTemplates,\n getTemplate,\n allTemplateNames,\n type TemplateMeta,\n} from \"./templates-meta.js\";\nimport { workspacifyApp, parseWorkspaceScope } from \"./workspacify.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst REPO = \"BuilderIO/agent-native\";\nconst TEMPLATES_DIR = \"templates\";\nconst POSTGRES_DEPENDENCY_VERSION = \"^3.4.9\";\nconst STANDALONE_EXACT_DEPENDENCY_OVERRIDES: Record<string, string> = {\n \"@react-router/dev\": \"8.1.0\",\n \"@react-router/fs-routes\": \"8.1.0\",\n \"react-router\": \"8.1.0\",\n};\nconst REACT_ROUTER_BUILD_DEPENDENCIES = [\n \"@react-router/dev\",\n \"@react-router/fs-routes\",\n \"react-router\",\n \"vite\",\n] as const;\nconst MINIMUM_RELEASE_AGE_EXCLUDES = [\n '\"@modelcontextprotocol/client\"',\n '\"@modelcontextprotocol/core\"',\n '\"@modelcontextprotocol/node\"',\n '\"@modelcontextprotocol/server\"',\n '\"@typescript/*\"',\n '\"@sentry/*\"',\n \"fast-xml-parser\",\n \"typescript\",\n \"typescript-7\",\n];\nconst FIRST_PARTY_TARBALL_SYMLINK_EXCLUDES = [\n \"*/CLAUDE.md\",\n \"*/.claude/skills\",\n];\nconst localPackageTarballs = new Map<string, string>();\n/** VCS/editor files that don't count as \"not empty\" for an in-place scaffold. */\nconst IN_PLACE_ALLOWLIST = new Set([\n \".git\",\n \".gitignore\",\n \".gitattributes\",\n \".DS_Store\",\n \".idea\",\n \".vscode\",\n \"LICENSE\",\n \"README.md\",\n \"Thumbs.db\",\n]);\n\n/**\n * Tagged error for input that fails CLI-level validation (repo names, app\n * names, etc.). The Sentry `beforeSend` hook in cli/index.ts drops events\n * whose top-level exception type is `ValidationError` so we don't pollute\n * Sentry with expected user-input rejections.\n */\nexport class ValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ValidationError\";\n }\n}\n\n/**\n * Move the primitive-first and chat on-ramps to the top of the list so they\n * line up with clack's default highlight.\n */\nfunction onRampFirst(templates: TemplateMeta[]): TemplateMeta[] {\n return moveTemplatesToFront(templates, [\"headless\", \"chat\"]);\n}\n\nfunction moveTemplatesToFront(\n templates: TemplateMeta[],\n preferredNames: string[],\n): TemplateMeta[] {\n const preferred = preferredNames\n .map((name) => templates.find((t) => t.name === name))\n .filter((template): template is TemplateMeta => Boolean(template));\n if (preferred.length === 0) return templates;\n const preferredSet = new Set(preferred.map((t) => t.name));\n return [...preferred, ...templates.filter((t) => !preferredSet.has(t.name))];\n}\n\n/** Primitive-first scaffold option appended to standalone pickers. */\nconst HEADLESS_OPTION = {\n name: \"headless\",\n label: \"Headless\",\n hint: \"Action-first app with one hello primitive and no UI shell\",\n};\n\nconst COMMUNITY_OPTION = {\n name: \"community\",\n label: \"Community template\",\n hint: \"Install a third-party Agent Native app from a public GitHub repository\",\n};\n\nexport interface CreateAppOptions {\n /** Pre-select these templates in the picker. Comma-separated string or array. */\n template?: string;\n /** Scaffold a single standalone app (old behavior). Skips workspace creation. */\n standalone?: boolean;\n /** Internal: skip pnpm install at the end (for tests). */\n noInstall?: boolean;\n /**\n * Internal: always scaffold a workspace and skip the start-shape prompt.\n * Used by the deprecated `create-workspace` alias, whose contract is an\n * unconditional workspace scaffold.\n */\n forceWorkspace?: boolean;\n /**\n * Internal: scaffold into the current directory instead of a new subfolder.\n * Set when the name argument is `.`/`./` (see `createApp`).\n */\n inPlace?: boolean;\n}\n\n/**\n * Main entry for `agent-native create [name]`.\n *\n * Default behavior: scaffold a workspace at <name>/ with a multi-select\n * template picker. Use --standalone for the single-app standalone flow.\n *\n * If run *inside* an existing workspace, falls through to the add-app\n * flow that scaffolds one new app under apps/<name>/.\n */\nexport async function createApp(\n name?: string,\n opts?: CreateAppOptions,\n): Promise<void> {\n const clack = await import(\"@clack/prompts\");\n\n // `create .` (or `./`) means \"scaffold into the current folder\" — derive the\n // project name from the folder's basename, like create-react-app / npm init.\n if (name === \".\" || name === \"./\") {\n name = path.basename(process.cwd());\n opts = { ...opts, inPlace: true };\n }\n\n // Reject an invalid provided name before any interactive prompt so bad input\n // fails fast instead of blocking on the start-shape picker below.\n if (name !== undefined) {\n assertValidProjectName(name, clack);\n }\n\n // If we're already inside a workspace, the meaning of `create <name>` is\n // \"add a new app to this workspace\". Delegate to add-app.\n const workspace = detectWorkspace(process.cwd());\n if (workspace) {\n await addAppToWorkspace(name, opts);\n return;\n }\n\n // Standalone escape hatch — behaves like the old single-app flow.\n if (opts?.standalone) {\n await createStandaloneApp(name, opts, clack);\n return;\n }\n\n // When exactly one template is specified explicitly, treat it as a\n // standalone scaffold (script-friendly, matches historic behavior).\n // Use `--template a,b` or pass no --template to opt into the workspace\n // flow with the multi-select picker.\n const parsed = parseTemplateList(opts?.template);\n // Headless can't live in a workspace, so reject it when more than one\n // template is requested or when workspace semantics are forced.\n if (\n parsed.includes(\"headless\") &&\n (parsed.length > 1 || opts?.forceWorkspace)\n ) {\n clack.cancel(\n \"The headless scaffold is standalone-only. Use `agent-native create my-app --headless`, or use the Chat template when adding a UI app to a workspace.\",\n );\n process.exit(1);\n }\n // A single explicit template scaffolds a standalone app, unless the caller\n // forces workspace semantics (the deprecated `create-workspace` alias), in\n // which case the template is preselected in the workspace picker below.\n if (parsed.length === 1 && !opts?.forceWorkspace) {\n await createStandaloneApp(name, opts, clack);\n return;\n }\n\n // No template specified: ask what shape to start from before diving into\n // \"which templates?\". The on-ramp choice implies the project structure, so\n // we don't ask a separate \"workspace or standalone?\" question — Chat and\n // Headless scaffold a single standalone app (the lightest starts; headless\n // cannot live in a workspace), while Template continues into the workspace\n // multi-select.\n if (parsed.length === 0) {\n // The deprecated `create-workspace` alias forces workspace semantics, so\n // it must skip the start-shape prompt and scaffold a workspace directly.\n if (opts?.forceWorkspace) {\n await createWorkspaceInteractive(name, opts, clack);\n return;\n }\n const shape = await promptStartShape(clack);\n if (shape === \"headless\" || shape === \"chat\") {\n await createStandaloneApp(name, { ...opts, template: shape }, clack);\n return;\n }\n if (shape === \"community\") {\n const template = await promptCommunityTemplate(clack);\n await createStandaloneApp(name, { ...opts, template }, clack);\n return;\n }\n // shape === \"template\" → full app(s) in a workspace.\n await createWorkspaceInteractive(name, opts, clack);\n return;\n }\n\n // Multiple explicit templates: create a workspace with them.\n await createWorkspaceInteractive(name, opts, clack);\n}\n\n/**\n * Top-level on-ramp shown by the bare `create <name>` command (no flags). The\n * choice made here implies the project structure, so we deliberately avoid a\n * separate \"workspace or standalone?\" question:\n * - \"template\" → full app(s) in a workspace (the multi-select picker)\n * - \"community\" → a single standalone app from a public GitHub repository\n * - \"chat\" → a single standalone chat UI app\n * - \"headless\" → a single standalone action-first app with no UI shell\n * Chat and headless are standalone on purpose: a monorepo is unnecessary\n * ceremony for the lightest on-ramps, and headless cannot be a workspace\n * member. Either can grow into a workspace later via `add-app`.\n */\nasync function promptStartShape(\n clack: typeof import(\"@clack/prompts\"),\n): Promise<\"template\" | \"chat\" | \"community\" | \"headless\"> {\n const choice = await clack.select(startShapePromptOptions());\n if (clack.isCancel(choice)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return choice as \"template\" | \"chat\" | \"community\" | \"headless\";\n}\n\nfunction startShapePromptOptions() {\n return {\n message: \"How do you want to start?\",\n initialValue: \"chat\",\n options: [\n {\n value: \"chat\",\n label: \"Chat\",\n hint: \"A single app with a minimal chat UI and the browser shell wired up\",\n },\n {\n value: \"template\",\n label: \"First-party template(s)\",\n hint: \"Clone official apps (Mail, Calendar, Slides, ...) into a workspace\",\n },\n {\n value: COMMUNITY_OPTION.name,\n label: COMMUNITY_OPTION.label,\n hint: COMMUNITY_OPTION.hint,\n },\n {\n value: \"headless\",\n label: \"Headless\",\n hint: \"A single action-first app with one primitive and no UI shell\",\n },\n ],\n };\n}\n\nasync function promptCommunityTemplate(\n clack: typeof import(\"@clack/prompts\"),\n): Promise<string> {\n const selection = await clack.text({\n message: \"Which community template do you want to install?\",\n placeholder: \"https://github.com/owner/repo[?app=id][#ref]\",\n validate(value) {\n try {\n parseCommunityPromptValue(String(value ?? \"\"));\n } catch (error) {\n return error instanceof Error ? error.message : String(error);\n }\n },\n });\n if (clack.isCancel(selection)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return parseCommunityPromptValue(String(selection)).canonical;\n}\n\ninterface CommunityWorkspaceAppOption {\n name: string;\n label: string;\n}\n\nasync function promptCommunityWorkspaceApp(\n apps: CommunityWorkspaceAppOption[],\n clack: typeof import(\"@clack/prompts\"),\n): Promise<string> {\n const selection = await clack.select({\n message: \"Which app from this community workspace do you want to install?\",\n options: apps.map((app) => ({\n value: app.name,\n label: app.label,\n hint: app.label === app.name ? undefined : app.name,\n })),\n });\n if (clack.isCancel(selection)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return String(selection);\n}\n\nfunction communityScaffoldOptions(\n clack: typeof import(\"@clack/prompts\"),\n shape: \"standalone\" | \"workspace\",\n destinationAppName: string,\n targetWorkspaceCoreName?: string,\n): ScaffoldAppTemplateOptions {\n return {\n shape,\n destinationAppName,\n targetWorkspaceCoreName,\n ...(process.stdin.isTTY && process.stdout.isTTY\n ? {\n selectCommunityWorkspaceApp: (apps: CommunityWorkspaceAppOption[]) =>\n promptCommunityWorkspaceApp(apps, clack),\n }\n : {}),\n };\n}\n\n/**\n * Validate a project name supplied on the command line. Mirrors the rule in\n * `promptNameIfMissing` so an invalid name is rejected before any interactive\n * prompt runs (the sub-flows re-validate, which is a harmless no-op).\n */\nfunction assertValidProjectName(\n name: string,\n clack: typeof import(\"@clack/prompts\"),\n): void {\n if (!/^[a-z][a-z0-9-]*$/.test(name)) {\n clack.cancel(\n `Invalid name \"${name}\". Use lowercase letters, numbers, and hyphens (must start with a letter).`,\n );\n process.exit(1);\n }\n}\n/**\n * Resolve where a scaffold writes and guard the target. A named project writes\n * to a new sibling subfolder that must not already exist; `create .` writes\n * into the current directory, which must be empty apart from benign VCS/editor\n * files (a pre-existing repo is allowed).\n *\n * For an in-place scaffold we do NOT return the current directory: we build\n * into a private staging directory and `finalizeScaffold` copies the result\n * in afterward. Staging keeps the whole scaffold atomic — a mid-scaffold\n * failure's cleanup can only ever delete the staging dir, never the user's\n * current directory (including its `.git`).\n */\nfunction resolveScaffoldTarget(\n name: string,\n inPlace: boolean | undefined,\n clack: typeof import(\"@clack/prompts\"),\n): string {\n if (inPlace) {\n const conflicting = fs\n .readdirSync(process.cwd())\n .filter((entry) => !IN_PLACE_ALLOWLIST.has(entry));\n if (conflicting.length > 0) {\n const shown = conflicting.slice(0, 3).join(\", \");\n const more = conflicting.length > 3 ? \", …\" : \"\";\n clack.cancel(\n `Current directory is not empty (${shown}${more}). Scaffold into an empty folder, or run \\`create <name>\\` to make a new one.`,\n );\n process.exit(1);\n }\n return fs.mkdtempSync(path.join(os.tmpdir(), \"agent-native-create-\"));\n }\n const targetDir = path.resolve(process.cwd(), name);\n if (fs.existsSync(targetDir)) {\n clack.cancel(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n return targetDir;\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Workspace creation (new default)\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function createWorkspaceInteractive(\n name: string | undefined,\n opts: CreateAppOptions | undefined,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n clack.intro(\"Create a new agent-native workspace\");\n\n name = await promptNameIfMissing(name, clack, \"workspace\", \"my-platform\");\n const preselected = parseTemplateList(opts?.template);\n\n clack.note(\n [\n `You're creating a workspace named \"${name}\". A workspace is a monorepo`,\n \"container — it isn't an app itself. Inside it you pick one or more apps\",\n \"(below), and each app gets its own route, agent, and UI. Apps in the\",\n \"same workspace share auth, database, and the agent chat. Add more apps\",\n \"later with `npx @agent-native/core@latest add-app`. Chat is the UI on-ramp\",\n \"for a minimal chat-first app with the browser shell already wired.\",\n \"Dispatch is always included as the workspace control plane —\",\n \"it owns shared secrets, messaging, approvals, and cross-app routing.\",\n ].join(\"\\n\"),\n \"About workspaces\",\n );\n\n // Dispatch is the workspace control plane (shared secrets, messaging,\n // approvals, cross-app routing) and is always scaffolded — the picker\n // only shows the optional apps. If the user explicitly passed\n // `--template=...`, those entries get unioned with dispatch.\n const optionalPicks =\n preselected.length > 0\n ? preselected.filter((t) => t !== \"dispatch\")\n : await promptTemplatePicker(preselected, clack, {\n defaultTemplates: [\"chat\"],\n preferredFirst: [\"chat\"],\n excludeNames: [\"dispatch\"],\n });\n const templates = [\"dispatch\", ...optionalPicks];\n\n const targetDir = resolveScaffoldTarget(name, opts?.inPlace, clack);\n\n const s = clack.spinner();\n for (const template of templates) {\n showCommunityTemplateTrustNote(template, clack);\n }\n s.start(`Scaffolding workspace \"${name}\"...`);\n const appNames = new Set<string>();\n const scaffoldedApps: string[] = [];\n\n try {\n await scaffoldWorkspaceRoot(targetDir, name);\n const workspaceCoreName = `@${name}/shared`;\n\n for (let i = 0; i < templates.length; i++) {\n const templateName = templates[i];\n const appName = workspaceAppNameForTemplateSelection(templateName);\n validateWorkspaceAppName(appName, clack, {\n allowDispatch: appName === \"dispatch\" && templateName === \"dispatch\",\n });\n if (appNames.has(appName)) {\n clack.cancel(\n `Workspace app \"${appName}\" is selected more than once. Choose unique app templates or app names.`,\n );\n process.exit(1);\n }\n appNames.add(appName);\n scaffoldedApps.push(appName);\n // Distinguish download vs local copy in the spinner so a multi-second\n // GitHub fetch doesn't look like a frozen \"Scaffolding...\" message.\n // Mirrors the local-vs-remote decision inside scaffoldAppTemplate.\n const willDownload =\n templateName !== \"headless\" &&\n (isCommunityTemplateSelection(templateName) ||\n !findLocalTemplate(normalizeTemplateName(templateName)));\n s.message(\n willDownload\n ? `Downloading ${titleCase(appName)} template (${i + 1}/${templates.length})...`\n : `Scaffolding ${titleCase(appName)} (${i + 1}/${templates.length})...`,\n );\n const appDir = path.join(targetDir, \"apps\", appName);\n const resolution = await scaffoldAppTemplate(\n appDir,\n templateName,\n communityScaffoldOptions(\n clack,\n \"workspace\",\n appName,\n workspaceCoreName,\n ),\n );\n s.message(\n `Configuring ${titleCase(appName)} (${i + 1}/${templates.length})...`,\n );\n replacePlaceholders(appDir, appName, appTitleForScaffold(appName), name);\n if (resolution.sourceIdentity) {\n applyScaffoldIdentity(\n appDir,\n appName,\n templateName,\n resolution.sourceIdentity,\n );\n } else {\n rewriteTrackingAppId(appDir, appName, templateName);\n }\n workspacifyApp({\n appDir,\n appName,\n templateName,\n workspaceRoot: targetDir,\n workspaceCoreName,\n coreDependencyVersion: getCoreDependencyVersion(),\n dispatchDependencyVersion: getDispatchDependencyVersion(),\n toolkitDependencyVersion: getToolkitDependencyVersion(),\n });\n fixPackageJsonName(appDir, appName, templateName, {\n ...resolution,\n shape: \"workspace\",\n });\n fixWebManifestName(\n appDir,\n appName,\n templateName,\n resolution.sourceIdentity,\n );\n rewriteNetlifyToml(appDir, appName, \"workspace\");\n renameGitignore(appDir);\n // Each app owns its own .claude / .agents symlinks.\n setupAgentSymlinks(appDir);\n }\n\n s.message(\"Adding shared packages...\");\n await scaffoldRequiredPackages(templates, targetDir);\n\n s.stop(\n `Workspace scaffolded with ${templates.length} app${templates.length === 1 ? \"\" : \"s\"}.`,\n );\n } catch (err: any) {\n s.stop(\"Failed to scaffold workspace.\");\n // Remove the partially-scaffolded workspace so a retry of `agent-native\n // create <name>` doesn't trip the \"Directory already exists\" guard. For an\n // in-place scaffold `targetDir` is the private staging dir, so this never\n // touches the user's current directory.\n cleanupOnFailure(targetDir);\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n finalizeScaffold(targetDir, opts?.inPlace);\n\n // Show the user the tree we just built so the workspace/app distinction is\n // visible, not just described. First-time users routinely expect their\n // workspace name to be the app — seeing apps/<template>/ subdirectories\n // makes the structure concrete.\n const treeLines = [\n ` ${name}/ ← your workspace`,\n ...scaffoldedApps.map(\n (appName, i) =>\n ` ${i === scaffoldedApps.length - 1 ? \"└─\" : \"├─\"} apps/${appName}/`.padEnd(\n 30,\n ) + ` ← app`,\n ),\n ];\n const dispatchNextStep = [\n `Once running, open Dispatch — you'll see \"Workspace: ${titleCase(name)}\"`,\n `at the top, with all your apps listed under it.`,\n ];\n\n const installSteps = hasPnpm()\n ? [\n ` pnpm install`,\n ` pnpm dev # starts Dispatch on http://localhost:8092`,\n ]\n : [\n ` # pnpm is required but wasn't found on your PATH. Install it first:`,\n ` npm install -g pnpm`,\n ``,\n ` pnpm install`,\n ` pnpm dev # starts Dispatch on http://localhost:8092`,\n ];\n\n clack.outro(\n [\n `Created workspace \"${name}\" with ${templates.length} app${templates.length === 1 ? \"\" : \"s\"}:`,\n ``,\n ...treeLines,\n ``,\n `Next steps:`,\n ``,\n ` cd ${name}`,\n ...installSteps,\n ``,\n ...dispatchNextStep,\n ``,\n `Add another app later: npx @agent-native/core@latest add-app`,\n `Deploy the whole workspace: pnpm exec agent-native deploy`,\n ].join(\"\\n\"),\n );\n}\n\nfunction workspaceAppNameForTemplateSelection(templateName: string): string {\n const normalized = normalizeTemplateName(templateName);\n const community = parseCommunityTemplateSelection(normalized, false);\n if (!community) return templateName;\n const repoName = community.app ?? community.repo.split(\"/\").pop() ?? \"app\";\n let appName = repoName\n .toLowerCase()\n .replace(/[^a-z0-9-]+/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n if (!appName) appName = \"app\";\n if (!/^[a-z]/.test(appName)) appName = `app-${appName}`;\n return appName;\n}\n\n/**\n * Detect whether pnpm is on PATH. End-user machines often have npm/yarn but\n * not pnpm; the workspace scaffold uses pnpm workspaces, so we surface a\n * specific install hint in the outro when it's missing rather than letting\n * the user hit `zsh: command not found: pnpm`.\n */\nfunction hasPnpm(): boolean {\n try {\n execFileSync(\"pnpm\", [\"--version\"], { stdio: \"ignore\" });\n return true;\n } catch {\n return false;\n }\n}\n\nasync function scaffoldWorkspaceRoot(\n targetDir: string,\n name: string,\n): Promise<void> {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const rootTemplate = path.join(packageRoot, \"src/templates/workspace-root\");\n const coreTemplate = path.join(packageRoot, \"src/templates/workspace-core\");\n\n copyDir(rootTemplate, targetDir);\n replacePlaceholders(targetDir, name, titleCase(name));\n rewriteCoreDependencyVersions(targetDir);\n renameGitignore(targetDir);\n\n // Inject the catalog from this repo's pnpm-workspace.yaml so templates'\n // `catalog:` version references resolve in the scaffolded workspace.\n const catalog = loadCatalog();\n if (Object.keys(catalog).length > 0) {\n const wsPath = path.join(targetDir, \"pnpm-workspace.yaml\");\n const existing = fs.existsSync(wsPath)\n ? fs.readFileSync(wsPath, \"utf-8\")\n : \"\";\n if (!existing.includes(\"catalog:\")) {\n const catalogYaml = Object.entries(catalog)\n .map(([k, v]) => ` \"${k}\": \"${v}\"`)\n .join(\"\\n\");\n fs.writeFileSync(\n wsPath,\n existing.trimEnd() + \"\\ncatalog:\\n\" + catalogYaml + \"\\n\",\n );\n }\n }\n\n applyLocalWorkspaceOverrides(targetDir);\n\n const corePackageDir = path.join(targetDir, \"packages\", \"shared\");\n fs.mkdirSync(path.join(targetDir, \"packages\"), { recursive: true });\n copyDir(coreTemplate, corePackageDir);\n replacePlaceholders(corePackageDir, name, titleCase(name));\n rewriteCoreDependencyVersions(corePackageDir);\n setupAgentSymlinks(corePackageDir);\n\n // Ensure apps/ exists (even if empty).\n fs.mkdirSync(path.join(targetDir, \"apps\"), { recursive: true });\n\n // Root-level agent instructions apply before an agent descends into an app.\n linkWorkspaceRootSkills(targetDir);\n setupAgentSymlinks(targetDir);\n}\n\nfunction linkWorkspaceRootSkills(targetDir: string): void {\n const sharedSkillsDir = path.join(\n targetDir,\n \"packages\",\n \"shared\",\n \".agents\",\n \"skills\",\n );\n if (!fs.existsSync(sharedSkillsDir)) return;\n\n const agentsDir = path.join(targetDir, \".agents\");\n const linkPath = path.join(agentsDir, \"skills\");\n const target = \"../packages/shared/.agents/skills\";\n\n fs.mkdirSync(agentsDir, { recursive: true });\n\n try {\n const stat = fs.lstatSync(linkPath);\n if (stat.isSymbolicLink()) {\n if (fs.readlinkSync(linkPath) === target) return;\n fs.unlinkSync(linkPath);\n } else {\n return;\n }\n } catch {\n // Missing link; create below.\n }\n\n try {\n fs.symlinkSync(\n target,\n linkPath,\n process.platform === \"win32\" ? \"junction\" : \"dir\",\n );\n } catch {\n try {\n copyDir(sharedSkillsDir, linkPath);\n } catch {\n // Best-effort fallback for environments that disallow symlinks.\n }\n }\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Adding an app into an existing workspace\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Entry for `agent-native add-app [name]`. Called from inside a workspace.\n * Shows the multi-select picker (excluding already-installed apps) and\n * scaffolds each selected template under apps/<name>/.\n *\n * When `name` is provided with `--template foo`, scaffolds exactly one app\n * named <name> using template foo (non-interactive).\n */\nexport async function addAppToWorkspace(\n name?: string,\n opts?: CreateAppOptions,\n): Promise<void> {\n const clack = await import(\"@clack/prompts\");\n const workspace = detectWorkspace(process.cwd());\n if (!workspace) {\n clack.cancel(\n \"Not inside a workspace. Run `agent-native create` to make one first, or use `--standalone`.\",\n );\n process.exit(1);\n }\n\n applyLocalWorkspaceOverrides(workspace.workspaceRoot);\n\n clack.intro(\"Add an app to your workspace\");\n\n const installed = listInstalledApps(workspace.workspaceRoot);\n\n // Non-interactive path: name + single --template\n const preselected = parseTemplateList(opts?.template);\n if (preselected.includes(\"headless\")) {\n clack.cancel(\n \"The headless scaffold is standalone-only. Use `agent-native create my-app --headless` outside a workspace, or use the Chat template when adding a UI app to a workspace.\",\n );\n process.exit(1);\n }\n if (name && preselected.length === 1) {\n const tpl = preselected[0];\n await scaffoldOneAppIntoWorkspace(workspace, name, tpl, clack);\n return;\n }\n\n const hasDispatch = installed.includes(\"dispatch\");\n const availableTemplates = coreTemplates().filter(\n (template) => !installed.includes(template.name),\n );\n if (availableTemplates.length === 0) {\n clack.cancel(\"All available apps are already installed.\");\n process.exit(0);\n }\n\n const templates = await promptTemplatePicker(preselected, clack, {\n excludeNames: installed,\n message: \"Which apps do you want to add?\",\n defaultTemplates: hasDispatch ? undefined : [\"dispatch\"],\n preferredFirst: hasDispatch ? [\"chat\"] : [\"dispatch\", \"chat\"],\n recommendedNames: hasDispatch ? [] : [\"dispatch\"],\n });\n if (templates.length === 0) {\n clack.cancel(\n \"No apps selected. Press space to select an app, then press enter to continue.\",\n );\n process.exit(0);\n }\n\n for (const t of templates) {\n await scaffoldOneAppIntoWorkspace(workspace, t, t, clack);\n }\n}\n\nasync function scaffoldOneAppIntoWorkspace(\n workspace: { workspaceRoot: string; workspaceCoreName: string },\n appName: string,\n templateName: string,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n // Dispatch is the one reserved-route exception: the canonical workspace\n // control-plane app intentionally owns /dispatch.\n validateWorkspaceAppName(appName, clack, {\n allowDispatch: appName === \"dispatch\" && templateName === \"dispatch\",\n });\n const appsDir = path.join(workspace.workspaceRoot, \"apps\");\n fs.mkdirSync(appsDir, { recursive: true });\n const appDir = path.join(appsDir, appName);\n\n if (fs.existsSync(appDir)) {\n clack.cancel(`Directory \"apps/${appName}\" already exists.`);\n process.exit(1);\n }\n\n const s = clack.spinner();\n showCommunityTemplateTrustNote(templateName, clack);\n s.start(\n `Working... no action needed. Scaffolding apps/${appName} from ${templateName}.`,\n );\n\n try {\n const resolution = await scaffoldAppTemplate(\n appDir,\n templateName,\n communityScaffoldOptions(\n clack,\n \"workspace\",\n appName,\n workspace.workspaceCoreName,\n ),\n );\n replacePlaceholders(\n appDir,\n appName,\n appTitleForScaffold(appName),\n path.basename(workspace.workspaceRoot),\n );\n if (resolution.sourceIdentity) {\n applyScaffoldIdentity(\n appDir,\n appName,\n templateName,\n resolution.sourceIdentity,\n );\n } else {\n rewriteTrackingAppId(appDir, appName, templateName);\n }\n workspacifyApp({\n appDir,\n appName,\n templateName,\n workspaceRoot: workspace.workspaceRoot,\n workspaceCoreName: workspace.workspaceCoreName,\n coreDependencyVersion: getCoreDependencyVersion(),\n dispatchDependencyVersion: getDispatchDependencyVersion(),\n toolkitDependencyVersion: getToolkitDependencyVersion(),\n });\n fixPackageJsonName(appDir, appName, templateName, {\n ...resolution,\n shape: \"workspace\",\n });\n fixWebManifestName(\n appDir,\n appName,\n templateName,\n resolution.sourceIdentity,\n );\n rewriteNetlifyToml(appDir, appName, \"workspace\");\n renameGitignore(appDir);\n setupAgentSymlinks(appDir);\n await scaffoldRequiredPackages([templateName], workspace.workspaceRoot);\n s.stop(`Scaffolded apps/${appName}.`);\n } catch (err: any) {\n s.stop(`Failed to scaffold apps/${appName}.`);\n cleanupOnFailure(appDir);\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n clack.outro(\n [\n `Done!`,\n ``,\n ` pnpm install`,\n ` pnpm dev`,\n ``,\n `The workspace gateway will detect apps/${appName} and serve it at /${appName}.`,\n ].join(\"\\n\"),\n );\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Standalone creation (escape hatch)\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function createStandaloneApp(\n name: string | undefined,\n opts: CreateAppOptions | undefined,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n clack.intro(\"Create a new standalone agent-native app\");\n\n name = await promptNameIfMissing(name, clack, \"app\", \"my-app\");\n\n const targetDir = resolveScaffoldTarget(name, opts?.inPlace, clack);\n\n // Standalone is single-select — pick one template.\n let template =\n opts?.template && !opts.template.includes(\",\") ? opts.template : undefined;\n if (!template) {\n const picked = await clack.select({\n message: \"Which template would you like to use?\",\n options: standaloneTemplatePromptOptions(),\n });\n if (clack.isCancel(picked)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n template = picked as string;\n }\n template = normalizeTemplateName(template);\n if (template === COMMUNITY_OPTION.name) {\n template = await promptCommunityTemplate(clack);\n }\n\n const s = clack.spinner();\n showCommunityTemplateTrustNote(template, clack);\n s.start(\n template === \"headless\"\n ? \"Scaffolding the headless agent app...\"\n : (communityTemplateDownloadMessage(template) ??\n `Downloading the ${template} template from GitHub...`),\n );\n try {\n const resolution = await scaffoldAppTemplate(\n targetDir,\n template,\n communityScaffoldOptions(clack, \"standalone\", name),\n );\n s.message(`Setting up ${name}…`);\n postProcessStandalone(name, targetDir, template, resolution);\n s.stop(\"App created!\");\n } catch (err: any) {\n s.stop(\"Failed to create app.\");\n // `targetDir` is the private staging dir for an in-place scaffold, so this\n // only ever removes the staging copy, never the user's current directory.\n cleanupOnFailure(targetDir);\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n finalizeScaffold(targetDir, opts?.inPlace);\n\n if (template === \"headless\") {\n clack.outro(\n [\n \"Done! Next steps:\",\n \"\",\n ` cd ${name}`,\n \" pnpm install\",\n \" pnpm action hello --name Builder\",\n ` pnpm agent \"Call hello for Builder\"`,\n \"\",\n \"Add a UI later by starting from the Chat template; `agent-native add` is reserved for integration blueprints.\",\n ].join(\"\\n\"),\n );\n } else {\n clack.outro(\n `Done! Next steps:\\n\\n cd ${name}\\n pnpm install\\n pnpm dev`,\n );\n }\n}\n\nfunction standaloneTemplatePromptOptions() {\n return [\n {\n value: HEADLESS_OPTION.name,\n label: HEADLESS_OPTION.label,\n hint: HEADLESS_OPTION.hint,\n },\n ...onRampFirst(coreTemplates())\n .filter((t) => t.name !== HEADLESS_OPTION.name)\n .map((t) => ({\n value: t.name,\n label: t.label,\n hint: t.hint,\n })),\n {\n value: COMMUNITY_OPTION.name,\n label: COMMUNITY_OPTION.label,\n hint: COMMUNITY_OPTION.hint,\n },\n ];\n}\n\n/**\n * Remove a partially-scaffolded target directory after a scaffold failure so a\n * retry doesn't hit the \"Directory already exists\" guard. Best-effort — the\n * underlying failure is what we want surfaced, so we swallow rm errors and\n * skip if the directory is somehow already gone.\n */\nfunction cleanupOnFailure(targetDir: string): void {\n try {\n if (fs.existsSync(targetDir)) {\n fs.rmSync(targetDir, { recursive: true, force: true });\n }\n } catch {\n // Ignore — original error is more useful than a cleanup failure.\n }\n}\n\n/**\n * Land a finished scaffold in its final home and initialize git. A named\n * scaffold is already in place, so this only inits git. An in-place scaffold\n * (`create .`) was built in `scaffoldDir` (a staging dir); copy only the files\n * that don't already exist into the current directory so pre-existing files\n * (`.git`, `README.md`, `.gitignore`, editor configs) are preserved, then drop\n * the staging dir. Git init/commit is skipped when the current directory is\n * already a repo so we never write an unexpected commit into the user's\n * history.\n */\nfunction finalizeScaffold(scaffoldDir: string, inPlace?: boolean): void {\n if (!inPlace) {\n tryGitInitUnlessRepo(scaffoldDir);\n return;\n }\n const dest = process.cwd();\n try {\n copyDir(scaffoldDir, dest, undefined, { skipExisting: true });\n } finally {\n cleanupOnFailure(scaffoldDir);\n }\n tryGitInitUnlessRepo(dest);\n}\n\nfunction tryGitInitUnlessRepo(dir: string): void {\n if (fs.existsSync(path.join(dir, \".git\"))) return;\n tryGitInit(dir);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Shared scaffolding helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\n/** Where a scaffolded template's bytes came from, recorded so\n * `agent-native template sync` can reproduce them later. */\nexport interface ScaffoldTemplateResolution {\n templateRef?: string;\n templateSource?: \"github\" | \"bundled\" | \"local-checkout\";\n sourceIdentity?: ScaffoldSourceIdentity;\n communityTemplate?: {\n source: string;\n ref: string;\n app?: string;\n };\n}\n\ninterface ScaffoldSourceIdentity {\n appName: string;\n appTitle: string;\n}\n\ninterface ScaffoldAppTemplateOptions {\n shape?: \"standalone\" | \"workspace\";\n destinationAppName?: string;\n targetWorkspaceCoreName?: string;\n selectCommunityWorkspaceApp?: (\n apps: CommunityWorkspaceAppOption[],\n ) => Promise<string>;\n}\n\nexport interface ScaffoldProvenance extends ScaffoldTemplateResolution {\n shape?: \"workspace\" | \"standalone\";\n}\n\n/**\n * Scaffold a single app template into `targetDir`. Resolves:\n * - \"headless\" / legacy \"blank\" → bundled action-first template\n * - \"community:user/repo[#ref]\" → download and validate the whole repo\n * - legacy \"github:user/repo[#ref]\" and clean GitHub HTTPS URLs → community\n * - first-party template name → use a bundled copy or download its subdir\n * from BuilderIO/agent-native\n */\nasync function scaffoldAppTemplate(\n targetDir: string,\n template: string,\n options: ScaffoldAppTemplateOptions = {},\n): Promise<ScaffoldTemplateResolution> {\n fs.mkdirSync(path.dirname(targetDir), { recursive: true });\n\n // Normalize legacy / renamed aliases.\n let resolved = normalizeTemplateName(template);\n\n if (resolved === \"headless\") {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const headlessDir = path.join(packageRoot, \"src/templates/headless\");\n if (!fs.existsSync(headlessDir)) {\n throw new Error(\n `Headless template not found at ${headlessDir}. Is the package installed correctly?`,\n );\n }\n copyDir(headlessDir, targetDir);\n return {\n templateSource: \"bundled\",\n templateRef: getGitHubTemplateRefCandidates()[0],\n };\n }\n\n const community = parseCommunityTemplateSelection(resolved, false);\n if (community) {\n const stagingDir = path.join(\n path.dirname(targetDir),\n `.agent-native-community-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,\n );\n try {\n const ref = await downloadGitHubRepo(\n community.repo,\n stagingDir,\n community.ref,\n );\n const source = await resolveCommunityTemplateSource(\n stagingDir,\n community,\n options,\n );\n copyDir(source.sourceDir, targetDir);\n if (source.workspaceRoot) {\n normalizeCommunityWorkspaceAppDependencies(\n targetDir,\n source.workspaceRoot,\n {\n shape: options.shape,\n destinationAppName:\n options.destinationAppName ?? path.basename(targetDir),\n targetWorkspaceCoreName: options.targetWorkspaceCoreName,\n sourceIdentity: source.sourceIdentity,\n },\n );\n }\n return {\n templateSource: \"github\",\n templateRef: ref,\n sourceIdentity: source.sourceIdentity,\n communityTemplate: {\n source: `https://github.com/${community.repo}`,\n ref,\n ...(source.app ? { app: source.app } : {}),\n },\n };\n } finally {\n fs.rmSync(stagingDir, { recursive: true, force: true });\n }\n }\n\n if (!getTemplate(resolved)) {\n throw new Error(\n `Unknown template \"${template}\". Known first-party templates: ${allTemplateNames().join(\", \")}. For a community template, use community:owner/repo.`,\n );\n }\n\n // If running from the framework monorepo with a local templates/ dir, use\n // that. Otherwise download from GitHub. This keeps `agent-native create`\n // fast during framework development.\n const sourceTemplate = templateSourceName(resolved);\n const localTemplate = findLocalTemplate(sourceTemplate);\n if (localTemplate) {\n copyDir(localTemplate, targetDir);\n return {\n templateSource: localTemplateSourceKind(localTemplate),\n templateRef: getGitHubTemplateRefCandidates()[0],\n };\n }\n const templateRef = await downloadGitHubSubdir(\n REPO,\n `${TEMPLATES_DIR}/${sourceTemplate}`,\n targetDir,\n );\n return { templateSource: \"github\", templateRef };\n}\n\n/** A template dir inside the installed core package ships with the CLI;\n * anything above it belongs to a framework checkout. */\nfunction localTemplateSourceKind(\n localTemplate: string,\n): \"bundled\" | \"local-checkout\" {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const rel = path.relative(packageRoot, path.resolve(localTemplate));\n return rel && !rel.startsWith(\"..\") && !path.isAbsolute(rel)\n ? \"bundled\"\n : \"local-checkout\";\n}\n\nfunction templateSourceName(name: string): string {\n if (name === \"starter\") return \"chat\";\n return name;\n}\n\n/**\n * Prefer a nearby templates/<name> or src/templates/<name> directory. This\n * covers the framework checkout, the dist/templates copy bundled into\n * published CLI packages, and source templates included in package files;\n * packages that do not bundle a template fall back to GitHub.\n */\nfunction findLocalTemplate(name: string): string | undefined {\n return findLocalTemplateFrom(path.resolve(__dirname), name);\n}\n\nfunction findLocalTemplateFrom(\n startDir: string,\n name: string,\n): string | undefined {\n let dir = path.resolve(startDir);\n for (let i = 0; i < 10; i++) {\n for (const templatesDir of [\"templates\", \"src/templates\"]) {\n const candidate = path.join(dir, templatesDir, name);\n if (fs.existsSync(path.join(candidate, \"package.json\"))) {\n return candidate;\n }\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return undefined;\n}\n\nfunction normalizeTemplateName(template: string): string {\n if (template === \"blank\") return \"headless\";\n if (template === \"image\" || template === \"images\" || template === \"asset\") {\n return \"assets\";\n }\n const community = parseCommunityTemplateSelection(template, false);\n if (community) return community.canonical;\n return template;\n}\n\ninterface CommunityTemplateSelection {\n repo: string;\n app?: string;\n ref?: string;\n canonical: string;\n}\n\nfunction parseCommunityTemplateSelection(\n selection: string,\n): CommunityTemplateSelection;\nfunction parseCommunityTemplateSelection(\n selection: string,\n required: true,\n): CommunityTemplateSelection;\nfunction parseCommunityTemplateSelection(\n selection: string,\n required: false,\n): CommunityTemplateSelection | undefined;\nfunction parseCommunityTemplateSelection(\n selection: string,\n required = true,\n): CommunityTemplateSelection | undefined {\n const value = selection.trim();\n let raw: string | undefined;\n if (value.startsWith(\"community:\")) {\n raw = value.slice(\"community:\".length).trim();\n } else if (value.startsWith(\"github:\")) {\n raw = value.slice(\"github:\".length).trim();\n } else if (value.startsWith(\"https://github.com/\")) {\n raw = value;\n } else {\n if (!required) return undefined;\n throw new ValidationError(\n `Invalid community template \"${selection}\". Use community:owner/repo, optionally with #branch, #tag, or #commit.`,\n );\n }\n\n if (!raw) {\n throw new ValidationError(\n \"A community template repository is required. Use owner/repo or a GitHub URL.\",\n );\n }\n\n let repo: string;\n let app: string | undefined;\n let ref: string | undefined;\n if (raw.includes(\"://\")) {\n let url: URL;\n try {\n url = new URL(raw);\n } catch {\n throw new ValidationError(\n `Invalid GitHub repository URL \"${raw}\". Expected https://github.com/owner/repo.`,\n );\n }\n const parts = url.pathname.split(\"/\").filter(Boolean);\n if (\n url.protocol !== \"https:\" ||\n url.hostname !== \"github.com\" ||\n url.port ||\n url.username ||\n url.password ||\n parts.length !== 2\n ) {\n throw new ValidationError(\n `Invalid GitHub repository URL \"${raw}\". Expected https://github.com/owner/repo with an optional #ref.`,\n );\n }\n repo = `${parts[0]}/${parts[1]!.replace(/\\.git$/, \"\")}`;\n app = parseCommunityAppSearchParams(url.searchParams, raw);\n if (url.hash.length > 1) {\n try {\n ref = decodeURIComponent(url.hash.slice(1));\n } catch {\n throw new ValidationError(`Invalid encoded Git ref in \"${raw}\".`);\n }\n }\n } else {\n const hash = raw.indexOf(\"#\");\n const beforeHash = hash === -1 ? raw : raw.slice(0, hash);\n const query = beforeHash.indexOf(\"?\");\n repo = (query === -1 ? beforeHash : beforeHash.slice(0, query)).replace(\n /\\.git$/,\n \"\",\n );\n if (query !== -1) {\n app = parseCommunityAppSearchParams(\n new URLSearchParams(beforeHash.slice(query + 1)),\n raw,\n );\n }\n ref = hash === -1 ? undefined : raw.slice(hash + 1);\n }\n\n validateRepoName(repo);\n if (app !== undefined) validateCommunityAppSelector(app);\n if (ref !== undefined) validateGitRef(ref);\n return {\n repo,\n ...(app ? { app } : {}),\n ...(ref ? { ref } : {}),\n canonical: `community:${repo}${app ? `?app=${app}` : \"\"}${ref ? `#${ref}` : \"\"}`,\n };\n}\n\nfunction parseCommunityAppSearchParams(\n params: URLSearchParams,\n source: string,\n): string | undefined {\n const entries = [...params.entries()];\n if (entries.length === 0) return undefined;\n if (entries.length !== 1 || entries[0]?.[0] !== \"app\" || !entries[0][1]) {\n throw new ValidationError(\n `Invalid community template selector in \"${source}\". Only ?app=<app-name> is supported.`,\n );\n }\n return entries[0][1];\n}\n\nfunction validateCommunityAppSelector(app: string): void {\n if (app === \"dispatch\") {\n throw new ValidationError(\n \"Dispatch cannot be installed from a community workspace.\",\n );\n }\n const error = getWorkspaceAppIdValidationError(app);\n if (error) throw new ValidationError(error);\n}\n\nfunction isCommunityTemplateSelection(selection: string): boolean {\n return parseCommunityTemplateSelection(selection, false) !== undefined;\n}\n\nfunction parseCommunityPromptValue(value: string): CommunityTemplateSelection {\n const trimmed = value.trim();\n const selection =\n trimmed.startsWith(\"community:\") ||\n trimmed.startsWith(\"github:\") ||\n trimmed.startsWith(\"https://github.com/\")\n ? trimmed\n : `community:${trimmed}`;\n return parseCommunityTemplateSelection(selection);\n}\n\nfunction validateGitRef(ref: string): void {\n if (\n !ref ||\n !/^[a-zA-Z0-9][a-zA-Z0-9._/+-]*$/.test(ref) ||\n ref.includes(\"..\") ||\n ref.includes(\"//\") ||\n ref.includes(\"@{\") ||\n ref.endsWith(\"/\") ||\n ref.endsWith(\".\") ||\n ref.split(\"/\").some((part) => !part || part.endsWith(\".lock\"))\n ) {\n throw new ValidationError(\n `Invalid Git ref \"${ref}\". Use a branch, tag, or commit SHA without spaces or Git ref control characters.`,\n );\n }\n}\n\nfunction communityTemplateTrustMessage(selection: string): string | undefined {\n const community = parseCommunityTemplateSelection(selection, false);\n if (!community) return undefined;\n return [\n `${community.repo} is third-party code and is not reviewed or maintained by Agent Native.`,\n \"The CLI downloads source only; it does not install dependencies or run template scripts.\",\n \"Review the generated files before running pnpm install.\",\n community.ref\n ? `Requested ref: ${community.ref}`\n : \"No ref supplied; the CLI will try main, then master.\",\n ].join(\"\\n\");\n}\n\nfunction communityTemplateDownloadMessage(\n selection: string,\n): string | undefined {\n const community = parseCommunityTemplateSelection(selection, false);\n return community\n ? `Downloading community template ${community.repo} from GitHub...`\n : undefined;\n}\n\nfunction showCommunityTemplateTrustNote(\n selection: string,\n clack: typeof import(\"@clack/prompts\"),\n): void {\n const message = communityTemplateTrustMessage(selection);\n if (message) clack.note(message, \"Community template — review before use\");\n}\n\n/**\n * Find a local packages/<name> directory (for framework development).\n * Returns undefined when running as a published npm package.\n */\nfunction findLocalPackage(name: string): string | undefined {\n let dir = path.resolve(__dirname);\n for (let i = 0; i < 10; i++) {\n const candidate = path.join(dir, \"packages\", name);\n if (fs.existsSync(path.join(candidate, \"package.json\"))) {\n return candidate;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return undefined;\n}\n\n/**\n * Pack a local framework package before linking it into a generated app.\n * Raw file: dependencies retain workspace-only catalog references, while a\n * packed artifact has the publish-ready manifest that consumers receive.\n */\nfunction localPackageTarball(packageDir: string): string {\n const cached = localPackageTarballs.get(packageDir);\n if (cached) return cached;\n\n const packDir = fs.mkdtempSync(\n path.join(os.tmpdir(), \"agent-native-local-package-\"),\n );\n const pnpm = process.platform === \"win32\" ? \"pnpm.cmd\" : \"pnpm\";\n execFileSync(pnpm, [\"pack\", \"--pack-destination\", packDir], {\n cwd: packageDir,\n encoding: \"utf-8\",\n env: { ...process.env, npm_config_ignore_scripts: \"true\" },\n stdio: \"pipe\",\n });\n\n const tarballs = fs\n .readdirSync(packDir)\n .filter((entry) => entry.endsWith(\".tgz\"));\n if (tarballs.length !== 1) {\n throw new Error(\n `Expected one packed local package artifact in ${packDir}, found ${tarballs.length}.`,\n );\n }\n\n const tarball = pathToFileURL(path.join(packDir, tarballs[0]!)).href;\n localPackageTarballs.set(packageDir, tarball);\n return tarball;\n}\n\n/**\n * Scaffold internal workspace packages required by the selected templates.\n * Deduplicates so each package is only copied once even if multiple\n * templates need it.\n */\nasync function scaffoldRequiredPackages(\n templateNames: string[],\n workspaceRoot: string,\n): Promise<void> {\n const needed = new Set<string>();\n for (const t of templateNames) {\n const meta = getTemplate(t);\n if (meta?.requiredPackages) {\n for (const p of meta.requiredPackages) needed.add(p);\n }\n }\n\n for (const pkgName of needed) {\n const targetDir = path.join(workspaceRoot, \"packages\", pkgName);\n if (fs.existsSync(targetDir)) continue;\n\n fs.mkdirSync(path.join(workspaceRoot, \"packages\"), { recursive: true });\n\n const localPkg = findLocalPackage(pkgName);\n if (localPkg) {\n copyDir(localPkg, targetDir);\n } else {\n await downloadGitHubSubdir(REPO, `packages/${pkgName}`, targetDir);\n }\n\n // The copied package may have published framework packages as workspace:*\n // deps. Convert them to published ranges because these package-backed\n // modules are npm dependencies, not scaffolded workspace members.\n const pkgJsonPath = path.join(targetDir, \"package.json\");\n if (fs.existsSync(pkgJsonPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n if (\n typeof val === \"string\" &&\n val.startsWith(\"workspace:\") &&\n key === \"@agent-native/core\"\n ) {\n deps[key] = getCoreDependencyVersion();\n }\n if (\n typeof val === \"string\" &&\n val.startsWith(\"workspace:\") &&\n key === \"@agent-native/toolkit\"\n ) {\n deps[key] = getToolkitDependencyVersion();\n }\n }\n }\n // These packages' `exports` maps point at `./dist/*`, and `dist/` is\n // gitignored (never committed), so a scaffolded workspace must build\n // it on install. pnpm always runs `prepare` for workspace packages,\n // unlike `postinstall`, so this is the reliable hook.\n if (\n pkg.scripts &&\n typeof pkg.scripts.build === \"string\" &&\n !pkg.scripts.prepare\n ) {\n pkg.scripts.prepare = \"npm run build\";\n }\n fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n }\n }\n\n // Add a postinstall script to build workspace packages so their dist/\n // directories exist even when downloaded from GitHub (where dist/ is\n // gitignored).\n if (needed.size > 0) {\n const rootPkgPath = path.join(workspaceRoot, \"package.json\");\n if (fs.existsSync(rootPkgPath)) {\n try {\n const rootPkg = JSON.parse(fs.readFileSync(rootPkgPath, \"utf-8\"));\n rootPkg.scripts = rootPkg.scripts ?? {};\n const builds = [...needed]\n .map((n) => `pnpm --filter ./packages/${n} build`)\n .join(\" && \");\n const existing = rootPkg.scripts.postinstall;\n if (existing) {\n if (!existing.includes(builds)) {\n rootPkg.scripts.postinstall = `${existing} && ${builds}`;\n }\n } else {\n rootPkg.scripts.postinstall = builds;\n }\n fs.writeFileSync(rootPkgPath, JSON.stringify(rootPkg, null, 2) + \"\\n\");\n } catch {}\n }\n }\n}\n\n/**\n * Post-process a standalone scaffold: replace placeholders, strip\n * workspace:* deps, set up agent symlinks, etc.\n */\nfunction postProcessStandalone(\n name: string,\n targetDir: string,\n templateName?: string,\n resolution?: ScaffoldTemplateResolution,\n): void {\n const appTitle = appTitleForScaffold(name);\n replacePlaceholders(targetDir, name, appTitle);\n applyScaffoldIdentity(\n targetDir,\n name,\n templateName,\n resolution?.sourceIdentity,\n );\n fixPackageJsonName(targetDir, name, templateName, {\n ...resolution,\n shape: \"standalone\",\n });\n fixWebManifestName(targetDir, name, templateName, resolution?.sourceIdentity);\n rewriteNetlifyToml(targetDir, name, \"standalone\");\n\n for (const base of [\"learnings\"]) {\n const defaultsFile = path.join(targetDir, `${base}.defaults.md`);\n const targetFile = path.join(targetDir, `${base}.md`);\n if (fs.existsSync(defaultsFile) && !fs.existsSync(targetFile)) {\n fs.copyFileSync(defaultsFile, targetFile);\n }\n }\n\n renameGitignore(targetDir);\n\n // No monorepo-only files to drop for standalone scaffolds.\n // DEVELOPING.md is intentionally kept: it documents local run commands,\n // DATABASE_URL defaults, and other local-run instructions that are equally\n // valid for standalone apps.\n\n // Resolve workspace:* and catalog: deps for standalone projects.\n // catalog: references only resolve inside a pnpm workspace with a catalog\n // defined in pnpm-workspace.yaml — standalone scaffolds don't have one.\n const catalog = loadCatalog();\n const pkgPath = path.join(targetDir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n const exactOverride = STANDALONE_EXACT_DEPENDENCY_OVERRIDES[key];\n if (exactOverride) {\n deps[key] = exactOverride;\n } else if (key === \"@agent-native/core\") {\n deps[key] = getCoreDependencyVersion();\n } else if (key === \"@agent-native/toolkit\") {\n deps[key] = getToolkitDependencyVersion();\n } else if (typeof val === \"string\" && val.startsWith(\"workspace:\")) {\n deps[key] = \"latest\";\n } else if (typeof val === \"string\" && val === \"catalog:\") {\n deps[key] = catalog[key] ?? \"latest\";\n }\n }\n }\n // Ensure pnpm.onlyBuiltDependencies is set so native packages\n // (better-sqlite3, esbuild, node-pty) compile their postinstall scripts\n // under pnpm 10+ without prompting for `pnpm approve-builds`.\n pkg.dependencies = pkg.dependencies ?? {};\n pkg.dependencies.postgres ??= POSTGRES_DEPENDENCY_VERSION;\n ensureReactRouterBuildDependencies(pkg);\n\n const requiredBuilt = [\"better-sqlite3\", \"esbuild\", \"node-pty\"];\n if (!pkg.pnpm || typeof pkg.pnpm !== \"object\") {\n pkg.pnpm = {};\n }\n const existing = Array.isArray(pkg.pnpm.onlyBuiltDependencies)\n ? pkg.pnpm.onlyBuiltDependencies\n : [];\n pkg.pnpm.onlyBuiltDependencies = Array.from(\n new Set([...existing, ...requiredBuilt]),\n );\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n }\n\n // Write pnpm-workspace.yaml for pnpm v11 compatibility. pnpm v11 no longer\n // reads the pnpm field in package.json, so allowBuilds and overrides must\n // live here. Merge into any existing file (e.g. from the default template)\n // without creating duplicate section headers.\n const wsPath = path.join(targetDir, \"pnpm-workspace.yaml\");\n try {\n const existing = fs.existsSync(wsPath)\n ? fs.readFileSync(wsPath, \"utf-8\")\n : \"\";\n const sections: Record<string, Record<string, string>> = {\n allowBuilds: {\n \"better-sqlite3\": \"true\",\n esbuild: \"true\",\n \"node-pty\": \"true\",\n },\n };\n if (templateName !== \"headless\") {\n sections.overrides = {\n '\"@assistant-ui/store\"': '\">=0.2.9 <0.2.14\"',\n '\"@assistant-ui/tap\"': '\"^0.5.14\"',\n nf3: '\"0.3.17\"',\n };\n }\n const localToolkit = localToolkitOverride();\n if (localToolkit) {\n sections.overrides ??= {};\n sections.overrides['\"@agent-native/toolkit\"'] =\n JSON.stringify(localToolkit);\n }\n const localRecapCli = localRecapCliOverride();\n if (localRecapCli) {\n sections.overrides ??= {};\n sections.overrides['\"@agent-native/recap-cli\"'] =\n JSON.stringify(localRecapCli);\n }\n let updated = mergeWorkspaceYamlSections(existing, sections);\n updated = mergeWorkspaceYamlListItems(\n updated,\n \"minimumReleaseAgeExclude\",\n MINIMUM_RELEASE_AGE_EXCLUDES,\n );\n if (updated !== existing) {\n fs.writeFileSync(wsPath, updated);\n }\n } catch {}\n\n fixStandaloneTsconfig(targetDir, templateName);\n\n setupAgentSymlinks(targetDir);\n}\n\nfunction ensureReactRouterBuildDependencies(pkg: Record<string, any>): void {\n const allDeps = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n ...pkg.peerDependencies,\n };\n if (\n !allDeps[\"@react-router/dev\"] &&\n !allDeps[\"react-router\"] &&\n !allDeps[\"@react-router/fs-routes\"]\n ) {\n return;\n }\n\n pkg.dependencies = pkg.dependencies ?? {};\n for (const key of REACT_ROUTER_BUILD_DEPENDENCIES) {\n const existing =\n pkg.dependencies[key] ??\n pkg.devDependencies?.[key] ??\n pkg.peerDependencies?.[key];\n if (!existing) continue;\n pkg.dependencies[key] =\n STANDALONE_EXACT_DEPENDENCY_OVERRIDES[key] ?? existing;\n delete pkg.devDependencies?.[key];\n delete pkg.peerDependencies?.[key];\n }\n}\n\nfunction fixStandaloneTsconfig(targetDir: string, templateName?: string): void {\n const tsconfigPath = path.join(targetDir, \"tsconfig.json\");\n if (!fs.existsSync(tsconfigPath)) return;\n try {\n const tsconfig = JSON.parse(fs.readFileSync(tsconfigPath, \"utf-8\")) as {\n compilerOptions?: Record<string, unknown>;\n };\n tsconfig.compilerOptions ??= {};\n const hasUiApp =\n templateName !== \"headless\" && fs.existsSync(path.join(targetDir, \"app\"));\n const paths = {\n ...((tsconfig.compilerOptions.paths as Record<string, string[]>) ?? {}),\n };\n paths[\"*\"] ??= [\"./*\"];\n if (hasUiApp) {\n paths[\"@/*\"] ??= [\"./app/*\"];\n paths[\"@shared/*\"] ??= [\"./shared/*\"];\n }\n // baseUrl is deprecated/errors in TS 6 (TS5101/TS5102) and removed in TS 7\n // (tsc, which CI runs). paths already resolve relative to this tsconfig,\n // and the \"*\": [\"./*\"] entry replaces baseUrl's bare-specifier resolution,\n // so never emit baseUrl into scaffolds.\n delete tsconfig.compilerOptions.baseUrl;\n tsconfig.compilerOptions.paths = paths;\n fs.writeFileSync(tsconfigPath, `${JSON.stringify(tsconfig, null, 2)}\\n`);\n } catch {}\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Prompting helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function promptNameIfMissing(\n name: string | undefined,\n clack: typeof import(\"@clack/prompts\"),\n kind: \"workspace\" | \"app\",\n placeholder: string,\n): Promise<string> {\n if (name) {\n if (!/^[a-z][a-z0-9-]*$/.test(name)) {\n clack.cancel(\n `Invalid ${kind} name \"${name}\". Use lowercase letters, numbers, and hyphens.`,\n );\n process.exit(1);\n }\n return name;\n }\n const result = await clack.text({\n message: `What is your ${kind} name?`,\n placeholder,\n validate(value) {\n if (!value)\n return `${kind[0].toUpperCase() + kind.slice(1)} name is required`;\n if (!/^[a-z][a-z0-9-]*$/.test(value)) {\n return \"Use lowercase letters, numbers, and hyphens (must start with a letter)\";\n }\n if (fs.existsSync(path.resolve(process.cwd(), value))) {\n return `Directory \"${value}\" already exists`;\n }\n },\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return result as string;\n}\n\nasync function promptTemplatePicker(\n preselected: string[],\n clack: typeof import(\"@clack/prompts\"),\n opts?: {\n defaultTemplates?: string[];\n excludeNames?: string[];\n message?: string;\n preferredFirst?: string[];\n recommendedNames?: string[];\n },\n): Promise<string[]> {\n const excluded = new Set(opts?.excludeNames ?? []);\n const orderedTemplates = opts?.preferredFirst\n ? moveTemplatesToFront(coreTemplates(), opts.preferredFirst)\n : onRampFirst(coreTemplates());\n const recommendedNames = new Set(opts?.recommendedNames ?? []);\n const options = orderedTemplates\n .filter((t) => !excluded.has(t.name))\n .map((t) => ({\n value: t.name,\n label: recommendedNames.has(t.name)\n ? `${t.label} (recommended)`\n : t.label,\n hint:\n recommendedNames.has(t.name) && t.name === \"dispatch\"\n ? \"Recommended workspace control plane: secrets, messaging, approvals, and A2A delegation\"\n : t.hint,\n }));\n\n // If there's nothing left to pick, the caller gets an empty selection —\n // they decide how to handle it.\n if (options.length === 0) return [];\n\n // Default pre-selection: what the user passed via --template, falling\n // back to caller defaults, then to \"chat\" when available.\n const defaults =\n preselected.length > 0\n ? preselected.filter((p) => options.some((o) => o.value === p))\n : opts?.defaultTemplates\n ? opts.defaultTemplates.filter((p) =>\n options.some((o) => o.value === p),\n )\n : options.some((o) => o.value === \"chat\")\n ? [\"chat\"]\n : [];\n\n const baseMessage = opts?.message ?? \"Which apps would you like to include?\";\n const result = await clack.multiselect({\n message: `${baseMessage}\\n (↑/↓ move · space to toggle · enter to confirm)`,\n options,\n initialValues: defaults,\n required: false,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return result as string[];\n}\n\nfunction parseTemplateList(input?: string): string[] {\n if (!input) return [];\n return input\n .split(\",\")\n .map((s) => normalizeTemplateName(s.trim()))\n .filter(Boolean);\n}\n\nfunction listInstalledApps(workspaceRoot: string): string[] {\n const appsDir = path.join(workspaceRoot, \"apps\");\n if (!fs.existsSync(appsDir)) return [];\n return fs\n .readdirSync(appsDir, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Workspace detection\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Walk up from startDir looking for a package.json with\n * `agent-native.workspaceCore` set. Returns the workspace root and core\n * package name, or null if not inside a workspace.\n */\nexport function detectWorkspace(\n startDir: string,\n): { workspaceRoot: string; workspaceCoreName: string } | null {\n let dir = path.resolve(startDir);\n for (let i = 0; i < 20; i++) {\n const pkgPath = path.join(dir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n const wsCore = pkg?.[\"agent-native\"]?.workspaceCore;\n if (typeof wsCore === \"string\" && wsCore.length > 0) {\n return { workspaceRoot: dir, workspaceCoreName: wsCore };\n }\n } catch {}\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\nexport { parseWorkspaceScope };\n\n/** @internal — exported for E2E tests */\nexport {\n scaffoldWorkspaceRoot as _scaffoldWorkspaceRoot,\n scaffoldAppTemplate as _scaffoldAppTemplate,\n scaffoldRequiredPackages as _scaffoldRequiredPackages,\n postProcessStandalone as _postProcessStandalone,\n loadCatalog as _loadCatalog,\n fixPackageJsonName as _fixPackageJsonName,\n renameGitignore as _renameGitignore,\n rewriteNetlifyToml as _rewriteNetlifyToml,\n getCoreDependencyVersion as _getCoreDependencyVersion,\n getDispatchDependencyVersion as _getDispatchDependencyVersion,\n getToolkitDependencyVersion as _getToolkitDependencyVersion,\n getCorePackageVersion as _getCorePackageVersion,\n getGitHubTemplateRef as _getGitHubTemplateRef,\n getGitHubTemplateRefCandidates as _getGitHubTemplateRefCandidates,\n githubTarballUrl as _githubTarballUrl,\n findLocalTemplateFrom as _findLocalTemplateFrom,\n workspaceAppNameForTemplateSelection as _workspaceAppNameForTemplateSelection,\n startShapePromptOptions as _startShapePromptOptions,\n standaloneTemplatePromptOptions as _standaloneTemplatePromptOptions,\n parseCommunityTemplateSelection as _parseCommunityTemplateSelection,\n communityTemplateTrustMessage as _communityTemplateTrustMessage,\n communityTemplateTarballUrl as _communityTemplateTarballUrl,\n assertCommunityTemplateRoot as _assertCommunityTemplateRoot,\n assertSafeCommunityArchiveListing as _assertSafeCommunityArchiveListing,\n validateCommunityArchive as _validateCommunityArchive,\n resolveCommunityTemplateSource as _resolveCommunityTemplateSource,\n discoverCommunityWorkspaceApps as _discoverCommunityWorkspaceApps,\n normalizeCommunityWorkspaceAppDependencies as _normalizeCommunityWorkspaceAppDependencies,\n shouldSkipScaffoldEntry as _shouldSkipScaffoldEntry,\n tarExtractArgs as _tarExtractArgs,\n downloadGitHubSubdir as _downloadGitHubSubdir,\n findLocalTemplate as _findLocalTemplate,\n templateSourceName as _templateSourceName,\n normalizeTemplateName as _normalizeTemplateName,\n appTitleForScaffold as _appTitleForScaffold,\n replacePlaceholders as _replacePlaceholders,\n rewriteTrackingAppId as _rewriteTrackingAppId,\n rewriteAgentChatAppId as _rewriteAgentChatAppId,\n applyScaffoldIdentity as _applyScaffoldIdentity,\n fixWebManifestName as _fixWebManifestName,\n copyDir as _copyDir,\n localTemplateSourceKind as _localTemplateSourceKind,\n REPO as _REPO,\n TEMPLATES_DIR as _TEMPLATES_DIR,\n};\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Download / copy helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\nfunction validateRepoName(repo: string): void {\n const parts = repo.split(\"/\");\n if (\n !/^[a-zA-Z0-9_.-]+\\/[a-zA-Z0-9_.-]+$/.test(repo) ||\n parts.some((part) => part === \".\" || part === \"..\")\n ) {\n throw new ValidationError(\n `Invalid repository name \"${repo}\". Expected format: user/repo`,\n );\n }\n}\n\nfunction tarExtractArgs(\n tarPath: string,\n destDir: string,\n options: {\n skipAgentSymlinks?: boolean;\n untrustedCommunityArchive?: boolean;\n } = {},\n): string[] {\n const excludes = options.skipAgentSymlinks\n ? FIRST_PARTY_TARBALL_SYMLINK_EXCLUDES.flatMap((pattern) => [\n \"--exclude\",\n pattern,\n ])\n : [];\n const safeOwnership = options.untrustedCommunityArchive\n ? [\"--no-same-owner\", \"--no-same-permissions\"]\n : [];\n return [\n \"xzf\",\n tarPath,\n \"--strip-components=1\",\n ...safeOwnership,\n ...excludes,\n \"-C\",\n destDir,\n ];\n}\n\nfunction execFileBuffer(\n command: string,\n args: string[],\n options: { maxBuffer: number },\n): Promise<Buffer> {\n return new Promise((resolve, reject) => {\n execFile(\n command,\n args,\n { ...options, encoding: \"buffer\" },\n (error, stdout, stderr) => {\n if (error) {\n const detail = stderr?.toString().trim();\n if (detail) error.message = `${error.message}: ${detail}`;\n reject(error);\n return;\n }\n resolve(Buffer.isBuffer(stdout) ? stdout : Buffer.from(stdout));\n },\n );\n });\n}\n\nasync function downloadAndExtract(\n url: string,\n destDir: string,\n options: {\n skipAgentSymlinks?: boolean;\n untrustedCommunityArchive?: boolean;\n } = {},\n): Promise<void> {\n fs.mkdirSync(destDir, { recursive: true });\n // --fail-with-body so curl exits non-zero on HTTP 4xx/5xx instead of writing\n // the error body (HTML/JSON) to disk where tar then fails with the opaque\n // \"Unrecognized archive format\" message.\n // Keep this asynchronous: a synchronous curl blocks the event loop, which\n // makes the create command's spinner look frozen during the GitHub fetch.\n const tarball = await execFileBuffer(\n \"curl\",\n [\n \"--fail-with-body\",\n \"--connect-timeout\",\n \"10\",\n \"--max-time\",\n \"120\",\n \"-sSL\",\n url,\n ],\n { maxBuffer: 100 * 1024 * 1024 },\n );\n const tarPath = path.join(destDir, \".download.tar.gz\");\n fs.writeFileSync(tarPath, tarball);\n try {\n if (options.untrustedCommunityArchive) {\n validateCommunityArchive(tarPath);\n }\n execFileSync(\"tar\", tarExtractArgs(tarPath, destDir, options), {\n stdio: \"pipe\",\n });\n } finally {\n fs.unlinkSync(tarPath);\n }\n}\n\nfunction validateCommunityArchive(tarPath: string): void {\n const listing = execFileSync(\"tar\", [\"tvzf\", tarPath], {\n encoding: \"utf-8\",\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n assertSafeCommunityArchiveListing(listing);\n}\n\nfunction assertSafeCommunityArchiveListing(listing: string): void {\n const unsafeEntry = listing.split(/\\r?\\n/).find((line) => {\n if (line.startsWith(\"h\")) return true;\n if (!line.startsWith(\"l\")) return false;\n return !isCanonicalAgentSymlinkListing(line);\n });\n if (unsafeEntry) {\n throw new ValidationError(\n \"Community template archives may only contain Agent Native's canonical internal symlinks (CLAUDE.md and .claude/skills). Remove other symbolic or hard links and try again.\",\n );\n }\n}\n\nfunction isCanonicalAgentSymlinkListing(line: string): boolean {\n const match = line.match(/\\s(\\S+)\\s+->\\s+(\\S+)\\s*$/);\n if (!match) return false;\n const archivePath = match[1]!;\n const target = match[2]!;\n const parts = archivePath.split(\"/\");\n if (\n parts.some(\n (part) => !part || part === \".\" || part === \"..\" || part.includes(\"\\\\\"),\n )\n ) {\n return false;\n }\n return (\n (parts.at(-1) === \"CLAUDE.md\" && target === \"AGENTS.md\") ||\n (parts.at(-2) === \".claude\" &&\n parts.at(-1) === \"skills\" &&\n target === \"../.agents/skills\")\n );\n}\n\n/** Resolves to the ref that actually succeeded so callers can record it. */\nasync function downloadGitHubSubdir(\n repo: string,\n subdir: string,\n targetDir: string,\n refOverride?: string[],\n): Promise<string> {\n validateRepoName(repo);\n const refs = refOverride?.length\n ? refOverride\n : getGitHubTemplateRefCandidates();\n if (refs.length === 0) {\n throw new Error(\n \"Cannot download first-party scaffold files without a versioned @agent-native/core package.\",\n );\n }\n const errors: string[] = [];\n for (const ref of refs) {\n const tarUrl = githubTarballUrl(repo, ref, \"tag\");\n const tmpDir = path.join(\n targetDir,\n \"..\",\n `.agent-native-tmp-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,\n );\n try {\n await downloadAndExtract(tarUrl, tmpDir, {\n skipAgentSymlinks: repo === REPO,\n });\n const srcDir = path.join(tmpDir, subdir);\n if (!fs.existsSync(srcDir)) {\n throw new Error(\n `Template directory \"${subdir}\" not found at ref \"${ref}\".`,\n );\n }\n copyDir(srcDir, targetDir);\n return ref;\n } catch (err) {\n errors.push(\n ` ${ref}: ${err instanceof Error ? err.message.split(\"\\n\")[0] : String(err)}`,\n );\n } finally {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n }\n }\n throw new Error(\n `Failed to download templates from ${repo}. Tried refs:\\n${errors.join(\"\\n\")}`,\n );\n}\n\nasync function downloadGitHubRepo(\n repo: string,\n targetDir: string,\n requestedRef?: string,\n): Promise<string> {\n validateRepoName(repo);\n const refs = requestedRef ? [requestedRef] : [\"main\", \"master\"];\n const errors: string[] = [];\n for (const ref of refs) {\n try {\n await downloadAndExtract(\n communityTemplateTarballUrl(repo, ref),\n targetDir,\n { untrustedCommunityArchive: true },\n );\n return ref;\n } catch (error) {\n errors.push(\n ` ${ref}: ${error instanceof Error ? error.message.split(\"\\n\")[0] : String(error)}`,\n );\n cleanupOnFailure(targetDir);\n }\n }\n throw new Error(\n `Failed to download community template ${repo}. Tried refs:\\n${errors.join(\"\\n\")}\\nThe repository must be public, and the requested branch, tag, or commit must exist.`,\n );\n}\n\nfunction communityTemplateTarballUrl(repo: string, ref: string): string {\n return `https://codeload.github.com/${repo}/tar.gz/${encodeURIComponent(ref)}`;\n}\n\nfunction assertCommunityTemplateRoot(targetDir: string, repo: string): void {\n const packagePath = path.join(targetDir, \"package.json\");\n if (!fs.existsSync(packagePath)) {\n throw new ValidationError(\n `Community template ${repo} is not an Agent Native app at the repository root: package.json was not found. Point to a repository whose root is the app.`,\n );\n }\n\n let pkg: Record<string, unknown>;\n try {\n pkg = JSON.parse(fs.readFileSync(packagePath, \"utf-8\"));\n } catch {\n throw new ValidationError(\n `Community template ${repo} has an unreadable package.json at the repository root.`,\n );\n }\n const dependencyGroups = [\n pkg.dependencies,\n pkg.devDependencies,\n pkg.peerDependencies,\n ];\n const usesAgentNativeCore = dependencyGroups.some(\n (group) =>\n group !== null &&\n typeof group === \"object\" &&\n !Array.isArray(group) &&\n typeof (group as Record<string, unknown>)[\"@agent-native/core\"] ===\n \"string\",\n );\n if (!usesAgentNativeCore) {\n throw new ValidationError(\n `Community template ${repo} is not an Agent Native app at the repository root. Its package.json must directly depend on @agent-native/core in dependencies, devDependencies, or peerDependencies.`,\n );\n }\n}\n\ninterface ResolvedCommunityTemplateSource {\n sourceDir: string;\n sourceIdentity: ScaffoldSourceIdentity;\n app?: string;\n workspaceRoot?: string;\n}\n\nasync function resolveCommunityTemplateSource(\n stagingDir: string,\n selection: CommunityTemplateSelection,\n options: ScaffoldAppTemplateOptions = {},\n): Promise<ResolvedCommunityTemplateSource> {\n const rootPkg = readPackageJsonObject(path.join(stagingDir, \"package.json\"));\n const agentNative =\n rootPkg?.[\"agent-native\"] &&\n typeof rootPkg[\"agent-native\"] === \"object\" &&\n !Array.isArray(rootPkg[\"agent-native\"])\n ? (rootPkg[\"agent-native\"] as Record<string, unknown>)\n : undefined;\n const hasWorkspaceCoreMarker =\n agentNative && Object.hasOwn(agentNative, \"workspaceCore\");\n const workspaceCore = agentNative?.workspaceCore;\n if (\n hasWorkspaceCoreMarker &&\n (typeof workspaceCore !== \"string\" || !workspaceCore.trim())\n ) {\n throw new ValidationError(\n `Community repository ${selection.repo} has invalid agent-native.workspaceCore metadata. Expected a non-empty workspace package name.`,\n );\n }\n const isWorkspace = typeof workspaceCore === \"string\";\n\n if (!isWorkspace) {\n assertCommunityTemplateRoot(stagingDir, selection.repo);\n const sourceIdentity = readCommunitySourceIdentity(\n stagingDir,\n selection.repo,\n );\n if (selection.app) {\n throw new ValidationError(\n `Community repository ${selection.repo} is a single app at its root. Remove ?app=${selection.app}; app selectors are only for workspace repositories.`,\n );\n }\n return { sourceDir: stagingDir, sourceIdentity };\n }\n\n const workspaceApps = discoverCommunityWorkspaceApps(stagingDir);\n if (workspaceApps.length === 0) {\n throw new ValidationError(\n `Community workspace ${selection.repo} has no installable apps. Dispatch cannot be installed from a community workspace, and apps must directly depend on @agent-native/core.`,\n );\n }\n\n let selectedApp = selection.app;\n if (!selectedApp) {\n if (!options.selectCommunityWorkspaceApp) {\n throw new ValidationError(\n `Community workspace ${selection.repo} requires an app selection, but no interactive terminal is available. Select one with ?app=<app-name>. Available apps: ${workspaceApps.map((app) => app.name).join(\", \")}.`,\n );\n } else {\n selectedApp = await options.selectCommunityWorkspaceApp(\n workspaceApps.map(({ name, label }) => ({ name, label })),\n );\n validateCommunityAppSelector(selectedApp);\n }\n }\n const selected = workspaceApps.find((app) => app.name === selectedApp);\n if (!selected) {\n throw new ValidationError(\n `App \"${selectedApp}\" was not found in community workspace ${selection.repo}. Available apps: ${workspaceApps.map((app) => app.name).join(\", \")}.`,\n );\n }\n return {\n sourceDir: selected.dir,\n sourceIdentity: selected.sourceIdentity,\n app: selected.name,\n workspaceRoot: stagingDir,\n };\n}\n\ninterface DiscoveredCommunityWorkspaceApp extends CommunityWorkspaceAppOption {\n dir: string;\n sourceIdentity: ScaffoldSourceIdentity;\n}\n\nfunction discoverCommunityWorkspaceApps(\n workspaceRoot: string,\n): DiscoveredCommunityWorkspaceApp[] {\n const appsDir = path.join(workspaceRoot, \"apps\");\n if (!fs.existsSync(appsDir)) return [];\n return fs\n .readdirSync(appsDir, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .flatMap((entry): DiscoveredCommunityWorkspaceApp[] => {\n const appDir = path.join(appsDir, entry.name);\n const packagePath = path.join(appDir, \"package.json\");\n if (!fs.existsSync(packagePath)) return [];\n const pkg = readPackageJsonObject(packagePath);\n if (!pkg) {\n throw new ValidationError(\n `Community workspace app \"${entry.name}\" has an unreadable package.json.`,\n );\n }\n if (getWorkspaceAppIdValidationError(entry.name)) return [];\n if (!packageDirectlyDependsOnAgentNativeCore(pkg)) return [];\n const sourceIdentity = readCommunitySourceIdentity(\n appDir,\n `${path.basename(workspaceRoot)}/${entry.name}`,\n );\n const packageName =\n sourceIdentity.appName.split(\"/\").pop() ?? sourceIdentity.appName;\n if (packageName === \"dispatch\") return [];\n return [\n {\n name: entry.name,\n label: sourceIdentity.appTitle,\n dir: appDir,\n sourceIdentity,\n },\n ];\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n}\n\nfunction readPackageJsonObject(\n packagePath: string,\n): Record<string, unknown> | undefined {\n try {\n const value = JSON.parse(fs.readFileSync(packagePath, \"utf-8\"));\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? value\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction packageDirectlyDependsOnAgentNativeCore(\n pkg: Record<string, unknown>,\n): boolean {\n return [pkg.dependencies, pkg.devDependencies, pkg.peerDependencies].some(\n (group) =>\n group !== null &&\n typeof group === \"object\" &&\n !Array.isArray(group) &&\n typeof (group as Record<string, unknown>)[\"@agent-native/core\"] ===\n \"string\",\n );\n}\n\nfunction normalizeCommunityWorkspaceAppDependencies(\n appDir: string,\n sourceWorkspaceRoot: string,\n options: {\n shape?: \"standalone\" | \"workspace\";\n destinationAppName: string;\n targetWorkspaceCoreName?: string;\n sourceIdentity: ScaffoldSourceIdentity;\n },\n): void {\n const appPackagePath = path.join(appDir, \"package.json\");\n const pkg = readPackageJsonObject(appPackagePath);\n if (!pkg) {\n throw new ValidationError(\n \"Selected community workspace app has an unreadable package.json.\",\n );\n }\n const rootPkg = readPackageJsonObject(\n path.join(sourceWorkspaceRoot, \"package.json\"),\n );\n const agentNative =\n rootPkg?.[\"agent-native\"] &&\n typeof rootPkg[\"agent-native\"] === \"object\" &&\n !Array.isArray(rootPkg[\"agent-native\"])\n ? (rootPkg[\"agent-native\"] as Record<string, unknown>)\n : undefined;\n const sourceWorkspaceCore =\n typeof agentNative?.workspaceCore === \"string\"\n ? agentNative.workspaceCore\n : undefined;\n const catalog = loadCommunityWorkspaceCatalog(sourceWorkspaceRoot);\n const supportedWorkspacePackages = new Set([\n \"@agent-native/core\",\n \"@agent-native/dispatch\",\n \"@agent-native/toolkit\",\n ]);\n\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps || typeof deps !== \"object\" || Array.isArray(deps)) continue;\n for (const [key, value] of Object.entries(\n deps as Record<string, unknown>,\n )) {\n if (key === sourceWorkspaceCore) {\n delete (deps as Record<string, unknown>)[key];\n continue;\n }\n if (value === \"catalog:\") {\n const resolved = catalog[key];\n if (!resolved) {\n throw new ValidationError(\n `Community workspace app dependency \"${key}\" uses catalog:, but no value was found in the source pnpm-workspace.yaml catalog.`,\n );\n }\n (deps as Record<string, unknown>)[key] = resolved;\n continue;\n }\n if (typeof value === \"string\" && value.startsWith(\"catalog:\")) {\n throw new ValidationError(\n `Community workspace app dependency \"${key}\" uses unsupported named catalog reference \"${value}\". Use a concrete version or the default catalog.`,\n );\n }\n if (\n typeof value === \"string\" &&\n value.startsWith(\"workspace:\") &&\n supportedWorkspacePackages.has(key)\n ) {\n (deps as Record<string, unknown>)[key] =\n key === \"@agent-native/core\"\n ? getCoreDependencyVersion()\n : key === \"@agent-native/dispatch\"\n ? getDispatchDependencyVersion()\n : getToolkitDependencyVersion();\n continue;\n }\n if (typeof value === \"string\" && value.startsWith(\"workspace:\")) {\n throw new ValidationError(\n `Community workspace app dependency \"${key}\" uses \"${value}\", but that source workspace package is not included when installing one app. Publish it with a concrete version or remove the dependency.`,\n );\n }\n }\n }\n fs.writeFileSync(appPackagePath, JSON.stringify(pkg, null, 2) + \"\\n\");\n if (sourceWorkspaceCore) {\n rewriteCanonicalCommunityWorkspacePlugins(\n appDir,\n sourceWorkspaceCore,\n options,\n );\n }\n if (\n sourceWorkspaceCore &&\n findSourceImportSpecifier(appDir, sourceWorkspaceCore)\n ) {\n throw new ValidationError(\n `Community workspace app imports its source shared package \"${sourceWorkspaceCore}\", which is not included when installing one app. Move that code into the app or publish it as a concrete dependency.`,\n );\n }\n}\n\nfunction rewriteCanonicalCommunityWorkspacePlugins(\n appDir: string,\n sourceWorkspaceCore: string,\n options: {\n shape?: \"standalone\" | \"workspace\";\n destinationAppName: string;\n targetWorkspaceCoreName?: string;\n sourceIdentity: ScaffoldSourceIdentity;\n },\n): void {\n const authPath = path.join(appDir, \"server\", \"plugins\", \"auth.ts\");\n const agentChatPath = path.join(appDir, \"server\", \"plugins\", \"agent-chat.ts\");\n if (options.shape === \"standalone\") {\n if (fs.existsSync(authPath)) {\n const auth = fs.readFileSync(authPath, \"utf-8\");\n if (\n containsModuleSpecifier(auth, sourceWorkspaceCore) &&\n auth.includes(\"defaultAuthPlugin\") &&\n auth.includes(\"workspaceServer\")\n ) {\n fs.writeFileSync(\n authPath,\n 'export { defaultAuthPlugin as default } from \"@agent-native/core/server\";\\n',\n );\n }\n }\n if (fs.existsSync(agentChatPath)) {\n const agentChat = fs.readFileSync(agentChatPath, \"utf-8\");\n if (\n containsModuleSpecifier(agentChat, sourceWorkspaceCore) &&\n agentChat.includes(\"createWorkspaceAgentChatPlugin\") &&\n agentChat.includes(\"actionsRegistry\")\n ) {\n fs.writeFileSync(\n agentChatPath,\n [\n 'import { createAgentChatPlugin, loadActionsFromStaticRegistry } from \"@agent-native/core/server\";',\n 'import actionsRegistry from \"../../.generated/actions-registry.js\";',\n \"\",\n \"export default createAgentChatPlugin({\",\n ` appId: ${JSON.stringify(options.destinationAppName)},`,\n \" actions: loadActionsFromStaticRegistry(actionsRegistry),\",\n \"});\",\n \"\",\n ].join(\"\\n\"),\n );\n }\n }\n return;\n }\n\n if (options.shape === \"workspace\" && options.targetWorkspaceCoreName) {\n for (const pluginPath of [authPath, agentChatPath]) {\n if (!fs.existsSync(pluginPath)) continue;\n const content = fs.readFileSync(pluginPath, \"utf-8\");\n const next = replaceModuleSpecifierPrefix(\n content,\n sourceWorkspaceCore,\n options.targetWorkspaceCoreName,\n );\n if (next !== content) fs.writeFileSync(pluginPath, next);\n }\n }\n}\n\nfunction containsModuleSpecifier(content: string, moduleName: string): boolean {\n return new RegExp(`([\"'])${escapeRegExp(moduleName)}(?:/[^\"']*)?\\\\1`).test(\n content,\n );\n}\n\nfunction replaceModuleSpecifierPrefix(\n content: string,\n sourceModule: string,\n targetModule: string,\n): string {\n return content.replace(\n new RegExp(`([\"'])${escapeRegExp(sourceModule)}((?:/[^\"']*)?)\\\\1`, \"g\"),\n (_match, quote: string, suffix: string) =>\n `${quote}${targetModule}${suffix}${quote}`,\n );\n}\n\nfunction findSourceImportSpecifier(\n dir: string,\n moduleName: string,\n): string | undefined {\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n if (entry.isSymbolicLink()) continue;\n const filePath = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n const nested = findSourceImportSpecifier(filePath, moduleName);\n if (nested) return nested;\n continue;\n }\n if (!/\\.(?:[cm]?[jt]sx?)$/.test(entry.name)) continue;\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n const escaped = escapeRegExp(moduleName);\n if (\n new RegExp(\n `(?:from\\\\s*|import\\\\s*\\\\(\\\\s*|import\\\\s*|require\\\\s*\\\\(\\\\s*)([\"'])${escaped}(?:/[^\"']*)?\\\\1`,\n ).test(content)\n ) {\n return filePath;\n }\n } catch {\n // Ignore unreadable source files; package validation reports main issues.\n }\n }\n return undefined;\n}\n\nfunction loadCommunityWorkspaceCatalog(\n workspaceRoot: string,\n): Record<string, string> {\n const workspacePath = path.join(workspaceRoot, \"pnpm-workspace.yaml\");\n if (!fs.existsSync(workspacePath)) return {};\n const result: Record<string, string> = {};\n let inCatalog = false;\n for (const line of fs.readFileSync(workspacePath, \"utf-8\").split(\"\\n\")) {\n if (/^catalog:\\s*$/.test(line)) {\n inCatalog = true;\n continue;\n }\n if (!inCatalog) continue;\n if (/^\\S/.test(line)) break;\n const match = line.match(/^\\s+\"?([^\":]+)\"?\\s*:\\s*\"?([^\"]+)\"?\\s*$/);\n if (match) result[match[1]!] = match[2]!;\n }\n return result;\n}\n\nfunction readCommunitySourceIdentity(\n targetDir: string,\n repo: string,\n): ScaffoldSourceIdentity {\n const fallbackName = repo.split(\"/\").pop() ?? \"app\";\n try {\n const pkg = JSON.parse(\n fs.readFileSync(path.join(targetDir, \"package.json\"), \"utf-8\"),\n );\n const appName =\n typeof pkg.name === \"string\" && pkg.name.trim()\n ? pkg.name.trim()\n : fallbackName;\n const unscopedName = appName.split(\"/\").pop() ?? appName;\n const appTitle =\n typeof pkg.displayName === \"string\" && pkg.displayName.trim()\n ? pkg.displayName.trim()\n : titleCase(unscopedName);\n return { appName, appTitle };\n } catch {\n return { appName: fallbackName, appTitle: titleCase(fallbackName) };\n }\n}\n\nfunction githubTarballUrl(\n repo: string,\n ref: string,\n kind: \"branch\" | \"tag\",\n): string {\n return `https://codeload.github.com/${repo}/tar.gz/refs/${kind === \"tag\" ? \"tags\" : \"heads\"}/${encodeURIComponent(ref)}`;\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Text / filesystem helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Merge key-value entries into named sections of a pnpm-workspace.yaml string\n * without creating duplicate section headers. For each section:\n * - If the section already exists, new entries are injected after its header.\n * - If the section is absent, a new block is appended at the end.\n * Entries already present (by key) are skipped.\n */\nfunction mergeWorkspaceYamlSections(\n yaml: string,\n sections: Record<string, Record<string, string>>,\n): string {\n let result = yaml;\n for (const [section, entries] of Object.entries(sections)) {\n for (const [key, value] of Object.entries(entries)) {\n if (result.includes(key)) continue;\n const sectionHeader = new RegExp(`^${section}:\\\\s*$`, \"m\");\n const match = sectionHeader.exec(result);\n if (match) {\n const insertAt = match.index + match[0].length;\n result =\n result.slice(0, insertAt) +\n `\\n ${key}: ${value}` +\n result.slice(insertAt);\n } else {\n result =\n result.trimEnd() +\n (result ? \"\\n\" : \"\") +\n `\\n${section}:\\n ${key}: ${value}\\n`;\n }\n }\n }\n return result;\n}\n\nfunction mergeWorkspaceYamlListItems(\n yaml: string,\n section: string,\n items: string[],\n): string {\n let result = yaml;\n for (const item of items) {\n const rendered = ` - ${item}`;\n if (result.includes(rendered)) continue;\n const sectionHeader = new RegExp(`^${section}:\\\\s*$`, \"m\");\n const match = sectionHeader.exec(result);\n if (match) {\n const insertAt = match.index + match[0].length;\n result =\n result.slice(0, insertAt) + `\\n${rendered}` + result.slice(insertAt);\n } else {\n result =\n result.trimEnd() +\n (result ? \"\\n\" : \"\") +\n `\\n${section}:\\n${rendered}\\n`;\n }\n }\n return result;\n}\n\n/**\n * Load the pnpm workspace catalog.\n * First tries the build-time snapshot at dist/catalog.json (works when\n * running as a published npm package). Falls back to parsing the monorepo\n * pnpm-workspace.yaml (works during local framework development).\n */\nfunction loadCatalog(): Record<string, string> {\n try {\n // Build-time snapshot generated by finalize-build.mjs\n const snapshotPath = path.resolve(__dirname, \"../catalog.json\");\n if (fs.existsSync(snapshotPath)) {\n return JSON.parse(fs.readFileSync(snapshotPath, \"utf-8\"));\n }\n\n // Fallback: parse pnpm-workspace.yaml from the monorepo root\n // From dist/cli/ or src/cli/: 4 levels up → packages/core → packages → repo root\n const repoRoot = path.resolve(__dirname, \"../../../..\");\n const wsPath = path.join(repoRoot, \"pnpm-workspace.yaml\");\n if (!fs.existsSync(wsPath)) return {};\n const content = fs.readFileSync(wsPath, \"utf-8\");\n const result: Record<string, string> = {};\n let inCatalog = false;\n for (const line of content.split(\"\\n\")) {\n if (/^catalog:\\s*$/.test(line)) {\n inCatalog = true;\n continue;\n }\n if (inCatalog) {\n if (/^\\S/.test(line)) break;\n const match = line.match(/^\\s+\"?([^\":]+)\"?\\s*:\\s*\"?([^\"]+)\"?\\s*$/);\n if (match) result[match[1]] = match[2];\n }\n }\n return result;\n } catch {\n return {};\n }\n}\n\nfunction titleCase(name: string): string {\n return name\n .split(\"-\")\n .map((w) => (w ? w[0].toUpperCase() + w.slice(1) : w))\n .join(\" \");\n}\n\nfunction appTitleForScaffold(appName: string): string {\n return titleCase(appName);\n}\n\nfunction isChatOnRampTemplate(templateName: string | undefined): boolean {\n return templateName === \"chat\" || templateName === \"starter\";\n}\n\nfunction trackingTemplateName(\n templateName: string | undefined,\n): string | undefined {\n if (templateName && isCommunityTemplateSelection(templateName)) {\n return undefined;\n }\n return templateName === \"starter\" ? \"chat\" : templateName;\n}\n\nfunction defaultPackageDescriptionForScaffold(appName: string): string {\n const appTitle = appTitleForScaffold(appName);\n return `Workspace app for ${appTitle}.`;\n}\n\nfunction shouldReplaceScaffoldDescription(value: unknown): boolean {\n if (typeof value !== \"string\" || !value.trim()) return true;\n return /\\b(starter|new app|blank\\b.*\\bapp)\\b/i.test(value);\n}\n\nfunction fixPackageJsonName(\n appDir: string,\n name: string,\n templateName?: string,\n provenance?: ScaffoldProvenance,\n): void {\n const pkgPath = path.join(appDir, \"package.json\");\n if (!fs.existsSync(pkgPath)) return;\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n pkg.name = name;\n const appTitle = appTitleForScaffold(name);\n // When the user picked a custom name (e.g. `add-app todo --template=chat`)\n // the template's displayName would otherwise leak into the workspace apps\n // grid as the new app's label. Overwrite it so the app shows up as \"Todo\"\n // instead of the source template's branding.\n if (templateName && name !== templateName) {\n pkg.displayName = appTitle;\n }\n if (\n shouldReplaceScaffoldDescription(pkg.description) ||\n (isChatOnRampTemplate(templateName) && name !== templateName)\n ) {\n pkg.description = defaultPackageDescriptionForScaffold(name);\n } else if (\n provenance?.sourceIdentity &&\n typeof pkg.description === \"string\"\n ) {\n pkg.description = replaceSourceIdentityText(\n pkg.description,\n provenance.sourceIdentity,\n name,\n appTitle,\n );\n }\n const scaffoldGuidance = scaffoldGuidanceForTemplate(templateName);\n if (scaffoldGuidance || provenance?.communityTemplate) {\n const agentNative =\n pkg[\"agent-native\"] &&\n typeof pkg[\"agent-native\"] === \"object\" &&\n !Array.isArray(pkg[\"agent-native\"])\n ? pkg[\"agent-native\"]\n : {};\n if (scaffoldGuidance) {\n const coreVersion = getCorePackageVersion();\n agentNative.scaffold = {\n template: trackingTemplateName(templateName),\n frameworkSkills: scaffoldGuidance,\n ...(provenance?.templateRef\n ? { templateRef: provenance.templateRef }\n : {}),\n ...(provenance?.templateSource\n ? { templateSource: provenance.templateSource }\n : {}),\n ...(coreVersion ? { coreVersion } : {}),\n ...(provenance?.shape ? { shape: provenance.shape } : {}),\n };\n }\n if (provenance?.communityTemplate) {\n delete agentNative.scaffold;\n agentNative.communityTemplate = provenance.communityTemplate;\n }\n pkg[\"agent-native\"] = agentNative;\n }\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n}\n\nfunction scaffoldGuidanceForTemplate(\n templateName: string | undefined,\n): \"default\" | \"headless\" | undefined {\n if (!templateName || templateName.startsWith(\"github:\")) return undefined;\n const normalized = normalizeTemplateName(templateName);\n if (normalized === \"headless\") return \"headless\";\n return getTemplate(normalized) ? \"default\" : undefined;\n}\n\nfunction fixWebManifestName(\n appDir: string,\n name: string,\n templateName?: string,\n sourceIdentity?: ScaffoldSourceIdentity,\n): void {\n if (\n (!isChatOnRampTemplate(templateName) || name === templateName) &&\n !sourceIdentity\n ) {\n return;\n }\n const manifestPath = path.join(appDir, \"public\", \"manifest.json\");\n if (!fs.existsSync(manifestPath)) return;\n try {\n const manifest = JSON.parse(fs.readFileSync(manifestPath, \"utf-8\"));\n const appTitle = titleCase(name);\n manifest.name = appTitle;\n manifest.short_name = appTitle;\n if (sourceIdentity && typeof manifest.description === \"string\") {\n manifest.description = replaceSourceIdentityText(\n manifest.description,\n sourceIdentity,\n name,\n appTitle,\n );\n } else if (\n typeof manifest.description !== \"string\" ||\n /\\b(blank app|starter|chat-first)\\b/i.test(manifest.description)\n ) {\n manifest.description = defaultPackageDescriptionForScaffold(name);\n }\n fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + \"\\n\");\n } catch {}\n}\n\nfunction replaceSourceIdentityText(\n value: string,\n sourceIdentity: ScaffoldSourceIdentity,\n appName: string,\n appTitle: string,\n): string {\n const unscopedSourceName =\n sourceIdentity.appName.split(\"/\").pop() ?? sourceIdentity.appName;\n const replacements = new Map<string, string>([\n [sourceIdentity.appTitle, appTitle],\n [sourceIdentity.appName, appName],\n [unscopedSourceName, appName],\n ]);\n const sourceValues = [...replacements.keys()]\n .filter(Boolean)\n .sort((a, b) => b.length - a.length);\n if (sourceValues.length === 0) return value;\n const pattern = new RegExp(sourceValues.map(escapeRegExp).join(\"|\"), \"g\");\n return value.replace(pattern, (match) => replacements.get(match) ?? match);\n}\n\nfunction getCoreDependencyVersion(): string {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE === \"1\") {\n const localCore = findLocalPackage(\"core\");\n if (localCore) return localPackageTarball(localCore);\n }\n\n // Pin to the exact core version running this CLI rather than the npm\n // `latest` dist-tag. `latest` can drift forward after `create` runs (a\n // stale/cached CLI invocation, or simply time passing before `npm\n // install`), installing a newer core release whose internal toolkit\n // dependency no longer matches the toolkit range this CLI just wrote into\n // the scaffold via getOwnPackageDependencyVersion() — reintroducing the\n // exact duplicate/mismatched-toolkit class of bug this pinning exists to\n // prevent. For the common case — `npx @agent-native/core@<version> create`\n // against the public registry — this exact version is guaranteed\n // installable, since npx just fetched it. Private/offline mirrors with a\n // retention window narrower than \"every historical version\" are a known\n // gap; `getCorePackageVersion()` returning undefined (e.g. malformed own\n // package.json) falls back to `latest` rather than failing scaffolding\n // outright. Local file deps stay opt-in so scaffolded repos remain\n // portable by default.\n return getCorePackageVersion() ?? \"latest\";\n}\n\nfunction getDispatchDependencyVersion(): string {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE === \"1\") {\n const localDispatch = findLocalPackage(\"dispatch\");\n if (localDispatch) return pathToFileURL(localDispatch).href;\n }\n\n // Unlike toolkit, core's own package.json does not declare\n // @agent-native/dispatch as a dependency, so there is no published\n // compatible range to read here — \"latest\" is the best available signal.\n return \"latest\";\n}\n\nfunction getToolkitDependencyVersion(): string {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE === \"1\") {\n const localToolkit = findLocalPackage(\"toolkit\");\n if (localToolkit) return localPackageTarball(localToolkit);\n }\n\n return getOwnPackageDependencyVersion(\"@agent-native/toolkit\");\n}\n\n/**\n * Toolkit is versioned and published independently of core, so its npm\n * `latest` dist-tag can briefly point to an incompatible release relative to\n * the core version currently running this CLI. The published core\n * `package.json` already carries the exact compatible range changesets\n * resolved at release time — read it from there instead of trusting\n * `latest`, which is only safe for pinning `core` itself.\n */\nfunction getOwnPackageDependencyVersion(depName: string): string {\n try {\n const ownPkgPath = path.join(__dirname, \"../../package.json\");\n const ownPkg = JSON.parse(fs.readFileSync(ownPkgPath, \"utf-8\"));\n const range = ownPkg.dependencies?.[depName];\n const isPublishedRange =\n typeof range === \"string\" &&\n range.length > 0 &&\n !range.startsWith(\"workspace:\") &&\n range !== \"catalog:\";\n if (isPublishedRange) return range;\n } catch {}\n\n return \"latest\";\n}\n\nfunction localToolkitOverride(): string | null {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE !== \"1\") return null;\n const localToolkit = findLocalPackage(\"toolkit\");\n return localToolkit ? localPackageTarball(localToolkit) : null;\n}\n\nfunction localRecapCliOverride(): string | null {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE !== \"1\") return null;\n const localRecapCli = findLocalPackage(\"recap-cli\");\n return localRecapCli ? pathToFileURL(localRecapCli).href : null;\n}\n\nfunction applyLocalWorkspaceOverrides(targetDir: string): void {\n const localToolkit = localToolkitOverride();\n const localRecapCli = localRecapCliOverride();\n if (!localToolkit && !localRecapCli) return;\n\n const wsPath = path.join(targetDir, \"pnpm-workspace.yaml\");\n const existing = fs.existsSync(wsPath)\n ? fs.readFileSync(wsPath, \"utf-8\")\n : \"\";\n const updated = mergeWorkspaceYamlSections(existing, {\n overrides: {\n ...(localToolkit\n ? { '\"@agent-native/toolkit\"': JSON.stringify(localToolkit) }\n : {}),\n ...(localRecapCli\n ? { '\"@agent-native/recap-cli\"': JSON.stringify(localRecapCli) }\n : {}),\n },\n });\n if (updated !== existing) fs.writeFileSync(wsPath, updated);\n}\n\nfunction getCorePackageVersion(): string | undefined {\n try {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const pkg = JSON.parse(\n fs.readFileSync(path.join(packageRoot, \"package.json\"), \"utf-8\"),\n );\n return typeof pkg.version === \"string\" ? pkg.version : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Git refs to try, in priority order, when downloading templates from the\n * framework repo. The release tag scheme has shifted over time:\n *\n * - ≤ 0.7.83: single repo-wide tag `v<version>` (legacy).\n * - ≥ 0.8.0: changesets per-package tags\n * `@agent-native/core@<version>` (current).\n *\n * Published CLIs intentionally use only immutable version tags. Falling back\n * to mutable `main` can copy a template that imports exports not present in\n * the installed core package, leaving a generated app broken at SSR startup.\n * Local framework development uses the checkout's templates and packages\n * before this downloader runs, so it does not need a mutable fallback.\n */\nfunction getGitHubTemplateRefCandidates(): string[] {\n const version = getCorePackageVersion();\n const candidates: string[] = [];\n if (version && /^\\d+\\.\\d+\\.\\d+(?:-.+)?$/.test(version)) {\n candidates.push(`@agent-native/core@${version}`);\n candidates.push(`v${version}`);\n }\n return candidates;\n}\n\n/** @deprecated Kept for backward-compatible test imports. Returns the\n * highest-priority candidate; callers that need the full fallback list\n * should use `getGitHubTemplateRefCandidates()`. */\nfunction getGitHubTemplateRef(): string {\n return getGitHubTemplateRefCandidates()[0]!;\n}\n\nfunction rewriteCoreDependencyVersions(projectDir: string): void {\n const pkgPath = path.join(projectDir, \"package.json\");\n if (!fs.existsSync(pkgPath)) return;\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (deps?.[\"@agent-native/core\"]) {\n deps[\"@agent-native/core\"] = getCoreDependencyVersion();\n }\n if (deps?.[\"@agent-native/toolkit\"]) {\n deps[\"@agent-native/toolkit\"] = getToolkitDependencyVersion();\n }\n }\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n}\n\nfunction validateWorkspaceAppName(\n appName: string,\n clack: typeof import(\"@clack/prompts\"),\n opts?: { allowDispatch?: boolean },\n): void {\n const error =\n opts?.allowDispatch && appName === \"dispatch\"\n ? null\n : getWorkspaceAppIdValidationError(appName);\n if (error) {\n clack.cancel(error);\n process.exit(1);\n }\n}\n\nfunction upsertTomlBuildEnvironment(\n content: string,\n vars: Record<string, string>,\n): string {\n const lines = content.split(\"\\n\");\n const sectionIndex = lines.findIndex(\n (line) => line.trim() === \"[build.environment]\",\n );\n if (sectionIndex === -1) {\n const envLines = [\"\", \"[build.environment]\"].concat(\n Object.entries(vars).map(([key, value]) => ` ${key} = \"${value}\"`),\n );\n return content.trimEnd() + \"\\n\" + envLines.join(\"\\n\") + \"\\n\";\n }\n\n let nextSectionIndex = lines.findIndex(\n (line, index) => index > sectionIndex && /^\\s*\\[/.test(line),\n );\n if (nextSectionIndex === -1) nextSectionIndex = lines.length;\n\n for (const [key, value] of Object.entries(vars)) {\n const existingIndex = lines.findIndex(\n (line, index) =>\n index > sectionIndex &&\n index < nextSectionIndex &&\n new RegExp(`^\\\\s*${key}\\\\s*=`).test(line),\n );\n const nextLine = ` ${key} = \"${value}\"`;\n if (existingIndex === -1) {\n lines.splice(nextSectionIndex, 0, nextLine);\n nextSectionIndex += 1;\n } else {\n lines[existingIndex] = nextLine;\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction ensureRedirect(\n content: string,\n from: string,\n to: string,\n status: number,\n): string {\n const escapedFrom = from.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const redirectPattern = new RegExp(\n `\\\\n?\\\\[\\\\[redirects\\\\]\\\\]\\\\s+from\\\\s*=\\\\s*\"${escapedFrom}\"\\\\s+to\\\\s*=\\\\s*\"[^\"]*\"\\\\s+status\\\\s*=\\\\s*\\\\d+(?:\\\\s+force\\\\s*=\\\\s*(?:true|false))?`,\n \"m\",\n );\n const block = [\n \"\",\n \"[[redirects]]\",\n ` from = \"${from}\"`,\n ` to = \"${to}\"`,\n ` status = ${status}`,\n ].join(\"\\n\");\n if (redirectPattern.test(content)) {\n return content.replace(redirectPattern, block);\n }\n return content.trimEnd() + \"\\n\" + block + \"\\n\";\n}\n\nfunction removeRedirect(content: string, from: string): string {\n const escapedFrom = from.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const redirectPattern = new RegExp(\n `\\\\n?\\\\[\\\\[redirects\\\\]\\\\]\\\\s+from\\\\s*=\\\\s*\"${escapedFrom}\"\\\\s+to\\\\s*=\\\\s*\"[^\"]*\"\\\\s+status\\\\s*=\\\\s*\\\\d+(?:\\\\s+force\\\\s*=\\\\s*(?:true|false))?`,\n \"gm\",\n );\n return content.replace(redirectPattern, \"\").replace(/\\n{3,}/g, \"\\n\\n\");\n}\n\nfunction addWorkspaceMountNetlifyConfig(\n content: string,\n appName: string,\n): string {\n const basePath = `/${appName}`;\n let next = upsertTomlBuildEnvironment(content, {\n APP_BASE_PATH: basePath,\n VITE_APP_BASE_PATH: basePath,\n NITRO_PRESET: \"netlify\",\n NPM_CONFIG_PRODUCTION: \"false\",\n });\n\n if (appName === \"dispatch\") {\n next = ensureRedirect(next, \"/\", \"/dispatch/overview\", 302);\n next = ensureRedirect(next, \"/dispatch\", \"/dispatch/overview\", 302);\n for (const [from, to] of DISPATCH_WORKSPACE_ROOT_REDIRECTS) {\n next = ensureRedirect(next, `/${from}`, `/dispatch/${to}`, 302);\n }\n next = removeRedirect(next, \"/dispatch/*\");\n }\n\n return next;\n}\n\nfunction rewriteNetlifyToml(\n appDir: string,\n appName: string,\n mode: \"standalone\" | \"workspace\",\n): void {\n const netlifyPath = path.join(appDir, \"netlify.toml\");\n if (!fs.existsSync(netlifyPath)) return;\n\n try {\n let content = fs.readFileSync(netlifyPath, \"utf-8\");\n const originalCommand = content.match(/^\\s*command = \"([^\"]*)\"$/m)?.[1];\n const usesUnpooledDatabase =\n originalCommand?.includes(\"NETLIFY_DATABASE_URL_UNPOOLED\") ?? false;\n const buildCommand =\n mode === \"workspace\"\n ? `APP_BASE_PATH=/${appName} VITE_APP_BASE_PATH=/${appName} NITRO_PRESET=netlify pnpm --filter ${appName} build`\n : \"NITRO_PRESET=netlify pnpm build\";\n const databaseSetup =\n 'export DATABASE_URL=\\\\\"${NETLIFY_DATABASE_URL:-$DATABASE_URL}\\\\\"';\n const buildDatabasePrefix = usesUnpooledDatabase\n ? 'DATABASE_URL=\\\\\"${NETLIFY_DATABASE_URL_UNPOOLED:-$DATABASE_URL}\\\\\" '\n : \"\";\n const command = `${databaseSetup} && ${buildDatabasePrefix}${buildCommand}`;\n const publishPath = mode === \"workspace\" ? `apps/${appName}/dist` : \"dist\";\n const functionsPath =\n mode === \"workspace\"\n ? `apps/${appName}/.netlify/functions-internal`\n : \".netlify/functions-internal\";\n\n content = content\n .replace(/^(\\s*)command = \".*\"$/m, `$1command = \"${command}\"`)\n .replace(\n /publish = \"templates\\/[^\"]+\\/dist\"/g,\n `publish = \"${publishPath}\"`,\n )\n .replace(\n /functions = \"templates\\/[^\"]+\\/\\.netlify\\/functions-internal\"/g,\n `functions = \"${functionsPath}\"`,\n )\n // Strip the `ignore` script line: it references a monorepo script path\n // (scripts/netlify-ignore-build.mjs) that doesn't exist in scaffolds, so\n // skip-unchanged would never work and every deploy logs a not-found error.\n .replace(/^\\s*ignore\\s*=\\s*\"[^\"]*\"\\s*\\n/m, \"\");\n\n if (mode === \"workspace\") {\n content = addWorkspaceMountNetlifyConfig(content, appName);\n }\n\n fs.writeFileSync(netlifyPath, content);\n } catch {}\n}\n\nfunction applyScaffoldIdentity(\n appDir: string,\n appName: string,\n templateName?: string,\n sourceIdentity?: ScaffoldSourceIdentity,\n): void {\n rewriteTrackingAppId(appDir, appName, templateName, sourceIdentity);\n rewriteAgentChatAppId(appDir, appName, templateName, sourceIdentity);\n rewriteAppConfigIdentity(appDir, appName, sourceIdentity);\n}\n\nfunction rewriteAgentChatAppId(\n appDir: string,\n appName: string,\n templateName?: string,\n sourceIdentity?: ScaffoldSourceIdentity,\n): void {\n const pluginPath = path.join(appDir, \"server\", \"plugins\", \"agent-chat.ts\");\n if (!fs.existsSync(pluginPath)) return;\n\n try {\n const content = fs.readFileSync(pluginPath, \"utf-8\");\n if (sourceIdentity) {\n const next = content\n .replace(\n /(createAgentChatPlugin\\(\\{[\\s\\S]*?\\bappId:\\s*)([\"'])[^\"']+\\2/,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appName}${quote}`,\n )\n .replace(\n /(const\\s+options\\s*=\\s*\\{[\\s\\S]*?\\bappId:\\s*)([\"'])[^\"']+\\2/,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appName}${quote}`,\n );\n if (next !== content) fs.writeFileSync(pluginPath, next);\n return;\n }\n const sourceAppIds = [\"chat\", \"starter\"];\n if (templateName && templateName !== appName) {\n sourceAppIds.push(templateName);\n }\n const pattern = new RegExp(\n `(appId:\\\\s*)([\"'])(${sourceAppIds.map(escapeRegExp).join(\"|\")})\\\\2`,\n );\n if (!pattern.test(content)) return;\n\n const next = content.replace(\n pattern,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appName}${quote}`,\n );\n if (next !== content) {\n fs.writeFileSync(pluginPath, next);\n }\n } catch {}\n}\n\nfunction rewriteTrackingAppId(\n appDir: string,\n appName: string,\n templateName?: string,\n sourceIdentity?: ScaffoldSourceIdentity,\n): void {\n const rootPath = path.join(appDir, \"app\", \"root.tsx\");\n if (!fs.existsSync(rootPath)) return;\n\n try {\n const content = fs.readFileSync(rootPath, \"utf-8\");\n const trackedTemplateName = trackingTemplateName(templateName);\n if (sourceIdentity) {\n const next = content.replace(\n /(configureTracking\\(\\{[\\s\\S]*?\\bapp:\\s*)([\"'])[^\"']+\\2/,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appName}${quote}`,\n );\n if (next !== content) fs.writeFileSync(rootPath, next);\n return;\n }\n const sourceAppIds = [\"agent-native-[^\\\"']+\", \"\\\\{\\\\{APP_NAME\\\\}\\\\}\"];\n if (templateName && templateName !== appName) {\n sourceAppIds.push(escapeRegExp(templateName));\n }\n if (isChatOnRampTemplate(templateName)) {\n sourceAppIds.push(\"starter\", \"chat\");\n }\n const pattern = new RegExp(\n `(^\\\\s*app:\\\\s*)([\"'])(?:${sourceAppIds.join(\"|\")})\\\\2(\\\\s*,?)`,\n \"m\",\n );\n if (!pattern.test(content)) return;\n\n let next = content.replace(\n pattern,\n (_match, prefix: string, quote: string, suffix: string) =>\n `${prefix}${quote}${appName}${quote}${suffix}`,\n );\n\n if (\n trackedTemplateName &&\n trackedTemplateName !== appName &&\n !hasTrackingTemplate(next)\n ) {\n next = next.replace(\n /(^\\s*app:\\s*[\"'][^\"']+[\"'],?\\s*$)/m,\n (line) =>\n `${line}\\n template: ${JSON.stringify(trackedTemplateName)},`,\n );\n }\n\n if (next !== content) {\n fs.writeFileSync(rootPath, next);\n }\n } catch {}\n}\n\nfunction rewriteAppConfigIdentity(\n appDir: string,\n appName: string,\n sourceIdentity?: ScaffoldSourceIdentity,\n): void {\n if (!sourceIdentity) return;\n const configPath = path.join(appDir, \"app\", \"lib\", \"app-config.ts\");\n if (!fs.existsSync(configPath)) return;\n try {\n const content = fs.readFileSync(configPath, \"utf-8\");\n const appTitle = appTitleForScaffold(appName);\n const next = content\n .replace(\n /(const\\s+rawAppName\\s*=\\s*)([\"'])[^\"']*\\2/,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appName}${quote}`,\n )\n .replace(\n /(const\\s+rawAppTitle\\s*=\\s*)([\"'])[^\"']*\\2/,\n (_match, prefix: string, quote: string) =>\n `${prefix}${quote}${appTitle}${quote}`,\n );\n if (next !== content) fs.writeFileSync(configPath, next);\n } catch {}\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction hasTrackingTemplate(content: string): boolean {\n const match = content.match(/configureTracking\\(\\{[\\s\\S]*?\\}\\);/);\n return !!match && /^\\s*template\\s*:/m.test(match[0]);\n}\n\nfunction tryGitInit(dir: string): boolean {\n try {\n execFileSync(\"git\", [\"init\"], { cwd: dir, stdio: \"pipe\" });\n execFileSync(\"git\", [\"add\", \"-A\"], { cwd: dir, stdio: \"pipe\" });\n execFileSync(\n \"git\",\n [\"commit\", \"-m\", \"Initial commit from agent-native create\"],\n {\n cwd: dir,\n stdio: \"pipe\",\n env: {\n ...process.env,\n GIT_AUTHOR_NAME: \"agent-native\",\n GIT_AUTHOR_EMAIL: \"noreply@agent-native.com\",\n GIT_COMMITTER_NAME: \"agent-native\",\n GIT_COMMITTER_EMAIL: \"noreply@agent-native.com\",\n },\n },\n );\n return true;\n } catch {\n return false;\n }\n}\n\nfunction renameGitignore(dir: string): void {\n const src = path.join(dir, \"_gitignore\");\n const dst = path.join(dir, \".gitignore\");\n if (fs.existsSync(src)) fs.renameSync(src, dst);\n}\n\nfunction replacePlaceholders(\n dir: string,\n appName: string,\n appTitle: string,\n workspaceName?: string,\n): void {\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n const p = path.join(dir, entry.name);\n if (entry.isSymbolicLink()) continue;\n if (entry.isDirectory()) {\n replacePlaceholders(p, appName, appTitle, workspaceName);\n continue;\n }\n let content: string;\n try {\n content = fs.readFileSync(p, \"utf-8\");\n } catch {\n continue;\n }\n const hasWs =\n workspaceName !== undefined && content.includes(\"{{WORKSPACE_NAME}}\");\n if (\n !content.includes(\"{{APP_NAME}}\") &&\n !content.includes(\"{{APP_TITLE}}\") &&\n !hasWs\n ) {\n continue;\n }\n let next = content;\n if (workspaceName !== undefined) {\n next = next.replace(/\\{\\{WORKSPACE_NAME\\}\\}/g, workspaceName);\n }\n next = next\n .replace(/\\{\\{APP_NAME\\}\\}/g, appName)\n .replace(/\\{\\{APP_TITLE\\}\\}/g, appTitle);\n fs.writeFileSync(p, next);\n }\n}\n\nfunction copyDir(\n src: string,\n dest: string,\n root?: string,\n opts?: { skipExisting?: boolean },\n): void {\n const resolvedRoot = root ?? path.resolve(src);\n const skipExisting = opts?.skipExisting ?? false;\n fs.mkdirSync(dest, { recursive: true });\n for (const entry of fs.readdirSync(src, { withFileTypes: true })) {\n const srcPath = path.join(src, entry.name);\n if (shouldSkipScaffoldEntry(entry.name, srcPath)) continue;\n const destPath = path.join(dest, entry.name);\n // Preserve anything already at the destination (in-place scaffold merges\n // into a directory the user may already own). Directories still recurse so\n // new files land inside a pre-existing folder.\n if (skipExisting && !entry.isDirectory() && fs.existsSync(destPath)) {\n continue;\n }\n if (entry.isSymbolicLink()) {\n const target = fs.readlinkSync(srcPath);\n const resolvedTarget = path.resolve(path.dirname(srcPath), target);\n if (resolvedTarget.startsWith(resolvedRoot)) {\n fs.symlinkSync(target, destPath);\n } else {\n try {\n const stat = fs.statSync(srcPath);\n if (stat.isDirectory()) {\n copyDir(srcPath, destPath, resolvedRoot, opts);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n } catch {\n // Broken symlink — skip silently\n }\n }\n } else if (entry.isDirectory()) {\n copyDir(srcPath, destPath, resolvedRoot, opts);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n\nfunction shouldSkipScaffoldEntry(name: string, srcPath?: string): boolean {\n const pathParts = srcPath?.split(path.sep);\n if (\n name === \"plans\" &&\n pathParts?.at(-2) === \"plan\" &&\n pathParts.at(-3) === \"templates\"\n ) {\n return true;\n }\n if (name === \"preview.html\" && srcPath?.split(path.sep).includes(\"plans\")) {\n return true;\n }\n if (\n /^settings(?:\\..*)?\\.json$/.test(name) &&\n srcPath?.split(path.sep).includes(\".claude\")\n ) {\n return true;\n }\n // `.generated/bridge` is committed source, not a build artifact: the design\n // app imports it at module load, so skipping it yields a workspace that 500s\n // on every page. Everything else under `.generated` is regenerated at dev time.\n if (pathParts?.at(-2) === \".generated\") {\n return name !== \"bridge\";\n }\n if (\n name === \".generated\" &&\n srcPath &&\n fs.existsSync(path.join(srcPath, \"bridge\"))\n ) {\n return false;\n }\n if (\n name === \"node_modules\" ||\n name === \".agent-native\" ||\n name === \".env\" ||\n name === \".env.local\" ||\n name === \"pnpm-lock.yaml\" ||\n name === \".netlify\" ||\n name === \".vercel\" ||\n name === \".generated\" ||\n name === \".react-router\" ||\n name === \".output\" ||\n name === \"build\" ||\n name === \"dist\" ||\n name === \"test-results\" ||\n name === \"playwright-report\" ||\n name === \".DS_Store\"\n ) {\n return true;\n }\n return name.endsWith(\".tmp.json\") || /\\.db(?:-shm|-wal)?$/.test(name);\n}\n"]}