@agent-native/core 0.32.1 → 0.32.17

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 (240) hide show
  1. package/README.md +3 -1
  2. package/dist/agent/run-store.d.ts.map +1 -1
  3. package/dist/agent/run-store.js +48 -10
  4. package/dist/agent/run-store.js.map +1 -1
  5. package/dist/agent/thread-data-builder.d.ts +12 -0
  6. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  7. package/dist/agent/thread-data-builder.js +104 -6
  8. package/dist/agent/thread-data-builder.js.map +1 -1
  9. package/dist/cli/app-skill.js +2 -2
  10. package/dist/cli/app-skill.js.map +1 -1
  11. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  12. package/dist/cli/code-agent-executor.js +6 -1
  13. package/dist/cli/code-agent-executor.js.map +1 -1
  14. package/dist/cli/code-agent-output-smoother.d.ts +7 -0
  15. package/dist/cli/code-agent-output-smoother.d.ts.map +1 -0
  16. package/dist/cli/code-agent-output-smoother.js +111 -0
  17. package/dist/cli/code-agent-output-smoother.js.map +1 -0
  18. package/dist/cli/connect.d.ts.map +1 -1
  19. package/dist/cli/connect.js +5 -0
  20. package/dist/cli/connect.js.map +1 -1
  21. package/dist/cli/migrate.d.ts.map +1 -1
  22. package/dist/cli/migrate.js +17 -42
  23. package/dist/cli/migrate.js.map +1 -1
  24. package/dist/cli/skills.d.ts +23 -2
  25. package/dist/cli/skills.d.ts.map +1 -1
  26. package/dist/cli/skills.js +405 -41
  27. package/dist/cli/skills.js.map +1 -1
  28. package/dist/cli/templates-meta.d.ts.map +1 -1
  29. package/dist/cli/templates-meta.js +7 -105
  30. package/dist/cli/templates-meta.js.map +1 -1
  31. package/dist/client/AgentPanel.d.ts.map +1 -1
  32. package/dist/client/AgentPanel.js +41 -7
  33. package/dist/client/AgentPanel.js.map +1 -1
  34. package/dist/client/AgentTaskCard.d.ts.map +1 -1
  35. package/dist/client/AgentTaskCard.js +0 -28
  36. package/dist/client/AgentTaskCard.js.map +1 -1
  37. package/dist/client/AssistantChat.d.ts +8 -23
  38. package/dist/client/AssistantChat.d.ts.map +1 -1
  39. package/dist/client/AssistantChat.js +359 -205
  40. package/dist/client/AssistantChat.js.map +1 -1
  41. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  42. package/dist/client/MultiTabAssistantChat.js +254 -14
  43. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  44. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  45. package/dist/client/agent-chat-adapter.js +14 -9
  46. package/dist/client/agent-chat-adapter.js.map +1 -1
  47. package/dist/client/agent-chat.d.ts +24 -0
  48. package/dist/client/agent-chat.d.ts.map +1 -1
  49. package/dist/client/agent-chat.js +73 -0
  50. package/dist/client/agent-chat.js.map +1 -1
  51. package/dist/client/assistant-ui-recovery.d.ts +34 -0
  52. package/dist/client/assistant-ui-recovery.d.ts.map +1 -0
  53. package/dist/client/assistant-ui-recovery.js +122 -0
  54. package/dist/client/assistant-ui-recovery.js.map +1 -0
  55. package/dist/client/composer/PromptComposer.d.ts.map +1 -1
  56. package/dist/client/composer/PromptComposer.js +7 -1
  57. package/dist/client/composer/PromptComposer.js.map +1 -1
  58. package/dist/client/composer/TiptapComposer.d.ts +7 -1
  59. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  60. package/dist/client/composer/TiptapComposer.js +22 -2
  61. package/dist/client/composer/TiptapComposer.js.map +1 -1
  62. package/dist/client/frame-protocol.d.ts +6 -2
  63. package/dist/client/frame-protocol.d.ts.map +1 -1
  64. package/dist/client/frame-protocol.js.map +1 -1
  65. package/dist/client/index.d.ts +2 -1
  66. package/dist/client/index.d.ts.map +1 -1
  67. package/dist/client/index.js +2 -1
  68. package/dist/client/index.js.map +1 -1
  69. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  70. package/dist/client/org/OrgSwitcher.js +2 -1
  71. package/dist/client/org/OrgSwitcher.js.map +1 -1
  72. package/dist/client/progress/RunsTray.d.ts +13 -3
  73. package/dist/client/progress/RunsTray.d.ts.map +1 -1
  74. package/dist/client/progress/RunsTray.js +105 -36
  75. package/dist/client/progress/RunsTray.js.map +1 -1
  76. package/dist/client/route-warmup.d.ts +61 -0
  77. package/dist/client/route-warmup.d.ts.map +1 -0
  78. package/dist/client/route-warmup.js +456 -0
  79. package/dist/client/route-warmup.js.map +1 -0
  80. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  81. package/dist/client/settings/SettingsPanel.js +2 -1
  82. package/dist/client/settings/SettingsPanel.js.map +1 -1
  83. package/dist/client/settings/useBuilderStatus.d.ts +5 -0
  84. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  85. package/dist/client/settings/useBuilderStatus.js +10 -4
  86. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  87. package/dist/client/use-action.d.ts +1 -0
  88. package/dist/client/use-action.d.ts.map +1 -1
  89. package/dist/client/use-action.js +22 -4
  90. package/dist/client/use-action.js.map +1 -1
  91. package/dist/code-agents/background-run.d.ts +2 -0
  92. package/dist/code-agents/background-run.d.ts.map +1 -1
  93. package/dist/code-agents/background-run.js.map +1 -1
  94. package/dist/db/client.d.ts +1 -1
  95. package/dist/db/client.d.ts.map +1 -1
  96. package/dist/db/client.js +25 -1
  97. package/dist/db/client.js.map +1 -1
  98. package/dist/deploy/build.d.ts +4 -0
  99. package/dist/deploy/build.d.ts.map +1 -1
  100. package/dist/deploy/build.js +171 -14
  101. package/dist/deploy/build.js.map +1 -1
  102. package/dist/deploy/immutable-assets.d.ts +1 -0
  103. package/dist/deploy/immutable-assets.d.ts.map +1 -1
  104. package/dist/deploy/immutable-assets.js +1 -0
  105. package/dist/deploy/immutable-assets.js.map +1 -1
  106. package/dist/index.browser.d.ts +1 -1
  107. package/dist/index.browser.d.ts.map +1 -1
  108. package/dist/index.browser.js +1 -1
  109. package/dist/index.browser.js.map +1 -1
  110. package/dist/index.d.ts +1 -1
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +1 -1
  113. package/dist/index.js.map +1 -1
  114. package/dist/mcp/connect-route.d.ts.map +1 -1
  115. package/dist/mcp/connect-route.js +118 -82
  116. package/dist/mcp/connect-route.js.map +1 -1
  117. package/dist/progress/routes.d.ts.map +1 -1
  118. package/dist/progress/routes.js +1 -0
  119. package/dist/progress/routes.js.map +1 -1
  120. package/dist/progress/store.d.ts +13 -0
  121. package/dist/progress/store.d.ts.map +1 -1
  122. package/dist/progress/store.js +18 -0
  123. package/dist/progress/store.js.map +1 -1
  124. package/dist/progress/types.d.ts +2 -0
  125. package/dist/progress/types.d.ts.map +1 -1
  126. package/dist/progress/types.js.map +1 -1
  127. package/dist/scripts/db/wipe-leaked-builder-keys.d.ts +2 -2
  128. package/dist/scripts/db/wipe-leaked-builder-keys.d.ts.map +1 -1
  129. package/dist/scripts/db/wipe-leaked-builder-keys.js +14 -3
  130. package/dist/scripts/db/wipe-leaked-builder-keys.js.map +1 -1
  131. package/dist/server/action-routes.d.ts +1 -0
  132. package/dist/server/action-routes.d.ts.map +1 -1
  133. package/dist/server/action-routes.js +36 -2
  134. package/dist/server/action-routes.js.map +1 -1
  135. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  136. package/dist/server/agent-chat-plugin.js +123 -25
  137. package/dist/server/agent-chat-plugin.js.map +1 -1
  138. package/dist/server/agent-discovery.d.ts.map +1 -1
  139. package/dist/server/agent-discovery.js +14 -1
  140. package/dist/server/agent-discovery.js.map +1 -1
  141. package/dist/server/agent-teams-run-queue.d.ts +80 -0
  142. package/dist/server/agent-teams-run-queue.d.ts.map +1 -0
  143. package/dist/server/agent-teams-run-queue.js +208 -0
  144. package/dist/server/agent-teams-run-queue.js.map +1 -0
  145. package/dist/server/agent-teams.d.ts +67 -0
  146. package/dist/server/agent-teams.d.ts.map +1 -1
  147. package/dist/server/agent-teams.js +607 -180
  148. package/dist/server/agent-teams.js.map +1 -1
  149. package/dist/server/auth-marketing.d.ts.map +1 -1
  150. package/dist/server/auth-marketing.js +0 -64
  151. package/dist/server/auth-marketing.js.map +1 -1
  152. package/dist/server/auth.d.ts.map +1 -1
  153. package/dist/server/auth.js +67 -14
  154. package/dist/server/auth.js.map +1 -1
  155. package/dist/server/builder-browser.d.ts +12 -2
  156. package/dist/server/builder-browser.d.ts.map +1 -1
  157. package/dist/server/builder-browser.js +24 -0
  158. package/dist/server/builder-browser.js.map +1 -1
  159. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  160. package/dist/server/core-routes-plugin.js +66 -5
  161. package/dist/server/core-routes-plugin.js.map +1 -1
  162. package/dist/server/credential-provider.d.ts +10 -0
  163. package/dist/server/credential-provider.d.ts.map +1 -1
  164. package/dist/server/credential-provider.js +82 -3
  165. package/dist/server/credential-provider.js.map +1 -1
  166. package/dist/server/csrf.d.ts.map +1 -1
  167. package/dist/server/csrf.js +3 -0
  168. package/dist/server/csrf.js.map +1 -1
  169. package/dist/server/index.d.ts +1 -0
  170. package/dist/server/index.d.ts.map +1 -1
  171. package/dist/server/index.js +1 -0
  172. package/dist/server/index.js.map +1 -1
  173. package/dist/server/onboarding-html.d.ts +1 -0
  174. package/dist/server/onboarding-html.d.ts.map +1 -1
  175. package/dist/server/onboarding-html.js +14 -1
  176. package/dist/server/onboarding-html.js.map +1 -1
  177. package/dist/server/self-dispatch.d.ts +44 -0
  178. package/dist/server/self-dispatch.d.ts.map +1 -0
  179. package/dist/server/self-dispatch.js +113 -0
  180. package/dist/server/self-dispatch.js.map +1 -0
  181. package/dist/server/social-og-image.d.ts +14 -0
  182. package/dist/server/social-og-image.d.ts.map +1 -0
  183. package/dist/server/social-og-image.js +251 -0
  184. package/dist/server/social-og-image.js.map +1 -0
  185. package/dist/server/ssr-handler.d.ts +1 -1
  186. package/dist/server/ssr-handler.d.ts.map +1 -1
  187. package/dist/server/ssr-handler.js +27 -11
  188. package/dist/server/ssr-handler.js.map +1 -1
  189. package/dist/shared/cache-control.d.ts +7 -0
  190. package/dist/shared/cache-control.d.ts.map +1 -1
  191. package/dist/shared/cache-control.js +7 -0
  192. package/dist/shared/cache-control.js.map +1 -1
  193. package/dist/shared/index.d.ts +1 -1
  194. package/dist/shared/index.d.ts.map +1 -1
  195. package/dist/shared/index.js +1 -1
  196. package/dist/shared/index.js.map +1 -1
  197. package/dist/shared/route-warmup-config.d.ts +28 -0
  198. package/dist/shared/route-warmup-config.d.ts.map +1 -0
  199. package/dist/shared/route-warmup-config.js +58 -0
  200. package/dist/shared/route-warmup-config.js.map +1 -0
  201. package/dist/shared/social-meta.d.ts +5 -0
  202. package/dist/shared/social-meta.d.ts.map +1 -1
  203. package/dist/shared/social-meta.js +36 -2
  204. package/dist/shared/social-meta.js.map +1 -1
  205. package/dist/shared/streaming-text-smoothing.d.ts +12 -0
  206. package/dist/shared/streaming-text-smoothing.d.ts.map +1 -0
  207. package/dist/shared/streaming-text-smoothing.js +52 -0
  208. package/dist/shared/streaming-text-smoothing.js.map +1 -0
  209. package/dist/styles/agent-native.css +4 -4
  210. package/dist/templates/default/AGENTS.md +9 -4
  211. package/dist/templates/default/DEVELOPING.md +15 -1
  212. package/dist/templates/workspace-core/AGENTS.md +7 -3
  213. package/dist/templates/workspace-root/AGENTS.md +7 -3
  214. package/dist/vite/client.d.ts +13 -0
  215. package/dist/vite/client.d.ts.map +1 -1
  216. package/dist/vite/client.js +36 -1
  217. package/dist/vite/client.js.map +1 -1
  218. package/dist/vite/index.d.ts +1 -0
  219. package/dist/vite/index.d.ts.map +1 -1
  220. package/dist/vite/index.js.map +1 -1
  221. package/docs/content/client.md +62 -1
  222. package/docs/content/code-agents-ui.md +6 -13
  223. package/docs/content/context-awareness.md +186 -21
  224. package/docs/content/deployment.md +8 -11
  225. package/docs/content/dispatch.md +1 -1
  226. package/docs/content/external-agents.md +32 -2
  227. package/docs/content/migration-workbench.md +4 -21
  228. package/docs/content/multi-app-workspace.md +1 -1
  229. package/docs/content/recurring-jobs.md +1 -1
  230. package/docs/content/security.md +0 -1
  231. package/docs/content/sharing.md +1 -3
  232. package/docs/content/skills-guide.md +12 -10
  233. package/docs/content/template-assets.md +21 -1
  234. package/docs/content/template-design.md +23 -5
  235. package/docs/content/template-dispatch.md +1 -1
  236. package/package.json +2 -1
  237. package/src/templates/default/AGENTS.md +9 -4
  238. package/src/templates/default/DEVELOPING.md +15 -1
  239. package/src/templates/workspace-core/AGENTS.md +7 -3
  240. package/src/templates/workspace-root/AGENTS.md +7 -3
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from \"crypto\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport {\n appendCodeAgentTranscriptEvent,\n codeAgentRunArtifactsDir,\n createCodeAgentRunRecord,\n getLastCodeAgentRunRecord,\n listCodeAgentRunRecords,\n writeCodeAgentRunRecord,\n type CodeAgentRunRecord,\n} from \"./code-agent-runs.js\";\nimport { createApp } from \"./create.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst DEFAULT_APP_NAME = \"migration\";\nconst DEFAULT_OUTPUT = \"../migrated-app\";\nconst DEFAULT_TARGET = \"agent-native\";\nconst DEFAULT_DOSSIER_DIR = \"agent-native-migration-dossier\";\nconst MIGRATION_DEV_PORT = 8101;\nconst MIGRATE_SUBCOMMANDS = new Set([\"resume\", \"status\", \"stop\", \"ui\"]);\nconst MIGRATION_SESSION_COMMAND = \"agent-native code /migrate\";\nconst MODEL_CREDENTIAL_ENV_NAMES = [\n \"ANTHROPIC_API_KEY\",\n \"OPENAI_API_KEY\",\n \"GOOGLE_GENERATIVE_AI_API_KEY\",\n \"GROQ_API_KEY\",\n \"MISTRAL_API_KEY\",\n \"COHERE_API_KEY\",\n \"BUILDER_PRIVATE_KEY\",\n];\n\ntype MigrateSubcommand = \"resume\" | \"status\" | \"stop\" | \"ui\";\ntype SourceKind = \"path\" | \"url\" | \"description\";\n\nexport interface MigrateCliOptions {\n subcommand?: MigrateSubcommand;\n source?: string;\n sourcePath?: string;\n sourceUrl?: string;\n sourceDescription?: string;\n workbench?: string;\n output?: string;\n appName?: string;\n target?: string;\n planOnly?: boolean;\n planFile?: string;\n emit?: boolean;\n emitDir?: string;\n appSurface?: boolean;\n last?: boolean;\n help?: boolean;\n}\n\nexport interface SourceSpec {\n kind: SourceKind;\n value: string;\n sourceRoot?: string;\n description?: string;\n}\n\nexport interface EmitDossierResult {\n dossierRoot: string;\n files: string[];\n source: SourceSpec;\n usedMigrateHelpers: boolean;\n}\n\ninterface ProjectIRLike {\n site: {\n framework: \"nextjs\" | \"react\" | \"aem\" | \"unknown\";\n sourceRoot: string;\n routes: Array<{\n id: string;\n path: string;\n filePath: string;\n router: \"next-pages\" | \"next-app\" | \"unknown\";\n kind: \"marketing\" | \"docs\" | \"landing\" | \"app\" | \"api\" | \"unknown\";\n dynamic: boolean;\n public: boolean;\n notes?: string[];\n }>;\n redirects: Array<Record<string, unknown>>;\n metadata: Record<string, unknown>;\n };\n components: {\n components: Array<{\n id: string;\n name: string;\n filePath: string;\n usedByRoutes: string[];\n notes?: string[];\n }>;\n designTokens: Record<string, unknown>;\n };\n content: {\n models: Array<Record<string, unknown>>;\n assets: Array<{\n id: string;\n path: string;\n type: string;\n metadata?: Record<string, unknown>;\n }>;\n };\n behavior: {\n apiEndpoints: Array<{\n id: string;\n path: string;\n method: string;\n filePath: string;\n recommendedRecipe: string;\n }>;\n dataStores: Array<{\n id: string;\n name: string;\n filePath: string;\n kind: \"database\" | \"api\" | \"local-state\" | \"unknown\";\n }>;\n llmCalls: Array<{ id: string; filePath: string; provider: string }>;\n clientState: Array<{ id: string; filePath: string; reason: string }>;\n auth: Array<{ id: string; filePath: string; provider: string }>;\n jobs: Array<{ id: string; filePath: string; kind: string }>;\n };\n}\n\nexport function parseMigrateArgs(argv: string[]): MigrateCliOptions {\n const opts: MigrateCliOptions = {};\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n\n if (i === 0 && MIGRATE_SUBCOMMANDS.has(arg)) {\n opts.subcommand = arg as MigrateSubcommand;\n continue;\n }\n\n if (arg === \"--help\" || arg === \"-h\") {\n opts.help = true;\n } else if (arg === \"--out\" && argv[i + 1]) {\n opts.output = argv[++i];\n } else if (arg.startsWith(\"--out=\")) {\n opts.output = arg.slice(\"--out=\".length);\n } else if (arg === \"--name\" && argv[i + 1]) {\n opts.appName = argv[++i];\n } else if (arg.startsWith(\"--name=\")) {\n opts.appName = arg.slice(\"--name=\".length);\n } else if (arg === \"--target\" && argv[i + 1]) {\n opts.target = argv[++i];\n } else if (arg.startsWith(\"--target=\")) {\n opts.target = arg.slice(\"--target=\".length);\n } else if (arg === \"--source\" && argv[i + 1]) {\n setSourceOption(opts, argv[++i]);\n } else if (arg.startsWith(\"--source=\")) {\n setSourceOption(opts, arg.slice(\"--source=\".length));\n } else if (arg === \"--path\" && argv[i + 1]) {\n opts.sourcePath = argv[++i];\n } else if (arg.startsWith(\"--path=\")) {\n opts.sourcePath = arg.slice(\"--path=\".length);\n } else if (arg === \"--url\" && argv[i + 1]) {\n opts.sourceUrl = argv[++i];\n } else if (arg.startsWith(\"--url=\")) {\n opts.sourceUrl = arg.slice(\"--url=\".length);\n } else if (\n (arg === \"--description\" || arg === \"--describe\") &&\n argv[i + 1]\n ) {\n opts.sourceDescription = argv[++i];\n } else if (arg.startsWith(\"--description=\")) {\n opts.sourceDescription = arg.slice(\"--description=\".length);\n } else if (arg.startsWith(\"--describe=\")) {\n opts.sourceDescription = arg.slice(\"--describe=\".length);\n } else if (arg === \"--emit\") {\n opts.emit = true;\n if (argv[i + 1] && !argv[i + 1].startsWith(\"-\")) {\n opts.emitDir = argv[++i];\n }\n } else if (arg.startsWith(\"--emit=\")) {\n opts.emit = true;\n opts.emitDir = arg.slice(\"--emit=\".length);\n } else if (arg === \"--emit-dir\" && argv[i + 1]) {\n opts.emit = true;\n opts.emitDir = argv[++i];\n } else if (arg.startsWith(\"--emit-dir=\")) {\n opts.emit = true;\n opts.emitDir = arg.slice(\"--emit-dir=\".length);\n } else if (arg === \"--app-surface\" || arg === \"--workbench\") {\n opts.appSurface = true;\n } else if (arg === \"--plan-only\") {\n opts.planOnly = true;\n } else if (arg === \"--plan-file\" && argv[i + 1]) {\n opts.planFile = argv[++i];\n } else if (arg.startsWith(\"--plan-file=\")) {\n opts.planFile = arg.slice(\"--plan-file=\".length);\n } else if (arg === \"--last\") {\n opts.last = true;\n } else if (!arg.startsWith(\"-\")) {\n if (\n opts.subcommand &&\n [\"status\", \"stop\", \"ui\"].includes(opts.subcommand) &&\n !opts.workbench\n ) {\n opts.workbench = arg;\n } else if (!opts.source) {\n opts.source = arg;\n } else if (!opts.workbench) {\n opts.workbench = arg;\n }\n }\n }\n return opts;\n}\n\nexport async function runMigrate(argv: string[]): Promise<void> {\n const opts = parseMigrateArgs(argv);\n if (opts.help) {\n console.log(migrateUsage());\n return;\n }\n\n if (opts.subcommand === \"status\") {\n printMigrationStatus(opts);\n return;\n }\n if (opts.subcommand === \"stop\") {\n printMigrationStop(opts);\n return;\n }\n if (opts.subcommand === \"ui\") {\n printMigrationUi(opts);\n return;\n }\n if (opts.emit) {\n try {\n const result = await emitOwnAgentDossier(opts);\n console.log(renderEmitResult(result));\n } catch (error) {\n if (isExpectedMigrationCliError(error)) {\n console.error(`\\n${migrationCliErrorMessage(error)}\\n`);\n process.exit(1);\n }\n throw error;\n }\n return;\n }\n if (opts.subcommand === \"resume\" && !hasAnySource(opts)) {\n printMigrationResume(opts);\n return;\n }\n\n if (opts.appSurface) {\n await scaffoldOrResumeWorkbench(opts);\n return;\n }\n\n try {\n await createMigrationCodeAgentSession(opts);\n } catch (error) {\n if (isExpectedMigrationCliError(error)) {\n console.error(`\\n${migrationCliErrorMessage(error)}\\n`);\n process.exit(1);\n }\n throw error;\n }\n}\n\nexport async function emitOwnAgentDossier(\n opts: MigrateCliOptions,\n cwd = process.cwd(),\n): Promise<EmitDossierResult> {\n const source = resolveSourceSpec(opts, cwd);\n if (!source) {\n throw new Error(\n \"Usage: agent-native migrate <source-path-or-url> --emit [dossier-dir]\",\n );\n }\n\n let dossierRoot = resolveDossierRoot(opts, source, cwd);\n const explicitEmitDir = Boolean(opts.emitDir);\n if (source.sourceRoot && isInsideOrSame(source.sourceRoot, dossierRoot)) {\n if (explicitEmitDir) {\n throw new Error(\n `Refusing to emit dossier inside sourceRoot (${source.sourceRoot}). Choose an --emit path outside the source project.`,\n );\n }\n dossierRoot = defaultDossierRoot(source, cwd);\n }\n if (source.sourceRoot) {\n assertOutsideSourceRoot(source.sourceRoot, dossierRoot, \"dossier\");\n }\n\n fs.mkdirSync(dossierRoot, { recursive: true });\n const planInputs = await readMigrationPlanInputs(opts, cwd);\n const written = new Set<string>();\n const write = (relativePath: string, content: string) => {\n const filePath = path.join(dossierRoot, relativePath);\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n fs.writeFileSync(\n filePath,\n content.endsWith(\"\\n\") ? content : `${content}\\n`,\n );\n written.add(relativePath);\n };\n\n const templateDir = findMigrationTemplateDir();\n const templateAgents = readTextIfExists(\n templateDir ? path.join(templateDir, \"AGENTS.md\") : undefined,\n );\n write(\"AGENTS.md\", renderDossierAgentsMd(source, templateAgents, planInputs));\n\n for (const copied of copyMigrationSkills(templateDir, dossierRoot)) {\n written.add(copied);\n }\n\n const helperResult = await writeAssessmentWithMigrateHelpers({\n source,\n dossierRoot,\n target: opts.target ?? DEFAULT_TARGET,\n write,\n });\n const usedMigrateHelpers = helperResult;\n if (!helperResult) {\n const fallback = buildFallbackAssessment(source);\n write(\"01-assessment.md\", fallback.assessment);\n if (fallback.ir) {\n write(\"ir.json\", `${JSON.stringify(fallback.ir, null, 2)}\\n`);\n }\n }\n\n if (planInputs) {\n write(\"02-plan-inputs.json\", `${JSON.stringify(planInputs, null, 2)}\\n`);\n }\n\n write(\"MIGRATION_PLAYBOOK.md\", renderMigrationPlaybook(source, planInputs));\n write(\n \"source.json\",\n `${JSON.stringify(\n {\n source,\n target: opts.target ?? DEFAULT_TARGET,\n planInputs,\n createdAt: new Date().toISOString(),\n usedMigrateHelpers,\n },\n null,\n 2,\n )}\\n`,\n );\n\n return {\n dossierRoot,\n files: [...written].sort(),\n source,\n usedMigrateHelpers,\n };\n}\n\nexport function isExpectedMigrationCliError(error: unknown): boolean {\n const message = migrationCliErrorMessage(error);\n return (\n message.startsWith(\"Usage: agent-native migrate\") ||\n message.startsWith(\"Refusing to emit dossier inside sourceRoot\") ||\n message.startsWith(\"Refusing to write \") ||\n message.startsWith(\"Could not read migration plan file \")\n );\n}\n\nfunction migrationCliErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nasync function scaffoldOrResumeWorkbench(\n opts: MigrateCliOptions,\n): Promise<void> {\n const cwd = process.cwd();\n const source = resolveSourceSpec(opts, cwd);\n if (!source) {\n console.error(migrateUsage());\n process.exit(1);\n }\n\n const appName = opts.appName ?? DEFAULT_APP_NAME;\n const target = opts.target ?? DEFAULT_TARGET;\n const outputRoot = path.resolve(cwd, opts.output ?? DEFAULT_OUTPUT);\n const planInputs = await readMigrationPlanInputs(opts, cwd);\n const appDirBefore = resolveScaffoldedAppDir(cwd, appName);\n const existing = fs.existsSync(appDirBefore);\n\n if (!existing) {\n await createApp(appName, { template: \"migration\" });\n }\n\n const appDir = resolveScaffoldedAppDir(cwd, appName);\n fs.mkdirSync(path.join(appDir, \"data\"), { recursive: true });\n fs.writeFileSync(\n path.join(appDir, \"data\", \"migration-source.json\"),\n `${JSON.stringify(\n {\n schemaVersion: 2,\n name: defaultRunName(source),\n source: sourceSeedPayload(source),\n sourceKind: source.kind,\n sourceRoot: source.sourceRoot ?? \"\",\n sourceUrl: source.kind === \"url\" ? source.value : undefined,\n sourceDescription: source.description,\n outputRoot,\n target,\n planOnly: Boolean(opts.planOnly),\n planInputs,\n createdAt: new Date().toISOString(),\n },\n null,\n 2,\n )}\\n`,\n );\n\n console.log(renderWorkbenchReady({ appDir, existing, outputRoot, source }));\n}\n\nasync function createMigrationCodeAgentSession(\n opts: MigrateCliOptions,\n): Promise<void> {\n const cwd = process.cwd();\n const source = resolveSourceSpec(opts, cwd);\n if (!source) {\n console.error(migrateUsage());\n process.exit(1);\n }\n\n const outputRoot = path.resolve(cwd, opts.output ?? DEFAULT_OUTPUT);\n const planInputs = await readMigrationPlanInputs(opts, cwd);\n if (source.sourceRoot) {\n assertOutsideSourceRoot(source.sourceRoot, outputRoot, \"outputRoot\");\n }\n\n const run = createCodeAgentRunRecord({\n goalId: \"migrate\",\n title: defaultRunName(source),\n subtitle: formatSourceForDisplay(source),\n status: \"needs-approval\",\n phase: \"intake\",\n needsApproval: true,\n progress: {\n label: \"Intake\",\n completed: 0,\n total: 1,\n percent: 0,\n },\n cwd,\n metadata: {\n source,\n sourceRoot: source.sourceRoot,\n outputRoot,\n target: opts.target ?? DEFAULT_TARGET,\n planInputs,\n },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"user\",\n message: `Migrate ${formatSourceForDisplay(source)} to ${opts.target ?? DEFAULT_TARGET}.`,\n metadata: {\n source,\n outputRoot,\n target: opts.target ?? DEFAULT_TARGET,\n planInputs,\n },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"status\",\n message: \"Preparing migration dossier.\",\n metadata: { status: \"needs-approval\", phase: \"intake\" },\n });\n const artifactRoot = codeAgentRunArtifactsDir(run.id);\n const dossierRoot = path.join(artifactRoot, \"migration-dossier\");\n const dossier = await emitOwnAgentDossier(\n {\n ...opts,\n emit: true,\n emitDir: dossierRoot,\n target: opts.target ?? DEFAULT_TARGET,\n },\n cwd,\n );\n\n const updated: CodeAgentRunRecord = {\n ...run,\n progress: {\n label: \"Dossier ready; waiting for approval\",\n completed: 1,\n total: 2,\n percent: 50,\n },\n artifactRoot,\n details: [\n { label: \"Source\", value: formatSourceForDisplay(source) },\n { label: \"Output\", value: outputRoot },\n { label: \"Dossier\", value: dossierRoot },\n { label: \"Resume\", value: \"agent-native code resume --last\" },\n { label: \"Attach\", value: \"agent-native code attach --last\" },\n ],\n metadata: {\n ...(run.metadata ?? {}),\n dossierRoot,\n dossierFiles: dossier.files,\n artifactFiles: dossier.files.map((file) => path.join(dossierRoot, file)),\n planInputs,\n usedMigrateHelpers: dossier.usedMigrateHelpers,\n resumeCommand: \"agent-native code resume --last\",\n attachCommand: \"agent-native code attach --last\",\n statusCommand: \"agent-native code status --last\",\n preferredCommand: MIGRATION_SESSION_COMMAND,\n },\n updatedAt: new Date().toISOString(),\n };\n writeCodeAgentRunRecord(updated);\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"artifact\",\n message: \"Migration dossier created.\",\n metadata: {\n path: dossierRoot,\n files: dossier.files,\n usedMigrateHelpers: dossier.usedMigrateHelpers,\n },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"note\",\n message:\n \"Use the dossier with Codex, Claude Code, Cursor, or another coding agent; no migration agent process has been started by the CLI.\",\n metadata: { source: \"migration-dossier\" },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"status\",\n message:\n \"Migration dossier is ready. Resume the /migrate session from Agent-Native Code when you are ready to approve or continue.\",\n metadata: { status: \"needs-approval\", phase: \"intake\" },\n });\n\n console.log(renderCodeAgentMigrationSession(updated, dossier));\n}\n\nfunction printMigrationStatus(opts: MigrateCliOptions): void {\n const last = getLastCodeAgentRunRecord(\"migrate\");\n const runs = listCodeAgentRunRecords(\"migrate\");\n if (last || !opts.appSurface) {\n console.log(renderCodeAgentMigrationStatus(runs));\n return;\n }\n\n const appDir = resolveWorkbenchDir(opts);\n const seedPath = path.join(appDir, \"data\", \"migration-source.json\");\n const seed = readJsonIfExists(seedPath) as {\n sourceKind?: string;\n sourceRoot?: string;\n sourceUrl?: string;\n sourceDescription?: string;\n outputRoot?: string;\n target?: string;\n } | null;\n const artifactRuns = readArtifactRuns(appDir);\n\n if (!fs.existsSync(appDir)) {\n console.error(`No Migration Workbench found at ${appDir}.`);\n console.error(\n `Create one with: npx @agent-native/core@latest code /migrate <source>`,\n );\n console.error(\n `The direct migrate command is a shortcut into that same Agent-Native Code slash command.`,\n );\n process.exit(1);\n }\n\n console.log(\n [\n \"\",\n \"Migration Workbench status\",\n \"\",\n ` App: ${appDir}`,\n ` Seed: ${fs.existsSync(seedPath) ? seedPath : \"not found\"}`,\n ` Source: ${formatSeedSource(seed)}`,\n ` Output: ${seed?.outputRoot ?? \"not set\"}`,\n ` Target: ${seed?.target ?? DEFAULT_TARGET}`,\n ` Artifacts: ${artifactRuns.length} run${artifactRuns.length === 1 ? \"\" : \"s\"}`,\n ...artifactRuns\n .slice(0, 5)\n .map((run) => ` - ${run.id} (${run.phase})`),\n artifactRuns.length > 5 ? ` - ${artifactRuns.length - 5} more...` : \"\",\n \"\",\n ...credentialStatusLines(),\n ]\n .filter(Boolean)\n .join(\"\\n\"),\n );\n}\n\nfunction printMigrationStop(_opts: MigrateCliOptions): void {\n console.log(\n [\n \"\",\n \"Agent-Native Code /migrate stop\",\n \"\",\n \"The migrate CLI creates resumable session records and artifacts; it does not daemonize a background process yet.\",\n \"Stop the terminal, Desktop run, or external coding agent that is actively working on the session.\",\n ].join(\"\\n\"),\n );\n}\n\nfunction printMigrationUi(opts: MigrateCliOptions): void {\n const last = getLastCodeAgentRunRecord(\"migrate\");\n if (last && !opts.appSurface) {\n console.log(renderCodeAgentMigrationUi(last));\n return;\n }\n\n const appDir = resolveWorkbenchDir(opts);\n console.log(\n [\n \"\",\n \"Migration Workbench UI\",\n \"\",\n ` App: ${appDir}`,\n ` URL: http://localhost:${MIGRATION_DEV_PORT}/`,\n \"\",\n \"Start it with:\",\n ` cd ${shellQuote(path.relative(process.cwd(), appDir) || \".\")}`,\n \" pnpm install\",\n \" pnpm dev\",\n \"\",\n \"Deep-link shape:\",\n ` http://localhost:${MIGRATION_DEV_PORT}/`,\n \" Pick a run in the Workbench, or ask the app agent to navigate by run ID.\",\n ].join(\"\\n\"),\n );\n}\n\nfunction printMigrationResume(opts: MigrateCliOptions): void {\n const last = getLastCodeAgentRunRecord(\"migrate\");\n if (last && !opts.appSurface) {\n console.log(renderCodeAgentMigrationResume(last));\n return;\n }\n\n const appDir = resolveWorkbenchDir(opts);\n const seedPath = path.join(appDir, \"data\", \"migration-source.json\");\n const seed = readJsonIfExists(seedPath);\n if (!fs.existsSync(appDir) || !seed) {\n console.error(\n \"No resumable Migration Workbench seed found. Run `npx @agent-native/core@latest code /migrate <source>` first.\",\n );\n process.exit(1);\n }\n console.log(\n [\n \"\",\n \"Migration Workbench resume\",\n \"\",\n ` App: ${appDir}`,\n ` Seed: ${seedPath}`,\n \"\",\n \"Continue with:\",\n ` cd ${shellQuote(path.relative(process.cwd(), appDir) || \".\")}`,\n \" pnpm dev\",\n \"\",\n `Workbench URL: http://localhost:${MIGRATION_DEV_PORT}/`,\n ].join(\"\\n\"),\n );\n}\n\nfunction renderWorkbenchReady(args: {\n appDir: string;\n existing: boolean;\n outputRoot: string;\n source: SourceSpec;\n}): string {\n const rel = path.relative(process.cwd(), args.appDir) || \".\";\n const sourceCommand = formatSourceForCommand(args.source);\n return [\n \"\",\n args.existing\n ? \"Migration Workbench is ready (reused existing app).\"\n : \"Migration Workbench is ready.\",\n \"\",\n ` Source: ${formatSourceForDisplay(args.source)}`,\n ` Output: ${args.outputRoot}`,\n ` App: ${args.appDir}`,\n \"\",\n \"Run it:\",\n ` cd ${shellQuote(rel)}`,\n \" pnpm install\",\n \" pnpm dev\",\n \"\",\n \"npx-friendly commands:\",\n ` npx @agent-native/core@latest code /migrate ${sourceCommand} --out ${shellQuote(path.relative(process.cwd(), args.outputRoot) || \".\")}`,\n ` npx @agent-native/core@latest code /migrate ${sourceCommand} --emit ${shellQuote(defaultDossierDirForDisplay(args.source))}`,\n \"\",\n \"Workbench URL:\",\n ` http://localhost:${MIGRATION_DEV_PORT}/`,\n \" If Vite chooses another port, use the URL printed by `pnpm dev`.\",\n \"\",\n \"Deep-link shape:\",\n ` http://localhost:${MIGRATION_DEV_PORT}/`,\n \" Select the run inside the Workbench, or ask the app agent to open a run by ID.\",\n \"\",\n ...credentialStatusLines(),\n \"\",\n \"The Workbench seed is written to data/migration-source.json. It stores paths and source metadata only, never secret values.\",\n ].join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationSession(\n run: CodeAgentRunRecord,\n dossier: EmitDossierResult,\n): string {\n return [\n \"\",\n \"Agent-Native Code /migrate session created.\",\n \"\",\n ` Run: ${run.id}`,\n \" Goal: /migrate\",\n ` Source: ${run.subtitle ?? \"not set\"}`,\n ` Output: ${stringMetadata(run, \"outputRoot\") ?? \"not set\"}`,\n ` Dossier: ${stringMetadata(run, \"dossierRoot\") ?? dossier.dossierRoot}`,\n ` Engine: ${dossier.usedMigrateHelpers ? \"@agent-native/migrate helpers\" : \"safe local fallback\"}`,\n \"\",\n \"Artifacts:\",\n ...dossier.files\n .filter((file) =>\n [\n \"AGENTS.md\",\n \"MIGRATION_PLAYBOOK.md\",\n \"01-assessment.md\",\n \"ir.json\",\n \"source.json\",\n ].includes(file),\n )\n .map((file) => ` - ${path.join(dossier.dossierRoot, file)}`),\n \"\",\n \"Continue:\",\n \" agent-native code attach --last\",\n \" agent-native code resume --last\",\n \" agent-native code logs --last\",\n \" agent-native code status --last\",\n \"\",\n \"Desktop:\",\n \" Open Agent-Native Code in the left sidebar. This run appears as a /migrate session.\",\n \"\",\n \"Use another agent:\",\n ` Point Codex, Claude Code, Cursor, or another coding agent at ${shellQuote(dossier.dossierRoot)} and ask it to follow AGENTS.md plus MIGRATION_PLAYBOOK.md.`,\n \"\",\n \"Default surface:\",\n \" Migration stays in Agent-Native Code. No hidden app/template was scaffolded.\",\n \" Use --app-surface only when you explicitly want the legacy migration detail app.\",\n ].join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationStatus(runs: CodeAgentRunRecord[]): string {\n return [\n \"\",\n \"Agent-Native Code /migrate status\",\n \"\",\n runs.length === 0\n ? \" No /migrate sessions found. Start one with `agent-native code /migrate <source>`.\"\n : ` ${runs.length} session${runs.length === 1 ? \"\" : \"s\"} found.`,\n ...runs.slice(0, 8).map((run) => {\n const output = stringMetadata(run, \"outputRoot\");\n const dossier = stringMetadata(run, \"dossierRoot\");\n const progress = run.progress?.label\n ? ` Progress: ${run.progress.label} (${run.progress.completed}/${run.progress.total})`\n : \"\";\n return [\n ` - ${run.id}`,\n ` Status: ${run.status}${run.phase ? ` (${run.phase})` : \"\"}`,\n progress,\n ` Source: ${run.subtitle ?? \"not set\"}`,\n output ? ` Output: ${output}` : \"\",\n dossier ? ` Dossier: ${dossier}` : \"\",\n ` Resume: agent-native code resume ${run.id}`,\n ]\n .filter(Boolean)\n .join(\"\\n\");\n }),\n runs.length > 8 ? ` - ${runs.length - 8} more...` : \"\",\n \"\",\n \"Shortcuts:\",\n \" agent-native migrate status --last shows the same Agent-Native Code sessions.\",\n \" Add --app-surface only to inspect the legacy hidden migration app.\",\n ]\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationResume(run: CodeAgentRunRecord): string {\n const dossier = stringMetadata(run, \"dossierRoot\");\n return [\n \"\",\n \"Agent-Native Code /migrate resume\",\n \"\",\n ` Run: ${run.id}`,\n ` Status: ${run.status}${run.phase ? ` (${run.phase})` : \"\"}`,\n ` Source: ${run.subtitle ?? \"not set\"}`,\n dossier ? ` Dossier: ${dossier}` : \"\",\n \"\",\n \"Continue in the interactive shell:\",\n \" agent-native code\",\n \"\",\n \"Resume this run directly:\",\n ` agent-native code resume ${run.id}`,\n \" agent-native code attach --last\",\n \"\",\n dossier\n ? `Or hand off to another agent by pointing it at ${shellQuote(dossier)}.`\n : \"No dossier path is recorded on this run.\",\n ]\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationUi(run: CodeAgentRunRecord): string {\n return [\n \"\",\n \"Agent-Native Code /migrate UI\",\n \"\",\n ` Run: ${run.id}`,\n \"\",\n \"Open Agent-Native Desktop and choose Agent-Native Code from the left sidebar.\",\n \"The migration detail app is no longer scaffolded by default; it is only an optional legacy surface.\",\n ].join(\"\\n\");\n}\n\nfunction renderEmitResult(result: EmitDossierResult): string {\n return [\n \"\",\n \"Migration agent dossier emitted.\",\n \"\",\n ` Source: ${formatSourceForDisplay(result.source)}`,\n ` Dossier: ${result.dossierRoot}`,\n ` IR: ${result.files.includes(\"ir.json\") ? \"included\" : \"not available from this input\"}`,\n ` Engine: ${result.usedMigrateHelpers ? \"@agent-native/migrate helpers\" : \"safe local fallback\"}`,\n \"\",\n \"Files:\",\n ...result.files.map((file) => ` - ${file}`),\n \"\",\n \"Use with Agent-Native Code/Desktop:\",\n ` Point the agent at ${shellQuote(result.dossierRoot)} and ask it to follow AGENTS.md plus MIGRATION_PLAYBOOK.md.`,\n \"\",\n \"Safety:\",\n \" The dossier was written outside sourceRoot and contains no secret values.\",\n ].join(\"\\n\");\n}\n\nfunction migrateUsage(): string {\n return [\n \"Usage:\",\n \" agent-native code /migrate <source-path-or-url> [--out ../migrated-app] (preferred)\",\n \" agent-native migrate <source-path-or-url> [--out ../migrated-app] (shortcut)\",\n \" agent-native migrate <source> --emit [dossier-dir]\",\n ' agent-native migrate --describe \"legacy app described in prose\" --emit',\n \" agent-native migrate resume --last\",\n \" agent-native migrate status --last\",\n \" agent-native migrate ui --last\",\n \" agent-native migrate stop --last\",\n \"\",\n \"Examples:\",\n \" npx @agent-native/core@latest code /migrate ./my-next-app --out ../migrated-app\",\n \" npx @agent-native/core@latest migrate ./my-next-app --out ../migrated-app\",\n ' npx @agent-native/core@latest code /migrate https://example.com --describe \"marketing site\" --emit ../migration-dossier',\n ' npx @agent-native/core@latest code /migrate --describe \"A Rails admin app with reporting dashboards\" --emit',\n \"\",\n \"Default:\",\n \" Migration is an Agent-Native Code slash command. The hidden migration app is not scaffolded unless --app-surface is passed.\",\n \"\",\n \"Options:\",\n \" --source, --path <path> Local source path\",\n \" --url <url> Source URL\",\n \" --description, --describe Source description for any-input migrations\",\n \" --emit [dir] Emit an own-agent dossier without recording a session\",\n \" --out <path> Generated output path for the migration session\",\n \" --plan-file <path> Custom migration profile JSON or notes\",\n \" --app-surface, --workbench Scaffold the legacy hidden migration detail app\",\n \" --name <name> Legacy app-surface name (default: migration)\",\n \" --target <name> Migration target (default: agent-native)\",\n \" --plan-only Legacy app-surface plan-only seed\",\n ].join(\"\\n\");\n}\n\nfunction setSourceOption(opts: MigrateCliOptions, value: string): void {\n opts.source = value;\n if (isProbablyUrl(value)) {\n opts.sourceUrl = value;\n } else {\n opts.sourcePath = value;\n }\n}\n\nfunction hasAnySource(opts: MigrateCliOptions): boolean {\n return Boolean(\n opts.source || opts.sourcePath || opts.sourceUrl || opts.sourceDescription,\n );\n}\n\nfunction resolveSourceSpec(\n opts: MigrateCliOptions,\n cwd = process.cwd(),\n): SourceSpec | null {\n if (opts.sourceUrl) {\n return {\n kind: \"url\",\n value: opts.sourceUrl,\n description: opts.sourceDescription,\n };\n }\n if (opts.sourcePath) {\n return {\n kind: \"path\",\n value: opts.sourcePath,\n sourceRoot: path.resolve(cwd, opts.sourcePath),\n description: opts.sourceDescription,\n };\n }\n if (opts.source) {\n if (isProbablyUrl(opts.source)) {\n return {\n kind: \"url\",\n value: opts.source,\n description: opts.sourceDescription,\n };\n }\n return {\n kind: \"path\",\n value: opts.source,\n sourceRoot: path.resolve(cwd, opts.source),\n description: opts.sourceDescription,\n };\n }\n if (opts.sourceDescription) {\n return {\n kind: \"description\",\n value: opts.sourceDescription,\n description: opts.sourceDescription,\n };\n }\n return null;\n}\n\nfunction resolveDossierRoot(\n opts: MigrateCliOptions,\n source: SourceSpec,\n cwd: string,\n): string {\n if (opts.emitDir) return path.resolve(cwd, opts.emitDir);\n return defaultDossierRoot(source, cwd);\n}\n\nasync function readMigrationPlanInputs(\n opts: MigrateCliOptions,\n cwd: string,\n): Promise<unknown | null> {\n if (!opts.planFile) return null;\n const filePath = path.resolve(cwd, opts.planFile);\n let text = \"\";\n try {\n text = fs.readFileSync(filePath, \"utf-8\");\n } catch (error) {\n throw new Error(\n `Could not read migration plan file ${filePath}: ${migrationCliErrorMessage(error)}`,\n );\n }\n\n try {\n const migratePackage = \"@agent-native/migrate\";\n const migrate = (await import(migratePackage)) as {\n parseMigrationPlanInputsText?: (\n text: string,\n sourceLabel?: string,\n ) => unknown;\n };\n const parsed = migrate.parseMigrationPlanInputsText?.(\n text,\n path.basename(filePath),\n );\n if (migrate.parseMigrationPlanInputsText) return parsed ?? null;\n } catch {\n // The dossier writer can run without the migrate package being bundled.\n }\n\n try {\n const parsed = JSON.parse(text);\n return isRecognizedPlanInputJson(parsed) ? parsed : null;\n } catch {\n return inferMigrationPlanInputsFromText(text, path.basename(filePath));\n }\n}\n\nfunction isRecognizedPlanInputJson(value: unknown): boolean {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return false;\n }\n return [\n \"summary\",\n \"notes\",\n \"aem\",\n \"builder\",\n \"headless\",\n \"jquery\",\n \"verification\",\n ].some((key) => Object.prototype.hasOwnProperty.call(value, key));\n}\n\nfunction inferMigrationPlanInputsFromText(\n text: string,\n sourceLabel: string,\n): Record<string, unknown> {\n const lower = text.toLowerCase();\n const planInputs: Record<string, unknown> = {\n summary: firstMeaningfulLine(text) ?? sourceLabel,\n notes: text.trim(),\n };\n const mentionsAem =\n /\\baem\\b|adobe experience manager|content fragment|experience fragment|sling|htl|jcr|vault|dam/.test(\n lower,\n );\n const mentionsBuilder = /\\bbuilder\\b|fusion|publish|visual editor/.test(\n lower,\n );\n const mentionsHeadless = /akeneo|akineo|headless|dynamic pages?/.test(lower);\n const mentionsJQuery = /\\bjquery\\b|\\$\\(|clientlib/.test(lower);\n\n if (mentionsAem) {\n planInputs.aem = {\n modes: [\"enterprise\"],\n contentFragmentPolicy: mentionsHeadless ? \"headless\" : \"manual\",\n experienceFragmentPolicy: mentionsBuilder\n ? \"builder-section\"\n : \"react-component\",\n componentPolicy: mentionsBuilder\n ? \"builder-registered-component\"\n : \"react-component\",\n };\n }\n if (mentionsBuilder) {\n planInputs.builder = {\n enabled: true,\n componentRegistration: \"register\",\n routeOwnership: [\n {\n pattern: \"static/low-change pages\",\n owner: \"builder-page\",\n notes:\n \"Use Builder for static or low-change public pages that benefit from visual management.\",\n },\n ],\n };\n }\n if (mentionsHeadless) {\n planInputs.headless = {\n provider:\n lower.includes(\"akeneo\") || lower.includes(\"akineo\")\n ? \"Akeneo\"\n : \"headless\",\n routePatterns: [\"dynamic pages\"],\n };\n const builder = planInputs.builder as\n | { routeOwnership?: Array<Record<string, string>> }\n | undefined;\n if (builder) {\n builder.routeOwnership = [\n ...(builder.routeOwnership ?? []),\n {\n pattern: \"dynamic pages\",\n owner: \"headless\",\n notes:\n \"Route dynamic pages through the approved headless source instead of treating Builder as a content dump.\",\n },\n ];\n }\n }\n if (mentionsJQuery) {\n planInputs.jquery = { policy: \"rewrite\" };\n }\n return planInputs;\n}\n\nfunction firstMeaningfulLine(text: string): string | undefined {\n return text\n .split(/\\r?\\n/)\n .map((line) => line.replace(/^#+\\s*/, \"\").trim())\n .find(Boolean)\n ?.slice(0, 140);\n}\n\nfunction defaultDossierRoot(source: SourceSpec, cwd: string): string {\n if (source.sourceRoot) {\n return path.resolve(\n path.dirname(source.sourceRoot),\n `${path.basename(source.sourceRoot)}-migration-dossier`,\n );\n }\n return path.resolve(cwd, DEFAULT_DOSSIER_DIR);\n}\n\nfunction defaultDossierDirForDisplay(source: SourceSpec): string {\n if (source.sourceRoot) {\n return `../${path.basename(source.sourceRoot)}-migration-dossier`;\n }\n return DEFAULT_DOSSIER_DIR;\n}\n\nfunction assertOutsideSourceRoot(\n sourceRoot: string,\n targetPath: string,\n label: string,\n): void {\n if (isInsideOrSame(sourceRoot, targetPath)) {\n throw new Error(\n `Refusing to write ${label} inside sourceRoot (${sourceRoot}). Choose a path outside the source project.`,\n );\n }\n}\n\nfunction isInsideOrSame(root: string, candidate: string): boolean {\n const relative = path.relative(path.resolve(root), path.resolve(candidate));\n return (\n relative === \"\" ||\n (!relative.startsWith(\"..\") && !path.isAbsolute(relative))\n );\n}\n\nasync function writeAssessmentWithMigrateHelpers(args: {\n source: SourceSpec;\n dossierRoot: string;\n target: string;\n write(relativePath: string, content: string): void;\n}): Promise<boolean> {\n try {\n const migratePackage = \"@agent-native/migrate\";\n const migrate = (await import(migratePackage)) as any;\n const adapter = migrate.nextjsSourceAdapter;\n\n if (\n args.source.sourceRoot &&\n fs.existsSync(args.source.sourceRoot) &&\n adapter?.introspect &&\n migrate.createMigrationRun &&\n migrate.discoverMigration &&\n migrate.artifactPaths\n ) {\n if (adapter.detect) {\n const detected = await adapter.detect(args.source.sourceRoot);\n if (!detected) return false;\n }\n\n const artifactRoot = path.join(args.dossierRoot, \".migrate-artifacts\");\n const outputRoot = path.join(args.dossierRoot, \"generated-output\");\n assertOutsideSourceRoot(\n args.source.sourceRoot,\n artifactRoot,\n \"artifacts\",\n );\n assertOutsideSourceRoot(args.source.sourceRoot, outputRoot, \"outputRoot\");\n\n const run = await migrate.createMigrationRun({\n sourceRoot: args.source.sourceRoot,\n outputRoot,\n artifactRoot,\n target: args.target,\n id: \"dossier\",\n });\n const result = await migrate.discoverMigration(run, adapter);\n const artifacts = migrate.artifactPaths(result.run);\n args.write(\n \"01-assessment.md\",\n fs.readFileSync(result.assessmentPath, \"utf-8\"),\n );\n if (fs.existsSync(artifacts.irPath)) {\n args.write(\"ir.json\", fs.readFileSync(artifacts.irPath, \"utf-8\"));\n }\n return true;\n }\n\n if (!args.source.sourceRoot && migrate.createSkeletonProjectIR) {\n const ir = migrate.createSkeletonProjectIR({\n sourceRoot: args.source.value,\n inputKind: args.source.kind,\n inputDescription: args.source.description ?? args.source.value,\n }) as ProjectIRLike;\n args.write(\"01-assessment.md\", renderLocalAssessment(args.source, ir));\n args.write(\"ir.json\", `${JSON.stringify(ir, null, 2)}\\n`);\n return true;\n }\n } catch {\n return false;\n }\n return false;\n}\n\nfunction buildFallbackAssessment(source: SourceSpec): {\n assessment: string;\n ir?: ProjectIRLike;\n} {\n if (source.sourceRoot && fs.existsSync(source.sourceRoot)) {\n const ir = createLocalProjectIr(source.sourceRoot);\n return { assessment: renderLocalAssessment(source, ir), ir };\n }\n return { assessment: renderNonPathAssessment(source) };\n}\n\nfunction createLocalProjectIr(sourceRoot: string): ProjectIRLike {\n const files = walkSourceFiles(sourceRoot);\n const packageJson = readJsonIfExists(\n path.join(sourceRoot, \"package.json\"),\n ) as {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n } | null;\n const deps = {\n ...(packageJson?.dependencies ?? {}),\n ...(packageJson?.devDependencies ?? {}),\n };\n const framework =\n deps.next ||\n hasAnyFile(sourceRoot, [\n \"next.config.js\",\n \"next.config.mjs\",\n \"next.config.ts\",\n ])\n ? \"nextjs\"\n : deps.react\n ? \"react\"\n : \"unknown\";\n const routes = files\n .map((file) => routeFromFile(file))\n .filter((route): route is ProjectIRLike[\"site\"][\"routes\"][number] =>\n Boolean(route),\n )\n .sort((a, b) => a.path.localeCompare(b.path));\n const codeFiles = files.filter((file) => /\\.(ts|tsx|js|jsx)$/.test(file));\n const behavior: ProjectIRLike[\"behavior\"] = {\n apiEndpoints: [],\n dataStores: [],\n llmCalls: [],\n clientState: [],\n auth: [],\n jobs: [],\n };\n\n for (const file of codeFiles) {\n const text = readSmallText(path.join(sourceRoot, file));\n if (!text) continue;\n if (\n file.startsWith(\"pages/api/\") ||\n /(^|\\/)api\\/.*\\/route\\.[tj]sx?$/.test(file)\n ) {\n behavior.apiEndpoints.push({\n id: stableId(file),\n path: apiPathFromFile(file),\n method: inferHttpMethod(text),\n filePath: file,\n recommendedRecipe: \"api-routes-to-actions\",\n });\n }\n if (/\\b(useState|useReducer|localStorage|sessionStorage)\\b/.test(text)) {\n behavior.clientState.push({\n id: stableId(`${file}:state`),\n filePath: file,\n reason:\n \"Review for important UI state that should move into application_state.\",\n });\n }\n if (\n /\\b(openai|anthropic|generateText|streamText|chat\\.completions|messages\\.create)\\b/i.test(\n text,\n )\n ) {\n behavior.llmCalls.push({\n id: stableId(`${file}:llm`),\n filePath: file,\n provider: inferLlmProvider(text),\n });\n }\n if (\n /\\b(drizzle|prisma|postgres|supabase|mysql|sqlite|mongoose)\\b/i.test(text)\n ) {\n behavior.dataStores.push({\n id: stableId(`${file}:data`),\n name: path.basename(file),\n filePath: file,\n kind: \"database\",\n });\n }\n if (/\\b(next-auth|better-auth|auth0|clerk|supabase\\.auth)\\b/i.test(text)) {\n behavior.auth.push({\n id: stableId(`${file}:auth`),\n filePath: file,\n provider: inferAuthProvider(text),\n });\n }\n if (\n /\\b(cron|schedule|queue|inngest|trigger\\.dev|setInterval)\\b/i.test(text)\n ) {\n behavior.jobs.push({\n id: stableId(`${file}:job`),\n filePath: file,\n kind: \"scheduled-or-queued\",\n });\n }\n }\n\n return {\n site: {\n framework,\n sourceRoot,\n routes,\n redirects: [],\n metadata: {\n routeCount: routes.length,\n fileCount: files.length,\n packageManager: detectPackageManager(sourceRoot),\n },\n },\n components: {\n components: files\n .filter(\n (file) =>\n /(^|\\/)(components|ui)\\//.test(file) &&\n /\\.(ts|tsx|js|jsx)$/.test(file),\n )\n .sort()\n .map((file) => ({\n id: stableId(file),\n name: componentName(file),\n filePath: file,\n usedByRoutes: [],\n })),\n designTokens: {},\n },\n content: {\n models: [],\n assets: files\n .filter((file) =>\n /\\.(png|jpe?g|webp|gif|svg|avif|pdf|mp4|webm)$/i.test(file),\n )\n .sort()\n .map((file) => ({\n id: stableId(file),\n path: file,\n type: path.extname(file).slice(1).toLowerCase() || \"unknown\",\n })),\n },\n behavior,\n };\n}\n\nfunction renderLocalAssessment(source: SourceSpec, ir: ProjectIRLike): string {\n return `# Migration Assessment\n\nSource type: \\`${source.kind}\\`\nSource: \\`${formatSourceForDisplay(source)}\\`\n${source.description ? `Description: ${source.description}\\n` : \"\"}\nTarget: \\`${DEFAULT_TARGET}\\`\n\n## Inventory\n\n- Framework: ${ir.site.framework}\n- Routes: ${ir.site.routes.length}\n- Components: ${ir.components.components.length}\n- API endpoints: ${ir.behavior.apiEndpoints.length}\n- Data stores: ${ir.behavior.dataStores.length}\n- LLM calls: ${ir.behavior.llmCalls.length}\n- Client state hotspots: ${ir.behavior.clientState.length}\n- Auth hotspots: ${ir.behavior.auth.length}\n- Jobs: ${ir.behavior.jobs.length}\n- Assets: ${ir.content.assets.length}\n\n## Routes\n\n${ir.site.routes.map((route) => `- \\`${route.path}\\` (${route.kind}) from \\`${route.filePath}\\``).join(\"\\n\") || \"- No routes detected.\"}\n\n## Agent-Native Focus Areas\n\n- Convert API routes and server mutations into actions unless they are uploads, webhooks, OAuth callbacks, or streams.\n- Move app-owned state into SQL with Drizzle and expose reads/writes through actions.\n- Delegate all AI work to the agent chat instead of calling model APIs directly from UI code.\n- Expose important navigation and selection state through application_state.\n- Keep public pages server-rendered and logged-in workflows inside the persistent app shell.\n`;\n}\n\nfunction renderNonPathAssessment(source: SourceSpec): string {\n return `# Migration Assessment\n\nSource type: \\`${source.kind}\\`\nSource: ${source.kind === \"url\" ? source.value : \"provided description\"}\n${source.description && source.kind !== \"description\" ? `Description: ${source.description}\\n` : \"\"}\n${source.kind === \"description\" ? `Description: ${source.value}\\n` : \"\"}\nTarget: \\`${DEFAULT_TARGET}\\`\n\n## Inventory\n\nNo local source path was provided, so this dossier does not include file-level IR. Use the URL or description as the intake brief, then let an Agent-Native Code or Desktop session inspect the real source before writing output.\n\n## Agent-Native Focus Areas\n\n- Identify public pages, logged-in workflows, API endpoints, data ownership, auth, jobs, and direct LLM calls.\n- Convert operations into actions and keep application data in SQL.\n- Generate output outside the original source tree.\n- Verify claims with deterministic checks or explicit human review notes.\n`;\n}\n\nfunction renderDossierAgentsMd(\n source: SourceSpec,\n templateAgents: string | null,\n planInputs: unknown | null,\n): string {\n return `# Migration Dossier Agent Instructions\n\nYou are migrating an existing application to agent-native.\n\n## Source\n\n- Type: ${source.kind}\n- Value: ${formatSourceForDisplay(source)}\n${source.description ? `- Description: ${source.description}\\n` : \"\"}\n## Hard Rules\n\n- Never write generated files inside the sourceRoot.\n- Treat source as read-only unless the user explicitly asks for source edits.\n- Put generated output in a separate directory.\n- Keep app-owned data in SQL, expose operations as actions, and route AI work through the agent chat.\n- Use 01-assessment.md and ir.json when present. If they are incomplete, update the assessment before implementation.\n- Record manual gaps and verification evidence. Do not present a migration as complete without checks.\n${planInputs ? \"- Treat `02-plan-inputs.json` as binding planning input. Do not approve output writes until the generated task list covers it.\\n\" : \"\"}\n\n## Files In This Dossier\n\n- \\`MIGRATION_PLAYBOOK.md\\` - ordered workflow for Agent-Native Code/Desktop.\n- \\`01-assessment.md\\` - initial source assessment.\n- \\`02-plan-inputs.json\\` - custom route ownership, AEM, Builder, jQuery, or verification profile when present.\n- \\`ir.json\\` - source inventory when available.\n- \\`.agents/skills/migration*/SKILL.md\\` - extra instruction packs when available from the migration goal surface.\n\n${templateAgents ? `## Migration Goal Surface Instructions\\n\\n${templateAgents.trim()}\\n` : \"\"}\n`;\n}\n\nfunction renderMigrationPlaybook(\n source: SourceSpec,\n planInputs: unknown | null,\n): string {\n return `# Migration Playbook\n\n## 1. Intake Any Input\n\nStart from the available input: a local source path, a URL, or a prose description. If this dossier has \\`ir.json\\`, use it as a first inventory. If not, inspect the real source before planning implementation.\n\nSource: ${formatSourceForDisplay(source)}\n\n## 2. Build The Migration Map\n\nClassify routes, public pages, logged-in app surfaces, API endpoints, data stores, auth, jobs, client state, assets, and direct LLM calls. Update \\`01-assessment.md\\` when you learn more.\n\n${planInputs ? \"Use `02-plan-inputs.json` as the customer-specific migration profile. Apply its route ownership, AEM evidence, Builder registration, headless, jQuery, and verification constraints before approving output writes.\\n\" : \"\"}\n\n## 3. Apply Agent-Native Rules\n\n- Actions are the single source of truth for operations.\n- Data lives in SQL through Drizzle.\n- AI work goes through the agent chat.\n- Important UI state is mirrored through \\`application_state\\`.\n- Public/SEO pages server-render; logged-in workflows use the persistent app shell.\n- Ownable resources use sharing and access helpers.\n\n## 4. Work In Samples\n\nMigrate one representative route or workflow first. Verify it, tune the pattern, then sweep similar surfaces. Keep generated output outside the original source tree.\n\n## 5. Verify\n\nRun typecheck/build plus route, action, and data checks that fit the migrated app. Capture unresolved gaps in a report before handing off.\n\n## 6. Use With Agent-Native Code Or Desktop\n\nPoint Codex, Claude Code, another code agent, or Agent-Native Desktop at this dossier directory. Ask it to follow \\`AGENTS.md\\`, then implement the plan in a separate output project.\n`;\n}\n\nfunction copyMigrationSkills(\n templateDir: string | undefined,\n dossierRoot: string,\n): string[] {\n if (!templateDir) return [];\n const skillsRoot = path.join(templateDir, \".agents\", \"skills\");\n if (!fs.existsSync(skillsRoot)) return [];\n const copied: string[] = [];\n for (const entry of fs.readdirSync(skillsRoot, { withFileTypes: true })) {\n if (!entry.isDirectory() || !entry.name.startsWith(\"migration\")) continue;\n const src = path.join(skillsRoot, entry.name, \"SKILL.md\");\n if (!fs.existsSync(src)) continue;\n const relative = path.join(\".agents\", \"skills\", entry.name, \"SKILL.md\");\n const dest = path.join(dossierRoot, relative);\n fs.mkdirSync(path.dirname(dest), { recursive: true });\n fs.copyFileSync(src, dest);\n copied.push(relative);\n }\n return copied;\n}\n\nfunction findMigrationTemplateDir(): string | undefined {\n const starts = [__dirname, process.cwd()];\n for (const start of starts) {\n let dir = path.resolve(start);\n for (let i = 0; i < 12; i++) {\n for (const candidate of [\n path.join(dir, \"templates\", \"migration\"),\n path.join(dir, \"src\", \"templates\", \"migration\"),\n ]) {\n if (fs.existsSync(path.join(candidate, \"AGENTS.md\"))) {\n return candidate;\n }\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n }\n return undefined;\n}\n\nfunction resolveWorkbenchDir(opts: MigrateCliOptions): string {\n if (opts.workbench) return path.resolve(process.cwd(), opts.workbench);\n return resolveScaffoldedAppDir(\n process.cwd(),\n opts.appName ?? DEFAULT_APP_NAME,\n );\n}\n\nfunction resolveScaffoldedAppDir(cwd: string, appName: string): string {\n const workspaceAppDir = path.join(cwd, \"apps\", appName);\n if (fs.existsSync(workspaceAppDir)) return workspaceAppDir;\n return path.join(cwd, appName);\n}\n\nfunction sourceSeedPayload(source: SourceSpec): Record<string, string> {\n return {\n kind: source.kind,\n value: source.value,\n ...(source.sourceRoot ? { sourceRoot: source.sourceRoot } : {}),\n ...(source.description ? { description: source.description } : {}),\n };\n}\n\nfunction defaultRunName(source: SourceSpec): string {\n if (source.sourceRoot) {\n return `Migration from ${path.basename(source.sourceRoot)}`;\n }\n if (source.kind === \"url\") {\n return `Migration from ${source.value}`;\n }\n return \"Migration from described source\";\n}\n\nfunction stringMetadata(\n run: CodeAgentRunRecord,\n key: string,\n): string | undefined {\n const value = run.metadata?.[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction formatSeedSource(\n seed: {\n sourceKind?: string;\n sourceRoot?: string;\n sourceUrl?: string;\n sourceDescription?: string;\n } | null,\n): string {\n if (!seed) return \"not set\";\n if (seed.sourceRoot) return seed.sourceRoot;\n if (seed.sourceUrl) return seed.sourceUrl;\n if (seed.sourceDescription) return seed.sourceDescription;\n return seed.sourceKind ?? \"not set\";\n}\n\nfunction readArtifactRuns(\n appDir: string,\n): Array<{ id: string; phase: string }> {\n const runsRoot = path.join(appDir, \"data\", \"migration-runs\");\n if (!fs.existsSync(runsRoot)) return [];\n return fs\n .readdirSync(runsRoot, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .map((entry) => {\n const run = readJsonIfExists(\n path.join(runsRoot, entry.name, \"run.json\"),\n ) as { id?: string; phase?: string; updatedAt?: string } | null;\n return {\n id: run?.id ?? entry.name,\n phase: run?.phase ?? \"unknown\",\n updatedAt: run?.updatedAt ?? \"\",\n };\n })\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n}\n\nfunction credentialStatusLines(): string[] {\n const configured = MODEL_CREDENTIAL_ENV_NAMES.filter((key) =>\n Boolean(process.env[key]),\n );\n if (configured.length > 0) {\n return [\n `Headless credentials: detected ${configured.join(\", \")} in this shell.`,\n \"Secret values were not read or stored.\",\n ];\n }\n return [\n `Headless credentials: none of ${MODEL_CREDENTIAL_ENV_NAMES.join(\", \")} are set in this shell.`,\n \"Set credentials in the Workbench app env or use Desktop/Agent-Native Code credentials; the migrate CLI will not store them.\",\n ];\n}\n\nfunction walkSourceFiles(root: string): string[] {\n const out: string[] = [];\n const ignored = new Set([\n \".git\",\n \".next\",\n \".turbo\",\n \"node_modules\",\n \"dist\",\n \"build\",\n \".output\",\n \"coverage\",\n ]);\n const visit = (dir: string) => {\n if (out.length > 5000) return;\n let entries: fs.Dirent[];\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n if (ignored.has(entry.name)) continue;\n const absolute = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n visit(absolute);\n } else if (entry.isFile()) {\n out.push(toPosix(path.relative(root, absolute)));\n }\n }\n };\n visit(root);\n return out.sort();\n}\n\nfunction routeFromFile(\n relativePath: string,\n): ProjectIRLike[\"site\"][\"routes\"][number] | null {\n const normalized = toPosix(relativePath);\n const router = normalized.startsWith(\"app/\") ? \"next-app\" : \"next-pages\";\n const isPageRoute =\n normalized.startsWith(\"pages/\") &&\n /\\.(ts|tsx|js|jsx|md|mdx)$/.test(normalized) &&\n !normalized.startsWith(\"pages/_app.\") &&\n !normalized.startsWith(\"pages/_document.\");\n const isAppRoute =\n normalized.startsWith(\"app/\") &&\n /\\/(page|route)\\.(ts|tsx|js|jsx|md|mdx)$/.test(normalized);\n if (!isPageRoute && !isAppRoute) return null;\n\n const isApi =\n normalized.startsWith(\"pages/api/\") ||\n /(^|\\/)api\\/.*\\/route\\.[tj]sx?$/.test(normalized) ||\n normalized.endsWith(\"/route.ts\") ||\n normalized.endsWith(\"/route.tsx\") ||\n normalized.endsWith(\"/route.js\") ||\n normalized.endsWith(\"/route.jsx\");\n\n let routePath = normalized;\n if (router === \"next-app\") {\n routePath = routePath\n .replace(/^app\\//, \"\")\n .replace(/(^|\\/)(page|route)\\.(ts|tsx|js|jsx|md|mdx)$/, \"\");\n } else {\n routePath = routePath\n .replace(/^pages\\//, \"\")\n .replace(/\\.(ts|tsx|js|jsx|md|mdx)$/, \"\");\n }\n\n routePath = routePath\n .replace(/\\/index$/, \"\")\n .replace(/^index$/, \"\")\n .replace(/^\\(.*?\\)\\//, \"\")\n .replace(/\\[(\\.\\.\\.)?([^\\]]+)\\]/g, (_, dots: string, name: string) =>\n dots ? `*${name}` : `:${name}`,\n );\n const publicPath = routePath ? `/${routePath}` : \"/\";\n const pathValue = publicPath === \"/api\" && isApi ? \"/api/*\" : publicPath;\n const kind = isApi\n ? \"api\"\n : pathValue === \"/\"\n ? \"landing\"\n : pathValue.includes(\"docs\")\n ? \"docs\"\n : pathValue.includes(\"pricing\") || pathValue.includes(\"blog\")\n ? \"marketing\"\n : \"app\";\n return {\n id: stableId(normalized),\n path: pathValue,\n filePath: normalized,\n router,\n kind,\n dynamic: pathValue.includes(\":\") || pathValue.includes(\"*\"),\n public: kind !== \"app\" && kind !== \"api\",\n notes: isApi\n ? [\n \"Convert to an action unless it uploads, streams, handles OAuth, or receives webhooks.\",\n ]\n : [],\n };\n}\n\nfunction apiPathFromFile(file: string): string {\n let value = file\n .replace(/^pages\\/api\\//, \"/api/\")\n .replace(/^app\\//, \"/\")\n .replace(/\\/route\\.[tj]sx?$/, \"\")\n .replace(/\\.[tj]sx?$/, \"\");\n value = value\n .replace(/\\/index$/, \"\")\n .replace(/\\[(\\.\\.\\.)?([^\\]]+)\\]/g, (_, dots: string, name: string) =>\n dots ? `*${name}` : `:${name}`,\n );\n return value || \"/api\";\n}\n\nfunction inferHttpMethod(text: string): string {\n const exported = text.match(\n /export\\s+(?:async\\s+)?function\\s+(GET|POST|PUT|PATCH|DELETE)/,\n );\n if (exported) return exported[1];\n const method = text.match(\n /method\\s*[:=]\\s*[\"'](GET|POST|PUT|PATCH|DELETE)[\"']/i,\n );\n return method?.[1]?.toUpperCase() ?? \"GET\";\n}\n\nfunction inferLlmProvider(text: string): string {\n if (/anthropic/i.test(text)) return \"anthropic\";\n if (/openai/i.test(text)) return \"openai\";\n return \"unknown\";\n}\n\nfunction inferAuthProvider(text: string): string {\n if (/better-auth/i.test(text)) return \"better-auth\";\n if (/next-auth/i.test(text)) return \"next-auth\";\n if (/clerk/i.test(text)) return \"clerk\";\n if (/auth0/i.test(text)) return \"auth0\";\n if (/supabase\\.auth/i.test(text)) return \"supabase\";\n return \"unknown\";\n}\n\nfunction componentName(file: string): string {\n const base = path.basename(file).replace(/\\.(ts|tsx|js|jsx)$/, \"\");\n return base\n .split(/[-_]/g)\n .filter(Boolean)\n .map((part) => part[0]?.toUpperCase() + part.slice(1))\n .join(\"\");\n}\n\nfunction detectPackageManager(sourceRoot: string): string {\n if (fs.existsSync(path.join(sourceRoot, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(sourceRoot, \"yarn.lock\"))) return \"yarn\";\n if (fs.existsSync(path.join(sourceRoot, \"package-lock.json\"))) return \"npm\";\n return \"unknown\";\n}\n\nfunction readSmallText(filePath: string): string | null {\n try {\n const stat = fs.statSync(filePath);\n if (stat.size > 256_000) return null;\n return fs.readFileSync(filePath, \"utf-8\");\n } catch {\n return null;\n }\n}\n\nfunction readJsonIfExists(filePath: string): unknown | null {\n try {\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch {\n return null;\n }\n}\n\nfunction readTextIfExists(filePath: string | undefined): string | null {\n if (!filePath) return null;\n try {\n return fs.readFileSync(filePath, \"utf-8\");\n } catch {\n return null;\n }\n}\n\nfunction hasAnyFile(root: string, files: string[]): boolean {\n return files.some((file) => fs.existsSync(path.join(root, file)));\n}\n\nfunction stableId(value: string): string {\n return crypto.createHash(\"sha1\").update(value).digest(\"hex\").slice(0, 12);\n}\n\nfunction isProbablyUrl(value: string): boolean {\n return /^[a-z][a-z0-9+.-]*:\\/\\//i.test(value);\n}\n\nfunction formatSourceForDisplay(source: SourceSpec): string {\n if (source.sourceRoot) return source.sourceRoot;\n return source.value;\n}\n\nfunction formatSourceForCommand(source: SourceSpec): string {\n if (source.kind === \"description\") {\n return `--describe ${shellQuote(source.value)}`;\n }\n const base = shellQuote(source.value);\n if (source.description) {\n return `${base} --describe ${shellQuote(source.description)}`;\n }\n return base;\n}\n\nfunction shellQuote(value: string): string {\n if (/^[A-Za-z0-9_./:@%+=,-]+$/.test(value)) return value;\n return JSON.stringify(value);\n}\n\nfunction toPosix(value: string): string {\n return value.split(path.sep).join(\"/\");\n}\n"]}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from \"crypto\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport {\n appendCodeAgentTranscriptEvent,\n codeAgentRunArtifactsDir,\n createCodeAgentRunRecord,\n getLastCodeAgentRunRecord,\n listCodeAgentRunRecords,\n writeCodeAgentRunRecord,\n type CodeAgentRunRecord,\n} from \"./code-agent-runs.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst DEFAULT_APP_NAME = \"migration\";\nconst DEFAULT_OUTPUT = \"../migrated-app\";\nconst DEFAULT_TARGET = \"agent-native\";\nconst DEFAULT_DOSSIER_DIR = \"agent-native-migration-dossier\";\nconst MIGRATION_DEV_PORT = 8101;\nconst MIGRATE_SUBCOMMANDS = new Set([\"resume\", \"status\", \"stop\", \"ui\"]);\nconst MIGRATION_SESSION_COMMAND = \"agent-native code /migrate\";\nconst MODEL_CREDENTIAL_ENV_NAMES = [\n \"ANTHROPIC_API_KEY\",\n \"OPENAI_API_KEY\",\n \"GOOGLE_GENERATIVE_AI_API_KEY\",\n \"GROQ_API_KEY\",\n \"MISTRAL_API_KEY\",\n \"COHERE_API_KEY\",\n \"BUILDER_PRIVATE_KEY\",\n];\n\ntype MigrateSubcommand = \"resume\" | \"status\" | \"stop\" | \"ui\";\ntype SourceKind = \"path\" | \"url\" | \"description\";\n\nexport interface MigrateCliOptions {\n subcommand?: MigrateSubcommand;\n source?: string;\n sourcePath?: string;\n sourceUrl?: string;\n sourceDescription?: string;\n workbench?: string;\n output?: string;\n appName?: string;\n target?: string;\n planOnly?: boolean;\n planFile?: string;\n emit?: boolean;\n emitDir?: string;\n appSurface?: boolean;\n last?: boolean;\n help?: boolean;\n}\n\nexport interface SourceSpec {\n kind: SourceKind;\n value: string;\n sourceRoot?: string;\n description?: string;\n}\n\nexport interface EmitDossierResult {\n dossierRoot: string;\n files: string[];\n source: SourceSpec;\n usedMigrateHelpers: boolean;\n}\n\ninterface ProjectIRLike {\n site: {\n framework: \"nextjs\" | \"react\" | \"aem\" | \"unknown\";\n sourceRoot: string;\n routes: Array<{\n id: string;\n path: string;\n filePath: string;\n router: \"next-pages\" | \"next-app\" | \"unknown\";\n kind: \"marketing\" | \"docs\" | \"landing\" | \"app\" | \"api\" | \"unknown\";\n dynamic: boolean;\n public: boolean;\n notes?: string[];\n }>;\n redirects: Array<Record<string, unknown>>;\n metadata: Record<string, unknown>;\n };\n components: {\n components: Array<{\n id: string;\n name: string;\n filePath: string;\n usedByRoutes: string[];\n notes?: string[];\n }>;\n designTokens: Record<string, unknown>;\n };\n content: {\n models: Array<Record<string, unknown>>;\n assets: Array<{\n id: string;\n path: string;\n type: string;\n metadata?: Record<string, unknown>;\n }>;\n };\n behavior: {\n apiEndpoints: Array<{\n id: string;\n path: string;\n method: string;\n filePath: string;\n recommendedRecipe: string;\n }>;\n dataStores: Array<{\n id: string;\n name: string;\n filePath: string;\n kind: \"database\" | \"api\" | \"local-state\" | \"unknown\";\n }>;\n llmCalls: Array<{ id: string; filePath: string; provider: string }>;\n clientState: Array<{ id: string; filePath: string; reason: string }>;\n auth: Array<{ id: string; filePath: string; provider: string }>;\n jobs: Array<{ id: string; filePath: string; kind: string }>;\n };\n}\n\nexport function parseMigrateArgs(argv: string[]): MigrateCliOptions {\n const opts: MigrateCliOptions = {};\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n\n if (i === 0 && MIGRATE_SUBCOMMANDS.has(arg)) {\n opts.subcommand = arg as MigrateSubcommand;\n continue;\n }\n\n if (arg === \"--help\" || arg === \"-h\") {\n opts.help = true;\n } else if (arg === \"--out\" && argv[i + 1]) {\n opts.output = argv[++i];\n } else if (arg.startsWith(\"--out=\")) {\n opts.output = arg.slice(\"--out=\".length);\n } else if (arg === \"--name\" && argv[i + 1]) {\n opts.appName = argv[++i];\n } else if (arg.startsWith(\"--name=\")) {\n opts.appName = arg.slice(\"--name=\".length);\n } else if (arg === \"--target\" && argv[i + 1]) {\n opts.target = argv[++i];\n } else if (arg.startsWith(\"--target=\")) {\n opts.target = arg.slice(\"--target=\".length);\n } else if (arg === \"--source\" && argv[i + 1]) {\n setSourceOption(opts, argv[++i]);\n } else if (arg.startsWith(\"--source=\")) {\n setSourceOption(opts, arg.slice(\"--source=\".length));\n } else if (arg === \"--path\" && argv[i + 1]) {\n opts.sourcePath = argv[++i];\n } else if (arg.startsWith(\"--path=\")) {\n opts.sourcePath = arg.slice(\"--path=\".length);\n } else if (arg === \"--url\" && argv[i + 1]) {\n opts.sourceUrl = argv[++i];\n } else if (arg.startsWith(\"--url=\")) {\n opts.sourceUrl = arg.slice(\"--url=\".length);\n } else if (\n (arg === \"--description\" || arg === \"--describe\") &&\n argv[i + 1]\n ) {\n opts.sourceDescription = argv[++i];\n } else if (arg.startsWith(\"--description=\")) {\n opts.sourceDescription = arg.slice(\"--description=\".length);\n } else if (arg.startsWith(\"--describe=\")) {\n opts.sourceDescription = arg.slice(\"--describe=\".length);\n } else if (arg === \"--emit\") {\n opts.emit = true;\n if (argv[i + 1] && !argv[i + 1].startsWith(\"-\")) {\n opts.emitDir = argv[++i];\n }\n } else if (arg.startsWith(\"--emit=\")) {\n opts.emit = true;\n opts.emitDir = arg.slice(\"--emit=\".length);\n } else if (arg === \"--emit-dir\" && argv[i + 1]) {\n opts.emit = true;\n opts.emitDir = argv[++i];\n } else if (arg.startsWith(\"--emit-dir=\")) {\n opts.emit = true;\n opts.emitDir = arg.slice(\"--emit-dir=\".length);\n } else if (arg === \"--app-surface\" || arg === \"--workbench\") {\n opts.appSurface = true;\n } else if (arg === \"--plan-only\") {\n opts.planOnly = true;\n } else if (arg === \"--plan-file\" && argv[i + 1]) {\n opts.planFile = argv[++i];\n } else if (arg.startsWith(\"--plan-file=\")) {\n opts.planFile = arg.slice(\"--plan-file=\".length);\n } else if (arg === \"--last\") {\n opts.last = true;\n } else if (!arg.startsWith(\"-\")) {\n if (\n opts.subcommand &&\n [\"status\", \"stop\", \"ui\"].includes(opts.subcommand) &&\n !opts.workbench\n ) {\n opts.workbench = arg;\n } else if (!opts.source) {\n opts.source = arg;\n } else if (!opts.workbench) {\n opts.workbench = arg;\n }\n }\n }\n return opts;\n}\n\nexport async function runMigrate(argv: string[]): Promise<void> {\n const opts = parseMigrateArgs(argv);\n if (opts.help) {\n console.log(migrateUsage());\n return;\n }\n\n if (opts.subcommand === \"status\") {\n printMigrationStatus(opts);\n return;\n }\n if (opts.subcommand === \"stop\") {\n printMigrationStop(opts);\n return;\n }\n if (opts.subcommand === \"ui\") {\n printMigrationUi(opts);\n return;\n }\n if (opts.emit) {\n try {\n const result = await emitOwnAgentDossier(opts);\n console.log(renderEmitResult(result));\n } catch (error) {\n if (isExpectedMigrationCliError(error)) {\n console.error(`\\n${migrationCliErrorMessage(error)}\\n`);\n process.exit(1);\n }\n throw error;\n }\n return;\n }\n if (opts.subcommand === \"resume\" && !hasAnySource(opts)) {\n printMigrationResume(opts);\n return;\n }\n\n if (opts.appSurface) {\n await scaffoldOrResumeWorkbench();\n return;\n }\n\n try {\n await createMigrationCodeAgentSession(opts);\n } catch (error) {\n if (isExpectedMigrationCliError(error)) {\n console.error(`\\n${migrationCliErrorMessage(error)}\\n`);\n process.exit(1);\n }\n throw error;\n }\n}\n\nexport async function emitOwnAgentDossier(\n opts: MigrateCliOptions,\n cwd = process.cwd(),\n): Promise<EmitDossierResult> {\n const source = resolveSourceSpec(opts, cwd);\n if (!source) {\n throw new Error(\n \"Usage: agent-native migrate <source-path-or-url> --emit [dossier-dir]\",\n );\n }\n\n let dossierRoot = resolveDossierRoot(opts, source, cwd);\n const explicitEmitDir = Boolean(opts.emitDir);\n if (source.sourceRoot && isInsideOrSame(source.sourceRoot, dossierRoot)) {\n if (explicitEmitDir) {\n throw new Error(\n `Refusing to emit dossier inside sourceRoot (${source.sourceRoot}). Choose an --emit path outside the source project.`,\n );\n }\n dossierRoot = defaultDossierRoot(source, cwd);\n }\n if (source.sourceRoot) {\n assertOutsideSourceRoot(source.sourceRoot, dossierRoot, \"dossier\");\n }\n\n fs.mkdirSync(dossierRoot, { recursive: true });\n const planInputs = await readMigrationPlanInputs(opts, cwd);\n const written = new Set<string>();\n const write = (relativePath: string, content: string) => {\n const filePath = path.join(dossierRoot, relativePath);\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n fs.writeFileSync(\n filePath,\n content.endsWith(\"\\n\") ? content : `${content}\\n`,\n );\n written.add(relativePath);\n };\n\n const templateDir = findMigrationTemplateDir();\n const templateAgents = readTextIfExists(\n templateDir ? path.join(templateDir, \"AGENTS.md\") : undefined,\n );\n write(\"AGENTS.md\", renderDossierAgentsMd(source, templateAgents, planInputs));\n\n for (const copied of copyMigrationSkills(templateDir, dossierRoot)) {\n written.add(copied);\n }\n\n const helperResult = await writeAssessmentWithMigrateHelpers({\n source,\n dossierRoot,\n target: opts.target ?? DEFAULT_TARGET,\n write,\n });\n const usedMigrateHelpers = helperResult;\n if (!helperResult) {\n const fallback = buildFallbackAssessment(source);\n write(\"01-assessment.md\", fallback.assessment);\n if (fallback.ir) {\n write(\"ir.json\", `${JSON.stringify(fallback.ir, null, 2)}\\n`);\n }\n }\n\n if (planInputs) {\n write(\"02-plan-inputs.json\", `${JSON.stringify(planInputs, null, 2)}\\n`);\n }\n\n write(\"MIGRATION_PLAYBOOK.md\", renderMigrationPlaybook(source, planInputs));\n write(\n \"source.json\",\n `${JSON.stringify(\n {\n source,\n target: opts.target ?? DEFAULT_TARGET,\n planInputs,\n createdAt: new Date().toISOString(),\n usedMigrateHelpers,\n },\n null,\n 2,\n )}\\n`,\n );\n\n return {\n dossierRoot,\n files: [...written].sort(),\n source,\n usedMigrateHelpers,\n };\n}\n\nexport function isExpectedMigrationCliError(error: unknown): boolean {\n const message = migrationCliErrorMessage(error);\n return (\n message.startsWith(\"Usage: agent-native migrate\") ||\n message.startsWith(\"Refusing to emit dossier inside sourceRoot\") ||\n message.startsWith(\"Refusing to write \") ||\n message.startsWith(\"Could not read migration plan file \")\n );\n}\n\nfunction migrationCliErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nasync function scaffoldOrResumeWorkbench(): Promise<void> {\n console.error(\n [\n \"\",\n \"The legacy migration app surface has been removed.\",\n \"Use `agent-native code /migrate <source>` for the supported migration workflow.\",\n \"Use `--emit [dir]` when you want a portable dossier for another coding agent.\",\n \"\",\n ].join(\"\\n\"),\n );\n process.exit(1);\n}\n\nasync function createMigrationCodeAgentSession(\n opts: MigrateCliOptions,\n): Promise<void> {\n const cwd = process.cwd();\n const source = resolveSourceSpec(opts, cwd);\n if (!source) {\n console.error(migrateUsage());\n process.exit(1);\n }\n\n const outputRoot = path.resolve(cwd, opts.output ?? DEFAULT_OUTPUT);\n const planInputs = await readMigrationPlanInputs(opts, cwd);\n if (source.sourceRoot) {\n assertOutsideSourceRoot(source.sourceRoot, outputRoot, \"outputRoot\");\n }\n\n const run = createCodeAgentRunRecord({\n goalId: \"migrate\",\n title: defaultRunName(source),\n subtitle: formatSourceForDisplay(source),\n status: \"needs-approval\",\n phase: \"intake\",\n needsApproval: true,\n progress: {\n label: \"Intake\",\n completed: 0,\n total: 1,\n percent: 0,\n },\n cwd,\n metadata: {\n source,\n sourceRoot: source.sourceRoot,\n outputRoot,\n target: opts.target ?? DEFAULT_TARGET,\n planInputs,\n },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"user\",\n message: `Migrate ${formatSourceForDisplay(source)} to ${opts.target ?? DEFAULT_TARGET}.`,\n metadata: {\n source,\n outputRoot,\n target: opts.target ?? DEFAULT_TARGET,\n planInputs,\n },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"status\",\n message: \"Preparing migration dossier.\",\n metadata: { status: \"needs-approval\", phase: \"intake\" },\n });\n const artifactRoot = codeAgentRunArtifactsDir(run.id);\n const dossierRoot = path.join(artifactRoot, \"migration-dossier\");\n const dossier = await emitOwnAgentDossier(\n {\n ...opts,\n emit: true,\n emitDir: dossierRoot,\n target: opts.target ?? DEFAULT_TARGET,\n },\n cwd,\n );\n\n const updated: CodeAgentRunRecord = {\n ...run,\n progress: {\n label: \"Dossier ready; waiting for approval\",\n completed: 1,\n total: 2,\n percent: 50,\n },\n artifactRoot,\n details: [\n { label: \"Source\", value: formatSourceForDisplay(source) },\n { label: \"Output\", value: outputRoot },\n { label: \"Dossier\", value: dossierRoot },\n { label: \"Resume\", value: \"agent-native code resume --last\" },\n { label: \"Attach\", value: \"agent-native code attach --last\" },\n ],\n metadata: {\n ...(run.metadata ?? {}),\n dossierRoot,\n dossierFiles: dossier.files,\n artifactFiles: dossier.files.map((file) => path.join(dossierRoot, file)),\n planInputs,\n usedMigrateHelpers: dossier.usedMigrateHelpers,\n resumeCommand: \"agent-native code resume --last\",\n attachCommand: \"agent-native code attach --last\",\n statusCommand: \"agent-native code status --last\",\n preferredCommand: MIGRATION_SESSION_COMMAND,\n },\n updatedAt: new Date().toISOString(),\n };\n writeCodeAgentRunRecord(updated);\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"artifact\",\n message: \"Migration dossier created.\",\n metadata: {\n path: dossierRoot,\n files: dossier.files,\n usedMigrateHelpers: dossier.usedMigrateHelpers,\n },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"note\",\n message:\n \"Use the dossier with Codex, Claude Code, Cursor, or another coding agent; no migration agent process has been started by the CLI.\",\n metadata: { source: \"migration-dossier\" },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"status\",\n message:\n \"Migration dossier is ready. Resume the /migrate session from Agent-Native Code when you are ready to approve or continue.\",\n metadata: { status: \"needs-approval\", phase: \"intake\" },\n });\n\n console.log(renderCodeAgentMigrationSession(updated, dossier));\n}\n\nfunction printMigrationStatus(opts: MigrateCliOptions): void {\n const last = getLastCodeAgentRunRecord(\"migrate\");\n const runs = listCodeAgentRunRecords(\"migrate\");\n if (last || !opts.appSurface) {\n console.log(renderCodeAgentMigrationStatus(runs));\n return;\n }\n\n const appDir = resolveWorkbenchDir(opts);\n const seedPath = path.join(appDir, \"data\", \"migration-source.json\");\n const seed = readJsonIfExists(seedPath) as {\n sourceKind?: string;\n sourceRoot?: string;\n sourceUrl?: string;\n sourceDescription?: string;\n outputRoot?: string;\n target?: string;\n } | null;\n const artifactRuns = readArtifactRuns(appDir);\n\n if (!fs.existsSync(appDir)) {\n console.error(`No Migration Workbench found at ${appDir}.`);\n console.error(\n `Create one with: npx @agent-native/core@latest code /migrate <source>`,\n );\n console.error(\n `The direct migrate command is a shortcut into that same Agent-Native Code slash command.`,\n );\n process.exit(1);\n }\n\n console.log(\n [\n \"\",\n \"Migration Workbench status\",\n \"\",\n ` App: ${appDir}`,\n ` Seed: ${fs.existsSync(seedPath) ? seedPath : \"not found\"}`,\n ` Source: ${formatSeedSource(seed)}`,\n ` Output: ${seed?.outputRoot ?? \"not set\"}`,\n ` Target: ${seed?.target ?? DEFAULT_TARGET}`,\n ` Artifacts: ${artifactRuns.length} run${artifactRuns.length === 1 ? \"\" : \"s\"}`,\n ...artifactRuns\n .slice(0, 5)\n .map((run) => ` - ${run.id} (${run.phase})`),\n artifactRuns.length > 5 ? ` - ${artifactRuns.length - 5} more...` : \"\",\n \"\",\n ...credentialStatusLines(),\n ]\n .filter(Boolean)\n .join(\"\\n\"),\n );\n}\n\nfunction printMigrationStop(_opts: MigrateCliOptions): void {\n console.log(\n [\n \"\",\n \"Agent-Native Code /migrate stop\",\n \"\",\n \"The migrate CLI creates resumable session records and artifacts; it does not daemonize a background process yet.\",\n \"Stop the terminal, Desktop run, or external coding agent that is actively working on the session.\",\n ].join(\"\\n\"),\n );\n}\n\nfunction printMigrationUi(opts: MigrateCliOptions): void {\n const last = getLastCodeAgentRunRecord(\"migrate\");\n if (last && !opts.appSurface) {\n console.log(renderCodeAgentMigrationUi(last));\n return;\n }\n\n const appDir = resolveWorkbenchDir(opts);\n console.log(\n [\n \"\",\n \"Migration Workbench UI\",\n \"\",\n ` App: ${appDir}`,\n ` URL: http://localhost:${MIGRATION_DEV_PORT}/`,\n \"\",\n \"Start it with:\",\n ` cd ${shellQuote(path.relative(process.cwd(), appDir) || \".\")}`,\n \" pnpm install\",\n \" pnpm dev\",\n \"\",\n \"Deep-link shape:\",\n ` http://localhost:${MIGRATION_DEV_PORT}/`,\n \" Pick a run in the Workbench, or ask the app agent to navigate by run ID.\",\n ].join(\"\\n\"),\n );\n}\n\nfunction printMigrationResume(opts: MigrateCliOptions): void {\n const last = getLastCodeAgentRunRecord(\"migrate\");\n if (last && !opts.appSurface) {\n console.log(renderCodeAgentMigrationResume(last));\n return;\n }\n\n const appDir = resolveWorkbenchDir(opts);\n const seedPath = path.join(appDir, \"data\", \"migration-source.json\");\n const seed = readJsonIfExists(seedPath);\n if (!fs.existsSync(appDir) || !seed) {\n console.error(\n \"No resumable Migration Workbench seed found. Run `npx @agent-native/core@latest code /migrate <source>` first.\",\n );\n process.exit(1);\n }\n console.log(\n [\n \"\",\n \"Migration Workbench resume\",\n \"\",\n ` App: ${appDir}`,\n ` Seed: ${seedPath}`,\n \"\",\n \"Continue with:\",\n ` cd ${shellQuote(path.relative(process.cwd(), appDir) || \".\")}`,\n \" pnpm dev\",\n \"\",\n `Workbench URL: http://localhost:${MIGRATION_DEV_PORT}/`,\n ].join(\"\\n\"),\n );\n}\n\nfunction renderWorkbenchReady(args: {\n appDir: string;\n existing: boolean;\n outputRoot: string;\n source: SourceSpec;\n}): string {\n const rel = path.relative(process.cwd(), args.appDir) || \".\";\n const sourceCommand = formatSourceForCommand(args.source);\n return [\n \"\",\n args.existing\n ? \"Migration Workbench is ready (reused existing app).\"\n : \"Migration Workbench is ready.\",\n \"\",\n ` Source: ${formatSourceForDisplay(args.source)}`,\n ` Output: ${args.outputRoot}`,\n ` App: ${args.appDir}`,\n \"\",\n \"Run it:\",\n ` cd ${shellQuote(rel)}`,\n \" pnpm install\",\n \" pnpm dev\",\n \"\",\n \"npx-friendly commands:\",\n ` npx @agent-native/core@latest code /migrate ${sourceCommand} --out ${shellQuote(path.relative(process.cwd(), args.outputRoot) || \".\")}`,\n ` npx @agent-native/core@latest code /migrate ${sourceCommand} --emit ${shellQuote(defaultDossierDirForDisplay(args.source))}`,\n \"\",\n \"Workbench URL:\",\n ` http://localhost:${MIGRATION_DEV_PORT}/`,\n \" If Vite chooses another port, use the URL printed by `pnpm dev`.\",\n \"\",\n \"Deep-link shape:\",\n ` http://localhost:${MIGRATION_DEV_PORT}/`,\n \" Select the run inside the Workbench, or ask the app agent to open a run by ID.\",\n \"\",\n ...credentialStatusLines(),\n \"\",\n \"The Workbench seed is written to data/migration-source.json. It stores paths and source metadata only, never secret values.\",\n ].join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationSession(\n run: CodeAgentRunRecord,\n dossier: EmitDossierResult,\n): string {\n return [\n \"\",\n \"Agent-Native Code /migrate session created.\",\n \"\",\n ` Run: ${run.id}`,\n \" Goal: /migrate\",\n ` Source: ${run.subtitle ?? \"not set\"}`,\n ` Output: ${stringMetadata(run, \"outputRoot\") ?? \"not set\"}`,\n ` Dossier: ${stringMetadata(run, \"dossierRoot\") ?? dossier.dossierRoot}`,\n ` Engine: ${dossier.usedMigrateHelpers ? \"@agent-native/migrate helpers\" : \"safe local fallback\"}`,\n \"\",\n \"Artifacts:\",\n ...dossier.files\n .filter((file) =>\n [\n \"AGENTS.md\",\n \"MIGRATION_PLAYBOOK.md\",\n \"01-assessment.md\",\n \"ir.json\",\n \"source.json\",\n ].includes(file),\n )\n .map((file) => ` - ${path.join(dossier.dossierRoot, file)}`),\n \"\",\n \"Continue:\",\n \" agent-native code attach --last\",\n \" agent-native code resume --last\",\n \" agent-native code logs --last\",\n \" agent-native code status --last\",\n \"\",\n \"Desktop:\",\n \" Open Agent-Native Code in the left sidebar. This run appears as a /migrate session.\",\n \"\",\n \"Use another agent:\",\n ` Point Codex, Claude Code, Cursor, or another coding agent at ${shellQuote(dossier.dossierRoot)} and ask it to follow AGENTS.md plus MIGRATION_PLAYBOOK.md.`,\n \"\",\n \"Default surface:\",\n \" Migration stays in Agent-Native Code. No hidden app/template was scaffolded.\",\n \" The legacy --app-surface detail app has been removed.\",\n ].join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationStatus(runs: CodeAgentRunRecord[]): string {\n return [\n \"\",\n \"Agent-Native Code /migrate status\",\n \"\",\n runs.length === 0\n ? \" No /migrate sessions found. Start one with `agent-native code /migrate <source>`.\"\n : ` ${runs.length} session${runs.length === 1 ? \"\" : \"s\"} found.`,\n ...runs.slice(0, 8).map((run) => {\n const output = stringMetadata(run, \"outputRoot\");\n const dossier = stringMetadata(run, \"dossierRoot\");\n const progress = run.progress?.label\n ? ` Progress: ${run.progress.label} (${run.progress.completed}/${run.progress.total})`\n : \"\";\n return [\n ` - ${run.id}`,\n ` Status: ${run.status}${run.phase ? ` (${run.phase})` : \"\"}`,\n progress,\n ` Source: ${run.subtitle ?? \"not set\"}`,\n output ? ` Output: ${output}` : \"\",\n dossier ? ` Dossier: ${dossier}` : \"\",\n ` Resume: agent-native code resume ${run.id}`,\n ]\n .filter(Boolean)\n .join(\"\\n\");\n }),\n runs.length > 8 ? ` - ${runs.length - 8} more...` : \"\",\n \"\",\n \"Shortcuts:\",\n \" agent-native migrate status --last shows the same Agent-Native Code sessions.\",\n \" The legacy --app-surface detail app has been removed.\",\n ]\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationResume(run: CodeAgentRunRecord): string {\n const dossier = stringMetadata(run, \"dossierRoot\");\n return [\n \"\",\n \"Agent-Native Code /migrate resume\",\n \"\",\n ` Run: ${run.id}`,\n ` Status: ${run.status}${run.phase ? ` (${run.phase})` : \"\"}`,\n ` Source: ${run.subtitle ?? \"not set\"}`,\n dossier ? ` Dossier: ${dossier}` : \"\",\n \"\",\n \"Continue in the interactive shell:\",\n \" agent-native code\",\n \"\",\n \"Resume this run directly:\",\n ` agent-native code resume ${run.id}`,\n \" agent-native code attach --last\",\n \"\",\n dossier\n ? `Or hand off to another agent by pointing it at ${shellQuote(dossier)}.`\n : \"No dossier path is recorded on this run.\",\n ]\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationUi(run: CodeAgentRunRecord): string {\n return [\n \"\",\n \"Agent-Native Code /migrate UI\",\n \"\",\n ` Run: ${run.id}`,\n \"\",\n \"Open Agent-Native Desktop and choose Agent-Native Code from the left sidebar.\",\n \"The legacy migration detail app is no longer scaffolded.\",\n ].join(\"\\n\");\n}\n\nfunction renderEmitResult(result: EmitDossierResult): string {\n return [\n \"\",\n \"Migration agent dossier emitted.\",\n \"\",\n ` Source: ${formatSourceForDisplay(result.source)}`,\n ` Dossier: ${result.dossierRoot}`,\n ` IR: ${result.files.includes(\"ir.json\") ? \"included\" : \"not available from this input\"}`,\n ` Engine: ${result.usedMigrateHelpers ? \"@agent-native/migrate helpers\" : \"safe local fallback\"}`,\n \"\",\n \"Files:\",\n ...result.files.map((file) => ` - ${file}`),\n \"\",\n \"Use with Agent-Native Code/Desktop:\",\n ` Point the agent at ${shellQuote(result.dossierRoot)} and ask it to follow AGENTS.md plus MIGRATION_PLAYBOOK.md.`,\n \"\",\n \"Safety:\",\n \" The dossier was written outside sourceRoot and contains no secret values.\",\n ].join(\"\\n\");\n}\n\nfunction migrateUsage(): string {\n return [\n \"Usage:\",\n \" agent-native code /migrate <source-path-or-url> [--out ../migrated-app] (preferred)\",\n \" agent-native migrate <source-path-or-url> [--out ../migrated-app] (shortcut)\",\n \" agent-native migrate <source> --emit [dossier-dir]\",\n ' agent-native migrate --describe \"legacy app described in prose\" --emit',\n \" agent-native migrate resume --last\",\n \" agent-native migrate status --last\",\n \" agent-native migrate ui --last\",\n \" agent-native migrate stop --last\",\n \"\",\n \"Examples:\",\n \" npx @agent-native/core@latest code /migrate ./my-next-app --out ../migrated-app\",\n \" npx @agent-native/core@latest migrate ./my-next-app --out ../migrated-app\",\n ' npx @agent-native/core@latest code /migrate https://example.com --describe \"marketing site\" --emit ../migration-dossier',\n ' npx @agent-native/core@latest code /migrate --describe \"A Rails admin app with reporting dashboards\" --emit',\n \"\",\n \"Default:\",\n \" Migration is an Agent-Native Code slash command. The legacy hidden migration app has been removed.\",\n \"\",\n \"Options:\",\n \" --source, --path <path> Local source path\",\n \" --url <url> Source URL\",\n \" --description, --describe Source description for any-input migrations\",\n \" --emit [dir] Emit an own-agent dossier without recording a session\",\n \" --out <path> Generated output path for the migration session\",\n \" --plan-file <path> Custom migration profile JSON or notes\",\n \" --app-surface, --workbench Removed legacy detail-app flag; prints migration guidance\",\n \" --name <name> Legacy app-surface name (ignored for supported flows)\",\n \" --target <name> Migration target (default: agent-native)\",\n \" --plan-only Legacy app-surface plan-only seed (ignored for supported flows)\",\n ].join(\"\\n\");\n}\n\nfunction setSourceOption(opts: MigrateCliOptions, value: string): void {\n opts.source = value;\n if (isProbablyUrl(value)) {\n opts.sourceUrl = value;\n } else {\n opts.sourcePath = value;\n }\n}\n\nfunction hasAnySource(opts: MigrateCliOptions): boolean {\n return Boolean(\n opts.source || opts.sourcePath || opts.sourceUrl || opts.sourceDescription,\n );\n}\n\nfunction resolveSourceSpec(\n opts: MigrateCliOptions,\n cwd = process.cwd(),\n): SourceSpec | null {\n if (opts.sourceUrl) {\n return {\n kind: \"url\",\n value: opts.sourceUrl,\n description: opts.sourceDescription,\n };\n }\n if (opts.sourcePath) {\n return {\n kind: \"path\",\n value: opts.sourcePath,\n sourceRoot: path.resolve(cwd, opts.sourcePath),\n description: opts.sourceDescription,\n };\n }\n if (opts.source) {\n if (isProbablyUrl(opts.source)) {\n return {\n kind: \"url\",\n value: opts.source,\n description: opts.sourceDescription,\n };\n }\n return {\n kind: \"path\",\n value: opts.source,\n sourceRoot: path.resolve(cwd, opts.source),\n description: opts.sourceDescription,\n };\n }\n if (opts.sourceDescription) {\n return {\n kind: \"description\",\n value: opts.sourceDescription,\n description: opts.sourceDescription,\n };\n }\n return null;\n}\n\nfunction resolveDossierRoot(\n opts: MigrateCliOptions,\n source: SourceSpec,\n cwd: string,\n): string {\n if (opts.emitDir) return path.resolve(cwd, opts.emitDir);\n return defaultDossierRoot(source, cwd);\n}\n\nasync function readMigrationPlanInputs(\n opts: MigrateCliOptions,\n cwd: string,\n): Promise<unknown | null> {\n if (!opts.planFile) return null;\n const filePath = path.resolve(cwd, opts.planFile);\n let text = \"\";\n try {\n text = fs.readFileSync(filePath, \"utf-8\");\n } catch (error) {\n throw new Error(\n `Could not read migration plan file ${filePath}: ${migrationCliErrorMessage(error)}`,\n );\n }\n\n try {\n const migratePackage = \"@agent-native/migrate\";\n const migrate = (await import(migratePackage)) as {\n parseMigrationPlanInputsText?: (\n text: string,\n sourceLabel?: string,\n ) => unknown;\n };\n const parsed = migrate.parseMigrationPlanInputsText?.(\n text,\n path.basename(filePath),\n );\n if (migrate.parseMigrationPlanInputsText) return parsed ?? null;\n } catch {\n // The dossier writer can run without the migrate package being bundled.\n }\n\n try {\n const parsed = JSON.parse(text);\n return isRecognizedPlanInputJson(parsed) ? parsed : null;\n } catch {\n return inferMigrationPlanInputsFromText(text, path.basename(filePath));\n }\n}\n\nfunction isRecognizedPlanInputJson(value: unknown): boolean {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return false;\n }\n return [\n \"summary\",\n \"notes\",\n \"aem\",\n \"builder\",\n \"headless\",\n \"jquery\",\n \"verification\",\n ].some((key) => Object.prototype.hasOwnProperty.call(value, key));\n}\n\nfunction inferMigrationPlanInputsFromText(\n text: string,\n sourceLabel: string,\n): Record<string, unknown> {\n const lower = text.toLowerCase();\n const planInputs: Record<string, unknown> = {\n summary: firstMeaningfulLine(text) ?? sourceLabel,\n notes: text.trim(),\n };\n const mentionsAem =\n /\\baem\\b|adobe experience manager|content fragment|experience fragment|sling|htl|jcr|vault|dam/.test(\n lower,\n );\n const mentionsBuilder = /\\bbuilder\\b|fusion|publish|visual editor/.test(\n lower,\n );\n const mentionsHeadless = /akeneo|akineo|headless|dynamic pages?/.test(lower);\n const mentionsJQuery = /\\bjquery\\b|\\$\\(|clientlib/.test(lower);\n\n if (mentionsAem) {\n planInputs.aem = {\n modes: [\"enterprise\"],\n contentFragmentPolicy: mentionsHeadless ? \"headless\" : \"manual\",\n experienceFragmentPolicy: mentionsBuilder\n ? \"builder-section\"\n : \"react-component\",\n componentPolicy: mentionsBuilder\n ? \"builder-registered-component\"\n : \"react-component\",\n };\n }\n if (mentionsBuilder) {\n planInputs.builder = {\n enabled: true,\n componentRegistration: \"register\",\n routeOwnership: [\n {\n pattern: \"static/low-change pages\",\n owner: \"builder-page\",\n notes:\n \"Use Builder for static or low-change public pages that benefit from visual management.\",\n },\n ],\n };\n }\n if (mentionsHeadless) {\n planInputs.headless = {\n provider:\n lower.includes(\"akeneo\") || lower.includes(\"akineo\")\n ? \"Akeneo\"\n : \"headless\",\n routePatterns: [\"dynamic pages\"],\n };\n const builder = planInputs.builder as\n | { routeOwnership?: Array<Record<string, string>> }\n | undefined;\n if (builder) {\n builder.routeOwnership = [\n ...(builder.routeOwnership ?? []),\n {\n pattern: \"dynamic pages\",\n owner: \"headless\",\n notes:\n \"Route dynamic pages through the approved headless source instead of treating Builder as a content dump.\",\n },\n ];\n }\n }\n if (mentionsJQuery) {\n planInputs.jquery = { policy: \"rewrite\" };\n }\n return planInputs;\n}\n\nfunction firstMeaningfulLine(text: string): string | undefined {\n return text\n .split(/\\r?\\n/)\n .map((line) => line.replace(/^#+\\s*/, \"\").trim())\n .find(Boolean)\n ?.slice(0, 140);\n}\n\nfunction defaultDossierRoot(source: SourceSpec, cwd: string): string {\n if (source.sourceRoot) {\n return path.resolve(\n path.dirname(source.sourceRoot),\n `${path.basename(source.sourceRoot)}-migration-dossier`,\n );\n }\n return path.resolve(cwd, DEFAULT_DOSSIER_DIR);\n}\n\nfunction defaultDossierDirForDisplay(source: SourceSpec): string {\n if (source.sourceRoot) {\n return `../${path.basename(source.sourceRoot)}-migration-dossier`;\n }\n return DEFAULT_DOSSIER_DIR;\n}\n\nfunction assertOutsideSourceRoot(\n sourceRoot: string,\n targetPath: string,\n label: string,\n): void {\n if (isInsideOrSame(sourceRoot, targetPath)) {\n throw new Error(\n `Refusing to write ${label} inside sourceRoot (${sourceRoot}). Choose a path outside the source project.`,\n );\n }\n}\n\nfunction isInsideOrSame(root: string, candidate: string): boolean {\n const relative = path.relative(path.resolve(root), path.resolve(candidate));\n return (\n relative === \"\" ||\n (!relative.startsWith(\"..\") && !path.isAbsolute(relative))\n );\n}\n\nasync function writeAssessmentWithMigrateHelpers(args: {\n source: SourceSpec;\n dossierRoot: string;\n target: string;\n write(relativePath: string, content: string): void;\n}): Promise<boolean> {\n try {\n const migratePackage = \"@agent-native/migrate\";\n const migrate = (await import(migratePackage)) as any;\n const adapter = migrate.nextjsSourceAdapter;\n\n if (\n args.source.sourceRoot &&\n fs.existsSync(args.source.sourceRoot) &&\n adapter?.introspect &&\n migrate.createMigrationRun &&\n migrate.discoverMigration &&\n migrate.artifactPaths\n ) {\n if (adapter.detect) {\n const detected = await adapter.detect(args.source.sourceRoot);\n if (!detected) return false;\n }\n\n const artifactRoot = path.join(args.dossierRoot, \".migrate-artifacts\");\n const outputRoot = path.join(args.dossierRoot, \"generated-output\");\n assertOutsideSourceRoot(\n args.source.sourceRoot,\n artifactRoot,\n \"artifacts\",\n );\n assertOutsideSourceRoot(args.source.sourceRoot, outputRoot, \"outputRoot\");\n\n const run = await migrate.createMigrationRun({\n sourceRoot: args.source.sourceRoot,\n outputRoot,\n artifactRoot,\n target: args.target,\n id: \"dossier\",\n });\n const result = await migrate.discoverMigration(run, adapter);\n const artifacts = migrate.artifactPaths(result.run);\n args.write(\n \"01-assessment.md\",\n fs.readFileSync(result.assessmentPath, \"utf-8\"),\n );\n if (fs.existsSync(artifacts.irPath)) {\n args.write(\"ir.json\", fs.readFileSync(artifacts.irPath, \"utf-8\"));\n }\n return true;\n }\n\n if (!args.source.sourceRoot && migrate.createSkeletonProjectIR) {\n const ir = migrate.createSkeletonProjectIR({\n sourceRoot: args.source.value,\n inputKind: args.source.kind,\n inputDescription: args.source.description ?? args.source.value,\n }) as ProjectIRLike;\n args.write(\"01-assessment.md\", renderLocalAssessment(args.source, ir));\n args.write(\"ir.json\", `${JSON.stringify(ir, null, 2)}\\n`);\n return true;\n }\n } catch {\n return false;\n }\n return false;\n}\n\nfunction buildFallbackAssessment(source: SourceSpec): {\n assessment: string;\n ir?: ProjectIRLike;\n} {\n if (source.sourceRoot && fs.existsSync(source.sourceRoot)) {\n const ir = createLocalProjectIr(source.sourceRoot);\n return { assessment: renderLocalAssessment(source, ir), ir };\n }\n return { assessment: renderNonPathAssessment(source) };\n}\n\nfunction createLocalProjectIr(sourceRoot: string): ProjectIRLike {\n const files = walkSourceFiles(sourceRoot);\n const packageJson = readJsonIfExists(\n path.join(sourceRoot, \"package.json\"),\n ) as {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n } | null;\n const deps = {\n ...(packageJson?.dependencies ?? {}),\n ...(packageJson?.devDependencies ?? {}),\n };\n const framework =\n deps.next ||\n hasAnyFile(sourceRoot, [\n \"next.config.js\",\n \"next.config.mjs\",\n \"next.config.ts\",\n ])\n ? \"nextjs\"\n : deps.react\n ? \"react\"\n : \"unknown\";\n const routes = files\n .map((file) => routeFromFile(file))\n .filter((route): route is ProjectIRLike[\"site\"][\"routes\"][number] =>\n Boolean(route),\n )\n .sort((a, b) => a.path.localeCompare(b.path));\n const codeFiles = files.filter((file) => /\\.(ts|tsx|js|jsx)$/.test(file));\n const behavior: ProjectIRLike[\"behavior\"] = {\n apiEndpoints: [],\n dataStores: [],\n llmCalls: [],\n clientState: [],\n auth: [],\n jobs: [],\n };\n\n for (const file of codeFiles) {\n const text = readSmallText(path.join(sourceRoot, file));\n if (!text) continue;\n if (\n file.startsWith(\"pages/api/\") ||\n /(^|\\/)api\\/.*\\/route\\.[tj]sx?$/.test(file)\n ) {\n behavior.apiEndpoints.push({\n id: stableId(file),\n path: apiPathFromFile(file),\n method: inferHttpMethod(text),\n filePath: file,\n recommendedRecipe: \"api-routes-to-actions\",\n });\n }\n if (/\\b(useState|useReducer|localStorage|sessionStorage)\\b/.test(text)) {\n behavior.clientState.push({\n id: stableId(`${file}:state`),\n filePath: file,\n reason:\n \"Review for important UI state that should move into application_state.\",\n });\n }\n if (\n /\\b(openai|anthropic|generateText|streamText|chat\\.completions|messages\\.create)\\b/i.test(\n text,\n )\n ) {\n behavior.llmCalls.push({\n id: stableId(`${file}:llm`),\n filePath: file,\n provider: inferLlmProvider(text),\n });\n }\n if (\n /\\b(drizzle|prisma|postgres|supabase|mysql|sqlite|mongoose)\\b/i.test(text)\n ) {\n behavior.dataStores.push({\n id: stableId(`${file}:data`),\n name: path.basename(file),\n filePath: file,\n kind: \"database\",\n });\n }\n if (/\\b(next-auth|better-auth|auth0|clerk|supabase\\.auth)\\b/i.test(text)) {\n behavior.auth.push({\n id: stableId(`${file}:auth`),\n filePath: file,\n provider: inferAuthProvider(text),\n });\n }\n if (\n /\\b(cron|schedule|queue|inngest|trigger\\.dev|setInterval)\\b/i.test(text)\n ) {\n behavior.jobs.push({\n id: stableId(`${file}:job`),\n filePath: file,\n kind: \"scheduled-or-queued\",\n });\n }\n }\n\n return {\n site: {\n framework,\n sourceRoot,\n routes,\n redirects: [],\n metadata: {\n routeCount: routes.length,\n fileCount: files.length,\n packageManager: detectPackageManager(sourceRoot),\n },\n },\n components: {\n components: files\n .filter(\n (file) =>\n /(^|\\/)(components|ui)\\//.test(file) &&\n /\\.(ts|tsx|js|jsx)$/.test(file),\n )\n .sort()\n .map((file) => ({\n id: stableId(file),\n name: componentName(file),\n filePath: file,\n usedByRoutes: [],\n })),\n designTokens: {},\n },\n content: {\n models: [],\n assets: files\n .filter((file) =>\n /\\.(png|jpe?g|webp|gif|svg|avif|pdf|mp4|webm)$/i.test(file),\n )\n .sort()\n .map((file) => ({\n id: stableId(file),\n path: file,\n type: path.extname(file).slice(1).toLowerCase() || \"unknown\",\n })),\n },\n behavior,\n };\n}\n\nfunction renderLocalAssessment(source: SourceSpec, ir: ProjectIRLike): string {\n return `# Migration Assessment\n\nSource type: \\`${source.kind}\\`\nSource: \\`${formatSourceForDisplay(source)}\\`\n${source.description ? `Description: ${source.description}\\n` : \"\"}\nTarget: \\`${DEFAULT_TARGET}\\`\n\n## Inventory\n\n- Framework: ${ir.site.framework}\n- Routes: ${ir.site.routes.length}\n- Components: ${ir.components.components.length}\n- API endpoints: ${ir.behavior.apiEndpoints.length}\n- Data stores: ${ir.behavior.dataStores.length}\n- LLM calls: ${ir.behavior.llmCalls.length}\n- Client state hotspots: ${ir.behavior.clientState.length}\n- Auth hotspots: ${ir.behavior.auth.length}\n- Jobs: ${ir.behavior.jobs.length}\n- Assets: ${ir.content.assets.length}\n\n## Routes\n\n${ir.site.routes.map((route) => `- \\`${route.path}\\` (${route.kind}) from \\`${route.filePath}\\``).join(\"\\n\") || \"- No routes detected.\"}\n\n## Agent-Native Focus Areas\n\n- Convert API routes and server mutations into actions unless they are uploads, webhooks, OAuth callbacks, or streams.\n- Move app-owned state into SQL with Drizzle and expose reads/writes through actions.\n- Delegate all AI work to the agent chat instead of calling model APIs directly from UI code.\n- Expose important navigation and selection state through application_state.\n- Keep public pages server-rendered and logged-in workflows inside the persistent app shell.\n`;\n}\n\nfunction renderNonPathAssessment(source: SourceSpec): string {\n return `# Migration Assessment\n\nSource type: \\`${source.kind}\\`\nSource: ${source.kind === \"url\" ? source.value : \"provided description\"}\n${source.description && source.kind !== \"description\" ? `Description: ${source.description}\\n` : \"\"}\n${source.kind === \"description\" ? `Description: ${source.value}\\n` : \"\"}\nTarget: \\`${DEFAULT_TARGET}\\`\n\n## Inventory\n\nNo local source path was provided, so this dossier does not include file-level IR. Use the URL or description as the intake brief, then let an Agent-Native Code or Desktop session inspect the real source before writing output.\n\n## Agent-Native Focus Areas\n\n- Identify public pages, logged-in workflows, API endpoints, data ownership, auth, jobs, and direct LLM calls.\n- Convert operations into actions and keep application data in SQL.\n- Generate output outside the original source tree.\n- Verify claims with deterministic checks or explicit human review notes.\n`;\n}\n\nfunction renderDossierAgentsMd(\n source: SourceSpec,\n templateAgents: string | null,\n planInputs: unknown | null,\n): string {\n return `# Migration Dossier Agent Instructions\n\nYou are migrating an existing application to agent-native.\n\n## Source\n\n- Type: ${source.kind}\n- Value: ${formatSourceForDisplay(source)}\n${source.description ? `- Description: ${source.description}\\n` : \"\"}\n## Hard Rules\n\n- Never write generated files inside the sourceRoot.\n- Treat source as read-only unless the user explicitly asks for source edits.\n- Put generated output in a separate directory.\n- Keep app-owned data in SQL, expose operations as actions, and route AI work through the agent chat.\n- Use 01-assessment.md and ir.json when present. If they are incomplete, update the assessment before implementation.\n- Record manual gaps and verification evidence. Do not present a migration as complete without checks.\n${planInputs ? \"- Treat `02-plan-inputs.json` as binding planning input. Do not approve output writes until the generated task list covers it.\\n\" : \"\"}\n\n## Files In This Dossier\n\n- \\`MIGRATION_PLAYBOOK.md\\` - ordered workflow for Agent-Native Code/Desktop.\n- \\`01-assessment.md\\` - initial source assessment.\n- \\`02-plan-inputs.json\\` - custom route ownership, AEM, Builder, jQuery, or verification profile when present.\n- \\`ir.json\\` - source inventory when available.\n- \\`.agents/skills/migration*/SKILL.md\\` - extra instruction packs when available from the migration goal surface.\n\n${templateAgents ? `## Migration Goal Surface Instructions\\n\\n${templateAgents.trim()}\\n` : \"\"}\n`;\n}\n\nfunction renderMigrationPlaybook(\n source: SourceSpec,\n planInputs: unknown | null,\n): string {\n return `# Migration Playbook\n\n## 1. Intake Any Input\n\nStart from the available input: a local source path, a URL, or a prose description. If this dossier has \\`ir.json\\`, use it as a first inventory. If not, inspect the real source before planning implementation.\n\nSource: ${formatSourceForDisplay(source)}\n\n## 2. Build The Migration Map\n\nClassify routes, public pages, logged-in app surfaces, API endpoints, data stores, auth, jobs, client state, assets, and direct LLM calls. Update \\`01-assessment.md\\` when you learn more.\n\n${planInputs ? \"Use `02-plan-inputs.json` as the customer-specific migration profile. Apply its route ownership, AEM evidence, Builder registration, headless, jQuery, and verification constraints before approving output writes.\\n\" : \"\"}\n\n## 3. Apply Agent-Native Rules\n\n- Actions are the single source of truth for operations.\n- Data lives in SQL through Drizzle.\n- AI work goes through the agent chat.\n- Important UI state is mirrored through \\`application_state\\`.\n- Public/SEO pages server-render; logged-in workflows use the persistent app shell.\n- Ownable resources use sharing and access helpers.\n\n## 4. Work In Samples\n\nMigrate one representative route or workflow first. Verify it, tune the pattern, then sweep similar surfaces. Keep generated output outside the original source tree.\n\n## 5. Verify\n\nRun typecheck/build plus route, action, and data checks that fit the migrated app. Capture unresolved gaps in a report before handing off.\n\n## 6. Use With Agent-Native Code Or Desktop\n\nPoint Codex, Claude Code, another code agent, or Agent-Native Desktop at this dossier directory. Ask it to follow \\`AGENTS.md\\`, then implement the plan in a separate output project.\n`;\n}\n\nfunction copyMigrationSkills(\n templateDir: string | undefined,\n dossierRoot: string,\n): string[] {\n if (!templateDir) return [];\n const skillsRoot = path.join(templateDir, \".agents\", \"skills\");\n if (!fs.existsSync(skillsRoot)) return [];\n const copied: string[] = [];\n for (const entry of fs.readdirSync(skillsRoot, { withFileTypes: true })) {\n if (!entry.isDirectory() || !entry.name.startsWith(\"migration\")) continue;\n const src = path.join(skillsRoot, entry.name, \"SKILL.md\");\n if (!fs.existsSync(src)) continue;\n const relative = path.join(\".agents\", \"skills\", entry.name, \"SKILL.md\");\n const dest = path.join(dossierRoot, relative);\n fs.mkdirSync(path.dirname(dest), { recursive: true });\n fs.copyFileSync(src, dest);\n copied.push(relative);\n }\n return copied;\n}\n\nfunction findMigrationTemplateDir(): string | undefined {\n const starts = [__dirname, process.cwd()];\n for (const start of starts) {\n let dir = path.resolve(start);\n for (let i = 0; i < 12; i++) {\n for (const candidate of [\n path.join(dir, \"templates\", \"migration\"),\n path.join(dir, \"src\", \"templates\", \"migration\"),\n ]) {\n if (fs.existsSync(path.join(candidate, \"AGENTS.md\"))) {\n return candidate;\n }\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n }\n return undefined;\n}\n\nfunction resolveWorkbenchDir(opts: MigrateCliOptions): string {\n if (opts.workbench) return path.resolve(process.cwd(), opts.workbench);\n return resolveScaffoldedAppDir(\n process.cwd(),\n opts.appName ?? DEFAULT_APP_NAME,\n );\n}\n\nfunction resolveScaffoldedAppDir(cwd: string, appName: string): string {\n const workspaceAppDir = path.join(cwd, \"apps\", appName);\n if (fs.existsSync(workspaceAppDir)) return workspaceAppDir;\n return path.join(cwd, appName);\n}\n\nfunction sourceSeedPayload(source: SourceSpec): Record<string, string> {\n return {\n kind: source.kind,\n value: source.value,\n ...(source.sourceRoot ? { sourceRoot: source.sourceRoot } : {}),\n ...(source.description ? { description: source.description } : {}),\n };\n}\n\nfunction defaultRunName(source: SourceSpec): string {\n if (source.sourceRoot) {\n return `Migration from ${path.basename(source.sourceRoot)}`;\n }\n if (source.kind === \"url\") {\n return `Migration from ${source.value}`;\n }\n return \"Migration from described source\";\n}\n\nfunction stringMetadata(\n run: CodeAgentRunRecord,\n key: string,\n): string | undefined {\n const value = run.metadata?.[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction formatSeedSource(\n seed: {\n sourceKind?: string;\n sourceRoot?: string;\n sourceUrl?: string;\n sourceDescription?: string;\n } | null,\n): string {\n if (!seed) return \"not set\";\n if (seed.sourceRoot) return seed.sourceRoot;\n if (seed.sourceUrl) return seed.sourceUrl;\n if (seed.sourceDescription) return seed.sourceDescription;\n return seed.sourceKind ?? \"not set\";\n}\n\nfunction readArtifactRuns(\n appDir: string,\n): Array<{ id: string; phase: string }> {\n const runsRoot = path.join(appDir, \"data\", \"migration-runs\");\n if (!fs.existsSync(runsRoot)) return [];\n return fs\n .readdirSync(runsRoot, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .map((entry) => {\n const run = readJsonIfExists(\n path.join(runsRoot, entry.name, \"run.json\"),\n ) as { id?: string; phase?: string; updatedAt?: string } | null;\n return {\n id: run?.id ?? entry.name,\n phase: run?.phase ?? \"unknown\",\n updatedAt: run?.updatedAt ?? \"\",\n };\n })\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n}\n\nfunction credentialStatusLines(): string[] {\n const configured = MODEL_CREDENTIAL_ENV_NAMES.filter((key) =>\n Boolean(process.env[key]),\n );\n if (configured.length > 0) {\n return [\n `Headless credentials: detected ${configured.join(\", \")} in this shell.`,\n \"Secret values were not read or stored.\",\n ];\n }\n return [\n `Headless credentials: none of ${MODEL_CREDENTIAL_ENV_NAMES.join(\", \")} are set in this shell.`,\n \"Set credentials in the Workbench app env or use Desktop/Agent-Native Code credentials; the migrate CLI will not store them.\",\n ];\n}\n\nfunction walkSourceFiles(root: string): string[] {\n const out: string[] = [];\n const ignored = new Set([\n \".git\",\n \".next\",\n \".turbo\",\n \"node_modules\",\n \"dist\",\n \"build\",\n \".output\",\n \"coverage\",\n ]);\n const visit = (dir: string) => {\n if (out.length > 5000) return;\n let entries: fs.Dirent[];\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n if (ignored.has(entry.name)) continue;\n const absolute = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n visit(absolute);\n } else if (entry.isFile()) {\n out.push(toPosix(path.relative(root, absolute)));\n }\n }\n };\n visit(root);\n return out.sort();\n}\n\nfunction routeFromFile(\n relativePath: string,\n): ProjectIRLike[\"site\"][\"routes\"][number] | null {\n const normalized = toPosix(relativePath);\n const router = normalized.startsWith(\"app/\") ? \"next-app\" : \"next-pages\";\n const isPageRoute =\n normalized.startsWith(\"pages/\") &&\n /\\.(ts|tsx|js|jsx|md|mdx)$/.test(normalized) &&\n !normalized.startsWith(\"pages/_app.\") &&\n !normalized.startsWith(\"pages/_document.\");\n const isAppRoute =\n normalized.startsWith(\"app/\") &&\n /\\/(page|route)\\.(ts|tsx|js|jsx|md|mdx)$/.test(normalized);\n if (!isPageRoute && !isAppRoute) return null;\n\n const isApi =\n normalized.startsWith(\"pages/api/\") ||\n /(^|\\/)api\\/.*\\/route\\.[tj]sx?$/.test(normalized) ||\n normalized.endsWith(\"/route.ts\") ||\n normalized.endsWith(\"/route.tsx\") ||\n normalized.endsWith(\"/route.js\") ||\n normalized.endsWith(\"/route.jsx\");\n\n let routePath = normalized;\n if (router === \"next-app\") {\n routePath = routePath\n .replace(/^app\\//, \"\")\n .replace(/(^|\\/)(page|route)\\.(ts|tsx|js|jsx|md|mdx)$/, \"\");\n } else {\n routePath = routePath\n .replace(/^pages\\//, \"\")\n .replace(/\\.(ts|tsx|js|jsx|md|mdx)$/, \"\");\n }\n\n routePath = routePath\n .replace(/\\/index$/, \"\")\n .replace(/^index$/, \"\")\n .replace(/^\\(.*?\\)\\//, \"\")\n .replace(/\\[(\\.\\.\\.)?([^\\]]+)\\]/g, (_, dots: string, name: string) =>\n dots ? `*${name}` : `:${name}`,\n );\n const publicPath = routePath ? `/${routePath}` : \"/\";\n const pathValue = publicPath === \"/api\" && isApi ? \"/api/*\" : publicPath;\n const kind = isApi\n ? \"api\"\n : pathValue === \"/\"\n ? \"landing\"\n : pathValue.includes(\"docs\")\n ? \"docs\"\n : pathValue.includes(\"pricing\") || pathValue.includes(\"blog\")\n ? \"marketing\"\n : \"app\";\n return {\n id: stableId(normalized),\n path: pathValue,\n filePath: normalized,\n router,\n kind,\n dynamic: pathValue.includes(\":\") || pathValue.includes(\"*\"),\n public: kind !== \"app\" && kind !== \"api\",\n notes: isApi\n ? [\n \"Convert to an action unless it uploads, streams, handles OAuth, or receives webhooks.\",\n ]\n : [],\n };\n}\n\nfunction apiPathFromFile(file: string): string {\n let value = file\n .replace(/^pages\\/api\\//, \"/api/\")\n .replace(/^app\\//, \"/\")\n .replace(/\\/route\\.[tj]sx?$/, \"\")\n .replace(/\\.[tj]sx?$/, \"\");\n value = value\n .replace(/\\/index$/, \"\")\n .replace(/\\[(\\.\\.\\.)?([^\\]]+)\\]/g, (_, dots: string, name: string) =>\n dots ? `*${name}` : `:${name}`,\n );\n return value || \"/api\";\n}\n\nfunction inferHttpMethod(text: string): string {\n const exported = text.match(\n /export\\s+(?:async\\s+)?function\\s+(GET|POST|PUT|PATCH|DELETE)/,\n );\n if (exported) return exported[1];\n const method = text.match(\n /method\\s*[:=]\\s*[\"'](GET|POST|PUT|PATCH|DELETE)[\"']/i,\n );\n return method?.[1]?.toUpperCase() ?? \"GET\";\n}\n\nfunction inferLlmProvider(text: string): string {\n if (/anthropic/i.test(text)) return \"anthropic\";\n if (/openai/i.test(text)) return \"openai\";\n return \"unknown\";\n}\n\nfunction inferAuthProvider(text: string): string {\n if (/better-auth/i.test(text)) return \"better-auth\";\n if (/next-auth/i.test(text)) return \"next-auth\";\n if (/clerk/i.test(text)) return \"clerk\";\n if (/auth0/i.test(text)) return \"auth0\";\n if (/supabase\\.auth/i.test(text)) return \"supabase\";\n return \"unknown\";\n}\n\nfunction componentName(file: string): string {\n const base = path.basename(file).replace(/\\.(ts|tsx|js|jsx)$/, \"\");\n return base\n .split(/[-_]/g)\n .filter(Boolean)\n .map((part) => part[0]?.toUpperCase() + part.slice(1))\n .join(\"\");\n}\n\nfunction detectPackageManager(sourceRoot: string): string {\n if (fs.existsSync(path.join(sourceRoot, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(sourceRoot, \"yarn.lock\"))) return \"yarn\";\n if (fs.existsSync(path.join(sourceRoot, \"package-lock.json\"))) return \"npm\";\n return \"unknown\";\n}\n\nfunction readSmallText(filePath: string): string | null {\n try {\n const stat = fs.statSync(filePath);\n if (stat.size > 256_000) return null;\n return fs.readFileSync(filePath, \"utf-8\");\n } catch {\n return null;\n }\n}\n\nfunction readJsonIfExists(filePath: string): unknown | null {\n try {\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch {\n return null;\n }\n}\n\nfunction readTextIfExists(filePath: string | undefined): string | null {\n if (!filePath) return null;\n try {\n return fs.readFileSync(filePath, \"utf-8\");\n } catch {\n return null;\n }\n}\n\nfunction hasAnyFile(root: string, files: string[]): boolean {\n return files.some((file) => fs.existsSync(path.join(root, file)));\n}\n\nfunction stableId(value: string): string {\n return crypto.createHash(\"sha1\").update(value).digest(\"hex\").slice(0, 12);\n}\n\nfunction isProbablyUrl(value: string): boolean {\n return /^[a-z][a-z0-9+.-]*:\\/\\//i.test(value);\n}\n\nfunction formatSourceForDisplay(source: SourceSpec): string {\n if (source.sourceRoot) return source.sourceRoot;\n return source.value;\n}\n\nfunction formatSourceForCommand(source: SourceSpec): string {\n if (source.kind === \"description\") {\n return `--describe ${shellQuote(source.value)}`;\n }\n const base = shellQuote(source.value);\n if (source.description) {\n return `${base} --describe ${shellQuote(source.description)}`;\n }\n return base;\n}\n\nfunction shellQuote(value: string): string {\n if (/^[A-Za-z0-9_./:@%+=,-]+$/.test(value)) return value;\n return JSON.stringify(value);\n}\n\nfunction toPosix(value: string): string {\n return value.split(path.sep).join(\"/\");\n}\n"]}
@@ -3,12 +3,14 @@
3
3
  * The lower-level `app-skill` commands remain the packaging primitives; this
4
4
  * command handles the common "install Assets for my agent" path in one step.
5
5
  */
6
- import type { ClientId } from "./mcp-config-writers.js";
6
+ import { type ClientId } from "./mcp-config-writers.js";
7
7
  type SkillsCommand = "list" | "add" | "help";
8
8
  export interface ParsedSkillsArgs {
9
9
  command: SkillsCommand;
10
10
  target?: string;
11
11
  client: string;
12
+ clientExplicit: boolean;
13
+ clients?: ClientId[];
12
14
  scope: string;
13
15
  yes: boolean;
14
16
  dryRun: boolean;
@@ -34,13 +36,32 @@ export interface SkillsAddResult {
34
36
  commands: string[];
35
37
  }
36
38
  interface RunCommandOptions {
37
- stdio?: "inherit" | "stderr";
39
+ stdio?: "inherit" | "stderr" | "silent";
38
40
  }
39
41
  interface RunSkillsOptions {
40
42
  baseDir?: string;
43
+ isInteractive?: () => boolean;
41
44
  log?: (message: string) => void;
45
+ promptClients?: (context: SkillsClientPromptContext) => Promise<ClientId[] | null>;
46
+ promptSkills?: (context: SkillsTargetPromptContext) => Promise<string[] | null>;
42
47
  runCommand?: (cmd: string, args: string[], options?: RunCommandOptions) => Promise<number>;
43
48
  }
49
+ interface SkillsClientPromptContext {
50
+ initialClients: ClientId[];
51
+ options: Array<{
52
+ value: ClientId;
53
+ label: string;
54
+ hint: string;
55
+ }>;
56
+ }
57
+ interface SkillsTargetPromptContext {
58
+ initialTargets: string[];
59
+ options: Array<{
60
+ value: string;
61
+ label: string;
62
+ hint: string;
63
+ }>;
64
+ }
44
65
  export declare function parseSkillsArgs(argv: string[]): ParsedSkillsArgs;
45
66
  export declare function addAgentNativeSkill(parsed: ParsedSkillsArgs, options?: RunSkillsOptions): Promise<SkillsAddResult>;
46
67
  export declare function runSkills(argv: string[], options?: RunSkillsOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAgQxD,KAAK,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,GAAG,EAAE,OAAO,CAAC;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAWD,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC9B;AAED,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,UAAU,CAAC,EAAE,CACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,iBAAiB,KACxB,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAcD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CA6DhE;AA6LD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CA8F1B;AAeD,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAiDf"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAocjE,KAAK,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,GAAG,EAAE,OAAO,CAAC;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAWD,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACzC;AAED,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,CACd,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,CACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,iBAAiB,KACxB,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAED,UAAU,yBAAyB;IACjC,cAAc,EAAE,QAAQ,EAAE,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED,UAAU,yBAAyB;IACjC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAsID,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAgEhE;AAkND,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAkG1B;AAeD,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA0Ff"}