@agent-native/core 0.90.3 → 0.90.4

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 (191) hide show
  1. package/bin/agent-native.js +25 -3
  2. package/corpus/README.md +1 -1
  3. package/corpus/core/CHANGELOG.md +9 -0
  4. package/corpus/core/bin/agent-native.js +25 -3
  5. package/corpus/core/package.json +1 -1
  6. package/corpus/core/src/agent/engine/index.ts +1 -0
  7. package/corpus/core/src/agent/engine/registry.ts +63 -2
  8. package/corpus/core/src/cli/create.ts +35 -0
  9. package/corpus/core/src/cli/design-connect.ts +248 -0
  10. package/corpus/core/src/cli/index.ts +84 -7
  11. package/corpus/core/src/cli/workspacify.ts +34 -0
  12. package/corpus/core/src/client/history/VersionHistoryPanel.tsx +77 -47
  13. package/corpus/core/src/client/history/index.ts +3 -0
  14. package/corpus/core/src/client/history/use-history.ts +28 -0
  15. package/corpus/core/src/client/index.ts +8 -0
  16. package/corpus/core/src/client/review/index.ts +5 -0
  17. package/corpus/core/src/client/review/use-review.ts +40 -2
  18. package/corpus/core/src/history/actions/create-resource-version.ts +11 -8
  19. package/corpus/core/src/history/index.ts +0 -1
  20. package/corpus/core/src/history/registry.ts +24 -12
  21. package/corpus/core/src/history/store.ts +84 -53
  22. package/corpus/core/src/review/actions/consume-review-feedback.ts +15 -5
  23. package/corpus/core/src/review/actions/delete-review-comment.ts +15 -3
  24. package/corpus/core/src/review/actions/resolve-review-thread.ts +12 -5
  25. package/corpus/core/src/review/index.ts +0 -5
  26. package/corpus/core/src/review/registry.ts +24 -12
  27. package/corpus/core/src/review/store.ts +10 -7
  28. package/corpus/core/src/server/agent-chat-plugin.ts +6 -0
  29. package/corpus/core/src/server/credential-provider.ts +13 -3
  30. package/corpus/templates/assets/actions/_preset-skeleton-validation.ts +11 -11
  31. package/corpus/templates/assets/actions/generate-image.ts +64 -28
  32. package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +1 -1
  33. package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +91 -74
  34. package/corpus/templates/assets/server/lib/generation.ts +29 -4
  35. package/corpus/templates/assets/server/lib/image-processing.ts +131 -0
  36. package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +24 -2
  37. package/corpus/templates/calendar/AGENTS.md +3 -0
  38. package/corpus/templates/calendar/actions/create-event.ts +8 -34
  39. package/corpus/templates/calendar/actions/event-action-helpers.ts +52 -0
  40. package/corpus/templates/calendar/actions/manage-event-draft.ts +7 -34
  41. package/corpus/templates/calendar/actions/update-event.ts +10 -23
  42. package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +47 -0
  43. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +23 -0
  44. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +59 -2
  45. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +40 -1
  46. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +34 -1
  47. package/corpus/templates/calendar/app/hooks/use-events.ts +6 -0
  48. package/corpus/templates/calendar/app/i18n/zh-TW.ts +4 -0
  49. package/corpus/templates/calendar/app/i18n-data.ts +40 -0
  50. package/corpus/templates/calendar/changelog/2026-07-07-you-can-mark-event-guests-as-optional-while-inviting-them-or.md +6 -0
  51. package/corpus/templates/calendar/server/handlers/events.ts +1 -0
  52. package/corpus/templates/calendar/server/lib/google-calendar.ts +4 -0
  53. package/corpus/templates/calendar/server/plugins/agent-chat.ts +1 -1
  54. package/corpus/templates/calendar/shared/api.ts +2 -0
  55. package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +29 -3
  56. package/corpus/templates/clips/actions/generate-workflow.ts +19 -8
  57. package/corpus/templates/clips/actions/get-clips-ai-prefs.ts +36 -0
  58. package/corpus/templates/clips/actions/lib/clips-ai-prefs.ts +28 -0
  59. package/corpus/templates/clips/actions/regenerate-chapters.ts +21 -7
  60. package/corpus/templates/clips/actions/regenerate-summary.ts +26 -8
  61. package/corpus/templates/clips/actions/regenerate-title.ts +44 -7
  62. package/corpus/templates/clips/actions/update-clips-ai-prefs.ts +50 -0
  63. package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +7 -2
  64. package/corpus/templates/clips/app/hooks/use-auto-title.ts +25 -10
  65. package/corpus/templates/clips/app/i18n/ar-SA.ts +28 -6
  66. package/corpus/templates/clips/app/i18n/de-DE.ts +28 -6
  67. package/corpus/templates/clips/app/i18n/en-US.ts +29 -6
  68. package/corpus/templates/clips/app/i18n/es-ES.ts +29 -6
  69. package/corpus/templates/clips/app/i18n/fr-FR.ts +30 -6
  70. package/corpus/templates/clips/app/i18n/hi-IN.ts +26 -6
  71. package/corpus/templates/clips/app/i18n/ja-JP.ts +27 -6
  72. package/corpus/templates/clips/app/i18n/ko-KR.ts +28 -6
  73. package/corpus/templates/clips/app/i18n/pt-BR.ts +28 -6
  74. package/corpus/templates/clips/app/i18n/zh-CN.ts +26 -6
  75. package/corpus/templates/clips/app/i18n/zh-TW.ts +25 -6
  76. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +73 -0
  77. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +1 -0
  78. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +70 -2
  79. package/corpus/templates/clips/changelog/2026-07-07-ai-tools-can-include-the-full-video-not-just-the-transcript-.md +6 -0
  80. package/corpus/templates/clips/changelog/2026-07-07-clips-desktop-now-surfaces-meetings-and-dictate-directly-in-.md +6 -0
  81. package/corpus/templates/clips/changelog/2026-07-07-meeting-notes-now-explain-exactly-how-to-start-granola-style.md +6 -0
  82. package/corpus/templates/clips/changelog/2026-07-07-meeting-start-alerts-now-include-separate-start-notes-and-jo.md +6 -0
  83. package/corpus/templates/clips/changelog/2026-07-07-recordings-start-more-predictably-and-newly-saved-clips-refr.md +6 -0
  84. package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
  85. package/corpus/templates/clips/desktop/src/app.tsx +435 -105
  86. package/corpus/templates/clips/desktop/src/lib/recorder.ts +27 -21
  87. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +23 -22
  88. package/corpus/templates/clips/desktop/src/styles.css +167 -2
  89. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +1 -1
  90. package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +3 -7
  91. package/corpus/templates/clips/desktop/src-tauri/src/tray_meetings.rs +5 -4
  92. package/corpus/templates/clips/server/routes/_agent-native/clips/user-prefs.put.ts +16 -8
  93. package/corpus/templates/clips/shared/clips-ai-prefs.ts +81 -0
  94. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +16 -1
  95. package/corpus/templates/design/actions/add-localhost-screens.ts +1 -0
  96. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +345 -11
  97. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +89 -14
  98. package/corpus/templates/design/app/components/design/bridge-security.ts +7 -1
  99. package/corpus/templates/design/app/components/design/multi-screen/types.ts +1 -1
  100. package/corpus/templates/design/app/i18n/zh-TW.ts +3 -0
  101. package/corpus/templates/design/app/i18n-data.ts +41 -0
  102. package/corpus/templates/design/changelog/2026-07-07-local-visual-edit-uses-live-app-iframes-for-click-to-edit-pr.md +6 -0
  103. package/dist/agent/engine/index.d.ts +1 -1
  104. package/dist/agent/engine/index.d.ts.map +1 -1
  105. package/dist/agent/engine/index.js +1 -1
  106. package/dist/agent/engine/index.js.map +1 -1
  107. package/dist/agent/engine/registry.d.ts +14 -0
  108. package/dist/agent/engine/registry.d.ts.map +1 -1
  109. package/dist/agent/engine/registry.js +56 -2
  110. package/dist/agent/engine/registry.js.map +1 -1
  111. package/dist/cli/create.d.ts.map +1 -1
  112. package/dist/cli/create.js +31 -0
  113. package/dist/cli/create.js.map +1 -1
  114. package/dist/cli/design-connect.d.ts.map +1 -1
  115. package/dist/cli/design-connect.js +186 -0
  116. package/dist/cli/design-connect.js.map +1 -1
  117. package/dist/cli/index.js +76 -9
  118. package/dist/cli/index.js.map +1 -1
  119. package/dist/cli/workspacify.d.ts.map +1 -1
  120. package/dist/cli/workspacify.js +30 -0
  121. package/dist/cli/workspacify.js.map +1 -1
  122. package/dist/client/history/VersionHistoryPanel.d.ts +1 -1
  123. package/dist/client/history/VersionHistoryPanel.d.ts.map +1 -1
  124. package/dist/client/history/VersionHistoryPanel.js +12 -5
  125. package/dist/client/history/VersionHistoryPanel.js.map +1 -1
  126. package/dist/client/history/index.d.ts +1 -1
  127. package/dist/client/history/index.d.ts.map +1 -1
  128. package/dist/client/history/index.js +1 -1
  129. package/dist/client/history/index.js.map +1 -1
  130. package/dist/client/history/use-history.d.ts +12 -0
  131. package/dist/client/history/use-history.d.ts.map +1 -1
  132. package/dist/client/history/use-history.js +6 -0
  133. package/dist/client/history/use-history.js.map +1 -1
  134. package/dist/client/index.d.ts +2 -2
  135. package/dist/client/index.d.ts.map +1 -1
  136. package/dist/client/index.js +2 -2
  137. package/dist/client/index.js.map +1 -1
  138. package/dist/client/review/index.d.ts +1 -1
  139. package/dist/client/review/index.d.ts.map +1 -1
  140. package/dist/client/review/index.js +1 -1
  141. package/dist/client/review/index.js.map +1 -1
  142. package/dist/client/review/use-review.d.ts +23 -0
  143. package/dist/client/review/use-review.d.ts.map +1 -1
  144. package/dist/client/review/use-review.js +8 -0
  145. package/dist/client/review/use-review.js.map +1 -1
  146. package/dist/collab/awareness.d.ts +2 -2
  147. package/dist/collab/awareness.d.ts.map +1 -1
  148. package/dist/collab/routes.d.ts +1 -1
  149. package/dist/history/actions/create-resource-version.js +7 -4
  150. package/dist/history/actions/create-resource-version.js.map +1 -1
  151. package/dist/history/index.d.ts +1 -1
  152. package/dist/history/index.d.ts.map +1 -1
  153. package/dist/history/index.js +1 -1
  154. package/dist/history/index.js.map +1 -1
  155. package/dist/history/registry.d.ts.map +1 -1
  156. package/dist/history/registry.js +14 -12
  157. package/dist/history/registry.js.map +1 -1
  158. package/dist/history/store.d.ts.map +1 -1
  159. package/dist/history/store.js +74 -49
  160. package/dist/history/store.js.map +1 -1
  161. package/dist/observability/routes.d.ts +3 -3
  162. package/dist/progress/routes.d.ts +1 -1
  163. package/dist/review/actions/consume-review-feedback.d.ts +1 -0
  164. package/dist/review/actions/consume-review-feedback.js +8 -2
  165. package/dist/review/actions/consume-review-feedback.js.map +1 -1
  166. package/dist/review/actions/delete-review-comment.d.ts +2 -1
  167. package/dist/review/actions/delete-review-comment.js +11 -3
  168. package/dist/review/actions/delete-review-comment.js.map +1 -1
  169. package/dist/review/actions/resolve-review-thread.d.ts +2 -1
  170. package/dist/review/actions/resolve-review-thread.js +5 -2
  171. package/dist/review/actions/resolve-review-thread.js.map +1 -1
  172. package/dist/review/index.d.ts +1 -1
  173. package/dist/review/index.d.ts.map +1 -1
  174. package/dist/review/index.js +1 -1
  175. package/dist/review/index.js.map +1 -1
  176. package/dist/review/registry.d.ts.map +1 -1
  177. package/dist/review/registry.js +14 -12
  178. package/dist/review/registry.js.map +1 -1
  179. package/dist/review/store.d.ts +3 -3
  180. package/dist/review/store.d.ts.map +1 -1
  181. package/dist/review/store.js +7 -4
  182. package/dist/review/store.js.map +1 -1
  183. package/dist/secrets/routes.d.ts +9 -9
  184. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  185. package/dist/server/agent-chat-plugin.js +5 -0
  186. package/dist/server/agent-chat-plugin.js.map +1 -1
  187. package/dist/server/credential-provider.d.ts +2 -0
  188. package/dist/server/credential-provider.d.ts.map +1 -1
  189. package/dist/server/credential-provider.js +13 -3
  190. package/dist/server/credential-provider.js.map +1 -1
  191. package/package.json +1 -1
package/dist/cli/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { execSync, spawn } from "child_process";
3
3
  import fs from "fs";
4
+ import { createRequire } from "module";
4
5
  import path from "path";
5
6
  import { fileURLToPath } from "url";
6
7
  import * as Sentry from "@sentry/node";
@@ -217,12 +218,21 @@ function handleScaffoldImportError(err) {
217
218
  Sentry.flush(2000).finally(() => process.exit(1));
218
219
  throw err;
219
220
  }
221
+ function findBinUpwards(binName) {
222
+ let dir = process.cwd();
223
+ for (let i = 0; i < 20; i++) {
224
+ const candidate = path.join(dir, "node_modules", ".bin", binName);
225
+ if (fs.existsSync(candidate))
226
+ return candidate;
227
+ const parent = path.dirname(dir);
228
+ if (parent === dir)
229
+ break;
230
+ dir = parent;
231
+ }
232
+ return undefined;
233
+ }
220
234
  function findViteBin() {
221
- // Look for vite in node_modules/.bin
222
- const localVite = path.resolve("node_modules/.bin/vite");
223
- if (fs.existsSync(localVite))
224
- return localVite;
225
- return "vite"; // fallback to PATH
235
+ return findBinUpwards("vite") ?? "vite";
226
236
  }
227
237
  function findTsxBin() {
228
238
  const localTsx = path.resolve("node_modules/.bin/tsx");
@@ -240,16 +250,71 @@ function findTypeScriptCompilerBin() {
240
250
  return "tsgo";
241
251
  }
242
252
  function findReactRouterBin() {
243
- const localBin = path.resolve("node_modules/.bin/react-router");
244
- if (fs.existsSync(localBin))
245
- return localBin;
246
- return "react-router";
253
+ return findBinUpwards("react-router") ?? "react-router";
247
254
  }
248
255
  /** Check if the project uses React Router framework mode (has react-router.config.ts) */
249
256
  function isReactRouterFramework() {
250
257
  return (fs.existsSync(path.resolve("react-router.config.ts")) ||
251
258
  fs.existsSync(path.resolve("react-router.config.js")));
252
259
  }
260
+ function canResolveFromProject(specifier) {
261
+ try {
262
+ const requireFromProject = createRequire(path.resolve("package.json"));
263
+ requireFromProject.resolve(specifier);
264
+ return true;
265
+ }
266
+ catch {
267
+ return false;
268
+ }
269
+ }
270
+ function projectUsesFsRoutes() {
271
+ for (const file of [
272
+ path.resolve("app/routes.ts"),
273
+ path.resolve("app/routes.tsx"),
274
+ path.resolve("routes.ts"),
275
+ path.resolve("routes.tsx"),
276
+ ]) {
277
+ try {
278
+ if (fs.existsSync(file) &&
279
+ fs.readFileSync(file, "utf-8").includes("@react-router/fs-routes")) {
280
+ return true;
281
+ }
282
+ }
283
+ catch { }
284
+ }
285
+ return false;
286
+ }
287
+ function validateReactRouterBuildDependencies() {
288
+ const required = [
289
+ ["react-router", "react-router"],
290
+ ["@react-router/dev", "@react-router/dev/vite"],
291
+ ["vite", "vite"],
292
+ ];
293
+ if (projectUsesFsRoutes()) {
294
+ required.push(["@react-router/fs-routes", "@react-router/fs-routes"]);
295
+ }
296
+ const missing = required
297
+ .filter(([, specifier]) => !canResolveFromProject(specifier))
298
+ .map(([packageName]) => packageName);
299
+ if (missing.length === 0)
300
+ return;
301
+ const packageManager = fs.existsSync(path.resolve("pnpm-lock.yaml"))
302
+ ? "pnpm"
303
+ : fs.existsSync(path.resolve("yarn.lock"))
304
+ ? "yarn"
305
+ : "npm";
306
+ const installCommand = packageManager === "pnpm"
307
+ ? `pnpm add ${missing.join(" ")}`
308
+ : packageManager === "yarn"
309
+ ? `yarn add ${missing.join(" ")}`
310
+ : `npm install ${missing.join(" ")}`;
311
+ console.error([
312
+ "React Router framework mode requires build packages that are not installed from this app root.",
313
+ `Missing: ${missing.join(", ")}`,
314
+ `Install them with: ${installCommand}`,
315
+ ].join("\n"));
316
+ process.exit(1);
317
+ }
253
318
  function isWorkspaceRoot() {
254
319
  const pkgPath = path.resolve("package.json");
255
320
  if (!fs.existsSync(pkgPath))
@@ -425,6 +490,7 @@ switch (command) {
425
490
  // continuation only runs on success.
426
491
  (async () => {
427
492
  if (isReactRouterFramework()) {
493
+ validateReactRouterBuildDependencies();
428
494
  const rr = findReactRouterBin();
429
495
  console.log("Building (React Router framework mode)...");
430
496
  await runBuildStep(rr, ["build"], { label: "react-router-build" });
@@ -519,6 +585,7 @@ switch (command) {
519
585
  // Run TypeScript type checking
520
586
  // React Router framework mode generates route types first
521
587
  if (isReactRouterFramework()) {
588
+ validateReactRouterBuildDependencies();
522
589
  const rr = findReactRouterBin();
523
590
  try {
524
591
  execSync(`${rr} typegen`, { stdio: "inherit" });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport { execSync, spawn } from \"child_process\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\n\nimport * as Sentry from \"@sentry/node\";\n\n// Resolve version once at module scope — used by both --version and --help\nlet _version = \"unknown\";\ntry {\n const __dirname = path.dirname(fileURLToPath(import.meta.url));\n // dist/cli/index.js → ../../package.json\n const pkg = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, \"../../package.json\"), \"utf-8\"),\n );\n _version = pkg.version;\n} catch {}\n\n// Fail fast on unsupported Node versions. `engines.node: \">=22\"` is only\n// advisory — npx/pnpm merely warn — so without this an older Node (18/20)\n// first fails deep inside a scaffold dynamic import with a cryptic\n// ERR_MODULE / syntax error that `handleScaffoldImportError` misreports as a\n// corrupt npx cache. A clear up-front message saves that whole detour.\nconst REQUIRED_NODE_MAJOR = 22;\nconst _nodeMajor = Number(process.versions.node.split(\".\")[0]);\nif (Number.isFinite(_nodeMajor) && _nodeMajor < REQUIRED_NODE_MAJOR) {\n console.error(\n `agent-native requires Node.js ${REQUIRED_NODE_MAJOR} or newer, but you're on Node ${process.versions.node}.\\n` +\n `Upgrade Node (https://nodejs.org) and re-run. With nvm: \\`nvm install ${REQUIRED_NODE_MAJOR}\\`.`,\n );\n process.exit(1);\n}\n\n/**\n * Build a redacted \"command\" tag from process.argv. Strips the value that\n * follows any --token / --key / --secret / --password / --api-key flag so\n * we don't ship developer secrets to Sentry alongside the crash.\n *\n * Supports both `--token foo` (separate argv item) and `--token=foo`\n * (combined argv item) forms.\n */\nconst SECRET_FLAG_RE = /^--?(token|key|secret|password|api[_-]?key)$/i;\nconst SECRET_FLAG_EQ_RE =\n /^(--?(token|key|secret|password|api[_-]?key))=(.*)$/i;\nfunction buildRedactedCommandTag(argv: string[]): string {\n const out: string[] = [];\n for (let i = 0; i < argv.length; i++) {\n const a = argv[i];\n if (SECRET_FLAG_RE.test(a)) {\n out.push(a);\n // Consume the next argv item as the secret value\n if (i + 1 < argv.length) {\n out.push(\"<redacted>\");\n i++;\n }\n continue;\n }\n const m = a.match(SECRET_FLAG_EQ_RE);\n if (m) {\n out.push(`${m[1]}=<redacted>`);\n continue;\n }\n out.push(a);\n }\n return out.join(\" \");\n}\n\nSentry.init({\n dsn: \"https://0d384e9eff2f6542af468b92769f2f5b@o117565.ingest.us.sentry.io/4511270386466816\",\n release: `agent-native-cli@${_version}`,\n // Sentry's Http integration wraps outgoing fetch in a way that breaks the\n // hosted Plan MCP route negotiation used by recap CI smoke checks.\n integrations: (integrations) =>\n integrations.filter((integration) => integration.name !== \"Http\"),\n // sendDefaultPii MUST stay false — the CLI runs in third-party developer\n // environments and we never want to ship request headers, IPs, cookies,\n // or process env contents to Sentry without explicit consent.\n sendDefaultPii: false,\n beforeSend(event) {\n // Drop expected user-input rejections (validateRepoName, etc.) so they\n // don't pollute Sentry with non-bug noise.\n const exceptionType = event.exception?.values?.[0]?.type;\n if (\n exceptionType === \"ValidationError\" ||\n event.tags?.handled === \"validation\"\n ) {\n return null;\n }\n\n // Defense in depth: strip any sensitive fields that may have been\n // attached to the event despite sendDefaultPii: false (e.g. integrations\n // that capture request metadata).\n if (event.request) {\n if (event.request.headers) {\n const headers = event.request.headers as Record<string, string>;\n for (const k of Object.keys(headers)) {\n const lk = k.toLowerCase();\n if (\n lk === \"cookie\" ||\n lk === \"authorization\" ||\n lk === \"set-cookie\" ||\n lk === \"proxy-authorization\"\n ) {\n delete headers[k];\n }\n }\n }\n // Cookies are also exposed via event.request.cookies as a separate field\n delete (event.request as Record<string, unknown>).cookies;\n }\n // Keep user info that was explicitly set via Sentry.setUser (id/email)\n // so we can attribute crashes back to the operator. Always strip\n // ip_address — the CLI runs on third-party machines and the IP is auto-\n // collected without consent. If only auto-collected fields remain,\n // drop the user object entirely.\n if (event.user) {\n const user = event.user as Record<string, unknown>;\n delete user.ip_address;\n const hasIdentity =\n typeof user.id === \"string\" ||\n typeof user.email === \"string\" ||\n typeof user.username === \"string\";\n if (!hasIdentity) {\n delete event.user;\n }\n }\n // Sentry's contexts can carry process.env snapshots — strip env-shaped\n // contexts so we don't leak deployment secrets.\n if (event.contexts && typeof event.contexts === \"object\") {\n delete (event.contexts as Record<string, unknown>).runtime_env;\n }\n\n event.tags = {\n ...event.tags,\n // Build the command tag from process.argv with secrets redacted so\n // `agent-native ... --token foo` doesn't leak `foo` to Sentry.\n command: buildRedactedCommandTag(process.argv.slice(2)),\n subcommand: process.argv[2] ?? \"none\",\n nodeVersion: process.version,\n platform: process.platform,\n };\n return event;\n },\n});\n\n// Identify the operator so future CLI errors carry spaceId / builderUserId\n// that we can map back to a real Builder user. The CLI doesn't have a real\n// email today — only the env-managed identifiers from the workspace's .env.\n{\n const builderUserId = process.env.BUILDER_USER_ID;\n const builderPublicKey = process.env.BUILDER_PUBLIC_KEY;\n if (builderUserId) {\n Sentry.setUser({ id: builderUserId });\n Sentry.setTag(\"builderUserId\", builderUserId);\n }\n if (builderPublicKey) {\n Sentry.setTag(\"spaceId\", builderPublicKey);\n }\n}\n\nconst FEEDBACK_URL =\n \"https://forms.agent-native.com/f/agent-native-feedback/_16ewV?source=cli\";\nconst BUGS_URL = \"https://github.com/BuilderIO/agent-native/issues\";\n\nconst command = process.argv[2];\n// Filter out bare \"--\" separators that pnpm inserts between its args and script args\nconst args = process.argv.slice(3).filter((a) => a !== \"--\");\n\nfunction parseScaffoldArgs(argv: string[]): {\n name?: string;\n template?: string;\n standalone: boolean;\n headless: boolean;\n} {\n let name: string | undefined;\n let template: string | undefined;\n let standalone = false;\n let headless = false;\n\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n if (arg === \"--template\" && argv[i + 1]) {\n template = argv[++i];\n } else if (arg.startsWith(\"--template=\")) {\n template = arg.slice(\"--template=\".length);\n } else if (arg === \"--standalone\") {\n standalone = true;\n } else if (arg === \"--headless\") {\n headless = true;\n } else if (!arg.startsWith(\"-\") && !name) {\n name = arg;\n }\n }\n\n return { name, template, standalone, headless };\n}\n\n// Track CLI usage (best-effort, non-blocking)\nfunction trackCli(event: string, props?: Record<string, unknown>): void {\n try {\n import(\"../tracking/registry.js\").then((m) => {\n m.track(event, { command, ...props });\n });\n import(\"../tracking/providers.js\").then((m) =>\n m.registerBuiltinProviders(),\n );\n } catch {}\n}\n\n// Global error handler — show feedback link on unhandled crashes\nprocess.on(\"uncaughtException\", (err) => {\n console.error(`\\n Unexpected error: ${err.message}\\n`);\n console.error(` Report this bug: ${BUGS_URL}`);\n console.error(` Send feedback: ${FEEDBACK_URL}\\n`);\n trackCli(\"cli.crash\", { error: err.message });\n Sentry.captureException(err);\n Sentry.flush(2000).finally(() => process.exit(1));\n});\n\nprocess.on(\"unhandledRejection\", (reason: any) => {\n console.error(`\\n Unhandled error: ${reason?.message ?? reason}\\n`);\n console.error(` Report this bug: ${BUGS_URL}`);\n console.error(` Send feedback: ${FEEDBACK_URL}\\n`);\n trackCli(\"cli.crash\", { error: reason?.message ?? String(reason) });\n Sentry.captureException(reason);\n Sentry.flush(2000).finally(() => process.exit(1));\n});\n\n// Surface a self-heal hint when an interrupted `npx @agent-native/core@latest ...`\n// leaves a half-extracted package in the npx cache and a follow-up run fails\n// to load one of our own sub-modules.\nfunction handleScaffoldImportError(err: any): never {\n const msg = err?.message ?? String(err);\n const looksLikeCorruptCache =\n err?.code === \"ERR_MODULE_NOT_FOUND\" ||\n err?.code === \"MODULE_NOT_FOUND\" ||\n err?.code === \"ENOENT\" ||\n /Cannot find module|tarball|integrity|EINTEGRITY|corrupt|truncated/i.test(\n msg,\n );\n if (looksLikeCorruptCache) {\n console.error(\n `\\n Failed to load the scaffolder. This usually means an earlier\\n \\`npx\\` run was interrupted and left a corrupt cache.\\n\\n Clear the npx cache and try again:\\n rm -rf ~/.npm/_npx\\n npx @agent-native/core@latest create\\n\\n Original error: ${msg}\\n`,\n );\n } else {\n console.error(`\\n Failed to load the scaffolder: ${msg}\\n`);\n }\n trackCli(\"cli.scaffold.import_error\", { error: msg });\n Sentry.captureException(err);\n Sentry.flush(2000).finally(() => process.exit(1));\n throw err;\n}\n\nfunction findViteBin(): string {\n // Look for vite in node_modules/.bin\n const localVite = path.resolve(\"node_modules/.bin/vite\");\n if (fs.existsSync(localVite)) return localVite;\n return \"vite\"; // fallback to PATH\n}\n\nfunction findTsxBin(): string {\n const localTsx = path.resolve(\"node_modules/.bin/tsx\");\n if (fs.existsSync(localTsx)) return localTsx;\n return \"tsx\";\n}\n\nfunction findTypeScriptCompilerBin(): string {\n const localTsgo = path.resolve(\"node_modules/.bin/tsgo\");\n if (fs.existsSync(localTsgo)) return localTsgo;\n\n const localTsc = path.resolve(\"node_modules/.bin/tsc\");\n if (fs.existsSync(localTsc)) return localTsc;\n\n return \"tsgo\";\n}\n\nfunction findReactRouterBin(): string {\n const localBin = path.resolve(\"node_modules/.bin/react-router\");\n if (fs.existsSync(localBin)) return localBin;\n return \"react-router\";\n}\n\n/** Check if the project uses React Router framework mode (has react-router.config.ts) */\nfunction isReactRouterFramework(): boolean {\n return (\n fs.existsSync(path.resolve(\"react-router.config.ts\")) ||\n fs.existsSync(path.resolve(\"react-router.config.js\"))\n );\n}\n\nfunction isWorkspaceRoot(): boolean {\n const pkgPath = path.resolve(\"package.json\");\n if (!fs.existsSync(pkgPath)) return false;\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n return (\n typeof pkg?.[\"agent-native\"]?.workspaceCore === \"string\" &&\n fs.existsSync(path.resolve(\"apps\"))\n );\n } catch {\n return false;\n }\n}\n\nfunction run(\n cmd: string,\n cmdArgs: string[],\n opts?: { stdio?: \"inherit\" | \"pipe\" },\n) {\n const child = spawn(cmd, cmdArgs, {\n stdio: opts?.stdio ?? \"inherit\",\n shell: process.platform === \"win32\",\n env: process.env,\n });\n child.on(\"exit\", (code) => process.exit(code ?? 0));\n // Forward signals to child so Cmd+C doesn't leave zombie processes holding ports\n for (const sig of [\"SIGINT\", \"SIGTERM\", \"SIGHUP\"] as const) {\n process.on(sig, () => {\n child.kill(sig);\n setTimeout(() => {\n try {\n child.kill(\"SIGKILL\");\n } catch {}\n process.exit(1);\n }, 5000).unref();\n });\n }\n return child;\n}\n\n/**\n * Walk up from `cwd` and try to figure out which template / app this build\n * is running for. We look for two patterns:\n *\n * - `templates/<name>/...` — building inside the framework monorepo\n * - `apps/<name>/...` — building inside a scaffolded workspace\n *\n * Both, neither, or one may match. Used purely as Sentry tags so we can\n * filter the noisy \"Command failed: react-router build\" issues by template.\n */\nfunction inferBuildContext(cwd: string): {\n template?: string;\n app?: string;\n} {\n const segs = cwd.split(path.sep);\n let template: string | undefined;\n let app: string | undefined;\n for (let i = 0; i < segs.length - 1; i++) {\n if (segs[i] === \"templates\" && segs[i + 1] && !segs[i + 1].startsWith(\".\"))\n template = segs[i + 1];\n if (segs[i] === \"apps\" && segs[i + 1] && !segs[i + 1].startsWith(\".\"))\n app = segs[i + 1];\n }\n return { template, app };\n}\n\n/**\n * Run a build subcommand, streaming its stdout/stderr to the user's terminal\n * in real time while also capturing bounded tails for Sentry. On non-zero\n * exit we report a structured event (template, app, exit code, stderr/stdout\n * tails) and exit with the child's code. We deliberately do NOT throw — the\n * global uncaughtException handler would re-capture with a generic\n * \"Error: Command failed\" title, collapsing every template's failure into\n * one issue (which is exactly what we're trying to fix here).\n */\nfunction runBuildStep(\n cmd: string,\n cmdArgs: string[],\n opts: { label: string; env?: NodeJS.ProcessEnv },\n): Promise<void> {\n return new Promise<void>((resolve) => {\n const STDERR_TAIL_BYTES = 8000;\n const STDOUT_TAIL_BYTES = 4000;\n let stderrBuf = \"\";\n let stdoutBuf = \"\";\n\n const child = spawn(cmd, cmdArgs, {\n stdio: [\"inherit\", \"pipe\", \"pipe\"],\n shell: process.platform === \"win32\",\n env: opts.env ?? process.env,\n });\n\n child.stdout?.on(\"data\", (chunk: Buffer) => {\n process.stdout.write(chunk);\n const next = stdoutBuf + chunk.toString(\"utf-8\");\n stdoutBuf =\n next.length > STDOUT_TAIL_BYTES ? next.slice(-STDOUT_TAIL_BYTES) : next;\n });\n child.stderr?.on(\"data\", (chunk: Buffer) => {\n process.stderr.write(chunk);\n const next = stderrBuf + chunk.toString(\"utf-8\");\n stderrBuf =\n next.length > STDERR_TAIL_BYTES ? next.slice(-STDERR_TAIL_BYTES) : next;\n });\n\n child.on(\"error\", (err) => {\n // Failure to spawn (ENOENT, etc.).\n const cwd = process.cwd();\n const { template, app } = inferBuildContext(cwd);\n Sentry.captureException(err, {\n tags: {\n buildStep: opts.label,\n ...(template ? { template } : {}),\n ...(app ? { app } : {}),\n },\n extra: {\n command: `${cmd} ${cmdArgs.join(\" \")}`,\n cwd,\n stage: \"spawn\",\n },\n });\n Sentry.flush(2000).finally(() => process.exit(1));\n });\n\n child.on(\"exit\", (code, signal) => {\n const exitCode = code ?? (signal ? 1 : 0);\n if (exitCode === 0) {\n resolve();\n return;\n }\n const cwd = process.cwd();\n const { template, app } = inferBuildContext(cwd);\n const childCommand = `${cmd} ${cmdArgs.join(\" \")}`;\n const err = new Error(\n `Build step \"${opts.label}\" failed with exit code ${exitCode}` +\n (template ? ` (template=${template})` : \"\") +\n (app ? ` (app=${app})` : \"\"),\n );\n Sentry.captureException(err, {\n tags: {\n buildStep: opts.label,\n ...(template ? { template } : {}),\n ...(app ? { app } : {}),\n },\n extra: {\n command: childCommand,\n cwd,\n exitCode,\n signal: signal ?? null,\n stderrTail: stderrBuf,\n stdoutTail: stdoutBuf,\n },\n });\n // Don't throw — see comment on runBuildStep above.\n Sentry.flush(2000).finally(() => process.exit(exitCode));\n });\n });\n}\n\ntrackCli(\"cli.run\");\n\nswitch (command) {\n case \"dev\": {\n if (isWorkspaceRoot()) {\n import(\"./workspace-dev.js\")\n .then((m) => m.runWorkspaceDev({ args }))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n const vite = findViteBin();\n run(vite, args);\n break;\n }\n\n case \"workspace-dev\": {\n import(\"./workspace-dev.js\")\n .then((m) => m.runWorkspaceDev({ args }))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"build\": {\n // React Router framework mode uses `react-router build` which\n // internally runs `vite build` with proper environment orchestration.\n // Legacy SPA mode uses `vite build` directly.\n //\n // Each step uses runBuildStep so that on failure we get a Sentry event\n // tagged with template/app and including stderr/stdout tails. If the\n // child exits non-zero, runBuildStep calls process.exit itself; the\n // continuation only runs on success.\n (async () => {\n if (isReactRouterFramework()) {\n const rr = findReactRouterBin();\n console.log(\"Building (React Router framework mode)...\");\n await runBuildStep(rr, [\"build\"], { label: \"react-router-build\" });\n } else {\n const vite = findViteBin();\n console.log(\"Building...\");\n await runBuildStep(vite, [\"build\"], { label: \"vite-build\" });\n }\n\n // Post-build: framework-mode apps also need a Nitro server bundle for\n // `agent-native start` and for serverless presets.\n if (isReactRouterFramework()) {\n const __dirname = path.dirname(fileURLToPath(import.meta.url));\n const deployBuild = path.resolve(__dirname, \"../deploy/build.js\");\n if (fs.existsSync(deployBuild)) {\n await runBuildStep(\"node\", [deployBuild], {\n label: \"deploy-build\",\n env: process.env,\n });\n } else {\n console.warn(\n `[build] Deploy build script not found at ${deployBuild}. Skipping post-build step.`,\n );\n }\n }\n\n console.log(\"\\nBuild complete.\");\n })().catch((err) => {\n // runBuildStep handles its own failures and exits, so reaching here\n // implies a programming error in the orchestration above. Capture\n // and exit so the global unhandledRejection handler doesn't double-\n // report with a generic title.\n Sentry.captureException(err);\n Sentry.flush(2000).finally(() => process.exit(1));\n });\n break;\n }\n\n case \"start\": {\n // Like `next start` — runs Nitro production server\n const serverEntry = path.resolve(\".output/server/index.mjs\");\n if (!fs.existsSync(serverEntry)) {\n console.error(\n 'No production build found. Run \"agent-native build\" first.',\n );\n process.exit(1);\n }\n run(\"node\", [serverEntry, ...args]);\n break;\n }\n\n case \"action\": {\n // Run an action from actions/ (or scripts/ for backwards compat)\n const actionName = args[0];\n if (!actionName) {\n console.error(\n `Usage: agent-native action <name> ['{\"arg\":\"value\"}'] [--args]`,\n );\n process.exit(1);\n }\n const tsxAction = findTsxBin();\n // Try actions/run.ts first, fall back to scripts/run.ts\n const actionsRun = path.resolve(\"actions/run.ts\");\n const scriptsRun = path.resolve(\"scripts/run.ts\");\n const runFile = fs.existsSync(actionsRun) ? actionsRun : scriptsRun;\n run(tsxAction, [runFile, ...args]);\n break;\n }\n\n case \"agent\": {\n import(\"./agent.js\")\n .then(async (m) => {\n const code = await m.runAgent(args);\n if (code !== 0) process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"script\": {\n // @deprecated — use `agent-native action` instead\n const scriptName = args[0];\n if (!scriptName) {\n console.error(\"Usage: agent-native script <name> [--args]\");\n process.exit(1);\n }\n const tsx = findTsxBin();\n // Try actions/run.ts first, fall back to scripts/run.ts\n const actionsRunScript = path.resolve(\"actions/run.ts\");\n const scriptsRunScript = path.resolve(\"scripts/run.ts\");\n const runFileScript = fs.existsSync(actionsRunScript)\n ? actionsRunScript\n : scriptsRunScript;\n run(tsx, [runFileScript, ...args]);\n break;\n }\n\n case \"typecheck\": {\n // Run TypeScript type checking\n // React Router framework mode generates route types first\n if (isReactRouterFramework()) {\n const rr = findReactRouterBin();\n try {\n execSync(`${rr} typegen`, { stdio: \"inherit\" });\n } catch {\n // typegen may fail if routes aren't set up yet; continue to TypeScript.\n }\n }\n run(findTypeScriptCompilerBin(), [\"--noEmit\", ...args]);\n break;\n }\n\n case \"create\": {\n // Defaults to creating a workspace with a multi-select template picker.\n // Use --standalone for the old single-app flow.\n // --template foo,bar Pre-select multiple templates in the picker\n // --standalone Scaffold a single standalone app\n const parsed = parseScaffoldArgs(args);\n import(\"./create.js\")\n .then((m) =>\n m.createApp(parsed.name, {\n template: parsed.headless ? \"headless\" : parsed.template,\n standalone: parsed.standalone,\n }),\n )\n .catch(handleScaffoldImportError);\n break;\n }\n\n case \"invoke\": {\n import(\"./invoke.js\")\n .then(async (m) => {\n const code = await m.runInvoke(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"agents\": {\n import(\"./agents.js\")\n .then(async (m) => {\n const code = await m.runAgents(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"migrate\": {\n import(\"./migrate.js\")\n .then((m) => m.runMigrate(args))\n .catch(handleScaffoldImportError);\n break;\n }\n\n case \"code\": {\n import(\"./code.js\")\n .then((m) => m.runCode(args))\n .catch(handleScaffoldImportError);\n break;\n }\n\n case \"mcp\": {\n // Connect external coding agents (Claude Code, Cowork, Codex) over MCP.\n // `mcp serve` runs the stdio transport; install/uninstall/status/token\n // manage client configs + the local token.\n import(\"./mcp.js\")\n .then((m) => m.runMcp(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"connect\": {\n // Wire your local coding agent to a DEPLOYED agent-native app via a\n // browser device-code flow (no token copying). `--all` connects every\n // first-party hosted app; `--token` is the no-browser fallback.\n import(\"./connect.js\")\n .then(async (m) => {\n await m.runConnect(args);\n process.exit(process.exitCode ?? 0);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"reconnect\":\n case \"reauth\": {\n // Refresh an existing remote MCP auth/config entry without reinstalling\n // app skills or running the broader connector setup path.\n import(\"./connect.js\")\n .then((m) => m.runConnect([\"reconnect\", ...args]))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"app-skill\": {\n // Package or install an agent-native app as a skill-backed MCP/app bundle.\n import(\"./app-skill.js\")\n .then((m) => m.runAppSkill(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"skills\": {\n // Friendly skill install surface. Wraps open skills installation plus MCP.\n import(\"./skills.js\")\n .then((m) => m.runSkills(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"content\": {\n import(\"./content-local.js\")\n .then(async (m) => {\n const code = await m.runContentLocal(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"visualize-repo\": {\n import(\"./visualize-repo.js\")\n .then(async (m) => {\n const code = await m.runVisualizeRepo(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"design\": {\n import(\"./design-connect.js\")\n .then(async (m) => {\n const code = await m.runDesign(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"recap\": {\n // PR visual recap helpers used by the GitHub Action. Promoted to the CLI\n // so an installed repo's workflow can call `agent-native recap …` instead\n // of copying helper scripts. Run `agent-native recap help` for the full\n // subcommand list.\n import(\"./recap.js\")\n .then((m) => m.runRecap(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"plan\": {\n // Plan authoring helpers: local MDX preview plus a no-auth block catalog\n // fetcher for text-only/local installs.\n import(\"./plan-local.js\")\n .then((m) => m.runPlan(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"create-workspace\": {\n // Deprecated alias for `create` (since workspace is now the default).\n const parsed = parseScaffoldArgs(args);\n import(\"./create-workspace.js\")\n .then((m) =>\n m.createWorkspace({ name: parsed.name, template: parsed.template }),\n )\n .catch(handleScaffoldImportError);\n break;\n }\n\n case \"add-app\": {\n // Add one or more apps to the current workspace.\n const parsed = parseScaffoldArgs(args);\n import(\"./create.js\")\n .then((m) =>\n m.addAppToWorkspace(parsed.name, { template: parsed.template }),\n )\n .catch(handleScaffoldImportError);\n break;\n }\n\n case \"deploy\": {\n // Build and deploy the entire workspace as one unit. Each app is served\n // at /<app>/* under the same origin.\n import(\"../deploy/workspace-deploy.js\")\n .then((m) => m.runWorkspaceDeploy({ args }))\n .catch((err) => {\n console.error(\"Deploy failed:\", err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"setup-agents\": {\n import(\"./setup-agents.js\").then((m) => m.runSetupAgents());\n break;\n }\n\n case \"info\": {\n // Print read-only info about an installable package (e.g. @agent-native/scheduling).\n // Lists subpath exports, source paths in node_modules, and docs pointers.\n import(\"./info.js\").then((m) => m.runInfo(args[0]));\n break;\n }\n\n case \"add\": {\n // Blueprint installer (à la Flue's `flue add`): instead of scaffolding\n // files, emit a curated Markdown integration blueprint to stdout so it can\n // be piped into a coding agent — `agent-native add provider stripe | claude`.\n // A URL instead of a name yields a generic research-and-integrate blueprint.\n import(\"./add.js\")\n .then((m) => {\n const code = m.runAdd(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"audit-agent-web\": {\n import(\"./audit-agent-web.js\")\n .then((m) => m.runAuditAgentWeb(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"eval\": {\n // Discover and run the app's evals (**/*.eval.ts, evals/*.ts), score the\n // agent's output, and exit non-zero if any eval falls below its threshold.\n // Doubles as a CI deploy gate. `--json` emits a machine-readable report.\n import(\"./eval.js\")\n .then((m) => m.runEval(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"changelog\": {\n // Author and roll up the app's user-facing changelog (changeset-style\n // pending entry files → a dated CHANGELOG.md section).\n import(\"./changelog.js\")\n .then(async (m) => {\n const code = await m.runChangelog(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"--version\":\n case \"-v\": {\n console.log(_version);\n break;\n }\n\n case undefined:\n import(\"./code.js\")\n .then((m) => m.runCode([]))\n .catch(handleScaffoldImportError);\n break;\n\n case \"--help\":\n case \"-h\":\n console.log(`agent-native v${_version}\n\nUsage:\n agent-native Launch Agent-Native Code workspace\n agent-native \"fix tests\" Start an Agent-Native Code coding session\n agent-native dev Start development server\n (or the workspace gateway at a workspace root)\n agent-native build Build for production (client + server)\n agent-native start Start production server\n agent-native action <name> Run an action from actions/\n agent-native agent \"prompt\" Run the app-agent loop once against local actions\n agent-native agents list List connected/discoverable agents\n agent-native invoke <app> \"prompt\"\n Call another agent-native app over A2A\n agent-native script <name> Run an action (deprecated alias for 'action')\n agent-native typecheck Run TypeScript type checking\n agent-native create [name] Scaffold a new agent-native workspace with a\n multi-select template picker. Use --standalone\n for a single-app scaffold.\n agent-native code Launch Agent-Native Code workspace. Type a task or\n use goals like /migrate and /audit.\n agent-native code serve Run the Agent-Native Code remote connector.\n agent-native mcp <cmd> Connect external coding agents over MCP.\n cmds: serve | install | uninstall | status |\n token (--client claude-code|codex|cowork|\n cursor|opencode|github-copilot)\n agent-native connect <url> Authenticate your coding agent to a DEPLOYED app.\n OAuth-capable clients (Claude Code) get a /mcp\n authenticate prompt; Codex / Cowork use the\n browser device-code flow. --all connects every\n first-party app; --token is the no-browser\n fallback. Usually run for you by 'skills add'.\n agent-native reconnect [url] Re-authenticate an existing MCP entry without\n reinstalling app skills/connectors.\n agent-native app-skill <cmd> Install, launch, or package app-backed skills.\n cmds: ensure | launch | pack\n agent-native skills add assets|content|design-exploration|visual-edit|visual-plan|visual-recap|context-xray\n Install the skill instructions, register the MCP\n connector, AND authenticate it in one step.\n --no-connect skips auth (run 'connect' later);\n non-interactive shells print the connect command.\n --with-github-action also writes the PR Visual\n Recap workflow into .github/workflows/.\n agent-native content local-files <file-or-folder>\n Launch Content in local-file mode for a local\n docs/content folder. Use --no-open, --port N,\n or --profile docs/no-bookkeeping as needed.\n agent-native design connect Start a localhost Design bridge for a running\n dev server. Use --url, --port, --root, or\n --json to print the route/source manifest.\n agent-native recap <cmd> PR visual recap setup and GitHub Action helpers.\n Run 'agent-native recap help' for subcommands.\n agent-native plan <cmd> Plan helpers for block catalogs and local files.\n cmds: blocks | local init | local check |\n local serve | local verify | local preview\n agent-native migrate <source> Create an Agent-Native Code /migrate session, or use\n --emit for a portable own-agent dossier.\n agent-native add-app [name] Add one or more apps to the current workspace\n agent-native workspace-dev Start the multi-app workspace gateway\n agent-native deploy Build & deploy every app in the workspace to\n a single origin (your-agents.com/<app>/*)\n agent-native setup-agents Create symlinks for all agent tools\n agent-native info <pkg> Print info about an installed package:\n exports, source paths, and docs links.\n agent-native add <kind> <name|url>\n Emit an integration blueprint to stdout for your\n coding agent to apply. Pipe it in:\n 'agent-native add provider stripe | claude'.\n kinds: provider | channel | sandbox | action.\n Pass a URL instead of a name for a generic\n research-and-integrate blueprint. --list to\n browse available blueprints.\n agent-native changelog <cmd> Author the app's user-facing changelog.\n cmds: add \"<summary>\" [--type added|fixed|...] |\n release | list. Pending entries live in\n changelog/; 'release' rolls them into CHANGELOG.md.\n agent-native audit-agent-web Audit a public URL for agent-readable surfaces\n agent-native eval [pattern] Run the app's evals (**/*.eval.ts, evals/*.ts)\n and exit non-zero if any scores below its\n threshold. A CI deploy gate. --json for CI,\n --threshold N to override all thresholds.\n\nOptions:\n -h, --help Show this help message\n -v, --version Show version number\n --template <names> Comma-separated templates to pre-select\n (mail,calendar,analytics,...) — or\n github:user/repo for community templates\n --headless Create the primitive-first action-only scaffold\n --standalone Scaffold a single standalone app (no workspace)\n --emit [dir] With migrate, emit an own-agent dossier\n --describe <text> With migrate, describe URL/prose-only sources\n --preset <name> Workspace deploy preset:\n cloudflare_pages (default), netlify, or vercel\n --build-only Build workspace deploy artifacts without publishing\n --eager With workspace dev, start every app immediately\n --url <url> URL to audit with audit-agent-web\n\nFeedback: ${FEEDBACK_URL}\nBugs: ${BUGS_URL}`);\n break;\n\n default:\n if (command && !command.startsWith(\"-\")) {\n // A bare, single command-like token with no further args is almost\n // always a mistyped subcommand (e.g. `agent-native destory`). Silently\n // forwarding it to the coding agent would run an LLM with file-write\n // powers on a typo — a real footgun on a code-modifying tool. Refuse it\n // and point at the explicit forms. Intentional natural-language tasks\n // are still dispatched: a quoted phrase (`agent-native \"fix tests\"`,\n // which arrives as one argv token containing a space) or multi-word\n // input (`agent-native fix the tests`, which has trailing args).\n const looksLikeMistypedSubcommand =\n args.length === 0 && /^[a-z][a-z0-9-]*$/i.test(command);\n if (!looksLikeMistypedSubcommand) {\n import(\"./code.js\")\n .then((m) => m.runCode([command, ...args]))\n .catch(handleScaffoldImportError);\n break;\n }\n console.error(`Unknown command: ${command}`);\n console.error(\n `If you meant to start a coding session with this as the task, run:\\n` +\n ` agent-native code ${JSON.stringify(command)}\\n` +\n `or quote a natural-language task:\\n` +\n ` agent-native \"fix the failing tests\"`,\n );\n console.error('Run \"agent-native --help\" for usage.');\n console.error(`Bugs: ${BUGS_URL}`);\n process.exit(1);\n }\n console.error(`Unknown command: ${command}`);\n console.error('Run \"agent-native --help\" for usage.');\n console.error(`Bugs: ${BUGS_URL}`);\n process.exit(1);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport { execSync, spawn } from \"child_process\";\nimport fs from \"fs\";\nimport { createRequire } from \"module\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\n\nimport * as Sentry from \"@sentry/node\";\n\n// Resolve version once at module scope — used by both --version and --help\nlet _version = \"unknown\";\ntry {\n const __dirname = path.dirname(fileURLToPath(import.meta.url));\n // dist/cli/index.js → ../../package.json\n const pkg = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, \"../../package.json\"), \"utf-8\"),\n );\n _version = pkg.version;\n} catch {}\n\n// Fail fast on unsupported Node versions. `engines.node: \">=22\"` is only\n// advisory — npx/pnpm merely warn — so without this an older Node (18/20)\n// first fails deep inside a scaffold dynamic import with a cryptic\n// ERR_MODULE / syntax error that `handleScaffoldImportError` misreports as a\n// corrupt npx cache. A clear up-front message saves that whole detour.\nconst REQUIRED_NODE_MAJOR = 22;\nconst _nodeMajor = Number(process.versions.node.split(\".\")[0]);\nif (Number.isFinite(_nodeMajor) && _nodeMajor < REQUIRED_NODE_MAJOR) {\n console.error(\n `agent-native requires Node.js ${REQUIRED_NODE_MAJOR} or newer, but you're on Node ${process.versions.node}.\\n` +\n `Upgrade Node (https://nodejs.org) and re-run. With nvm: \\`nvm install ${REQUIRED_NODE_MAJOR}\\`.`,\n );\n process.exit(1);\n}\n\n/**\n * Build a redacted \"command\" tag from process.argv. Strips the value that\n * follows any --token / --key / --secret / --password / --api-key flag so\n * we don't ship developer secrets to Sentry alongside the crash.\n *\n * Supports both `--token foo` (separate argv item) and `--token=foo`\n * (combined argv item) forms.\n */\nconst SECRET_FLAG_RE = /^--?(token|key|secret|password|api[_-]?key)$/i;\nconst SECRET_FLAG_EQ_RE =\n /^(--?(token|key|secret|password|api[_-]?key))=(.*)$/i;\nfunction buildRedactedCommandTag(argv: string[]): string {\n const out: string[] = [];\n for (let i = 0; i < argv.length; i++) {\n const a = argv[i];\n if (SECRET_FLAG_RE.test(a)) {\n out.push(a);\n // Consume the next argv item as the secret value\n if (i + 1 < argv.length) {\n out.push(\"<redacted>\");\n i++;\n }\n continue;\n }\n const m = a.match(SECRET_FLAG_EQ_RE);\n if (m) {\n out.push(`${m[1]}=<redacted>`);\n continue;\n }\n out.push(a);\n }\n return out.join(\" \");\n}\n\nSentry.init({\n dsn: \"https://0d384e9eff2f6542af468b92769f2f5b@o117565.ingest.us.sentry.io/4511270386466816\",\n release: `agent-native-cli@${_version}`,\n // Sentry's Http integration wraps outgoing fetch in a way that breaks the\n // hosted Plan MCP route negotiation used by recap CI smoke checks.\n integrations: (integrations) =>\n integrations.filter((integration) => integration.name !== \"Http\"),\n // sendDefaultPii MUST stay false — the CLI runs in third-party developer\n // environments and we never want to ship request headers, IPs, cookies,\n // or process env contents to Sentry without explicit consent.\n sendDefaultPii: false,\n beforeSend(event) {\n // Drop expected user-input rejections (validateRepoName, etc.) so they\n // don't pollute Sentry with non-bug noise.\n const exceptionType = event.exception?.values?.[0]?.type;\n if (\n exceptionType === \"ValidationError\" ||\n event.tags?.handled === \"validation\"\n ) {\n return null;\n }\n\n // Defense in depth: strip any sensitive fields that may have been\n // attached to the event despite sendDefaultPii: false (e.g. integrations\n // that capture request metadata).\n if (event.request) {\n if (event.request.headers) {\n const headers = event.request.headers as Record<string, string>;\n for (const k of Object.keys(headers)) {\n const lk = k.toLowerCase();\n if (\n lk === \"cookie\" ||\n lk === \"authorization\" ||\n lk === \"set-cookie\" ||\n lk === \"proxy-authorization\"\n ) {\n delete headers[k];\n }\n }\n }\n // Cookies are also exposed via event.request.cookies as a separate field\n delete (event.request as Record<string, unknown>).cookies;\n }\n // Keep user info that was explicitly set via Sentry.setUser (id/email)\n // so we can attribute crashes back to the operator. Always strip\n // ip_address — the CLI runs on third-party machines and the IP is auto-\n // collected without consent. If only auto-collected fields remain,\n // drop the user object entirely.\n if (event.user) {\n const user = event.user as Record<string, unknown>;\n delete user.ip_address;\n const hasIdentity =\n typeof user.id === \"string\" ||\n typeof user.email === \"string\" ||\n typeof user.username === \"string\";\n if (!hasIdentity) {\n delete event.user;\n }\n }\n // Sentry's contexts can carry process.env snapshots — strip env-shaped\n // contexts so we don't leak deployment secrets.\n if (event.contexts && typeof event.contexts === \"object\") {\n delete (event.contexts as Record<string, unknown>).runtime_env;\n }\n\n event.tags = {\n ...event.tags,\n // Build the command tag from process.argv with secrets redacted so\n // `agent-native ... --token foo` doesn't leak `foo` to Sentry.\n command: buildRedactedCommandTag(process.argv.slice(2)),\n subcommand: process.argv[2] ?? \"none\",\n nodeVersion: process.version,\n platform: process.platform,\n };\n return event;\n },\n});\n\n// Identify the operator so future CLI errors carry spaceId / builderUserId\n// that we can map back to a real Builder user. The CLI doesn't have a real\n// email today — only the env-managed identifiers from the workspace's .env.\n{\n const builderUserId = process.env.BUILDER_USER_ID;\n const builderPublicKey = process.env.BUILDER_PUBLIC_KEY;\n if (builderUserId) {\n Sentry.setUser({ id: builderUserId });\n Sentry.setTag(\"builderUserId\", builderUserId);\n }\n if (builderPublicKey) {\n Sentry.setTag(\"spaceId\", builderPublicKey);\n }\n}\n\nconst FEEDBACK_URL =\n \"https://forms.agent-native.com/f/agent-native-feedback/_16ewV?source=cli\";\nconst BUGS_URL = \"https://github.com/BuilderIO/agent-native/issues\";\n\nconst command = process.argv[2];\n// Filter out bare \"--\" separators that pnpm inserts between its args and script args\nconst args = process.argv.slice(3).filter((a) => a !== \"--\");\n\nfunction parseScaffoldArgs(argv: string[]): {\n name?: string;\n template?: string;\n standalone: boolean;\n headless: boolean;\n} {\n let name: string | undefined;\n let template: string | undefined;\n let standalone = false;\n let headless = false;\n\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n if (arg === \"--template\" && argv[i + 1]) {\n template = argv[++i];\n } else if (arg.startsWith(\"--template=\")) {\n template = arg.slice(\"--template=\".length);\n } else if (arg === \"--standalone\") {\n standalone = true;\n } else if (arg === \"--headless\") {\n headless = true;\n } else if (!arg.startsWith(\"-\") && !name) {\n name = arg;\n }\n }\n\n return { name, template, standalone, headless };\n}\n\n// Track CLI usage (best-effort, non-blocking)\nfunction trackCli(event: string, props?: Record<string, unknown>): void {\n try {\n import(\"../tracking/registry.js\").then((m) => {\n m.track(event, { command, ...props });\n });\n import(\"../tracking/providers.js\").then((m) =>\n m.registerBuiltinProviders(),\n );\n } catch {}\n}\n\n// Global error handler — show feedback link on unhandled crashes\nprocess.on(\"uncaughtException\", (err) => {\n console.error(`\\n Unexpected error: ${err.message}\\n`);\n console.error(` Report this bug: ${BUGS_URL}`);\n console.error(` Send feedback: ${FEEDBACK_URL}\\n`);\n trackCli(\"cli.crash\", { error: err.message });\n Sentry.captureException(err);\n Sentry.flush(2000).finally(() => process.exit(1));\n});\n\nprocess.on(\"unhandledRejection\", (reason: any) => {\n console.error(`\\n Unhandled error: ${reason?.message ?? reason}\\n`);\n console.error(` Report this bug: ${BUGS_URL}`);\n console.error(` Send feedback: ${FEEDBACK_URL}\\n`);\n trackCli(\"cli.crash\", { error: reason?.message ?? String(reason) });\n Sentry.captureException(reason);\n Sentry.flush(2000).finally(() => process.exit(1));\n});\n\n// Surface a self-heal hint when an interrupted `npx @agent-native/core@latest ...`\n// leaves a half-extracted package in the npx cache and a follow-up run fails\n// to load one of our own sub-modules.\nfunction handleScaffoldImportError(err: any): never {\n const msg = err?.message ?? String(err);\n const looksLikeCorruptCache =\n err?.code === \"ERR_MODULE_NOT_FOUND\" ||\n err?.code === \"MODULE_NOT_FOUND\" ||\n err?.code === \"ENOENT\" ||\n /Cannot find module|tarball|integrity|EINTEGRITY|corrupt|truncated/i.test(\n msg,\n );\n if (looksLikeCorruptCache) {\n console.error(\n `\\n Failed to load the scaffolder. This usually means an earlier\\n \\`npx\\` run was interrupted and left a corrupt cache.\\n\\n Clear the npx cache and try again:\\n rm -rf ~/.npm/_npx\\n npx @agent-native/core@latest create\\n\\n Original error: ${msg}\\n`,\n );\n } else {\n console.error(`\\n Failed to load the scaffolder: ${msg}\\n`);\n }\n trackCli(\"cli.scaffold.import_error\", { error: msg });\n Sentry.captureException(err);\n Sentry.flush(2000).finally(() => process.exit(1));\n throw err;\n}\n\nfunction findBinUpwards(binName: string): string | undefined {\n let dir = process.cwd();\n for (let i = 0; i < 20; i++) {\n const candidate = path.join(dir, \"node_modules\", \".bin\", binName);\n if (fs.existsSync(candidate)) return candidate;\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return undefined;\n}\n\nfunction findViteBin(): string {\n return findBinUpwards(\"vite\") ?? \"vite\";\n}\n\nfunction findTsxBin(): string {\n const localTsx = path.resolve(\"node_modules/.bin/tsx\");\n if (fs.existsSync(localTsx)) return localTsx;\n return \"tsx\";\n}\n\nfunction findTypeScriptCompilerBin(): string {\n const localTsgo = path.resolve(\"node_modules/.bin/tsgo\");\n if (fs.existsSync(localTsgo)) return localTsgo;\n\n const localTsc = path.resolve(\"node_modules/.bin/tsc\");\n if (fs.existsSync(localTsc)) return localTsc;\n\n return \"tsgo\";\n}\n\nfunction findReactRouterBin(): string {\n return findBinUpwards(\"react-router\") ?? \"react-router\";\n}\n\n/** Check if the project uses React Router framework mode (has react-router.config.ts) */\nfunction isReactRouterFramework(): boolean {\n return (\n fs.existsSync(path.resolve(\"react-router.config.ts\")) ||\n fs.existsSync(path.resolve(\"react-router.config.js\"))\n );\n}\n\nfunction canResolveFromProject(specifier: string): boolean {\n try {\n const requireFromProject = createRequire(path.resolve(\"package.json\"));\n requireFromProject.resolve(specifier);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction projectUsesFsRoutes(): boolean {\n for (const file of [\n path.resolve(\"app/routes.ts\"),\n path.resolve(\"app/routes.tsx\"),\n path.resolve(\"routes.ts\"),\n path.resolve(\"routes.tsx\"),\n ]) {\n try {\n if (\n fs.existsSync(file) &&\n fs.readFileSync(file, \"utf-8\").includes(\"@react-router/fs-routes\")\n ) {\n return true;\n }\n } catch {}\n }\n return false;\n}\n\nfunction validateReactRouterBuildDependencies(): void {\n const required: Array<[packageName: string, specifier: string]> = [\n [\"react-router\", \"react-router\"],\n [\"@react-router/dev\", \"@react-router/dev/vite\"],\n [\"vite\", \"vite\"],\n ];\n if (projectUsesFsRoutes()) {\n required.push([\"@react-router/fs-routes\", \"@react-router/fs-routes\"]);\n }\n\n const missing = required\n .filter(([, specifier]) => !canResolveFromProject(specifier))\n .map(([packageName]) => packageName);\n\n if (missing.length === 0) return;\n\n const packageManager = fs.existsSync(path.resolve(\"pnpm-lock.yaml\"))\n ? \"pnpm\"\n : fs.existsSync(path.resolve(\"yarn.lock\"))\n ? \"yarn\"\n : \"npm\";\n const installCommand =\n packageManager === \"pnpm\"\n ? `pnpm add ${missing.join(\" \")}`\n : packageManager === \"yarn\"\n ? `yarn add ${missing.join(\" \")}`\n : `npm install ${missing.join(\" \")}`;\n\n console.error(\n [\n \"React Router framework mode requires build packages that are not installed from this app root.\",\n `Missing: ${missing.join(\", \")}`,\n `Install them with: ${installCommand}`,\n ].join(\"\\n\"),\n );\n process.exit(1);\n}\n\nfunction isWorkspaceRoot(): boolean {\n const pkgPath = path.resolve(\"package.json\");\n if (!fs.existsSync(pkgPath)) return false;\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n return (\n typeof pkg?.[\"agent-native\"]?.workspaceCore === \"string\" &&\n fs.existsSync(path.resolve(\"apps\"))\n );\n } catch {\n return false;\n }\n}\n\nfunction run(\n cmd: string,\n cmdArgs: string[],\n opts?: { stdio?: \"inherit\" | \"pipe\" },\n) {\n const child = spawn(cmd, cmdArgs, {\n stdio: opts?.stdio ?? \"inherit\",\n shell: process.platform === \"win32\",\n env: process.env,\n });\n child.on(\"exit\", (code) => process.exit(code ?? 0));\n // Forward signals to child so Cmd+C doesn't leave zombie processes holding ports\n for (const sig of [\"SIGINT\", \"SIGTERM\", \"SIGHUP\"] as const) {\n process.on(sig, () => {\n child.kill(sig);\n setTimeout(() => {\n try {\n child.kill(\"SIGKILL\");\n } catch {}\n process.exit(1);\n }, 5000).unref();\n });\n }\n return child;\n}\n\n/**\n * Walk up from `cwd` and try to figure out which template / app this build\n * is running for. We look for two patterns:\n *\n * - `templates/<name>/...` — building inside the framework monorepo\n * - `apps/<name>/...` — building inside a scaffolded workspace\n *\n * Both, neither, or one may match. Used purely as Sentry tags so we can\n * filter the noisy \"Command failed: react-router build\" issues by template.\n */\nfunction inferBuildContext(cwd: string): {\n template?: string;\n app?: string;\n} {\n const segs = cwd.split(path.sep);\n let template: string | undefined;\n let app: string | undefined;\n for (let i = 0; i < segs.length - 1; i++) {\n if (segs[i] === \"templates\" && segs[i + 1] && !segs[i + 1].startsWith(\".\"))\n template = segs[i + 1];\n if (segs[i] === \"apps\" && segs[i + 1] && !segs[i + 1].startsWith(\".\"))\n app = segs[i + 1];\n }\n return { template, app };\n}\n\n/**\n * Run a build subcommand, streaming its stdout/stderr to the user's terminal\n * in real time while also capturing bounded tails for Sentry. On non-zero\n * exit we report a structured event (template, app, exit code, stderr/stdout\n * tails) and exit with the child's code. We deliberately do NOT throw — the\n * global uncaughtException handler would re-capture with a generic\n * \"Error: Command failed\" title, collapsing every template's failure into\n * one issue (which is exactly what we're trying to fix here).\n */\nfunction runBuildStep(\n cmd: string,\n cmdArgs: string[],\n opts: { label: string; env?: NodeJS.ProcessEnv },\n): Promise<void> {\n return new Promise<void>((resolve) => {\n const STDERR_TAIL_BYTES = 8000;\n const STDOUT_TAIL_BYTES = 4000;\n let stderrBuf = \"\";\n let stdoutBuf = \"\";\n\n const child = spawn(cmd, cmdArgs, {\n stdio: [\"inherit\", \"pipe\", \"pipe\"],\n shell: process.platform === \"win32\",\n env: opts.env ?? process.env,\n });\n\n child.stdout?.on(\"data\", (chunk: Buffer) => {\n process.stdout.write(chunk);\n const next = stdoutBuf + chunk.toString(\"utf-8\");\n stdoutBuf =\n next.length > STDOUT_TAIL_BYTES ? next.slice(-STDOUT_TAIL_BYTES) : next;\n });\n child.stderr?.on(\"data\", (chunk: Buffer) => {\n process.stderr.write(chunk);\n const next = stderrBuf + chunk.toString(\"utf-8\");\n stderrBuf =\n next.length > STDERR_TAIL_BYTES ? next.slice(-STDERR_TAIL_BYTES) : next;\n });\n\n child.on(\"error\", (err) => {\n // Failure to spawn (ENOENT, etc.).\n const cwd = process.cwd();\n const { template, app } = inferBuildContext(cwd);\n Sentry.captureException(err, {\n tags: {\n buildStep: opts.label,\n ...(template ? { template } : {}),\n ...(app ? { app } : {}),\n },\n extra: {\n command: `${cmd} ${cmdArgs.join(\" \")}`,\n cwd,\n stage: \"spawn\",\n },\n });\n Sentry.flush(2000).finally(() => process.exit(1));\n });\n\n child.on(\"exit\", (code, signal) => {\n const exitCode = code ?? (signal ? 1 : 0);\n if (exitCode === 0) {\n resolve();\n return;\n }\n const cwd = process.cwd();\n const { template, app } = inferBuildContext(cwd);\n const childCommand = `${cmd} ${cmdArgs.join(\" \")}`;\n const err = new Error(\n `Build step \"${opts.label}\" failed with exit code ${exitCode}` +\n (template ? ` (template=${template})` : \"\") +\n (app ? ` (app=${app})` : \"\"),\n );\n Sentry.captureException(err, {\n tags: {\n buildStep: opts.label,\n ...(template ? { template } : {}),\n ...(app ? { app } : {}),\n },\n extra: {\n command: childCommand,\n cwd,\n exitCode,\n signal: signal ?? null,\n stderrTail: stderrBuf,\n stdoutTail: stdoutBuf,\n },\n });\n // Don't throw — see comment on runBuildStep above.\n Sentry.flush(2000).finally(() => process.exit(exitCode));\n });\n });\n}\n\ntrackCli(\"cli.run\");\n\nswitch (command) {\n case \"dev\": {\n if (isWorkspaceRoot()) {\n import(\"./workspace-dev.js\")\n .then((m) => m.runWorkspaceDev({ args }))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n const vite = findViteBin();\n run(vite, args);\n break;\n }\n\n case \"workspace-dev\": {\n import(\"./workspace-dev.js\")\n .then((m) => m.runWorkspaceDev({ args }))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"build\": {\n // React Router framework mode uses `react-router build` which\n // internally runs `vite build` with proper environment orchestration.\n // Legacy SPA mode uses `vite build` directly.\n //\n // Each step uses runBuildStep so that on failure we get a Sentry event\n // tagged with template/app and including stderr/stdout tails. If the\n // child exits non-zero, runBuildStep calls process.exit itself; the\n // continuation only runs on success.\n (async () => {\n if (isReactRouterFramework()) {\n validateReactRouterBuildDependencies();\n const rr = findReactRouterBin();\n console.log(\"Building (React Router framework mode)...\");\n await runBuildStep(rr, [\"build\"], { label: \"react-router-build\" });\n } else {\n const vite = findViteBin();\n console.log(\"Building...\");\n await runBuildStep(vite, [\"build\"], { label: \"vite-build\" });\n }\n\n // Post-build: framework-mode apps also need a Nitro server bundle for\n // `agent-native start` and for serverless presets.\n if (isReactRouterFramework()) {\n const __dirname = path.dirname(fileURLToPath(import.meta.url));\n const deployBuild = path.resolve(__dirname, \"../deploy/build.js\");\n if (fs.existsSync(deployBuild)) {\n await runBuildStep(\"node\", [deployBuild], {\n label: \"deploy-build\",\n env: process.env,\n });\n } else {\n console.warn(\n `[build] Deploy build script not found at ${deployBuild}. Skipping post-build step.`,\n );\n }\n }\n\n console.log(\"\\nBuild complete.\");\n })().catch((err) => {\n // runBuildStep handles its own failures and exits, so reaching here\n // implies a programming error in the orchestration above. Capture\n // and exit so the global unhandledRejection handler doesn't double-\n // report with a generic title.\n Sentry.captureException(err);\n Sentry.flush(2000).finally(() => process.exit(1));\n });\n break;\n }\n\n case \"start\": {\n // Like `next start` — runs Nitro production server\n const serverEntry = path.resolve(\".output/server/index.mjs\");\n if (!fs.existsSync(serverEntry)) {\n console.error(\n 'No production build found. Run \"agent-native build\" first.',\n );\n process.exit(1);\n }\n run(\"node\", [serverEntry, ...args]);\n break;\n }\n\n case \"action\": {\n // Run an action from actions/ (or scripts/ for backwards compat)\n const actionName = args[0];\n if (!actionName) {\n console.error(\n `Usage: agent-native action <name> ['{\"arg\":\"value\"}'] [--args]`,\n );\n process.exit(1);\n }\n const tsxAction = findTsxBin();\n // Try actions/run.ts first, fall back to scripts/run.ts\n const actionsRun = path.resolve(\"actions/run.ts\");\n const scriptsRun = path.resolve(\"scripts/run.ts\");\n const runFile = fs.existsSync(actionsRun) ? actionsRun : scriptsRun;\n run(tsxAction, [runFile, ...args]);\n break;\n }\n\n case \"agent\": {\n import(\"./agent.js\")\n .then(async (m) => {\n const code = await m.runAgent(args);\n if (code !== 0) process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"script\": {\n // @deprecated — use `agent-native action` instead\n const scriptName = args[0];\n if (!scriptName) {\n console.error(\"Usage: agent-native script <name> [--args]\");\n process.exit(1);\n }\n const tsx = findTsxBin();\n // Try actions/run.ts first, fall back to scripts/run.ts\n const actionsRunScript = path.resolve(\"actions/run.ts\");\n const scriptsRunScript = path.resolve(\"scripts/run.ts\");\n const runFileScript = fs.existsSync(actionsRunScript)\n ? actionsRunScript\n : scriptsRunScript;\n run(tsx, [runFileScript, ...args]);\n break;\n }\n\n case \"typecheck\": {\n // Run TypeScript type checking\n // React Router framework mode generates route types first\n if (isReactRouterFramework()) {\n validateReactRouterBuildDependencies();\n const rr = findReactRouterBin();\n try {\n execSync(`${rr} typegen`, { stdio: \"inherit\" });\n } catch {\n // typegen may fail if routes aren't set up yet; continue to TypeScript.\n }\n }\n run(findTypeScriptCompilerBin(), [\"--noEmit\", ...args]);\n break;\n }\n\n case \"create\": {\n // Defaults to creating a workspace with a multi-select template picker.\n // Use --standalone for the old single-app flow.\n // --template foo,bar Pre-select multiple templates in the picker\n // --standalone Scaffold a single standalone app\n const parsed = parseScaffoldArgs(args);\n import(\"./create.js\")\n .then((m) =>\n m.createApp(parsed.name, {\n template: parsed.headless ? \"headless\" : parsed.template,\n standalone: parsed.standalone,\n }),\n )\n .catch(handleScaffoldImportError);\n break;\n }\n\n case \"invoke\": {\n import(\"./invoke.js\")\n .then(async (m) => {\n const code = await m.runInvoke(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"agents\": {\n import(\"./agents.js\")\n .then(async (m) => {\n const code = await m.runAgents(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"migrate\": {\n import(\"./migrate.js\")\n .then((m) => m.runMigrate(args))\n .catch(handleScaffoldImportError);\n break;\n }\n\n case \"code\": {\n import(\"./code.js\")\n .then((m) => m.runCode(args))\n .catch(handleScaffoldImportError);\n break;\n }\n\n case \"mcp\": {\n // Connect external coding agents (Claude Code, Cowork, Codex) over MCP.\n // `mcp serve` runs the stdio transport; install/uninstall/status/token\n // manage client configs + the local token.\n import(\"./mcp.js\")\n .then((m) => m.runMcp(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"connect\": {\n // Wire your local coding agent to a DEPLOYED agent-native app via a\n // browser device-code flow (no token copying). `--all` connects every\n // first-party hosted app; `--token` is the no-browser fallback.\n import(\"./connect.js\")\n .then(async (m) => {\n await m.runConnect(args);\n process.exit(process.exitCode ?? 0);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"reconnect\":\n case \"reauth\": {\n // Refresh an existing remote MCP auth/config entry without reinstalling\n // app skills or running the broader connector setup path.\n import(\"./connect.js\")\n .then((m) => m.runConnect([\"reconnect\", ...args]))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"app-skill\": {\n // Package or install an agent-native app as a skill-backed MCP/app bundle.\n import(\"./app-skill.js\")\n .then((m) => m.runAppSkill(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"skills\": {\n // Friendly skill install surface. Wraps open skills installation plus MCP.\n import(\"./skills.js\")\n .then((m) => m.runSkills(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"content\": {\n import(\"./content-local.js\")\n .then(async (m) => {\n const code = await m.runContentLocal(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"visualize-repo\": {\n import(\"./visualize-repo.js\")\n .then(async (m) => {\n const code = await m.runVisualizeRepo(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"design\": {\n import(\"./design-connect.js\")\n .then(async (m) => {\n const code = await m.runDesign(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"recap\": {\n // PR visual recap helpers used by the GitHub Action. Promoted to the CLI\n // so an installed repo's workflow can call `agent-native recap …` instead\n // of copying helper scripts. Run `agent-native recap help` for the full\n // subcommand list.\n import(\"./recap.js\")\n .then((m) => m.runRecap(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"plan\": {\n // Plan authoring helpers: local MDX preview plus a no-auth block catalog\n // fetcher for text-only/local installs.\n import(\"./plan-local.js\")\n .then((m) => m.runPlan(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"create-workspace\": {\n // Deprecated alias for `create` (since workspace is now the default).\n const parsed = parseScaffoldArgs(args);\n import(\"./create-workspace.js\")\n .then((m) =>\n m.createWorkspace({ name: parsed.name, template: parsed.template }),\n )\n .catch(handleScaffoldImportError);\n break;\n }\n\n case \"add-app\": {\n // Add one or more apps to the current workspace.\n const parsed = parseScaffoldArgs(args);\n import(\"./create.js\")\n .then((m) =>\n m.addAppToWorkspace(parsed.name, { template: parsed.template }),\n )\n .catch(handleScaffoldImportError);\n break;\n }\n\n case \"deploy\": {\n // Build and deploy the entire workspace as one unit. Each app is served\n // at /<app>/* under the same origin.\n import(\"../deploy/workspace-deploy.js\")\n .then((m) => m.runWorkspaceDeploy({ args }))\n .catch((err) => {\n console.error(\"Deploy failed:\", err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"setup-agents\": {\n import(\"./setup-agents.js\").then((m) => m.runSetupAgents());\n break;\n }\n\n case \"info\": {\n // Print read-only info about an installable package (e.g. @agent-native/scheduling).\n // Lists subpath exports, source paths in node_modules, and docs pointers.\n import(\"./info.js\").then((m) => m.runInfo(args[0]));\n break;\n }\n\n case \"add\": {\n // Blueprint installer (à la Flue's `flue add`): instead of scaffolding\n // files, emit a curated Markdown integration blueprint to stdout so it can\n // be piped into a coding agent — `agent-native add provider stripe | claude`.\n // A URL instead of a name yields a generic research-and-integrate blueprint.\n import(\"./add.js\")\n .then((m) => {\n const code = m.runAdd(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"audit-agent-web\": {\n import(\"./audit-agent-web.js\")\n .then((m) => m.runAuditAgentWeb(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"eval\": {\n // Discover and run the app's evals (**/*.eval.ts, evals/*.ts), score the\n // agent's output, and exit non-zero if any eval falls below its threshold.\n // Doubles as a CI deploy gate. `--json` emits a machine-readable report.\n import(\"./eval.js\")\n .then((m) => m.runEval(args))\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"changelog\": {\n // Author and roll up the app's user-facing changelog (changeset-style\n // pending entry files → a dated CHANGELOG.md section).\n import(\"./changelog.js\")\n .then(async (m) => {\n const code = await m.runChangelog(args);\n process.exit(code);\n })\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n break;\n }\n\n case \"--version\":\n case \"-v\": {\n console.log(_version);\n break;\n }\n\n case undefined:\n import(\"./code.js\")\n .then((m) => m.runCode([]))\n .catch(handleScaffoldImportError);\n break;\n\n case \"--help\":\n case \"-h\":\n console.log(`agent-native v${_version}\n\nUsage:\n agent-native Launch Agent-Native Code workspace\n agent-native \"fix tests\" Start an Agent-Native Code coding session\n agent-native dev Start development server\n (or the workspace gateway at a workspace root)\n agent-native build Build for production (client + server)\n agent-native start Start production server\n agent-native action <name> Run an action from actions/\n agent-native agent \"prompt\" Run the app-agent loop once against local actions\n agent-native agents list List connected/discoverable agents\n agent-native invoke <app> \"prompt\"\n Call another agent-native app over A2A\n agent-native script <name> Run an action (deprecated alias for 'action')\n agent-native typecheck Run TypeScript type checking\n agent-native create [name] Scaffold a new agent-native workspace with a\n multi-select template picker. Use --standalone\n for a single-app scaffold.\n agent-native code Launch Agent-Native Code workspace. Type a task or\n use goals like /migrate and /audit.\n agent-native code serve Run the Agent-Native Code remote connector.\n agent-native mcp <cmd> Connect external coding agents over MCP.\n cmds: serve | install | uninstall | status |\n token (--client claude-code|codex|cowork|\n cursor|opencode|github-copilot)\n agent-native connect <url> Authenticate your coding agent to a DEPLOYED app.\n OAuth-capable clients (Claude Code) get a /mcp\n authenticate prompt; Codex / Cowork use the\n browser device-code flow. --all connects every\n first-party app; --token is the no-browser\n fallback. Usually run for you by 'skills add'.\n agent-native reconnect [url] Re-authenticate an existing MCP entry without\n reinstalling app skills/connectors.\n agent-native app-skill <cmd> Install, launch, or package app-backed skills.\n cmds: ensure | launch | pack\n agent-native skills add assets|content|design-exploration|visual-edit|visual-plan|visual-recap|context-xray\n Install the skill instructions, register the MCP\n connector, AND authenticate it in one step.\n --no-connect skips auth (run 'connect' later);\n non-interactive shells print the connect command.\n --with-github-action also writes the PR Visual\n Recap workflow into .github/workflows/.\n agent-native content local-files <file-or-folder>\n Launch Content in local-file mode for a local\n docs/content folder. Use --no-open, --port N,\n or --profile docs/no-bookkeeping as needed.\n agent-native design connect Start a localhost Design bridge for a running\n dev server. Use --url, --port, --root, or\n --json to print the route/source manifest.\n agent-native recap <cmd> PR visual recap setup and GitHub Action helpers.\n Run 'agent-native recap help' for subcommands.\n agent-native plan <cmd> Plan helpers for block catalogs and local files.\n cmds: blocks | local init | local check |\n local serve | local verify | local preview\n agent-native migrate <source> Create an Agent-Native Code /migrate session, or use\n --emit for a portable own-agent dossier.\n agent-native add-app [name] Add one or more apps to the current workspace\n agent-native workspace-dev Start the multi-app workspace gateway\n agent-native deploy Build & deploy every app in the workspace to\n a single origin (your-agents.com/<app>/*)\n agent-native setup-agents Create symlinks for all agent tools\n agent-native info <pkg> Print info about an installed package:\n exports, source paths, and docs links.\n agent-native add <kind> <name|url>\n Emit an integration blueprint to stdout for your\n coding agent to apply. Pipe it in:\n 'agent-native add provider stripe | claude'.\n kinds: provider | channel | sandbox | action.\n Pass a URL instead of a name for a generic\n research-and-integrate blueprint. --list to\n browse available blueprints.\n agent-native changelog <cmd> Author the app's user-facing changelog.\n cmds: add \"<summary>\" [--type added|fixed|...] |\n release | list. Pending entries live in\n changelog/; 'release' rolls them into CHANGELOG.md.\n agent-native audit-agent-web Audit a public URL for agent-readable surfaces\n agent-native eval [pattern] Run the app's evals (**/*.eval.ts, evals/*.ts)\n and exit non-zero if any scores below its\n threshold. A CI deploy gate. --json for CI,\n --threshold N to override all thresholds.\n\nOptions:\n -h, --help Show this help message\n -v, --version Show version number\n --template <names> Comma-separated templates to pre-select\n (mail,calendar,analytics,...) — or\n github:user/repo for community templates\n --headless Create the primitive-first action-only scaffold\n --standalone Scaffold a single standalone app (no workspace)\n --emit [dir] With migrate, emit an own-agent dossier\n --describe <text> With migrate, describe URL/prose-only sources\n --preset <name> Workspace deploy preset:\n cloudflare_pages (default), netlify, or vercel\n --build-only Build workspace deploy artifacts without publishing\n --eager With workspace dev, start every app immediately\n --url <url> URL to audit with audit-agent-web\n\nFeedback: ${FEEDBACK_URL}\nBugs: ${BUGS_URL}`);\n break;\n\n default:\n if (command && !command.startsWith(\"-\")) {\n // A bare, single command-like token with no further args is almost\n // always a mistyped subcommand (e.g. `agent-native destory`). Silently\n // forwarding it to the coding agent would run an LLM with file-write\n // powers on a typo — a real footgun on a code-modifying tool. Refuse it\n // and point at the explicit forms. Intentional natural-language tasks\n // are still dispatched: a quoted phrase (`agent-native \"fix tests\"`,\n // which arrives as one argv token containing a space) or multi-word\n // input (`agent-native fix the tests`, which has trailing args).\n const looksLikeMistypedSubcommand =\n args.length === 0 && /^[a-z][a-z0-9-]*$/i.test(command);\n if (!looksLikeMistypedSubcommand) {\n import(\"./code.js\")\n .then((m) => m.runCode([command, ...args]))\n .catch(handleScaffoldImportError);\n break;\n }\n console.error(`Unknown command: ${command}`);\n console.error(\n `If you meant to start a coding session with this as the task, run:\\n` +\n ` agent-native code ${JSON.stringify(command)}\\n` +\n `or quote a natural-language task:\\n` +\n ` agent-native \"fix the failing tests\"`,\n );\n console.error('Run \"agent-native --help\" for usage.');\n console.error(`Bugs: ${BUGS_URL}`);\n process.exit(1);\n }\n console.error(`Unknown command: ${command}`);\n console.error('Run \"agent-native --help\" for usage.');\n console.error(`Bugs: ${BUGS_URL}`);\n process.exit(1);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"workspacify.d.ts","sourceRoot":"","sources":["../../src/cli/workspacify.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,+DAA+D;IAC/D,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,2EAA2E;IAC3E,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CA8G7D;AA2DD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAGrE"}
1
+ {"version":3,"file":"workspacify.d.ts","sourceRoot":"","sources":["../../src/cli/workspacify.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,+DAA+D;IAC/D,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,2EAA2E;IAC3E,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CA+G7D;AAsFD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAGrE"}
@@ -23,6 +23,12 @@
23
23
  import fs from "fs";
24
24
  import path from "path";
25
25
  const POSTGRES_DEPENDENCY_VERSION = "^3.4.9";
26
+ const REACT_ROUTER_BUILD_DEPENDENCIES = [
27
+ "@react-router/dev",
28
+ "@react-router/fs-routes",
29
+ "react-router",
30
+ "vite",
31
+ ];
26
32
  export function workspacifyApp(opts) {
27
33
  const { appDir, workspaceCoreName } = opts;
28
34
  const coreDependencyVersion = opts.coreDependencyVersion ?? "latest";
@@ -66,6 +72,7 @@ export function workspacifyApp(opts) {
66
72
  // Add the runtime package to workspace apps so production bundles do
67
73
  // not fail only after a hosted Postgres database is configured.
68
74
  pkg.dependencies.postgres ??= POSTGRES_DEPENDENCY_VERSION;
75
+ ensureReactRouterBuildDependencies(pkg);
69
76
  // pnpm build-script approvals belong at the workspace root. Leaving the
70
77
  // template's per-app setting in place makes pnpm warn on every install.
71
78
  if (pkg.pnpm && typeof pkg.pnpm === "object") {
@@ -129,6 +136,29 @@ export function workspacifyApp(opts) {
129
136
  writeInheritedChatAgentChatPlugin(appDir, workspaceCoreName, opts.appName);
130
137
  }
131
138
  }
139
+ function ensureReactRouterBuildDependencies(pkg) {
140
+ const allDeps = {
141
+ ...pkg.dependencies,
142
+ ...pkg.devDependencies,
143
+ ...pkg.peerDependencies,
144
+ };
145
+ if (!allDeps["@react-router/dev"] &&
146
+ !allDeps["react-router"] &&
147
+ !allDeps["@react-router/fs-routes"]) {
148
+ return;
149
+ }
150
+ pkg.dependencies = pkg.dependencies ?? {};
151
+ for (const key of REACT_ROUTER_BUILD_DEPENDENCIES) {
152
+ const existing = pkg.dependencies[key] ??
153
+ pkg.devDependencies?.[key] ??
154
+ pkg.peerDependencies?.[key];
155
+ if (!existing)
156
+ continue;
157
+ pkg.dependencies[key] = existing;
158
+ delete pkg.devDependencies?.[key];
159
+ delete pkg.peerDependencies?.[key];
160
+ }
161
+ }
132
162
  function writeInheritedChatPlugin(appDir, workspaceCoreName, opts) {
133
163
  const pluginsDir = path.join(appDir, "server", "plugins");
134
164
  fs.mkdirSync(pluginsDir, { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"workspacify.js","sourceRoot":"","sources":["../../src/cli/workspacify.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Transform a standalone template directory into a workspace app in place.\n *\n * Called after copying any template under `apps/<name>/` inside an enterprise\n * workspace. The transform:\n *\n * 1. Rewrites package.json:\n * - Published framework packages stay as regular npm deps\n * - Adds @<workspace-scope>/shared as a workspace:* dep so the app\n * inherits shared plugins/skills/AGENTS.md via the three-layer model.\n * 2. Removes files that only make sense in standalone apps\n * (`learnings.defaults.md`, etc.).\n * 3. Replaces chat's stock auth/chat wrappers with inherited wrappers so\n * the workspace core can own those plugin slots while framework defaults\n * still mount when the workspace core is empty.\n * 4. Leaves app source code untouched. The three-layer framework\n * auto-discovers workspace-core via `agent-native.workspaceCore` in the\n * workspace root package.json — no per-app wiring needed.\n *\n * This means any first-party template under templates/* is usable as a\n * workspace app without maintaining a parallel copy.\n */\nimport fs from \"fs\";\nimport path from \"path\";\n\nconst POSTGRES_DEPENDENCY_VERSION = \"^3.4.9\";\n\nexport interface WorkspacifyOptions {\n /** Target app directory (already populated with the copied template) */\n appDir: string;\n /** App name (e.g. \"mail\") */\n appName: string;\n /** Source template name (e.g. \"chat\" when appName is \"crm\") */\n templateName?: string;\n /** Workspace root directory */\n workspaceRoot: string;\n /** Shared workspace package name (e.g. \"@my-company/shared\") */\n workspaceCoreName: string;\n /** Version range to use for the published @agent-native/core package */\n coreDependencyVersion?: string;\n /** Version range to use for the package-backed Dispatch app */\n dispatchDependencyVersion?: string;\n /** Version range to use for the published @agent-native/toolkit package */\n toolkitDependencyVersion?: string;\n}\n\nexport function workspacifyApp(opts: WorkspacifyOptions): void {\n const { appDir, workspaceCoreName } = opts;\n const coreDependencyVersion = opts.coreDependencyVersion ?? \"latest\";\n const dispatchDependencyVersion = opts.dispatchDependencyVersion ?? \"latest\";\n const toolkitDependencyVersion = opts.toolkitDependencyVersion ?? \"latest\";\n\n // 1) Rewrite package.json to add the workspace core dep and resolve\n // published framework-package workspace:* refs to package ranges.\n // Other workspace:* deps (e.g. @agent-native/scheduling) stay as-is —\n // they resolve within the\n // workspace because the required package is scaffolded alongside the app.\n const pkgPath = path.join(appDir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n if (typeof val === \"string\" && val.startsWith(\"workspace:\")) {\n if (key === \"@agent-native/core\") {\n deps[key] = coreDependencyVersion;\n }\n if (key === \"@agent-native/dispatch\") {\n deps[key] = dispatchDependencyVersion;\n }\n if (key === \"@agent-native/toolkit\") {\n deps[key] = toolkitDependencyVersion;\n }\n }\n }\n }\n // Ensure the dependency on the workspace shared package is present.\n pkg.dependencies = pkg.dependencies ?? {};\n pkg.dependencies[workspaceCoreName] = \"workspace:*\";\n // Core loads postgres-js lazily when DATABASE_URL points at Postgres.\n // Add the runtime package to workspace apps so production bundles do\n // not fail only after a hosted Postgres database is configured.\n pkg.dependencies.postgres ??= POSTGRES_DEPENDENCY_VERSION;\n // pnpm build-script approvals belong at the workspace root. Leaving the\n // template's per-app setting in place makes pnpm warn on every install.\n if (pkg.pnpm && typeof pkg.pnpm === \"object\") {\n delete pkg.pnpm.onlyBuiltDependencies;\n if (Object.keys(pkg.pnpm).length === 0) {\n delete pkg.pnpm;\n }\n }\n // Pin @assistant-ui/store and @assistant-ui/tap so pre-existing workspaces\n // whose root pnpm-workspace.yaml pre-dates this fix are still protected.\n // The constraints exclude the breaking store@0.2.14/tap@0.6.0 combination\n // that causes Vite pre-bundling failures via a missing ./react-shim export.\n pkg.devDependencies = pkg.devDependencies ?? {};\n pkg.devDependencies[\"@assistant-ui/store\"] ??= \">=0.2.9 <0.2.14\";\n pkg.devDependencies[\"@assistant-ui/tap\"] ??= \"^0.5.14\";\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {\n // Non-fatal: leave package.json unchanged.\n }\n }\n\n // 2) Remove standalone-only files that would confuse the workspace layout.\n for (const f of [\n \"learnings.defaults.md\",\n // pnpm-workspace.yaml marks a directory as a pnpm workspace root.\n // Leaving it in an app directory nested under a parent workspace causes\n // ERR_PNPM_WORKSPACE_PKG_NOT_FOUND when the app depends on workspace:*\n // packages (e.g. @<scope>/shared). Overrides belong at the workspace root.\n \"pnpm-workspace.yaml\",\n ]) {\n const p = path.join(appDir, f);\n try {\n if (fs.existsSync(p)) fs.unlinkSync(p);\n } catch {\n // Non-fatal: leave the file in place.\n }\n }\n\n // 3) Templates document action commands from the framework repo layout.\n // Workspace apps live under apps/<name>, so point every agent at the\n // generated app directory instead.\n const agentsPath = path.join(appDir, \"AGENTS.md\");\n if (fs.existsSync(agentsPath)) {\n try {\n let content = fs.readFileSync(agentsPath, \"utf-8\");\n content = content\n .replace(\n \"The terminal cwd is the framework root. Always `cd` to this template's root before running any action:\",\n `The terminal cwd is the workspace root. Always \\`cd\\` to this app's root before running any action:`,\n )\n .replace(\n /cd templates\\/[^ \\n]+ && pnpm action/g,\n `cd apps/${opts.appName} && pnpm action`,\n );\n fs.writeFileSync(agentsPath, content);\n } catch {\n // Non-fatal: leave AGENTS.md unchanged.\n }\n }\n\n if ([\"starter\", \"chat\"].includes(opts.templateName ?? opts.appName)) {\n writeInheritedChatPlugin(appDir, workspaceCoreName, {\n fileName: \"auth.ts\",\n exportName: \"defaultAuthPlugin\",\n });\n writeInheritedChatAgentChatPlugin(appDir, workspaceCoreName, opts.appName);\n }\n}\n\nfunction writeInheritedChatPlugin(\n appDir: string,\n workspaceCoreName: string,\n opts: { fileName: string; exportName: string },\n): void {\n const pluginsDir = path.join(appDir, \"server\", \"plugins\");\n fs.mkdirSync(pluginsDir, { recursive: true });\n const pluginPath = path.join(pluginsDir, opts.fileName);\n fs.writeFileSync(\n pluginPath,\n [\n `import { ${opts.exportName} as frameworkDefault } from \"@agent-native/core/server\";`,\n `import * as workspaceServer from ${JSON.stringify(`${workspaceCoreName}/server`)};`,\n \"\",\n `const workspacePlugin = (workspaceServer as Record<string, unknown>).${opts.exportName};`,\n \"\",\n 'export default typeof workspacePlugin === \"function\"',\n \" ? workspacePlugin\",\n \" : frameworkDefault;\",\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction writeInheritedChatAgentChatPlugin(\n appDir: string,\n workspaceCoreName: string,\n appId: string,\n): void {\n const pluginsDir = path.join(appDir, \"server\", \"plugins\");\n fs.mkdirSync(pluginsDir, { recursive: true });\n const pluginPath = path.join(pluginsDir, \"agent-chat.ts\");\n fs.writeFileSync(\n pluginPath,\n [\n `import {`,\n ` createAgentChatPlugin,`,\n ` loadActionsFromStaticRegistry,`,\n ` type AgentChatPluginOptions,`,\n `} from \"@agent-native/core/server\";`,\n `import * as workspaceServer from ${JSON.stringify(`${workspaceCoreName}/server`)};`,\n `import actionsRegistry from \"../../.generated/actions-registry.js\";`,\n \"\",\n `const createWorkspaceAgentChatPlugin = (workspaceServer as Record<string, unknown>).createWorkspaceAgentChatPlugin;`,\n `const options = {`,\n ` appId: ${JSON.stringify(appId)},`,\n ` actions: loadActionsFromStaticRegistry(actionsRegistry),`,\n `} satisfies AgentChatPluginOptions;`,\n \"\",\n `export default typeof createWorkspaceAgentChatPlugin === \"function\"`,\n ` ? (createWorkspaceAgentChatPlugin as (options: AgentChatPluginOptions) => unknown)(options)`,\n ` : createAgentChatPlugin(options);`,\n \"\",\n ].join(\"\\n\"),\n );\n}\n\n/**\n * Parse a workspace core package name into its npm scope.\n * \"@my-company/shared\" → \"my-company\"\n * \"shared\" → \"\" (no scope — shouldn't happen)\n */\nexport function parseWorkspaceScope(workspaceCoreName: string): string {\n const m = workspaceCoreName.match(/^@([^/]+)\\//);\n return m ? m[1] : \"\";\n}\n"]}
1
+ {"version":3,"file":"workspacify.js","sourceRoot":"","sources":["../../src/cli/workspacify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,2BAA2B,GAAG,QAAQ,CAAC;AAC7C,MAAM,+BAA+B,GAAG;IACtC,mBAAmB;IACnB,yBAAyB;IACzB,cAAc;IACd,MAAM;CACE,CAAC;AAqBX,MAAM,UAAU,cAAc,CAAC,IAAwB;IACrD,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,IAAI,QAAQ,CAAC;IACrE,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,IAAI,QAAQ,CAAC;IAC7E,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,IAAI,QAAQ,CAAC;IAE3E,oEAAoE;IACpE,qEAAqE;IACrE,yEAAyE;IACzE,6BAA6B;IAC7B,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,KAAK,MAAM,OAAO,IAAI;gBACpB,cAAc;gBACd,iBAAiB;gBACjB,kBAAkB;aACV,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC1B,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC5D,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;4BACjC,IAAI,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC;wBACpC,CAAC;wBACD,IAAI,GAAG,KAAK,wBAAwB,EAAE,CAAC;4BACrC,IAAI,CAAC,GAAG,CAAC,GAAG,yBAAyB,CAAC;wBACxC,CAAC;wBACD,IAAI,GAAG,KAAK,uBAAuB,EAAE,CAAC;4BACpC,IAAI,CAAC,GAAG,CAAC,GAAG,wBAAwB,CAAC;wBACvC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,oEAAoE;YACpE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YAC1C,GAAG,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,aAAa,CAAC;YACpD,sEAAsE;YACtE,qEAAqE;YACrE,gEAAgE;YAChE,GAAG,CAAC,YAAY,CAAC,QAAQ,KAAK,2BAA2B,CAAC;YAC1D,kCAAkC,CAAC,GAAG,CAAC,CAAC;YACxC,wEAAwE;YACxE,wEAAwE;YACxE,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7C,OAAO,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;gBACtC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvC,OAAO,GAAG,CAAC,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,2EAA2E;YAC3E,yEAAyE;YACzE,0EAA0E;YAC1E,4EAA4E;YAC5E,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;YAChD,GAAG,CAAC,eAAe,CAAC,qBAAqB,CAAC,KAAK,iBAAiB,CAAC;YACjE,GAAG,CAAC,eAAe,CAAC,mBAAmB,CAAC,KAAK,SAAS,CAAC;YACvD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,KAAK,MAAM,CAAC,IAAI;QACd,uBAAuB;QACvB,kEAAkE;QAClE,wEAAwE;QACxE,uEAAuE;QACvE,2EAA2E;QAC3E,qBAAqB;KACtB,EAAE,CAAC;QACF,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,wEAAwE;IACxE,sCAAsC;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,GAAG,OAAO;iBACd,OAAO,CACN,wGAAwG,EACxG,qGAAqG,CACtG;iBACA,OAAO,CACN,uCAAuC,EACvC,WAAW,IAAI,CAAC,OAAO,iBAAiB,CACzC,CAAC;YACJ,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,EAAE;YAClD,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,mBAAmB;SAChC,CAAC,CAAC;QACH,iCAAiC,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,SAAS,kCAAkC,CAAC,GAAwB;IAClE,MAAM,OAAO,GAAG;QACd,GAAG,GAAG,CAAC,YAAY;QACnB,GAAG,GAAG,CAAC,eAAe;QACtB,GAAG,GAAG,CAAC,gBAAgB;KACxB,CAAC;IACF,IACE,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAC7B,CAAC,OAAO,CAAC,cAAc,CAAC;QACxB,CAAC,OAAO,CAAC,yBAAyB,CAAC,EACnC,CAAC;QACD,OAAO;IACT,CAAC;IAED,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,+BAA+B,EAAE,CAAC;QAClD,MAAM,QAAQ,GACZ,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC;YACrB,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC;YAC1B,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QACjC,OAAO,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,MAAc,EACd,iBAAyB,EACzB,IAA8C;IAE9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1D,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,EAAE,CAAC,aAAa,CACd,UAAU,EACV;QACE,YAAY,IAAI,CAAC,UAAU,0DAA0D;QACrF,oCAAoC,IAAI,CAAC,SAAS,CAAC,GAAG,iBAAiB,SAAS,CAAC,GAAG;QACpF,EAAE;QACF,wEAAwE,IAAI,CAAC,UAAU,GAAG;QAC1F,EAAE;QACF,sDAAsD;QACtD,qBAAqB;QACrB,uBAAuB;QACvB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC,CACxC,MAAc,EACd,iBAAyB,EACzB,KAAa;IAEb,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1D,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC1D,EAAE,CAAC,aAAa,CACd,UAAU,EACV;QACE,UAAU;QACV,0BAA0B;QAC1B,kCAAkC;QAClC,gCAAgC;QAChC,qCAAqC;QACrC,oCAAoC,IAAI,CAAC,SAAS,CAAC,GAAG,iBAAiB,SAAS,CAAC,GAAG;QACpF,qEAAqE;QACrE,EAAE;QACF,qHAAqH;QACrH,mBAAmB;QACnB,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;QACpC,4DAA4D;QAC5D,qCAAqC;QACrC,EAAE;QACF,qEAAqE;QACrE,+FAA+F;QAC/F,qCAAqC;QACrC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,iBAAyB;IAC3D,MAAM,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACjD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvB,CAAC","sourcesContent":["/**\n * Transform a standalone template directory into a workspace app in place.\n *\n * Called after copying any template under `apps/<name>/` inside an enterprise\n * workspace. The transform:\n *\n * 1. Rewrites package.json:\n * - Published framework packages stay as regular npm deps\n * - Adds @<workspace-scope>/shared as a workspace:* dep so the app\n * inherits shared plugins/skills/AGENTS.md via the three-layer model.\n * 2. Removes files that only make sense in standalone apps\n * (`learnings.defaults.md`, etc.).\n * 3. Replaces chat's stock auth/chat wrappers with inherited wrappers so\n * the workspace core can own those plugin slots while framework defaults\n * still mount when the workspace core is empty.\n * 4. Leaves app source code untouched. The three-layer framework\n * auto-discovers workspace-core via `agent-native.workspaceCore` in the\n * workspace root package.json — no per-app wiring needed.\n *\n * This means any first-party template under templates/* is usable as a\n * workspace app without maintaining a parallel copy.\n */\nimport fs from \"fs\";\nimport path from \"path\";\n\nconst POSTGRES_DEPENDENCY_VERSION = \"^3.4.9\";\nconst REACT_ROUTER_BUILD_DEPENDENCIES = [\n \"@react-router/dev\",\n \"@react-router/fs-routes\",\n \"react-router\",\n \"vite\",\n] as const;\n\nexport interface WorkspacifyOptions {\n /** Target app directory (already populated with the copied template) */\n appDir: string;\n /** App name (e.g. \"mail\") */\n appName: string;\n /** Source template name (e.g. \"chat\" when appName is \"crm\") */\n templateName?: string;\n /** Workspace root directory */\n workspaceRoot: string;\n /** Shared workspace package name (e.g. \"@my-company/shared\") */\n workspaceCoreName: string;\n /** Version range to use for the published @agent-native/core package */\n coreDependencyVersion?: string;\n /** Version range to use for the package-backed Dispatch app */\n dispatchDependencyVersion?: string;\n /** Version range to use for the published @agent-native/toolkit package */\n toolkitDependencyVersion?: string;\n}\n\nexport function workspacifyApp(opts: WorkspacifyOptions): void {\n const { appDir, workspaceCoreName } = opts;\n const coreDependencyVersion = opts.coreDependencyVersion ?? \"latest\";\n const dispatchDependencyVersion = opts.dispatchDependencyVersion ?? \"latest\";\n const toolkitDependencyVersion = opts.toolkitDependencyVersion ?? \"latest\";\n\n // 1) Rewrite package.json to add the workspace core dep and resolve\n // published framework-package workspace:* refs to package ranges.\n // Other workspace:* deps (e.g. @agent-native/scheduling) stay as-is —\n // they resolve within the\n // workspace because the required package is scaffolded alongside the app.\n const pkgPath = path.join(appDir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n if (typeof val === \"string\" && val.startsWith(\"workspace:\")) {\n if (key === \"@agent-native/core\") {\n deps[key] = coreDependencyVersion;\n }\n if (key === \"@agent-native/dispatch\") {\n deps[key] = dispatchDependencyVersion;\n }\n if (key === \"@agent-native/toolkit\") {\n deps[key] = toolkitDependencyVersion;\n }\n }\n }\n }\n // Ensure the dependency on the workspace shared package is present.\n pkg.dependencies = pkg.dependencies ?? {};\n pkg.dependencies[workspaceCoreName] = \"workspace:*\";\n // Core loads postgres-js lazily when DATABASE_URL points at Postgres.\n // Add the runtime package to workspace apps so production bundles do\n // not fail only after a hosted Postgres database is configured.\n pkg.dependencies.postgres ??= POSTGRES_DEPENDENCY_VERSION;\n ensureReactRouterBuildDependencies(pkg);\n // pnpm build-script approvals belong at the workspace root. Leaving the\n // template's per-app setting in place makes pnpm warn on every install.\n if (pkg.pnpm && typeof pkg.pnpm === \"object\") {\n delete pkg.pnpm.onlyBuiltDependencies;\n if (Object.keys(pkg.pnpm).length === 0) {\n delete pkg.pnpm;\n }\n }\n // Pin @assistant-ui/store and @assistant-ui/tap so pre-existing workspaces\n // whose root pnpm-workspace.yaml pre-dates this fix are still protected.\n // The constraints exclude the breaking store@0.2.14/tap@0.6.0 combination\n // that causes Vite pre-bundling failures via a missing ./react-shim export.\n pkg.devDependencies = pkg.devDependencies ?? {};\n pkg.devDependencies[\"@assistant-ui/store\"] ??= \">=0.2.9 <0.2.14\";\n pkg.devDependencies[\"@assistant-ui/tap\"] ??= \"^0.5.14\";\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {\n // Non-fatal: leave package.json unchanged.\n }\n }\n\n // 2) Remove standalone-only files that would confuse the workspace layout.\n for (const f of [\n \"learnings.defaults.md\",\n // pnpm-workspace.yaml marks a directory as a pnpm workspace root.\n // Leaving it in an app directory nested under a parent workspace causes\n // ERR_PNPM_WORKSPACE_PKG_NOT_FOUND when the app depends on workspace:*\n // packages (e.g. @<scope>/shared). Overrides belong at the workspace root.\n \"pnpm-workspace.yaml\",\n ]) {\n const p = path.join(appDir, f);\n try {\n if (fs.existsSync(p)) fs.unlinkSync(p);\n } catch {\n // Non-fatal: leave the file in place.\n }\n }\n\n // 3) Templates document action commands from the framework repo layout.\n // Workspace apps live under apps/<name>, so point every agent at the\n // generated app directory instead.\n const agentsPath = path.join(appDir, \"AGENTS.md\");\n if (fs.existsSync(agentsPath)) {\n try {\n let content = fs.readFileSync(agentsPath, \"utf-8\");\n content = content\n .replace(\n \"The terminal cwd is the framework root. Always `cd` to this template's root before running any action:\",\n `The terminal cwd is the workspace root. Always \\`cd\\` to this app's root before running any action:`,\n )\n .replace(\n /cd templates\\/[^ \\n]+ && pnpm action/g,\n `cd apps/${opts.appName} && pnpm action`,\n );\n fs.writeFileSync(agentsPath, content);\n } catch {\n // Non-fatal: leave AGENTS.md unchanged.\n }\n }\n\n if ([\"starter\", \"chat\"].includes(opts.templateName ?? opts.appName)) {\n writeInheritedChatPlugin(appDir, workspaceCoreName, {\n fileName: \"auth.ts\",\n exportName: \"defaultAuthPlugin\",\n });\n writeInheritedChatAgentChatPlugin(appDir, workspaceCoreName, opts.appName);\n }\n}\n\nfunction ensureReactRouterBuildDependencies(pkg: Record<string, any>): void {\n const allDeps = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n ...pkg.peerDependencies,\n };\n if (\n !allDeps[\"@react-router/dev\"] &&\n !allDeps[\"react-router\"] &&\n !allDeps[\"@react-router/fs-routes\"]\n ) {\n return;\n }\n\n pkg.dependencies = pkg.dependencies ?? {};\n for (const key of REACT_ROUTER_BUILD_DEPENDENCIES) {\n const existing =\n pkg.dependencies[key] ??\n pkg.devDependencies?.[key] ??\n pkg.peerDependencies?.[key];\n if (!existing) continue;\n pkg.dependencies[key] = existing;\n delete pkg.devDependencies?.[key];\n delete pkg.peerDependencies?.[key];\n }\n}\n\nfunction writeInheritedChatPlugin(\n appDir: string,\n workspaceCoreName: string,\n opts: { fileName: string; exportName: string },\n): void {\n const pluginsDir = path.join(appDir, \"server\", \"plugins\");\n fs.mkdirSync(pluginsDir, { recursive: true });\n const pluginPath = path.join(pluginsDir, opts.fileName);\n fs.writeFileSync(\n pluginPath,\n [\n `import { ${opts.exportName} as frameworkDefault } from \"@agent-native/core/server\";`,\n `import * as workspaceServer from ${JSON.stringify(`${workspaceCoreName}/server`)};`,\n \"\",\n `const workspacePlugin = (workspaceServer as Record<string, unknown>).${opts.exportName};`,\n \"\",\n 'export default typeof workspacePlugin === \"function\"',\n \" ? workspacePlugin\",\n \" : frameworkDefault;\",\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction writeInheritedChatAgentChatPlugin(\n appDir: string,\n workspaceCoreName: string,\n appId: string,\n): void {\n const pluginsDir = path.join(appDir, \"server\", \"plugins\");\n fs.mkdirSync(pluginsDir, { recursive: true });\n const pluginPath = path.join(pluginsDir, \"agent-chat.ts\");\n fs.writeFileSync(\n pluginPath,\n [\n `import {`,\n ` createAgentChatPlugin,`,\n ` loadActionsFromStaticRegistry,`,\n ` type AgentChatPluginOptions,`,\n `} from \"@agent-native/core/server\";`,\n `import * as workspaceServer from ${JSON.stringify(`${workspaceCoreName}/server`)};`,\n `import actionsRegistry from \"../../.generated/actions-registry.js\";`,\n \"\",\n `const createWorkspaceAgentChatPlugin = (workspaceServer as Record<string, unknown>).createWorkspaceAgentChatPlugin;`,\n `const options = {`,\n ` appId: ${JSON.stringify(appId)},`,\n ` actions: loadActionsFromStaticRegistry(actionsRegistry),`,\n `} satisfies AgentChatPluginOptions;`,\n \"\",\n `export default typeof createWorkspaceAgentChatPlugin === \"function\"`,\n ` ? (createWorkspaceAgentChatPlugin as (options: AgentChatPluginOptions) => unknown)(options)`,\n ` : createAgentChatPlugin(options);`,\n \"\",\n ].join(\"\\n\"),\n );\n}\n\n/**\n * Parse a workspace core package name into its npm scope.\n * \"@my-company/shared\" → \"my-company\"\n * \"shared\" → \"\" (no scope — shouldn't happen)\n */\nexport function parseWorkspaceScope(workspaceCoreName: string): string {\n const m = workspaceCoreName.match(/^@([^/]+)\\//);\n return m ? m[1] : \"\";\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { ReactNode } from "react";
1
+ import { type ReactNode } from "react";
2
2
  import type { ResourceVersion } from "../../history/types.js";
3
3
  export interface VersionHistoryPanelProps {
4
4
  resourceType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"VersionHistoryPanel.d.ts","sourceRoot":"","sources":["../../../src/client/history/VersionHistoryPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAO9D,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,SAAS,CAAC;IACxD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAClE;AAED,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,UAAU,EACV,KAAyB,EACzB,SAAS,EACT,KAAU,EACV,UAAqC,EACrC,aAAa,EACb,UAAU,GACX,EAAE,wBAAwB,+BA2E1B;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAuBA"}
1
+ {"version":3,"file":"VersionHistoryPanel.d.ts","sourceRoot":"","sources":["../../../src/client/history/VersionHistoryPanel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAO9D,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,SAAS,CAAC;IACxD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAClE;AAED,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,UAAU,EACV,KAAyB,EACzB,SAAS,EACT,KAAU,EACV,UAAqC,EACrC,aAAa,EACb,UAAU,GACX,EAAE,wBAAwB,+BAyG1B;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAuBA"}