@agent-native/core 0.7.45 → 0.7.46

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.
@@ -44,7 +44,7 @@ declare function scaffoldRequiredPackages(templateNames: string[], workspaceRoot
44
44
  * Post-process a standalone scaffold: replace placeholders, strip
45
45
  * workspace:* deps, set up agent symlinks, etc.
46
46
  */
47
- declare function postProcessStandalone(name: string, targetDir: string): void;
47
+ declare function postProcessStandalone(name: string, targetDir: string, templateName?: string): void;
48
48
  /**
49
49
  * Walk up from startDir looking for a package.json with
50
50
  * `agent-native.workspaceCore` set. Returns the workspace root and core
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAiCvE,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAkGD,iBAAe,qBAAqB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAqCf;AAMD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CAkCf;AA+HD;;;;;GAKG;AACH,iBAAe,mBAAmB,CAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAuCf;AAsCD;;;;GAIG;AACH,iBAAe,wBAAwB,CACrC,aAAa,EAAE,MAAM,EAAE,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CA2Ef;AAED;;;GAGG;AACH,iBAAS,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAoEpE;AAgHD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GACf;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkB7D;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,yCAAyC;AACzC,OAAO,EACL,qBAAqB,IAAI,sBAAsB,EAC/C,mBAAmB,IAAI,oBAAoB,EAC3C,wBAAwB,IAAI,yBAAyB,EACrD,qBAAqB,IAAI,sBAAsB,EAC/C,WAAW,IAAI,YAAY,EAC3B,kBAAkB,IAAI,mBAAmB,EACzC,eAAe,IAAI,gBAAgB,EACnC,kBAAkB,IAAI,mBAAmB,EACzC,wBAAwB,IAAI,yBAAyB,EACrD,oBAAoB,IAAI,qBAAqB,EAC7C,uBAAuB,IAAI,wBAAwB,GACpD,CAAC;AAkEF;;;;;GAKG;AACH,iBAAS,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA+B7C;AASD,iBAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ9D;AAED,iBAAS,wBAAwB,IAAI,MAAM,CAW1C;AAcD,iBAAS,oBAAoB,IAAI,MAAM,CAMtC;AAiKD,iBAAS,kBAAkB,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,YAAY,GAAG,WAAW,GAC/B,IAAI,CA0CN;AA2BD,iBAAS,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI1C;AAyED,iBAAS,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CA0BxE"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAiCvE,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAmGD,iBAAe,qBAAqB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAqCf;AAMD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAgID;;;;;GAKG;AACH,iBAAe,mBAAmB,CAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAuCf;AAsCD;;;;GAIG;AACH,iBAAe,wBAAwB,CACrC,aAAa,EAAE,MAAM,EAAE,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CA2Ef;AAED;;;GAGG;AACH,iBAAS,qBAAqB,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,IAAI,CAqEN;AAgHD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GACf;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkB7D;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,yCAAyC;AACzC,OAAO,EACL,qBAAqB,IAAI,sBAAsB,EAC/C,mBAAmB,IAAI,oBAAoB,EAC3C,wBAAwB,IAAI,yBAAyB,EACrD,qBAAqB,IAAI,sBAAsB,EAC/C,WAAW,IAAI,YAAY,EAC3B,kBAAkB,IAAI,mBAAmB,EACzC,eAAe,IAAI,gBAAgB,EACnC,kBAAkB,IAAI,mBAAmB,EACzC,wBAAwB,IAAI,yBAAyB,EACrD,oBAAoB,IAAI,qBAAqB,EAC7C,uBAAuB,IAAI,wBAAwB,GACpD,CAAC;AAkEF;;;;;GAKG;AACH,iBAAS,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA+B7C;AASD,iBAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ9D;AAED,iBAAS,wBAAwB,IAAI,MAAM,CAW1C;AAcD,iBAAS,oBAAoB,IAAI,MAAM,CAMtC;AAiKD,iBAAS,kBAAkB,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,YAAY,GAAG,WAAW,GAC/B,IAAI,CA0CN;AAqED,iBAAS,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI1C;AAyED,iBAAS,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CA0BxE"}
@@ -101,6 +101,7 @@ async function createWorkspaceInteractive(name, opts, clack) {
101
101
  const appDir = path.join(targetDir, "apps", t);
102
102
  await scaffoldAppTemplate(appDir, t);
103
103
  replacePlaceholders(appDir, t, titleCase(t), name);
104
+ rewriteTrackingAppId(appDir, t, t);
104
105
  workspacifyApp({
105
106
  appDir,
106
107
  appName: t,
@@ -219,6 +220,7 @@ async function scaffoldOneAppIntoWorkspace(workspace, appName, templateName, cla
219
220
  try {
220
221
  await scaffoldAppTemplate(appDir, templateName);
221
222
  replacePlaceholders(appDir, appName, titleCase(appName), path.basename(workspace.workspaceRoot));
223
+ rewriteTrackingAppId(appDir, appName, templateName);
222
224
  workspacifyApp({
223
225
  appDir,
224
226
  appName,
@@ -287,7 +289,7 @@ async function createStandaloneApp(name, opts, clack) {
287
289
  s.start("Scaffolding your app...");
288
290
  try {
289
291
  await scaffoldAppTemplate(targetDir, template);
290
- postProcessStandalone(name, targetDir);
292
+ postProcessStandalone(name, targetDir, template);
291
293
  s.stop("App created!");
292
294
  }
293
295
  catch (err) {
@@ -460,9 +462,10 @@ async function scaffoldRequiredPackages(templateNames, workspaceRoot) {
460
462
  * Post-process a standalone scaffold: replace placeholders, strip
461
463
  * workspace:* deps, set up agent symlinks, etc.
462
464
  */
463
- function postProcessStandalone(name, targetDir) {
465
+ function postProcessStandalone(name, targetDir, templateName) {
464
466
  const appTitle = titleCase(name);
465
467
  replacePlaceholders(targetDir, name, appTitle);
468
+ rewriteTrackingAppId(targetDir, name, templateName);
466
469
  fixPackageJsonName(targetDir, name);
467
470
  rewriteNetlifyToml(targetDir, name, "standalone");
468
471
  for (const base of ["learnings"]) {
@@ -923,6 +926,31 @@ function rewriteNetlifyToml(appDir, appName, mode) {
923
926
  }
924
927
  catch { }
925
928
  }
929
+ function rewriteTrackingAppId(appDir, appName, templateName) {
930
+ const rootPath = path.join(appDir, "app", "root.tsx");
931
+ if (!fs.existsSync(rootPath))
932
+ return;
933
+ try {
934
+ const content = fs.readFileSync(rootPath, "utf-8");
935
+ const pattern = /(^\s*app:\s*)(["'])(?:agent-native-[^"']+|\{\{APP_NAME\}\})\2(\s*,?)/m;
936
+ if (!pattern.test(content))
937
+ return;
938
+ let next = content.replace(pattern, (_match, prefix, quote, suffix) => `${prefix}${quote}${appName}${quote}${suffix}`);
939
+ if (templateName &&
940
+ templateName !== appName &&
941
+ !hasTrackingTemplate(next)) {
942
+ next = next.replace(/(^\s*app:\s*["'][^"']+["'],?\s*$)/m, (line) => `${line}\n template: ${JSON.stringify(templateName)},`);
943
+ }
944
+ if (next !== content) {
945
+ fs.writeFileSync(rootPath, next);
946
+ }
947
+ }
948
+ catch { }
949
+ }
950
+ function hasTrackingTemplate(content) {
951
+ const match = content.match(/configureTracking\(\{[\s\S]*?\}\);/);
952
+ return !!match && /^\s*template\s*:/m.test(match[0]);
953
+ }
926
954
  function tryGitInit(dir) {
927
955
  try {
928
956
  execFileSync("git", ["init"], { cwd: dir, stdio: "pipe" });
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EACL,aAAa,EACb,WAAW,EACX,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,IAAI,GAAG,wBAAwB,CAAC;AACtC,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,2BAA2B,GAAG,QAAQ,CAAC;AAE7C;;;;GAIG;AACH,SAAS,YAAY,CAAC,SAAyB;IAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,sDAAsD;AACtD,MAAM,YAAY,GAAG;IACnB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,oCAAoC;CAC3C,CAAC;AAWF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAa,EACb,IAAuB;IAEvB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE7C,yEAAyE;IACzE,0DAA0D;IAC1D,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,kEAAkE;IAClE,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;QACrB,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,mEAAmE;IACnE,oEAAoE;IACpE,uEAAuE;IACvE,qCAAqC;IACrC,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,+BAA+B;IAC/B,MAAM,0BAA0B,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;+EAE+E;AAE/E,KAAK,UAAU,0BAA0B,CACvC,IAAwB,EACxB,IAAkC,EAClC,KAAsC;IAEtC,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAEnD,IAAI,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAE1E,KAAK,CAAC,IAAI,CACR;QACE,qEAAqE;QACrE,sEAAsE;QACtE,wEAAwE;QACxE,mEAAmE;KACpE,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,kBAAkB,CACnB,CAAC;IAEF,yEAAyE;IACzE,0CAA0C;IAC1C,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,SAAS,GACb,WAAW,CAAC,MAAM,GAAG,CAAC;QACpB,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,MAAM,oBAAoB,CAAC,WAAW,EAAE,KAAK,EAAE;YAC7C,gBAAgB,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;SAC1C,CAAC,CAAC;IACT,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IACpD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,mBAAmB,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC,CAAC,KAAK,CAAC,8BAA8B,SAAS,CAAC,MAAM,YAAY,CAAC,CAAC;IAEpE,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,iBAAiB,GAAG,IAAI,IAAI,SAAS,CAAC;QAE5C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/C,MAAM,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrC,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACnD,cAAc,CAAC;gBACb,MAAM;gBACN,OAAO,EAAE,CAAC;gBACV,YAAY,EAAE,CAAC;gBACf,aAAa,EAAE,SAAS;gBACxB,iBAAiB;gBACjB,qBAAqB,EAAE,wBAAwB,EAAE;aAClD,CAAC,CAAC;YACH,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC9B,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAC3C,eAAe,CAAC,MAAM,CAAC,CAAC;YACxB,oDAAoD;YACpD,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,wBAAwB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAErD,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACxC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,SAAS,CAAC,CAAC;IAEtB,KAAK,CAAC,KAAK,CACT;QACE,mBAAmB;QACnB,EAAE;QACF,QAAQ,IAAI,EAAE;QACd,gBAAgB;QAChB,YAAY;QACZ,EAAE;QACF,8CAA8C;QAC9C,kDAAkD;KACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,SAAiB,EACjB,IAAY;IAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;IAE5E,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACjC,mBAAmB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,6BAA6B,CAAC,SAAS,CAAC,CAAC;IACzC,eAAe,CAAC,SAAS,CAAC,CAAC;IAE3B,wEAAwE;IACxE,qEAAqE;IACrE,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YACpC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;YAClC,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;iBACnC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,EAAE,CAAC,aAAa,CACd,MAAM,EACN,QAAQ,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,WAAW,GAAG,IAAI,CACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACtC,mBAAmB,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,6BAA6B,CAAC,cAAc,CAAC,CAAC;IAE9C,uCAAuC;IACvC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;+EAE+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAa,EACb,IAAuB;IAEvB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,KAAK,CAAC,MAAM,CACV,6FAA6F,CAC9F,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAE7D,iDAAiD;IACjD,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,2BAA2B,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,WAAW,EAAE,KAAK,EAAE;QAC/D,YAAY,EAAE,SAAS;QACvB,OAAO,EAAE,gCAAgC;KAC1C,CAAC,CAAC;IACH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,2BAA2B,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,SAA+D,EAC/D,OAAe,EACf,YAAoB,EACpB,KAAsC;IAEtC,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC3D,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE3C,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,MAAM,CAAC,mBAAmB,OAAO,mBAAmB,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC,CAAC,KAAK,CAAC,oBAAoB,OAAO,SAAS,YAAY,KAAK,CAAC,CAAC;IAE/D,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAChD,mBAAmB,CACjB,MAAM,EACN,OAAO,EACP,SAAS,CAAC,OAAO,CAAC,EAClB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,CACvC,CAAC;QACF,cAAc,CAAC;YACb,MAAM;YACN,OAAO;YACP,YAAY;YACZ,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;YAC9C,qBAAqB,EAAE,wBAAwB,EAAE;SAClD,CAAC,CAAC;QACH,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACjD,eAAe,CAAC,MAAM,CAAC,CAAC;QACxB,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,wBAAwB,CAAC,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;QACxE,CAAC,CAAC,IAAI,CAAC,mBAAmB,OAAO,GAAG,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,IAAI,CAAC,2BAA2B,OAAO,GAAG,CAAC,CAAC;QAC9C,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,KAAK,CACT;QACE,OAAO;QACP,EAAE;QACF,gBAAgB;QAChB,YAAY;QACZ,EAAE;QACF,0CAA0C,OAAO,qBAAqB,OAAO,GAAG;KACjF,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED;;+EAE+E;AAE/E,KAAK,UAAU,mBAAmB,CAChC,IAAwB,EACxB,IAAkC,EAClC,KAAsC;IAEtC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAExD,IAAI,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IACpD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,mBAAmB,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mDAAmD;IACnD,IAAI,QAAQ,GACV,IAAI,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YAChC,OAAO,EAAE,uCAAuC;YAChD,OAAO,EAAE;gBACP,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC3C,KAAK,EAAE,CAAC,CAAC,IAAI;oBACb,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC;gBACH;oBACE,KAAK,EAAE,YAAY,CAAC,IAAI;oBACxB,KAAK,EAAE,YAAY,CAAC,KAAK;oBACzB,IAAI,EAAE,YAAY,CAAC,IAAI;iBACxB;aACF;SACF,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,QAAQ,GAAG,MAAgB,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/C,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAChC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,SAAS,CAAC,CAAC;IAEtB,KAAK,CAAC,KAAK,CAAC,6BAA6B,IAAI,8BAA8B,CAAC,CAAC;AAC/E,CAAC;AAED;;+EAE+E;AAE/E;;;;;GAKG;AACH,KAAK,UAAU,mBAAmB,CAChC,SAAiB,EACjB,QAAgB;IAEhB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3D,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;QACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,iCAAiC,UAAU,uCAAuC,CACnF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,yBAAyB;IACzB,IAAI,QAAQ,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE1D,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,aAAa,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAC7H,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,yEAAyE;IACzE,qCAAqC;IACrC,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,MAAM,oBAAoB,CAAC,IAAI,EAAE,GAAG,aAAa,IAAI,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,wBAAwB,CACrC,aAAuB,EACvB,aAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,EAAE,gBAAgB,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,SAAS;QAEvC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,oBAAoB,CAAC,IAAI,EAAE,YAAY,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACrE,CAAC;QAED,uEAAuE;QACvE,yDAAyD;QACzD,gEAAgE;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACzD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC9D,KAAK,MAAM,OAAO,IAAI;oBACpB,cAAc;oBACd,iBAAiB;oBACjB,kBAAkB;iBACV,EAAE,CAAC;oBACX,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC1B,IAAI,CAAC,IAAI;wBAAE,SAAS;oBACpB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC9C,IACE,OAAO,GAAG,KAAK,QAAQ;4BACvB,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;4BAC5B,GAAG,KAAK,oBAAoB,EAC5B,CAAC;4BACD,IAAI,CAAC,GAAG,CAAC,GAAG,wBAAwB,EAAE,CAAC;wBACzC,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACrE,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,qEAAqE;IACrE,eAAe;IACf,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;qBACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,4BAA4B,CAAC,QAAQ,CAAC;qBACjD,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC7C,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC/B,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,QAAQ,OAAO,MAAM,EAAE,CAAC;oBAC3D,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;gBACvC,CAAC;gBACD,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACzE,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,IAAY,EAAE,SAAiB;IAC5D,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,mBAAmB,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpC,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAElD,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACtD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9D,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,eAAe,CAAC,SAAS,CAAC,CAAC;IAE3B,gEAAgE;IAChE,KAAK,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,iEAAiE;IACjE,0EAA0E;IAC1E,wEAAwE;IACxE,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACrD,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,GAAG,KAAK,oBAAoB,EAAE,CAAC;wBACjC,IAAI,CAAC,GAAG,CAAC,GAAG,wBAAwB,EAAE,CAAC;oBACzC,CAAC;yBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;wBACnE,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;oBACvB,CAAC;yBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;wBACzD,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;oBACvC,CAAC;gBACH,CAAC;YACH,CAAC;YACD,8DAA8D;YAC9D,wEAAwE;YACxE,8DAA8D;YAC9D,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YAC1C,GAAG,CAAC,YAAY,CAAC,QAAQ,KAAK,2BAA2B,CAAC;YAE1D,MAAM,aAAa,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAChE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9C,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;YAChB,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;gBAC5D,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB;gBAChC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,IAAI,CACzC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,aAAa,CAAC,CAAC,CACzC,CAAC;YACF,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,CAAA,CAAC;IACZ,CAAC;IAED,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC;AAED;;+EAE+E;AAE/E,KAAK,UAAU,mBAAmB,CAChC,IAAwB,EACxB,KAAsC,EACtC,IAAyB,EACzB,WAAmB;IAEnB,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,MAAM,CACV,WAAW,IAAI,UAAU,IAAI,iDAAiD,CAC/E,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;QAC9B,OAAO,EAAE,gBAAgB,IAAI,QAAQ;QACrC,WAAW;QACX,QAAQ,CAAC,KAAK;YACZ,IAAI,CAAC,KAAK;gBACR,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC;YACrE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,wEAAwE,CAAC;YAClF,CAAC;YACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtD,OAAO,cAAc,KAAK,kBAAkB,CAAC;YAC/C,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAgB,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,WAAqB,EACrB,KAAsC,EACtC,IAIC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;SAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,KAAK,EAAE,CAAC,CAAC,IAAI;QACb,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;IAEN,wEAAwE;IACxE,gCAAgC;IAChC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,sEAAsE;IACtE,0EAA0E;IAC1E,MAAM,QAAQ,GACZ,WAAW,CAAC,MAAM,GAAG,CAAC;QACpB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,IAAI,EAAE,gBAAgB;YACtB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CACnC;YACH,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;gBAC1C,CAAC,CAAC,CAAC,SAAS,CAAC;gBACb,CAAC,CAAC,EAAE,CAAC;IAEb,MAAM,WAAW,GAAG,IAAI,EAAE,OAAO,IAAI,uCAAuC,CAAC;IAC7E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC;QACrC,OAAO,EAAE,GAAG,WAAW,qDAAqD;QAC5E,OAAO;QACP,aAAa,EAAE,QAAQ;QACvB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAkB,CAAC;AAC5B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,iBAAiB,CAAC,aAAqB;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,EAAE;SACN,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED;;+EAE+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB;IAEhB,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1D,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC;gBACpD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpD,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC;gBAC3D,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,yCAAyC;AACzC,OAAO,EACL,qBAAqB,IAAI,sBAAsB,EAC/C,mBAAmB,IAAI,oBAAoB,EAC3C,wBAAwB,IAAI,yBAAyB,EACrD,qBAAqB,IAAI,sBAAsB,EAC/C,WAAW,IAAI,YAAY,EAC3B,kBAAkB,IAAI,mBAAmB,EACzC,eAAe,IAAI,gBAAgB,EACnC,kBAAkB,IAAI,mBAAmB,EACzC,wBAAwB,IAAI,yBAAyB,EACrD,oBAAoB,IAAI,qBAAqB,EAC7C,uBAAuB,IAAI,wBAAwB,GACpD,CAAC;AAEF;;+EAE+E;AAE/E,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,+BAA+B,CAChE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,OAAe;IACtD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;QACjD,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;KAC7B,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACvD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC;QACH,YAAY,CACV,KAAK,EACL,CAAC,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,CAAC,EACvD,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,IAAY,EACZ,MAAc,EACd,SAAiB;IAEjB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,gCAAgC,IAAI,YAAY,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;IACzF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,qBAAqB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,kBAAkB,IAAI,GAAG,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7B,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,IAAY,EACZ,SAAiB;IAEjB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,MAAM,GAAG,gCAAgC,IAAI,eAAe,CAAC;IACnE,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC;AAED;;+EAE+E;AAE/E;;;;;GAKG;AACH,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,sDAAsD;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAChE,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,6DAA6D;QAC7D,iFAAiF;QACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,SAAS,GAAG,IAAI,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,MAAM;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACnE,IAAI,KAAK;oBAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,IAAY;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAChB,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,SAAS,wBAAwB;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,kCAAkC,KAAK,GAAG,EAAE,CAAC;QAC3D,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,SAAS;YAAE,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IAED,oEAAoE;IACpE,4EAA4E;IAC5E,uEAAuE;IACvE,uEAAuE;IACvE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACjE,CAAC;QACF,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;IACxC,IAAI,OAAO,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,6BAA6B,CAAC,UAAkB;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,KAAK,MAAM,OAAO,IAAI;YACpB,cAAc;YACd,iBAAiB;YACjB,kBAAkB;SACV,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1B,IAAI,IAAI,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,oBAAoB,CAAC,GAAG,wBAAwB,EAAE,CAAC;YAC1D,CAAC;QACH,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,MAAM,iCAAiC,GAAG;IACxC,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,cAAc,EAAE,SAAS,CAAC;IAC3B,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,YAAY,EAAE,YAAY,CAAC;IAC5B,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,MAAM,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,eAAe;IACf,mBAAmB;IACnB,SAAS;IACT,GAAG,iCAAiC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;CAC3D,CAAC,CAAC;AAEH,SAAS,wBAAwB,CAC/B,OAAe,EACf,KAAsC;IAEtC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,KAAK,CAAC,MAAM,CACV,qBAAqB,OAAO,iDAAiD,CAC9E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,4BAA4B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,KAAK,CAAC,MAAM,CACV,aAAa,OAAO,uEAAuE,CAC5F,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CACjC,OAAe,EACf,IAA4B;IAE5B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAClC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,qBAAqB,CAChD,CAAC;IACF,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC,MAAM,CACjD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,KAAK,GAAG,CAAC,CACpE,CAAC;QACF,OAAO,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/D,CAAC;IAED,IAAI,gBAAgB,GAAG,KAAK,CAAC,SAAS,CACpC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,YAAY,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7D,CAAC;IACF,IAAI,gBAAgB,KAAK,CAAC,CAAC;QAAE,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC;IAE7D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CACnC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,KAAK,GAAG,YAAY;YACpB,KAAK,GAAG,gBAAgB;YACxB,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5C,CAAC;QACF,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,KAAK,GAAG,CAAC;QACzC,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC5C,gBAAgB,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CACrB,OAAe,EACf,IAAY,EACZ,EAAU,EACV,MAAc;IAEd,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,IAAI,MAAM,CAChC,8CAA8C,WAAW,qFAAqF,EAC9I,GAAG,CACJ,CAAC;IACF,MAAM,KAAK,GAAG;QACZ,EAAE;QACF,eAAe;QACf,aAAa,IAAI,GAAG;QACpB,WAAW,EAAE,GAAG;QAChB,cAAc,MAAM,EAAE;KACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,IAAY;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,IAAI,MAAM,CAChC,8CAA8C,WAAW,qFAAqF,EAC9I,IAAI,CACL,CAAC;IACF,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,8BAA8B,CACrC,OAAe,EACf,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;IAC/B,IAAI,IAAI,GAAG,0BAA0B,CAAC,OAAO,EAAE;QAC7C,aAAa,EAAE,QAAQ;QACvB,kBAAkB,EAAE,QAAQ;QAC5B,YAAY,EAAE,SAAS;QACvB,qBAAqB,EAAE,OAAO;KAC/B,CAAC,CAAC;IAEH,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACpE,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,iCAAiC,EAAE,CAAC;YAC3D,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAc,EACd,OAAe,EACf,IAAgC;IAEhC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO;IAExC,IAAI,CAAC;QACH,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,oBAAoB,GACxB,eAAe,EAAE,QAAQ,CAAC,+BAA+B,CAAC,IAAI,KAAK,CAAC;QACtE,MAAM,YAAY,GAChB,IAAI,KAAK,WAAW;YAClB,CAAC,CAAC,kBAAkB,OAAO,wBAAwB,OAAO,uCAAuC,OAAO,QAAQ;YAChH,CAAC,CAAC,iCAAiC,CAAC;QACxC,MAAM,aAAa,GACjB,kEAAkE,CAAC;QACrE,MAAM,mBAAmB,GAAG,oBAAoB;YAC9C,CAAC,CAAC,qEAAqE;YACvE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,OAAO,GAAG,GAAG,aAAa,OAAO,mBAAmB,GAAG,YAAY,EAAE,CAAC;QAC5E,MAAM,WAAW,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3E,MAAM,aAAa,GACjB,IAAI,KAAK,WAAW;YAClB,CAAC,CAAC,QAAQ,OAAO,8BAA8B;YAC/C,CAAC,CAAC,6BAA6B,CAAC;QAEpC,OAAO,GAAG,OAAO;aACd,OAAO,CAAC,qBAAqB,EAAE,gBAAgB,OAAO,GAAG,CAAC;aAC1D,OAAO,CACN,qCAAqC,EACrC,cAAc,WAAW,GAAG,CAC7B;aACA,OAAO,CACN,gEAAgE,EAChE,gBAAgB,aAAa,GAAG,CACjC,CAAC;QAEJ,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,GAAG,8BAA8B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QACH,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,YAAY,CACV,KAAK,EACL,CAAC,QAAQ,EAAE,IAAI,EAAE,yCAAyC,CAAC,EAC3D;YACE,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,MAAM;YACb,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,eAAe,EAAE,cAAc;gBAC/B,gBAAgB,EAAE,0BAA0B;gBAC5C,kBAAkB,EAAE,cAAc;gBAClC,mBAAmB,EAAE,0BAA0B;aAChD;SACF,CACF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAW,EACX,OAAe,EACf,QAAgB,EAChB,aAAsB;IAEtB,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,cAAc,EAAE;YAAE,SAAS;QACrC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YACzD,SAAS;QACX,CAAC;QACD,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GACT,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QACxE,IACE,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YACjC,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;YAClC,CAAC,KAAK,EACN,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,aAAa,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,GAAG,IAAI;aACR,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC;aACrC,OAAO,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAE,IAAY,EAAE,IAAa;IACvD,MAAM,YAAY,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,uBAAuB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;YAAE,SAAS;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;YACnE,IAAI,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC5C,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAClC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;wBACvB,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;oBAC3C,CAAC;yBAAM,CAAC;wBACN,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,iCAAiC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/B,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY,EAAE,OAAgB;IAC7D,IACE,IAAI,KAAK,eAAe;QACxB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC5C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IACE,IAAI,KAAK,cAAc;QACvB,IAAI,KAAK,eAAe;QACxB,IAAI,KAAK,MAAM;QACf,IAAI,KAAK,YAAY;QACrB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,SAAS;QAClB,IAAI,KAAK,YAAY;QACrB,IAAI,KAAK,eAAe;QACxB,IAAI,KAAK,SAAS;QAClB,IAAI,KAAK,OAAO;QAChB,IAAI,KAAK,MAAM;QACf,IAAI,KAAK,WAAW,EACpB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CACzE,CAAC;AACJ,CAAC","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath, pathToFileURL } from \"url\";\nimport { execFileSync } from \"child_process\";\nimport { setupAgentSymlinks } from \"./setup-agents.js\";\nimport { workspacifyApp, parseWorkspaceScope } from \"./workspacify.js\";\nimport {\n coreTemplates,\n getTemplate,\n allTemplateNames,\n type TemplateMeta,\n} from \"./templates-meta.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst REPO = \"BuilderIO/agent-native\";\nconst TEMPLATES_DIR = \"templates\";\nconst POSTGRES_DEPENDENCY_VERSION = \"^3.4.9\";\n\n/**\n * Move \"starter\" to the top of the list so it lines up with clack's default\n * highlight on the first option — otherwise users have to scroll to see that\n * Starter is pre-selected.\n */\nfunction starterFirst(templates: TemplateMeta[]): TemplateMeta[] {\n const starter = templates.find((t) => t.name === \"starter\");\n if (!starter) return templates;\n return [starter, ...templates.filter((t) => t.name !== \"starter\")];\n}\n\n/** Blank scaffold option appended to every picker. */\nconst BLANK_OPTION = {\n name: \"blank\",\n label: \"Blank\",\n hint: \"Empty starter — build from scratch\",\n};\n\nexport interface CreateAppOptions {\n /** Pre-select these templates in the picker. Comma-separated string or array. */\n template?: string;\n /** Scaffold a single standalone app (old behavior). Skips workspace creation. */\n standalone?: boolean;\n /** Internal: skip pnpm install at the end (for tests). */\n noInstall?: boolean;\n}\n\n/**\n * Main entry for `agent-native create [name]`.\n *\n * Default behavior: scaffold a workspace at <name>/ with a multi-select\n * template picker. Use --standalone for the single-app standalone flow.\n *\n * If run *inside* an existing workspace, falls through to the add-app\n * flow that scaffolds one new app under apps/<name>/.\n */\nexport async function createApp(\n name?: string,\n opts?: CreateAppOptions,\n): Promise<void> {\n const clack = await import(\"@clack/prompts\");\n\n // If we're already inside a workspace, the meaning of `create <name>` is\n // \"add a new app to this workspace\". Delegate to add-app.\n const workspace = detectWorkspace(process.cwd());\n if (workspace) {\n await addAppToWorkspace(name, opts);\n return;\n }\n\n // Standalone escape hatch — behaves like the old single-app flow.\n if (opts?.standalone) {\n await createStandaloneApp(name, opts, clack);\n return;\n }\n\n // When exactly one template is specified explicitly, treat it as a\n // standalone scaffold (script-friendly, matches historic behavior).\n // Use `--template a,b` or pass no --template to opt into the workspace\n // flow with the multi-select picker.\n const parsed = parseTemplateList(opts?.template);\n if (parsed.length === 1) {\n await createStandaloneApp(name, opts, clack);\n return;\n }\n\n // Default: create a workspace.\n await createWorkspaceInteractive(name, opts, clack);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Workspace creation (new default)\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function createWorkspaceInteractive(\n name: string | undefined,\n opts: CreateAppOptions | undefined,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n clack.intro(\"Create a new agent-native workspace\");\n\n name = await promptNameIfMissing(name, clack, \"workspace\", \"my-platform\");\n\n clack.note(\n [\n \"A workspace is a monorepo that holds one or more apps sharing auth,\",\n \"database, and the agent chat. Pick as many as you want — you can add\",\n \"more later with `agent-native add-app`. Starter is a minimal scaffold,\",\n \"useful as a blank app to build from scratch alongside the others.\",\n ].join(\"\\n\"),\n \"About workspaces\",\n );\n\n // If templates were explicitly passed via --template, use them directly.\n // Otherwise show the multi-select picker.\n const preselected = parseTemplateList(opts?.template);\n const templates =\n preselected.length > 0\n ? preselected\n : await promptTemplatePicker(preselected, clack, {\n defaultTemplates: [\"starter\", \"dispatch\"],\n });\n if (templates.length === 0) {\n clack.cancel(\"No apps selected. Cancelled.\");\n process.exit(0);\n }\n\n const targetDir = path.resolve(process.cwd(), name);\n if (fs.existsSync(targetDir)) {\n clack.cancel(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n const s = clack.spinner();\n s.start(`Scaffolding workspace with ${templates.length} app(s)...`);\n\n const firstApp = templates[0];\n\n try {\n await scaffoldWorkspaceRoot(targetDir, name);\n const workspaceCoreName = `@${name}/shared`;\n\n for (const t of templates) {\n const appDir = path.join(targetDir, \"apps\", t);\n await scaffoldAppTemplate(appDir, t);\n replacePlaceholders(appDir, t, titleCase(t), name);\n workspacifyApp({\n appDir,\n appName: t,\n templateName: t,\n workspaceRoot: targetDir,\n workspaceCoreName,\n coreDependencyVersion: getCoreDependencyVersion(),\n });\n fixPackageJsonName(appDir, t);\n rewriteNetlifyToml(appDir, t, \"workspace\");\n renameGitignore(appDir);\n // Each app owns its own .claude / .agents symlinks.\n setupAgentSymlinks(appDir);\n }\n\n await scaffoldRequiredPackages(templates, targetDir);\n\n s.stop(\"Workspace scaffolded.\");\n } catch (err: any) {\n s.stop(\"Failed to scaffold workspace.\");\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n tryGitInit(targetDir);\n\n clack.outro(\n [\n `Done! Next steps:`,\n ``,\n ` cd ${name}`,\n ` pnpm install`,\n ` pnpm dev`,\n ``,\n `Add another app later: agent-native add-app`,\n `Deploy the whole workspace: agent-native deploy`,\n ].join(\"\\n\"),\n );\n}\n\nasync function scaffoldWorkspaceRoot(\n targetDir: string,\n name: string,\n): Promise<void> {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const rootTemplate = path.join(packageRoot, \"src/templates/workspace-root\");\n const coreTemplate = path.join(packageRoot, \"src/templates/workspace-core\");\n\n copyDir(rootTemplate, targetDir);\n replacePlaceholders(targetDir, name, titleCase(name));\n rewriteCoreDependencyVersions(targetDir);\n renameGitignore(targetDir);\n\n // Inject the catalog from this repo's pnpm-workspace.yaml so templates'\n // `catalog:` version references resolve in the scaffolded workspace.\n const catalog = loadCatalog();\n if (Object.keys(catalog).length > 0) {\n const wsPath = path.join(targetDir, \"pnpm-workspace.yaml\");\n const existing = fs.existsSync(wsPath)\n ? fs.readFileSync(wsPath, \"utf-8\")\n : \"\";\n if (!existing.includes(\"catalog:\")) {\n const catalogYaml = Object.entries(catalog)\n .map(([k, v]) => ` \"${k}\": \"${v}\"`)\n .join(\"\\n\");\n fs.writeFileSync(\n wsPath,\n existing.trimEnd() + \"\\ncatalog:\\n\" + catalogYaml + \"\\n\",\n );\n }\n }\n\n const corePackageDir = path.join(targetDir, \"packages\", \"shared\");\n fs.mkdirSync(path.join(targetDir, \"packages\"), { recursive: true });\n copyDir(coreTemplate, corePackageDir);\n replacePlaceholders(corePackageDir, name, titleCase(name));\n rewriteCoreDependencyVersions(corePackageDir);\n\n // Ensure apps/ exists (even if empty).\n fs.mkdirSync(path.join(targetDir, \"apps\"), { recursive: true });\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Adding an app into an existing workspace\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Entry for `agent-native add-app [name]`. Called from inside a workspace.\n * Shows the multi-select picker (excluding already-installed apps) and\n * scaffolds each selected template under apps/<name>/.\n *\n * When `name` is provided with `--template foo`, scaffolds exactly one app\n * named <name> using template foo (non-interactive).\n */\nexport async function addAppToWorkspace(\n name?: string,\n opts?: CreateAppOptions,\n): Promise<void> {\n const clack = await import(\"@clack/prompts\");\n const workspace = detectWorkspace(process.cwd());\n if (!workspace) {\n clack.cancel(\n \"Not inside a workspace. Run `agent-native create` to make one first, or use `--standalone`.\",\n );\n process.exit(1);\n }\n\n clack.intro(\"Add an app to your workspace\");\n\n const installed = listInstalledApps(workspace.workspaceRoot);\n\n // Non-interactive path: name + single --template\n const preselected = parseTemplateList(opts?.template);\n if (name && preselected.length === 1) {\n const tpl = preselected[0];\n await scaffoldOneAppIntoWorkspace(workspace, name, tpl, clack);\n return;\n }\n\n const templates = await promptTemplatePicker(preselected, clack, {\n excludeNames: installed,\n message: \"Which apps do you want to add?\",\n });\n if (templates.length === 0) {\n clack.cancel(\"No apps selected. Cancelled.\");\n process.exit(0);\n }\n\n for (const t of templates) {\n await scaffoldOneAppIntoWorkspace(workspace, t, t, clack);\n }\n}\n\nasync function scaffoldOneAppIntoWorkspace(\n workspace: { workspaceRoot: string; workspaceCoreName: string },\n appName: string,\n templateName: string,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n validateWorkspaceAppName(appName, clack);\n const appsDir = path.join(workspace.workspaceRoot, \"apps\");\n fs.mkdirSync(appsDir, { recursive: true });\n const appDir = path.join(appsDir, appName);\n\n if (fs.existsSync(appDir)) {\n clack.cancel(`Directory \"apps/${appName}\" already exists.`);\n process.exit(1);\n }\n\n const s = clack.spinner();\n s.start(`Scaffolding apps/${appName} from ${templateName}...`);\n\n try {\n await scaffoldAppTemplate(appDir, templateName);\n replacePlaceholders(\n appDir,\n appName,\n titleCase(appName),\n path.basename(workspace.workspaceRoot),\n );\n workspacifyApp({\n appDir,\n appName,\n templateName,\n workspaceRoot: workspace.workspaceRoot,\n workspaceCoreName: workspace.workspaceCoreName,\n coreDependencyVersion: getCoreDependencyVersion(),\n });\n fixPackageJsonName(appDir, appName);\n rewriteNetlifyToml(appDir, appName, \"workspace\");\n renameGitignore(appDir);\n setupAgentSymlinks(appDir);\n await scaffoldRequiredPackages([templateName], workspace.workspaceRoot);\n s.stop(`Scaffolded apps/${appName}.`);\n } catch (err: any) {\n s.stop(`Failed to scaffold apps/${appName}.`);\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n clack.outro(\n [\n `Done!`,\n ``,\n ` pnpm install`,\n ` pnpm dev`,\n ``,\n `The workspace gateway will detect apps/${appName} and serve it at /${appName}.`,\n ].join(\"\\n\"),\n );\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Standalone creation (escape hatch)\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function createStandaloneApp(\n name: string | undefined,\n opts: CreateAppOptions | undefined,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n clack.intro(\"Create a new standalone agent-native app\");\n\n name = await promptNameIfMissing(name, clack, \"app\", \"my-app\");\n\n const targetDir = path.resolve(process.cwd(), name);\n if (fs.existsSync(targetDir)) {\n clack.cancel(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n // Standalone is single-select — pick one template.\n let template =\n opts?.template && !opts.template.includes(\",\") ? opts.template : undefined;\n if (!template) {\n const picked = await clack.select({\n message: \"Which template would you like to use?\",\n options: [\n ...starterFirst(coreTemplates()).map((t) => ({\n value: t.name,\n label: t.label,\n hint: t.hint,\n })),\n {\n value: BLANK_OPTION.name,\n label: BLANK_OPTION.label,\n hint: BLANK_OPTION.hint,\n },\n ],\n });\n if (clack.isCancel(picked)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n template = picked as string;\n }\n\n const s = clack.spinner();\n s.start(\"Scaffolding your app...\");\n try {\n await scaffoldAppTemplate(targetDir, template);\n postProcessStandalone(name, targetDir);\n s.stop(\"App created!\");\n } catch (err: any) {\n s.stop(\"Failed to create app.\");\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n tryGitInit(targetDir);\n\n clack.outro(`Done! Next steps:\\n\\n cd ${name}\\n pnpm install\\n pnpm dev`);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Shared scaffolding helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Scaffold a single app template into `targetDir`. Resolves:\n * - \"blank\" → bundled default template\n * - \"github:user/repo\" → download the whole repo\n * - first-party template name → download that subdir from BuilderIO/agent-native\n */\nasync function scaffoldAppTemplate(\n targetDir: string,\n template: string,\n): Promise<void> {\n fs.mkdirSync(path.dirname(targetDir), { recursive: true });\n\n if (template === \"blank\") {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const defaultDir = path.join(packageRoot, \"src/templates/default\");\n if (!fs.existsSync(defaultDir)) {\n throw new Error(\n `Default template not found at ${defaultDir}. Is the package installed correctly?`,\n );\n }\n copyDir(defaultDir, targetDir);\n return;\n }\n\n // Normalize legacy alias\n let resolved = template === \"video\" ? \"videos\" : template;\n\n if (resolved.startsWith(\"github:\")) {\n const repo = resolved.slice(\"github:\".length);\n await downloadGitHubRepo(repo, targetDir);\n return;\n }\n\n if (!allTemplateNames().includes(resolved)) {\n throw new Error(\n `Unknown template \"${template}\". Known: ${allTemplateNames().join(\", \")} — or use github:user/repo for community templates.`,\n );\n }\n\n // If running from the framework monorepo with a local templates/ dir, use\n // that. Otherwise download from GitHub. This keeps `agent-native create`\n // fast during framework development.\n const localTemplate = findLocalTemplate(resolved);\n if (localTemplate) {\n copyDir(localTemplate, targetDir);\n } else {\n await downloadGitHubSubdir(REPO, `${TEMPLATES_DIR}/${resolved}`, targetDir);\n }\n}\n\n/**\n * When developing the framework itself, prefer the sibling templates/<name>\n * directory. Returns undefined when running as a published package.\n */\nfunction findLocalTemplate(name: string): string | undefined {\n let dir = path.resolve(__dirname);\n for (let i = 0; i < 10; i++) {\n const candidate = path.join(dir, \"templates\", name);\n if (fs.existsSync(path.join(candidate, \"package.json\"))) {\n return candidate;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return undefined;\n}\n\n/**\n * Find a local packages/<name> directory (for framework development).\n * Returns undefined when running as a published npm package.\n */\nfunction findLocalPackage(name: string): string | undefined {\n let dir = path.resolve(__dirname);\n for (let i = 0; i < 10; i++) {\n const candidate = path.join(dir, \"packages\", name);\n if (fs.existsSync(path.join(candidate, \"package.json\"))) {\n return candidate;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return undefined;\n}\n\n/**\n * Scaffold internal workspace packages required by the selected templates.\n * Deduplicates so each package is only copied once even if multiple\n * templates need it.\n */\nasync function scaffoldRequiredPackages(\n templateNames: string[],\n workspaceRoot: string,\n): Promise<void> {\n const needed = new Set<string>();\n for (const t of templateNames) {\n const meta = getTemplate(t);\n if (meta?.requiredPackages) {\n for (const p of meta.requiredPackages) needed.add(p);\n }\n }\n\n for (const pkgName of needed) {\n const targetDir = path.join(workspaceRoot, \"packages\", pkgName);\n if (fs.existsSync(targetDir)) continue;\n\n fs.mkdirSync(path.join(workspaceRoot, \"packages\"), { recursive: true });\n\n const localPkg = findLocalPackage(pkgName);\n if (localPkg) {\n copyDir(localPkg, targetDir);\n } else {\n await downloadGitHubSubdir(REPO, `packages/${pkgName}`, targetDir);\n }\n\n // The copied package may have @agent-native/core as a workspace:* dep.\n // Convert it to this CLI package's published range since\n // @agent-native/core is an npm package, not a workspace member.\n const pkgJsonPath = path.join(targetDir, \"package.json\");\n if (fs.existsSync(pkgJsonPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n if (\n typeof val === \"string\" &&\n val.startsWith(\"workspace:\") &&\n key === \"@agent-native/core\"\n ) {\n deps[key] = getCoreDependencyVersion();\n }\n }\n }\n fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n }\n }\n\n // Add a postinstall script to build workspace packages so their dist/\n // directories exist even when downloaded from GitHub (where dist/ is\n // gitignored).\n if (needed.size > 0) {\n const rootPkgPath = path.join(workspaceRoot, \"package.json\");\n if (fs.existsSync(rootPkgPath)) {\n try {\n const rootPkg = JSON.parse(fs.readFileSync(rootPkgPath, \"utf-8\"));\n rootPkg.scripts = rootPkg.scripts ?? {};\n const builds = [...needed]\n .map((n) => `pnpm --filter ./packages/${n} build`)\n .join(\" && \");\n const existing = rootPkg.scripts.postinstall;\n if (existing) {\n if (!existing.includes(builds)) {\n rootPkg.scripts.postinstall = `${existing} && ${builds}`;\n }\n } else {\n rootPkg.scripts.postinstall = builds;\n }\n fs.writeFileSync(rootPkgPath, JSON.stringify(rootPkg, null, 2) + \"\\n\");\n } catch {}\n }\n }\n}\n\n/**\n * Post-process a standalone scaffold: replace placeholders, strip\n * workspace:* deps, set up agent symlinks, etc.\n */\nfunction postProcessStandalone(name: string, targetDir: string): void {\n const appTitle = titleCase(name);\n replacePlaceholders(targetDir, name, appTitle);\n fixPackageJsonName(targetDir, name);\n rewriteNetlifyToml(targetDir, name, \"standalone\");\n\n for (const base of [\"learnings\"]) {\n const defaultsFile = path.join(targetDir, `${base}.defaults.md`);\n const targetFile = path.join(targetDir, `${base}.md`);\n if (fs.existsSync(defaultsFile) && !fs.existsSync(targetFile)) {\n fs.copyFileSync(defaultsFile, targetFile);\n }\n }\n\n renameGitignore(targetDir);\n\n // Drop monorepo-only files that standalone apps shouldn't ship.\n for (const f of [\"DEVELOPING.md\"]) {\n const p = path.join(targetDir, f);\n if (fs.existsSync(p)) fs.unlinkSync(p);\n }\n\n // Resolve workspace:* and catalog: deps for standalone projects.\n // catalog: references only resolve inside a pnpm workspace with a catalog\n // defined in pnpm-workspace.yaml — standalone scaffolds don't have one.\n const catalog = loadCatalog();\n const pkgPath = path.join(targetDir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n if (key === \"@agent-native/core\") {\n deps[key] = getCoreDependencyVersion();\n } else if (typeof val === \"string\" && val.startsWith(\"workspace:\")) {\n deps[key] = \"latest\";\n } else if (typeof val === \"string\" && val === \"catalog:\") {\n deps[key] = catalog[key] ?? \"latest\";\n }\n }\n }\n // Ensure pnpm.onlyBuiltDependencies is set so native packages\n // (better-sqlite3, esbuild, node-pty) compile their postinstall scripts\n // under pnpm 10+ without prompting for `pnpm approve-builds`.\n pkg.dependencies = pkg.dependencies ?? {};\n pkg.dependencies.postgres ??= POSTGRES_DEPENDENCY_VERSION;\n\n const requiredBuilt = [\"better-sqlite3\", \"esbuild\", \"node-pty\"];\n if (!pkg.pnpm || typeof pkg.pnpm !== \"object\") {\n pkg.pnpm = {};\n }\n const existing = Array.isArray(pkg.pnpm.onlyBuiltDependencies)\n ? pkg.pnpm.onlyBuiltDependencies\n : [];\n pkg.pnpm.onlyBuiltDependencies = Array.from(\n new Set([...existing, ...requiredBuilt]),\n );\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n }\n\n setupAgentSymlinks(targetDir);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Prompting helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function promptNameIfMissing(\n name: string | undefined,\n clack: typeof import(\"@clack/prompts\"),\n kind: \"workspace\" | \"app\",\n placeholder: string,\n): Promise<string> {\n if (name) {\n if (!/^[a-z][a-z0-9-]*$/.test(name)) {\n clack.cancel(\n `Invalid ${kind} name \"${name}\". Use lowercase letters, numbers, and hyphens.`,\n );\n process.exit(1);\n }\n return name;\n }\n const result = await clack.text({\n message: `What is your ${kind} name?`,\n placeholder,\n validate(value) {\n if (!value)\n return `${kind[0].toUpperCase() + kind.slice(1)} name is required`;\n if (!/^[a-z][a-z0-9-]*$/.test(value)) {\n return \"Use lowercase letters, numbers, and hyphens (must start with a letter)\";\n }\n if (fs.existsSync(path.resolve(process.cwd(), value))) {\n return `Directory \"${value}\" already exists`;\n }\n },\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return result as string;\n}\n\nasync function promptTemplatePicker(\n preselected: string[],\n clack: typeof import(\"@clack/prompts\"),\n opts?: {\n defaultTemplates?: string[];\n excludeNames?: string[];\n message?: string;\n },\n): Promise<string[]> {\n const excluded = new Set(opts?.excludeNames ?? []);\n const options = starterFirst(coreTemplates())\n .filter((t) => !excluded.has(t.name))\n .map((t) => ({\n value: t.name,\n label: t.label,\n hint: t.hint,\n }));\n\n // If there's nothing left to pick, the caller gets an empty selection —\n // they decide how to handle it.\n if (options.length === 0) return [];\n\n // Default pre-selection: what the user passed via --template, falling\n // back to \"starter\" when that's available and nothing else is pre-picked.\n const defaults =\n preselected.length > 0\n ? preselected.filter((p) => options.some((o) => o.value === p))\n : opts?.defaultTemplates\n ? opts.defaultTemplates.filter((p) =>\n options.some((o) => o.value === p),\n )\n : options.some((o) => o.value === \"starter\")\n ? [\"starter\"]\n : [];\n\n const baseMessage = opts?.message ?? \"Which apps would you like to include?\";\n const result = await clack.multiselect({\n message: `${baseMessage}\\n (↑/↓ move · space to toggle · enter to confirm)`,\n options,\n initialValues: defaults,\n required: false,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return result as string[];\n}\n\nfunction parseTemplateList(input?: string): string[] {\n if (!input) return [];\n return input\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\nfunction listInstalledApps(workspaceRoot: string): string[] {\n const appsDir = path.join(workspaceRoot, \"apps\");\n if (!fs.existsSync(appsDir)) return [];\n return fs\n .readdirSync(appsDir, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Workspace detection\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Walk up from startDir looking for a package.json with\n * `agent-native.workspaceCore` set. Returns the workspace root and core\n * package name, or null if not inside a workspace.\n */\nexport function detectWorkspace(\n startDir: string,\n): { workspaceRoot: string; workspaceCoreName: string } | null {\n let dir = path.resolve(startDir);\n for (let i = 0; i < 20; i++) {\n const pkgPath = path.join(dir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n const wsCore = pkg?.[\"agent-native\"]?.workspaceCore;\n if (typeof wsCore === \"string\" && wsCore.length > 0) {\n return { workspaceRoot: dir, workspaceCoreName: wsCore };\n }\n } catch {}\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\nexport { parseWorkspaceScope };\n\n/** @internal — exported for E2E tests */\nexport {\n scaffoldWorkspaceRoot as _scaffoldWorkspaceRoot,\n scaffoldAppTemplate as _scaffoldAppTemplate,\n scaffoldRequiredPackages as _scaffoldRequiredPackages,\n postProcessStandalone as _postProcessStandalone,\n loadCatalog as _loadCatalog,\n fixPackageJsonName as _fixPackageJsonName,\n renameGitignore as _renameGitignore,\n rewriteNetlifyToml as _rewriteNetlifyToml,\n getCoreDependencyVersion as _getCoreDependencyVersion,\n getGitHubTemplateRef as _getGitHubTemplateRef,\n shouldSkipScaffoldEntry as _shouldSkipScaffoldEntry,\n};\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Download / copy helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\nfunction validateRepoName(repo: string): void {\n if (!/^[a-zA-Z0-9_.-]+\\/[a-zA-Z0-9_.-]+$/.test(repo)) {\n throw new Error(\n `Invalid repository name \"${repo}\". Expected format: user/repo`,\n );\n }\n}\n\nfunction downloadAndExtract(url: string, destDir: string): void {\n fs.mkdirSync(destDir, { recursive: true });\n const tarball = execFileSync(\"curl\", [\"-sL\", url], {\n maxBuffer: 100 * 1024 * 1024,\n });\n const tarPath = path.join(destDir, \".download.tar.gz\");\n fs.writeFileSync(tarPath, tarball);\n try {\n execFileSync(\n \"tar\",\n [\"xzf\", tarPath, \"--strip-components=1\", \"-C\", destDir],\n { stdio: \"pipe\" },\n );\n } finally {\n fs.unlinkSync(tarPath);\n }\n}\n\nasync function downloadGitHubSubdir(\n repo: string,\n subdir: string,\n targetDir: string,\n): Promise<void> {\n validateRepoName(repo);\n const ref = getGitHubTemplateRef();\n const tarUrl = `https://api.github.com/repos/${repo}/tarball/${encodeURIComponent(ref)}`;\n const tmpDir = path.join(targetDir, \"..\", `.agent-native-tmp-${Date.now()}`);\n try {\n downloadAndExtract(tarUrl, tmpDir);\n const srcDir = path.join(tmpDir, subdir);\n if (!fs.existsSync(srcDir)) {\n throw new Error(`Template directory \"${subdir}\" not found in ${repo}.`);\n }\n copyDir(srcDir, targetDir);\n } finally {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n }\n}\n\nasync function downloadGitHubRepo(\n repo: string,\n targetDir: string,\n): Promise<void> {\n validateRepoName(repo);\n const tarUrl = `https://api.github.com/repos/${repo}/tarball/main`;\n downloadAndExtract(tarUrl, targetDir);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Text / filesystem helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Load the pnpm workspace catalog.\n * First tries the build-time snapshot at dist/catalog.json (works when\n * running as a published npm package). Falls back to parsing the monorepo\n * pnpm-workspace.yaml (works during local framework development).\n */\nfunction loadCatalog(): Record<string, string> {\n try {\n // Build-time snapshot generated by finalize-build.mjs\n const snapshotPath = path.resolve(__dirname, \"../catalog.json\");\n if (fs.existsSync(snapshotPath)) {\n return JSON.parse(fs.readFileSync(snapshotPath, \"utf-8\"));\n }\n\n // Fallback: parse pnpm-workspace.yaml from the monorepo root\n // From dist/cli/ or src/cli/: 4 levels up → packages/core → packages → repo root\n const repoRoot = path.resolve(__dirname, \"../../../..\");\n const wsPath = path.join(repoRoot, \"pnpm-workspace.yaml\");\n if (!fs.existsSync(wsPath)) return {};\n const content = fs.readFileSync(wsPath, \"utf-8\");\n const result: Record<string, string> = {};\n let inCatalog = false;\n for (const line of content.split(\"\\n\")) {\n if (/^catalog:\\s*$/.test(line)) {\n inCatalog = true;\n continue;\n }\n if (inCatalog) {\n if (/^\\S/.test(line)) break;\n const match = line.match(/^\\s+\"?([^\":]+)\"?\\s*:\\s*\"?([^\"]+)\"?\\s*$/);\n if (match) result[match[1]] = match[2];\n }\n }\n return result;\n } catch {\n return {};\n }\n}\n\nfunction titleCase(name: string): string {\n return name\n .split(\"-\")\n .map((w) => (w ? w[0].toUpperCase() + w.slice(1) : w))\n .join(\" \");\n}\n\nfunction fixPackageJsonName(appDir: string, name: string): void {\n const pkgPath = path.join(appDir, \"package.json\");\n if (!fs.existsSync(pkgPath)) return;\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n pkg.name = name;\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n}\n\nfunction getCoreDependencyVersion(): string {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE === \"1\") {\n const localCore = findLocalPackage(\"core\");\n if (localCore) return pathToFileURL(localCore).href;\n }\n\n // Generated apps must install before the current package version is\n // published. The dist-tag resolves to the newest released core today and to\n // this package version once the release goes live. Local file deps are\n // intentionally opt-in so scaffolded repos remain portable by default.\n return \"latest\";\n}\n\nfunction getCorePackageVersion(): string | undefined {\n try {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const pkg = JSON.parse(\n fs.readFileSync(path.join(packageRoot, \"package.json\"), \"utf-8\"),\n );\n return typeof pkg.version === \"string\" ? pkg.version : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction getGitHubTemplateRef(): string {\n const version = getCorePackageVersion();\n if (version && /^\\d+\\.\\d+\\.\\d+(?:-.+)?$/.test(version)) {\n return `v${version}`;\n }\n return \"main\";\n}\n\nfunction rewriteCoreDependencyVersions(projectDir: string): void {\n const pkgPath = path.join(projectDir, \"package.json\");\n if (!fs.existsSync(pkgPath)) return;\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (deps?.[\"@agent-native/core\"]) {\n deps[\"@agent-native/core\"] = getCoreDependencyVersion();\n }\n }\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n}\n\nconst DISPATCH_WORKSPACE_ROOT_REDIRECTS = [\n [\"overview\", \"overview\"],\n [\"login\", \"login\"],\n [\"signup\", \"signup\"],\n [\"apps\", \"apps\"],\n [\"apps/new-app\", \"new-app\"],\n [\"new-app\", \"new-app\"],\n [\"vault\", \"vault\"],\n [\"integrations\", \"integrations\"],\n [\"agents\", \"agents\"],\n [\"workspace\", \"workspace\"],\n [\"messaging\", \"messaging\"],\n [\"destinations\", \"destinations\"],\n [\"identities\", \"identities\"],\n [\"approvals\", \"approvals\"],\n [\"audit\", \"audit\"],\n [\"team\", \"team\"],\n];\n\nconst RESERVED_WORKSPACE_APP_NAMES = new Set([\n \"_agent-native\",\n \"_workspace_static\",\n \"netlify\",\n ...DISPATCH_WORKSPACE_ROOT_REDIRECTS.map(([from]) => from),\n]);\n\nfunction validateWorkspaceAppName(\n appName: string,\n clack: typeof import(\"@clack/prompts\"),\n): void {\n if (!/^[a-z][a-z0-9-]*$/.test(appName)) {\n clack.cancel(\n `Invalid app name \"${appName}\". Use lowercase letters, numbers, and hyphens.`,\n );\n process.exit(1);\n }\n if (RESERVED_WORKSPACE_APP_NAMES.has(appName)) {\n clack.cancel(\n `App name \"${appName}\" conflicts with a reserved workspace route. Choose a different name.`,\n );\n process.exit(1);\n }\n}\n\nfunction upsertTomlBuildEnvironment(\n content: string,\n vars: Record<string, string>,\n): string {\n const lines = content.split(\"\\n\");\n const sectionIndex = lines.findIndex(\n (line) => line.trim() === \"[build.environment]\",\n );\n if (sectionIndex === -1) {\n const envLines = [\"\", \"[build.environment]\"].concat(\n Object.entries(vars).map(([key, value]) => ` ${key} = \"${value}\"`),\n );\n return content.trimEnd() + \"\\n\" + envLines.join(\"\\n\") + \"\\n\";\n }\n\n let nextSectionIndex = lines.findIndex(\n (line, index) => index > sectionIndex && /^\\s*\\[/.test(line),\n );\n if (nextSectionIndex === -1) nextSectionIndex = lines.length;\n\n for (const [key, value] of Object.entries(vars)) {\n const existingIndex = lines.findIndex(\n (line, index) =>\n index > sectionIndex &&\n index < nextSectionIndex &&\n new RegExp(`^\\\\s*${key}\\\\s*=`).test(line),\n );\n const nextLine = ` ${key} = \"${value}\"`;\n if (existingIndex === -1) {\n lines.splice(nextSectionIndex, 0, nextLine);\n nextSectionIndex += 1;\n } else {\n lines[existingIndex] = nextLine;\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction ensureRedirect(\n content: string,\n from: string,\n to: string,\n status: number,\n): string {\n const escapedFrom = from.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const redirectPattern = new RegExp(\n `\\\\n?\\\\[\\\\[redirects\\\\]\\\\]\\\\s+from\\\\s*=\\\\s*\"${escapedFrom}\"\\\\s+to\\\\s*=\\\\s*\"[^\"]*\"\\\\s+status\\\\s*=\\\\s*\\\\d+(?:\\\\s+force\\\\s*=\\\\s*(?:true|false))?`,\n \"m\",\n );\n const block = [\n \"\",\n \"[[redirects]]\",\n ` from = \"${from}\"`,\n ` to = \"${to}\"`,\n ` status = ${status}`,\n ].join(\"\\n\");\n if (redirectPattern.test(content)) {\n return content.replace(redirectPattern, block);\n }\n return content.trimEnd() + \"\\n\" + block + \"\\n\";\n}\n\nfunction removeRedirect(content: string, from: string): string {\n const escapedFrom = from.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const redirectPattern = new RegExp(\n `\\\\n?\\\\[\\\\[redirects\\\\]\\\\]\\\\s+from\\\\s*=\\\\s*\"${escapedFrom}\"\\\\s+to\\\\s*=\\\\s*\"[^\"]*\"\\\\s+status\\\\s*=\\\\s*\\\\d+(?:\\\\s+force\\\\s*=\\\\s*(?:true|false))?`,\n \"gm\",\n );\n return content.replace(redirectPattern, \"\").replace(/\\n{3,}/g, \"\\n\\n\");\n}\n\nfunction addWorkspaceMountNetlifyConfig(\n content: string,\n appName: string,\n): string {\n const basePath = `/${appName}`;\n let next = upsertTomlBuildEnvironment(content, {\n APP_BASE_PATH: basePath,\n VITE_APP_BASE_PATH: basePath,\n NITRO_PRESET: \"netlify\",\n NPM_CONFIG_PRODUCTION: \"false\",\n });\n\n if (appName === \"dispatch\") {\n next = ensureRedirect(next, \"/\", \"/dispatch/overview\", 302);\n next = ensureRedirect(next, \"/dispatch\", \"/dispatch/overview\", 302);\n for (const [from, to] of DISPATCH_WORKSPACE_ROOT_REDIRECTS) {\n next = ensureRedirect(next, `/${from}`, `/dispatch/${to}`, 302);\n }\n next = removeRedirect(next, \"/dispatch/*\");\n }\n\n return next;\n}\n\nfunction rewriteNetlifyToml(\n appDir: string,\n appName: string,\n mode: \"standalone\" | \"workspace\",\n): void {\n const netlifyPath = path.join(appDir, \"netlify.toml\");\n if (!fs.existsSync(netlifyPath)) return;\n\n try {\n let content = fs.readFileSync(netlifyPath, \"utf-8\");\n const originalCommand = content.match(/^ command = \"([^\"]*)\"$/m)?.[1];\n const usesUnpooledDatabase =\n originalCommand?.includes(\"NETLIFY_DATABASE_URL_UNPOOLED\") ?? false;\n const buildCommand =\n mode === \"workspace\"\n ? `APP_BASE_PATH=/${appName} VITE_APP_BASE_PATH=/${appName} NITRO_PRESET=netlify pnpm --filter ${appName} build`\n : \"NITRO_PRESET=netlify pnpm build\";\n const databaseSetup =\n 'export DATABASE_URL=\\\\\"${NETLIFY_DATABASE_URL:-$DATABASE_URL}\\\\\"';\n const buildDatabasePrefix = usesUnpooledDatabase\n ? 'DATABASE_URL=\\\\\"${NETLIFY_DATABASE_URL_UNPOOLED:-$DATABASE_URL}\\\\\" '\n : \"\";\n const command = `${databaseSetup} && ${buildDatabasePrefix}${buildCommand}`;\n const publishPath = mode === \"workspace\" ? `apps/${appName}/dist` : \"dist\";\n const functionsPath =\n mode === \"workspace\"\n ? `apps/${appName}/.netlify/functions-internal`\n : \".netlify/functions-internal\";\n\n content = content\n .replace(/^ command = \".*\"$/m, ` command = \"${command}\"`)\n .replace(\n /publish = \"templates\\/[^\"]+\\/dist\"/g,\n `publish = \"${publishPath}\"`,\n )\n .replace(\n /functions = \"templates\\/[^\"]+\\/\\.netlify\\/functions-internal\"/g,\n `functions = \"${functionsPath}\"`,\n );\n\n if (mode === \"workspace\") {\n content = addWorkspaceMountNetlifyConfig(content, appName);\n }\n\n fs.writeFileSync(netlifyPath, content);\n } catch {}\n}\n\nfunction tryGitInit(dir: string): boolean {\n try {\n execFileSync(\"git\", [\"init\"], { cwd: dir, stdio: \"pipe\" });\n execFileSync(\"git\", [\"add\", \"-A\"], { cwd: dir, stdio: \"pipe\" });\n execFileSync(\n \"git\",\n [\"commit\", \"-m\", \"Initial commit from agent-native create\"],\n {\n cwd: dir,\n stdio: \"pipe\",\n env: {\n ...process.env,\n GIT_AUTHOR_NAME: \"agent-native\",\n GIT_AUTHOR_EMAIL: \"noreply@agent-native.com\",\n GIT_COMMITTER_NAME: \"agent-native\",\n GIT_COMMITTER_EMAIL: \"noreply@agent-native.com\",\n },\n },\n );\n return true;\n } catch {\n return false;\n }\n}\n\nfunction renameGitignore(dir: string): void {\n const src = path.join(dir, \"_gitignore\");\n const dst = path.join(dir, \".gitignore\");\n if (fs.existsSync(src)) fs.renameSync(src, dst);\n}\n\nfunction replacePlaceholders(\n dir: string,\n appName: string,\n appTitle: string,\n workspaceName?: string,\n): void {\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n const p = path.join(dir, entry.name);\n if (entry.isSymbolicLink()) continue;\n if (entry.isDirectory()) {\n replacePlaceholders(p, appName, appTitle, workspaceName);\n continue;\n }\n let content: string;\n try {\n content = fs.readFileSync(p, \"utf-8\");\n } catch {\n continue;\n }\n const hasWs =\n workspaceName !== undefined && content.includes(\"{{WORKSPACE_NAME}}\");\n if (\n !content.includes(\"{{APP_NAME}}\") &&\n !content.includes(\"{{APP_TITLE}}\") &&\n !hasWs\n ) {\n continue;\n }\n let next = content;\n if (workspaceName !== undefined) {\n next = next.replace(/\\{\\{WORKSPACE_NAME\\}\\}/g, workspaceName);\n }\n next = next\n .replace(/\\{\\{APP_NAME\\}\\}/g, appName)\n .replace(/\\{\\{APP_TITLE\\}\\}/g, appTitle);\n fs.writeFileSync(p, next);\n }\n}\n\nfunction copyDir(src: string, dest: string, root?: string): void {\n const resolvedRoot = root ?? path.resolve(src);\n fs.mkdirSync(dest, { recursive: true });\n for (const entry of fs.readdirSync(src, { withFileTypes: true })) {\n const srcPath = path.join(src, entry.name);\n if (shouldSkipScaffoldEntry(entry.name, srcPath)) continue;\n const destPath = path.join(dest, entry.name);\n if (entry.isSymbolicLink()) {\n const target = fs.readlinkSync(srcPath);\n const resolvedTarget = path.resolve(path.dirname(srcPath), target);\n if (resolvedTarget.startsWith(resolvedRoot)) {\n fs.symlinkSync(target, destPath);\n } else {\n try {\n const stat = fs.statSync(srcPath);\n if (stat.isDirectory()) {\n copyDir(srcPath, destPath, resolvedRoot);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n } catch {\n // Broken symlink — skip silently\n }\n }\n } else if (entry.isDirectory()) {\n copyDir(srcPath, destPath, resolvedRoot);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n\nfunction shouldSkipScaffoldEntry(name: string, srcPath?: string): boolean {\n if (\n name === \"settings.json\" &&\n srcPath?.split(path.sep).includes(\".claude\")\n ) {\n return true;\n }\n if (\n name === \"node_modules\" ||\n name === \".agent-native\" ||\n name === \".env\" ||\n name === \".env.local\" ||\n name === \".netlify\" ||\n name === \".vercel\" ||\n name === \".generated\" ||\n name === \".react-router\" ||\n name === \".output\" ||\n name === \"build\" ||\n name === \"dist\" ||\n name === \".DS_Store\"\n ) {\n return true;\n }\n return (\n /^qa-.*\\.db(?:-shm|-wal)?$/.test(name) || /\\.db-(?:shm|wal)$/.test(name)\n );\n}\n"]}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath, pathToFileURL } from \"url\";\nimport { execFileSync } from \"child_process\";\nimport { setupAgentSymlinks } from \"./setup-agents.js\";\nimport { workspacifyApp, parseWorkspaceScope } from \"./workspacify.js\";\nimport {\n coreTemplates,\n getTemplate,\n allTemplateNames,\n type TemplateMeta,\n} from \"./templates-meta.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst REPO = \"BuilderIO/agent-native\";\nconst TEMPLATES_DIR = \"templates\";\nconst POSTGRES_DEPENDENCY_VERSION = \"^3.4.9\";\n\n/**\n * Move \"starter\" to the top of the list so it lines up with clack's default\n * highlight on the first option — otherwise users have to scroll to see that\n * Starter is pre-selected.\n */\nfunction starterFirst(templates: TemplateMeta[]): TemplateMeta[] {\n const starter = templates.find((t) => t.name === \"starter\");\n if (!starter) return templates;\n return [starter, ...templates.filter((t) => t.name !== \"starter\")];\n}\n\n/** Blank scaffold option appended to every picker. */\nconst BLANK_OPTION = {\n name: \"blank\",\n label: \"Blank\",\n hint: \"Empty starter — build from scratch\",\n};\n\nexport interface CreateAppOptions {\n /** Pre-select these templates in the picker. Comma-separated string or array. */\n template?: string;\n /** Scaffold a single standalone app (old behavior). Skips workspace creation. */\n standalone?: boolean;\n /** Internal: skip pnpm install at the end (for tests). */\n noInstall?: boolean;\n}\n\n/**\n * Main entry for `agent-native create [name]`.\n *\n * Default behavior: scaffold a workspace at <name>/ with a multi-select\n * template picker. Use --standalone for the single-app standalone flow.\n *\n * If run *inside* an existing workspace, falls through to the add-app\n * flow that scaffolds one new app under apps/<name>/.\n */\nexport async function createApp(\n name?: string,\n opts?: CreateAppOptions,\n): Promise<void> {\n const clack = await import(\"@clack/prompts\");\n\n // If we're already inside a workspace, the meaning of `create <name>` is\n // \"add a new app to this workspace\". Delegate to add-app.\n const workspace = detectWorkspace(process.cwd());\n if (workspace) {\n await addAppToWorkspace(name, opts);\n return;\n }\n\n // Standalone escape hatch — behaves like the old single-app flow.\n if (opts?.standalone) {\n await createStandaloneApp(name, opts, clack);\n return;\n }\n\n // When exactly one template is specified explicitly, treat it as a\n // standalone scaffold (script-friendly, matches historic behavior).\n // Use `--template a,b` or pass no --template to opt into the workspace\n // flow with the multi-select picker.\n const parsed = parseTemplateList(opts?.template);\n if (parsed.length === 1) {\n await createStandaloneApp(name, opts, clack);\n return;\n }\n\n // Default: create a workspace.\n await createWorkspaceInteractive(name, opts, clack);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Workspace creation (new default)\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function createWorkspaceInteractive(\n name: string | undefined,\n opts: CreateAppOptions | undefined,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n clack.intro(\"Create a new agent-native workspace\");\n\n name = await promptNameIfMissing(name, clack, \"workspace\", \"my-platform\");\n\n clack.note(\n [\n \"A workspace is a monorepo that holds one or more apps sharing auth,\",\n \"database, and the agent chat. Pick as many as you want — you can add\",\n \"more later with `agent-native add-app`. Starter is a minimal scaffold,\",\n \"useful as a blank app to build from scratch alongside the others.\",\n ].join(\"\\n\"),\n \"About workspaces\",\n );\n\n // If templates were explicitly passed via --template, use them directly.\n // Otherwise show the multi-select picker.\n const preselected = parseTemplateList(opts?.template);\n const templates =\n preselected.length > 0\n ? preselected\n : await promptTemplatePicker(preselected, clack, {\n defaultTemplates: [\"starter\", \"dispatch\"],\n });\n if (templates.length === 0) {\n clack.cancel(\"No apps selected. Cancelled.\");\n process.exit(0);\n }\n\n const targetDir = path.resolve(process.cwd(), name);\n if (fs.existsSync(targetDir)) {\n clack.cancel(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n const s = clack.spinner();\n s.start(`Scaffolding workspace with ${templates.length} app(s)...`);\n\n const firstApp = templates[0];\n\n try {\n await scaffoldWorkspaceRoot(targetDir, name);\n const workspaceCoreName = `@${name}/shared`;\n\n for (const t of templates) {\n const appDir = path.join(targetDir, \"apps\", t);\n await scaffoldAppTemplate(appDir, t);\n replacePlaceholders(appDir, t, titleCase(t), name);\n rewriteTrackingAppId(appDir, t, t);\n workspacifyApp({\n appDir,\n appName: t,\n templateName: t,\n workspaceRoot: targetDir,\n workspaceCoreName,\n coreDependencyVersion: getCoreDependencyVersion(),\n });\n fixPackageJsonName(appDir, t);\n rewriteNetlifyToml(appDir, t, \"workspace\");\n renameGitignore(appDir);\n // Each app owns its own .claude / .agents symlinks.\n setupAgentSymlinks(appDir);\n }\n\n await scaffoldRequiredPackages(templates, targetDir);\n\n s.stop(\"Workspace scaffolded.\");\n } catch (err: any) {\n s.stop(\"Failed to scaffold workspace.\");\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n tryGitInit(targetDir);\n\n clack.outro(\n [\n `Done! Next steps:`,\n ``,\n ` cd ${name}`,\n ` pnpm install`,\n ` pnpm dev`,\n ``,\n `Add another app later: agent-native add-app`,\n `Deploy the whole workspace: agent-native deploy`,\n ].join(\"\\n\"),\n );\n}\n\nasync function scaffoldWorkspaceRoot(\n targetDir: string,\n name: string,\n): Promise<void> {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const rootTemplate = path.join(packageRoot, \"src/templates/workspace-root\");\n const coreTemplate = path.join(packageRoot, \"src/templates/workspace-core\");\n\n copyDir(rootTemplate, targetDir);\n replacePlaceholders(targetDir, name, titleCase(name));\n rewriteCoreDependencyVersions(targetDir);\n renameGitignore(targetDir);\n\n // Inject the catalog from this repo's pnpm-workspace.yaml so templates'\n // `catalog:` version references resolve in the scaffolded workspace.\n const catalog = loadCatalog();\n if (Object.keys(catalog).length > 0) {\n const wsPath = path.join(targetDir, \"pnpm-workspace.yaml\");\n const existing = fs.existsSync(wsPath)\n ? fs.readFileSync(wsPath, \"utf-8\")\n : \"\";\n if (!existing.includes(\"catalog:\")) {\n const catalogYaml = Object.entries(catalog)\n .map(([k, v]) => ` \"${k}\": \"${v}\"`)\n .join(\"\\n\");\n fs.writeFileSync(\n wsPath,\n existing.trimEnd() + \"\\ncatalog:\\n\" + catalogYaml + \"\\n\",\n );\n }\n }\n\n const corePackageDir = path.join(targetDir, \"packages\", \"shared\");\n fs.mkdirSync(path.join(targetDir, \"packages\"), { recursive: true });\n copyDir(coreTemplate, corePackageDir);\n replacePlaceholders(corePackageDir, name, titleCase(name));\n rewriteCoreDependencyVersions(corePackageDir);\n\n // Ensure apps/ exists (even if empty).\n fs.mkdirSync(path.join(targetDir, \"apps\"), { recursive: true });\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Adding an app into an existing workspace\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Entry for `agent-native add-app [name]`. Called from inside a workspace.\n * Shows the multi-select picker (excluding already-installed apps) and\n * scaffolds each selected template under apps/<name>/.\n *\n * When `name` is provided with `--template foo`, scaffolds exactly one app\n * named <name> using template foo (non-interactive).\n */\nexport async function addAppToWorkspace(\n name?: string,\n opts?: CreateAppOptions,\n): Promise<void> {\n const clack = await import(\"@clack/prompts\");\n const workspace = detectWorkspace(process.cwd());\n if (!workspace) {\n clack.cancel(\n \"Not inside a workspace. Run `agent-native create` to make one first, or use `--standalone`.\",\n );\n process.exit(1);\n }\n\n clack.intro(\"Add an app to your workspace\");\n\n const installed = listInstalledApps(workspace.workspaceRoot);\n\n // Non-interactive path: name + single --template\n const preselected = parseTemplateList(opts?.template);\n if (name && preselected.length === 1) {\n const tpl = preselected[0];\n await scaffoldOneAppIntoWorkspace(workspace, name, tpl, clack);\n return;\n }\n\n const templates = await promptTemplatePicker(preselected, clack, {\n excludeNames: installed,\n message: \"Which apps do you want to add?\",\n });\n if (templates.length === 0) {\n clack.cancel(\"No apps selected. Cancelled.\");\n process.exit(0);\n }\n\n for (const t of templates) {\n await scaffoldOneAppIntoWorkspace(workspace, t, t, clack);\n }\n}\n\nasync function scaffoldOneAppIntoWorkspace(\n workspace: { workspaceRoot: string; workspaceCoreName: string },\n appName: string,\n templateName: string,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n validateWorkspaceAppName(appName, clack);\n const appsDir = path.join(workspace.workspaceRoot, \"apps\");\n fs.mkdirSync(appsDir, { recursive: true });\n const appDir = path.join(appsDir, appName);\n\n if (fs.existsSync(appDir)) {\n clack.cancel(`Directory \"apps/${appName}\" already exists.`);\n process.exit(1);\n }\n\n const s = clack.spinner();\n s.start(`Scaffolding apps/${appName} from ${templateName}...`);\n\n try {\n await scaffoldAppTemplate(appDir, templateName);\n replacePlaceholders(\n appDir,\n appName,\n titleCase(appName),\n path.basename(workspace.workspaceRoot),\n );\n rewriteTrackingAppId(appDir, appName, templateName);\n workspacifyApp({\n appDir,\n appName,\n templateName,\n workspaceRoot: workspace.workspaceRoot,\n workspaceCoreName: workspace.workspaceCoreName,\n coreDependencyVersion: getCoreDependencyVersion(),\n });\n fixPackageJsonName(appDir, appName);\n rewriteNetlifyToml(appDir, appName, \"workspace\");\n renameGitignore(appDir);\n setupAgentSymlinks(appDir);\n await scaffoldRequiredPackages([templateName], workspace.workspaceRoot);\n s.stop(`Scaffolded apps/${appName}.`);\n } catch (err: any) {\n s.stop(`Failed to scaffold apps/${appName}.`);\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n clack.outro(\n [\n `Done!`,\n ``,\n ` pnpm install`,\n ` pnpm dev`,\n ``,\n `The workspace gateway will detect apps/${appName} and serve it at /${appName}.`,\n ].join(\"\\n\"),\n );\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Standalone creation (escape hatch)\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function createStandaloneApp(\n name: string | undefined,\n opts: CreateAppOptions | undefined,\n clack: typeof import(\"@clack/prompts\"),\n): Promise<void> {\n clack.intro(\"Create a new standalone agent-native app\");\n\n name = await promptNameIfMissing(name, clack, \"app\", \"my-app\");\n\n const targetDir = path.resolve(process.cwd(), name);\n if (fs.existsSync(targetDir)) {\n clack.cancel(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n // Standalone is single-select — pick one template.\n let template =\n opts?.template && !opts.template.includes(\",\") ? opts.template : undefined;\n if (!template) {\n const picked = await clack.select({\n message: \"Which template would you like to use?\",\n options: [\n ...starterFirst(coreTemplates()).map((t) => ({\n value: t.name,\n label: t.label,\n hint: t.hint,\n })),\n {\n value: BLANK_OPTION.name,\n label: BLANK_OPTION.label,\n hint: BLANK_OPTION.hint,\n },\n ],\n });\n if (clack.isCancel(picked)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n template = picked as string;\n }\n\n const s = clack.spinner();\n s.start(\"Scaffolding your app...\");\n try {\n await scaffoldAppTemplate(targetDir, template);\n postProcessStandalone(name, targetDir, template);\n s.stop(\"App created!\");\n } catch (err: any) {\n s.stop(\"Failed to create app.\");\n clack.cancel(err?.message ?? String(err));\n process.exit(1);\n }\n\n tryGitInit(targetDir);\n\n clack.outro(`Done! Next steps:\\n\\n cd ${name}\\n pnpm install\\n pnpm dev`);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Shared scaffolding helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Scaffold a single app template into `targetDir`. Resolves:\n * - \"blank\" → bundled default template\n * - \"github:user/repo\" → download the whole repo\n * - first-party template name → download that subdir from BuilderIO/agent-native\n */\nasync function scaffoldAppTemplate(\n targetDir: string,\n template: string,\n): Promise<void> {\n fs.mkdirSync(path.dirname(targetDir), { recursive: true });\n\n if (template === \"blank\") {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const defaultDir = path.join(packageRoot, \"src/templates/default\");\n if (!fs.existsSync(defaultDir)) {\n throw new Error(\n `Default template not found at ${defaultDir}. Is the package installed correctly?`,\n );\n }\n copyDir(defaultDir, targetDir);\n return;\n }\n\n // Normalize legacy alias\n let resolved = template === \"video\" ? \"videos\" : template;\n\n if (resolved.startsWith(\"github:\")) {\n const repo = resolved.slice(\"github:\".length);\n await downloadGitHubRepo(repo, targetDir);\n return;\n }\n\n if (!allTemplateNames().includes(resolved)) {\n throw new Error(\n `Unknown template \"${template}\". Known: ${allTemplateNames().join(\", \")} — or use github:user/repo for community templates.`,\n );\n }\n\n // If running from the framework monorepo with a local templates/ dir, use\n // that. Otherwise download from GitHub. This keeps `agent-native create`\n // fast during framework development.\n const localTemplate = findLocalTemplate(resolved);\n if (localTemplate) {\n copyDir(localTemplate, targetDir);\n } else {\n await downloadGitHubSubdir(REPO, `${TEMPLATES_DIR}/${resolved}`, targetDir);\n }\n}\n\n/**\n * When developing the framework itself, prefer the sibling templates/<name>\n * directory. Returns undefined when running as a published package.\n */\nfunction findLocalTemplate(name: string): string | undefined {\n let dir = path.resolve(__dirname);\n for (let i = 0; i < 10; i++) {\n const candidate = path.join(dir, \"templates\", name);\n if (fs.existsSync(path.join(candidate, \"package.json\"))) {\n return candidate;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return undefined;\n}\n\n/**\n * Find a local packages/<name> directory (for framework development).\n * Returns undefined when running as a published npm package.\n */\nfunction findLocalPackage(name: string): string | undefined {\n let dir = path.resolve(__dirname);\n for (let i = 0; i < 10; i++) {\n const candidate = path.join(dir, \"packages\", name);\n if (fs.existsSync(path.join(candidate, \"package.json\"))) {\n return candidate;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return undefined;\n}\n\n/**\n * Scaffold internal workspace packages required by the selected templates.\n * Deduplicates so each package is only copied once even if multiple\n * templates need it.\n */\nasync function scaffoldRequiredPackages(\n templateNames: string[],\n workspaceRoot: string,\n): Promise<void> {\n const needed = new Set<string>();\n for (const t of templateNames) {\n const meta = getTemplate(t);\n if (meta?.requiredPackages) {\n for (const p of meta.requiredPackages) needed.add(p);\n }\n }\n\n for (const pkgName of needed) {\n const targetDir = path.join(workspaceRoot, \"packages\", pkgName);\n if (fs.existsSync(targetDir)) continue;\n\n fs.mkdirSync(path.join(workspaceRoot, \"packages\"), { recursive: true });\n\n const localPkg = findLocalPackage(pkgName);\n if (localPkg) {\n copyDir(localPkg, targetDir);\n } else {\n await downloadGitHubSubdir(REPO, `packages/${pkgName}`, targetDir);\n }\n\n // The copied package may have @agent-native/core as a workspace:* dep.\n // Convert it to this CLI package's published range since\n // @agent-native/core is an npm package, not a workspace member.\n const pkgJsonPath = path.join(targetDir, \"package.json\");\n if (fs.existsSync(pkgJsonPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n if (\n typeof val === \"string\" &&\n val.startsWith(\"workspace:\") &&\n key === \"@agent-native/core\"\n ) {\n deps[key] = getCoreDependencyVersion();\n }\n }\n }\n fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n }\n }\n\n // Add a postinstall script to build workspace packages so their dist/\n // directories exist even when downloaded from GitHub (where dist/ is\n // gitignored).\n if (needed.size > 0) {\n const rootPkgPath = path.join(workspaceRoot, \"package.json\");\n if (fs.existsSync(rootPkgPath)) {\n try {\n const rootPkg = JSON.parse(fs.readFileSync(rootPkgPath, \"utf-8\"));\n rootPkg.scripts = rootPkg.scripts ?? {};\n const builds = [...needed]\n .map((n) => `pnpm --filter ./packages/${n} build`)\n .join(\" && \");\n const existing = rootPkg.scripts.postinstall;\n if (existing) {\n if (!existing.includes(builds)) {\n rootPkg.scripts.postinstall = `${existing} && ${builds}`;\n }\n } else {\n rootPkg.scripts.postinstall = builds;\n }\n fs.writeFileSync(rootPkgPath, JSON.stringify(rootPkg, null, 2) + \"\\n\");\n } catch {}\n }\n }\n}\n\n/**\n * Post-process a standalone scaffold: replace placeholders, strip\n * workspace:* deps, set up agent symlinks, etc.\n */\nfunction postProcessStandalone(\n name: string,\n targetDir: string,\n templateName?: string,\n): void {\n const appTitle = titleCase(name);\n replacePlaceholders(targetDir, name, appTitle);\n rewriteTrackingAppId(targetDir, name, templateName);\n fixPackageJsonName(targetDir, name);\n rewriteNetlifyToml(targetDir, name, \"standalone\");\n\n for (const base of [\"learnings\"]) {\n const defaultsFile = path.join(targetDir, `${base}.defaults.md`);\n const targetFile = path.join(targetDir, `${base}.md`);\n if (fs.existsSync(defaultsFile) && !fs.existsSync(targetFile)) {\n fs.copyFileSync(defaultsFile, targetFile);\n }\n }\n\n renameGitignore(targetDir);\n\n // Drop monorepo-only files that standalone apps shouldn't ship.\n for (const f of [\"DEVELOPING.md\"]) {\n const p = path.join(targetDir, f);\n if (fs.existsSync(p)) fs.unlinkSync(p);\n }\n\n // Resolve workspace:* and catalog: deps for standalone projects.\n // catalog: references only resolve inside a pnpm workspace with a catalog\n // defined in pnpm-workspace.yaml — standalone scaffolds don't have one.\n const catalog = loadCatalog();\n const pkgPath = path.join(targetDir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n if (key === \"@agent-native/core\") {\n deps[key] = getCoreDependencyVersion();\n } else if (typeof val === \"string\" && val.startsWith(\"workspace:\")) {\n deps[key] = \"latest\";\n } else if (typeof val === \"string\" && val === \"catalog:\") {\n deps[key] = catalog[key] ?? \"latest\";\n }\n }\n }\n // Ensure pnpm.onlyBuiltDependencies is set so native packages\n // (better-sqlite3, esbuild, node-pty) compile their postinstall scripts\n // under pnpm 10+ without prompting for `pnpm approve-builds`.\n pkg.dependencies = pkg.dependencies ?? {};\n pkg.dependencies.postgres ??= POSTGRES_DEPENDENCY_VERSION;\n\n const requiredBuilt = [\"better-sqlite3\", \"esbuild\", \"node-pty\"];\n if (!pkg.pnpm || typeof pkg.pnpm !== \"object\") {\n pkg.pnpm = {};\n }\n const existing = Array.isArray(pkg.pnpm.onlyBuiltDependencies)\n ? pkg.pnpm.onlyBuiltDependencies\n : [];\n pkg.pnpm.onlyBuiltDependencies = Array.from(\n new Set([...existing, ...requiredBuilt]),\n );\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n }\n\n setupAgentSymlinks(targetDir);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Prompting helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\nasync function promptNameIfMissing(\n name: string | undefined,\n clack: typeof import(\"@clack/prompts\"),\n kind: \"workspace\" | \"app\",\n placeholder: string,\n): Promise<string> {\n if (name) {\n if (!/^[a-z][a-z0-9-]*$/.test(name)) {\n clack.cancel(\n `Invalid ${kind} name \"${name}\". Use lowercase letters, numbers, and hyphens.`,\n );\n process.exit(1);\n }\n return name;\n }\n const result = await clack.text({\n message: `What is your ${kind} name?`,\n placeholder,\n validate(value) {\n if (!value)\n return `${kind[0].toUpperCase() + kind.slice(1)} name is required`;\n if (!/^[a-z][a-z0-9-]*$/.test(value)) {\n return \"Use lowercase letters, numbers, and hyphens (must start with a letter)\";\n }\n if (fs.existsSync(path.resolve(process.cwd(), value))) {\n return `Directory \"${value}\" already exists`;\n }\n },\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return result as string;\n}\n\nasync function promptTemplatePicker(\n preselected: string[],\n clack: typeof import(\"@clack/prompts\"),\n opts?: {\n defaultTemplates?: string[];\n excludeNames?: string[];\n message?: string;\n },\n): Promise<string[]> {\n const excluded = new Set(opts?.excludeNames ?? []);\n const options = starterFirst(coreTemplates())\n .filter((t) => !excluded.has(t.name))\n .map((t) => ({\n value: t.name,\n label: t.label,\n hint: t.hint,\n }));\n\n // If there's nothing left to pick, the caller gets an empty selection —\n // they decide how to handle it.\n if (options.length === 0) return [];\n\n // Default pre-selection: what the user passed via --template, falling\n // back to \"starter\" when that's available and nothing else is pre-picked.\n const defaults =\n preselected.length > 0\n ? preselected.filter((p) => options.some((o) => o.value === p))\n : opts?.defaultTemplates\n ? opts.defaultTemplates.filter((p) =>\n options.some((o) => o.value === p),\n )\n : options.some((o) => o.value === \"starter\")\n ? [\"starter\"]\n : [];\n\n const baseMessage = opts?.message ?? \"Which apps would you like to include?\";\n const result = await clack.multiselect({\n message: `${baseMessage}\\n (↑/↓ move · space to toggle · enter to confirm)`,\n options,\n initialValues: defaults,\n required: false,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return result as string[];\n}\n\nfunction parseTemplateList(input?: string): string[] {\n if (!input) return [];\n return input\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\nfunction listInstalledApps(workspaceRoot: string): string[] {\n const appsDir = path.join(workspaceRoot, \"apps\");\n if (!fs.existsSync(appsDir)) return [];\n return fs\n .readdirSync(appsDir, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Workspace detection\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Walk up from startDir looking for a package.json with\n * `agent-native.workspaceCore` set. Returns the workspace root and core\n * package name, or null if not inside a workspace.\n */\nexport function detectWorkspace(\n startDir: string,\n): { workspaceRoot: string; workspaceCoreName: string } | null {\n let dir = path.resolve(startDir);\n for (let i = 0; i < 20; i++) {\n const pkgPath = path.join(dir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n const wsCore = pkg?.[\"agent-native\"]?.workspaceCore;\n if (typeof wsCore === \"string\" && wsCore.length > 0) {\n return { workspaceRoot: dir, workspaceCoreName: wsCore };\n }\n } catch {}\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\nexport { parseWorkspaceScope };\n\n/** @internal — exported for E2E tests */\nexport {\n scaffoldWorkspaceRoot as _scaffoldWorkspaceRoot,\n scaffoldAppTemplate as _scaffoldAppTemplate,\n scaffoldRequiredPackages as _scaffoldRequiredPackages,\n postProcessStandalone as _postProcessStandalone,\n loadCatalog as _loadCatalog,\n fixPackageJsonName as _fixPackageJsonName,\n renameGitignore as _renameGitignore,\n rewriteNetlifyToml as _rewriteNetlifyToml,\n getCoreDependencyVersion as _getCoreDependencyVersion,\n getGitHubTemplateRef as _getGitHubTemplateRef,\n shouldSkipScaffoldEntry as _shouldSkipScaffoldEntry,\n};\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Download / copy helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\nfunction validateRepoName(repo: string): void {\n if (!/^[a-zA-Z0-9_.-]+\\/[a-zA-Z0-9_.-]+$/.test(repo)) {\n throw new Error(\n `Invalid repository name \"${repo}\". Expected format: user/repo`,\n );\n }\n}\n\nfunction downloadAndExtract(url: string, destDir: string): void {\n fs.mkdirSync(destDir, { recursive: true });\n const tarball = execFileSync(\"curl\", [\"-sL\", url], {\n maxBuffer: 100 * 1024 * 1024,\n });\n const tarPath = path.join(destDir, \".download.tar.gz\");\n fs.writeFileSync(tarPath, tarball);\n try {\n execFileSync(\n \"tar\",\n [\"xzf\", tarPath, \"--strip-components=1\", \"-C\", destDir],\n { stdio: \"pipe\" },\n );\n } finally {\n fs.unlinkSync(tarPath);\n }\n}\n\nasync function downloadGitHubSubdir(\n repo: string,\n subdir: string,\n targetDir: string,\n): Promise<void> {\n validateRepoName(repo);\n const ref = getGitHubTemplateRef();\n const tarUrl = `https://api.github.com/repos/${repo}/tarball/${encodeURIComponent(ref)}`;\n const tmpDir = path.join(targetDir, \"..\", `.agent-native-tmp-${Date.now()}`);\n try {\n downloadAndExtract(tarUrl, tmpDir);\n const srcDir = path.join(tmpDir, subdir);\n if (!fs.existsSync(srcDir)) {\n throw new Error(`Template directory \"${subdir}\" not found in ${repo}.`);\n }\n copyDir(srcDir, targetDir);\n } finally {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n }\n}\n\nasync function downloadGitHubRepo(\n repo: string,\n targetDir: string,\n): Promise<void> {\n validateRepoName(repo);\n const tarUrl = `https://api.github.com/repos/${repo}/tarball/main`;\n downloadAndExtract(tarUrl, targetDir);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Text / filesystem helpers\n * ───────────────────────────────────────────────────────────────────────── */\n\n/**\n * Load the pnpm workspace catalog.\n * First tries the build-time snapshot at dist/catalog.json (works when\n * running as a published npm package). Falls back to parsing the monorepo\n * pnpm-workspace.yaml (works during local framework development).\n */\nfunction loadCatalog(): Record<string, string> {\n try {\n // Build-time snapshot generated by finalize-build.mjs\n const snapshotPath = path.resolve(__dirname, \"../catalog.json\");\n if (fs.existsSync(snapshotPath)) {\n return JSON.parse(fs.readFileSync(snapshotPath, \"utf-8\"));\n }\n\n // Fallback: parse pnpm-workspace.yaml from the monorepo root\n // From dist/cli/ or src/cli/: 4 levels up → packages/core → packages → repo root\n const repoRoot = path.resolve(__dirname, \"../../../..\");\n const wsPath = path.join(repoRoot, \"pnpm-workspace.yaml\");\n if (!fs.existsSync(wsPath)) return {};\n const content = fs.readFileSync(wsPath, \"utf-8\");\n const result: Record<string, string> = {};\n let inCatalog = false;\n for (const line of content.split(\"\\n\")) {\n if (/^catalog:\\s*$/.test(line)) {\n inCatalog = true;\n continue;\n }\n if (inCatalog) {\n if (/^\\S/.test(line)) break;\n const match = line.match(/^\\s+\"?([^\":]+)\"?\\s*:\\s*\"?([^\"]+)\"?\\s*$/);\n if (match) result[match[1]] = match[2];\n }\n }\n return result;\n } catch {\n return {};\n }\n}\n\nfunction titleCase(name: string): string {\n return name\n .split(\"-\")\n .map((w) => (w ? w[0].toUpperCase() + w.slice(1) : w))\n .join(\" \");\n}\n\nfunction fixPackageJsonName(appDir: string, name: string): void {\n const pkgPath = path.join(appDir, \"package.json\");\n if (!fs.existsSync(pkgPath)) return;\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n pkg.name = name;\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n}\n\nfunction getCoreDependencyVersion(): string {\n if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE === \"1\") {\n const localCore = findLocalPackage(\"core\");\n if (localCore) return pathToFileURL(localCore).href;\n }\n\n // Generated apps must install before the current package version is\n // published. The dist-tag resolves to the newest released core today and to\n // this package version once the release goes live. Local file deps are\n // intentionally opt-in so scaffolded repos remain portable by default.\n return \"latest\";\n}\n\nfunction getCorePackageVersion(): string | undefined {\n try {\n const packageRoot = path.resolve(__dirname, \"../..\");\n const pkg = JSON.parse(\n fs.readFileSync(path.join(packageRoot, \"package.json\"), \"utf-8\"),\n );\n return typeof pkg.version === \"string\" ? pkg.version : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction getGitHubTemplateRef(): string {\n const version = getCorePackageVersion();\n if (version && /^\\d+\\.\\d+\\.\\d+(?:-.+)?$/.test(version)) {\n return `v${version}`;\n }\n return \"main\";\n}\n\nfunction rewriteCoreDependencyVersions(projectDir: string): void {\n const pkgPath = path.join(projectDir, \"package.json\");\n if (!fs.existsSync(pkgPath)) return;\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (deps?.[\"@agent-native/core\"]) {\n deps[\"@agent-native/core\"] = getCoreDependencyVersion();\n }\n }\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {}\n}\n\nconst DISPATCH_WORKSPACE_ROOT_REDIRECTS = [\n [\"overview\", \"overview\"],\n [\"login\", \"login\"],\n [\"signup\", \"signup\"],\n [\"apps\", \"apps\"],\n [\"apps/new-app\", \"new-app\"],\n [\"new-app\", \"new-app\"],\n [\"vault\", \"vault\"],\n [\"integrations\", \"integrations\"],\n [\"agents\", \"agents\"],\n [\"workspace\", \"workspace\"],\n [\"messaging\", \"messaging\"],\n [\"destinations\", \"destinations\"],\n [\"identities\", \"identities\"],\n [\"approvals\", \"approvals\"],\n [\"audit\", \"audit\"],\n [\"team\", \"team\"],\n];\n\nconst RESERVED_WORKSPACE_APP_NAMES = new Set([\n \"_agent-native\",\n \"_workspace_static\",\n \"netlify\",\n ...DISPATCH_WORKSPACE_ROOT_REDIRECTS.map(([from]) => from),\n]);\n\nfunction validateWorkspaceAppName(\n appName: string,\n clack: typeof import(\"@clack/prompts\"),\n): void {\n if (!/^[a-z][a-z0-9-]*$/.test(appName)) {\n clack.cancel(\n `Invalid app name \"${appName}\". Use lowercase letters, numbers, and hyphens.`,\n );\n process.exit(1);\n }\n if (RESERVED_WORKSPACE_APP_NAMES.has(appName)) {\n clack.cancel(\n `App name \"${appName}\" conflicts with a reserved workspace route. Choose a different name.`,\n );\n process.exit(1);\n }\n}\n\nfunction upsertTomlBuildEnvironment(\n content: string,\n vars: Record<string, string>,\n): string {\n const lines = content.split(\"\\n\");\n const sectionIndex = lines.findIndex(\n (line) => line.trim() === \"[build.environment]\",\n );\n if (sectionIndex === -1) {\n const envLines = [\"\", \"[build.environment]\"].concat(\n Object.entries(vars).map(([key, value]) => ` ${key} = \"${value}\"`),\n );\n return content.trimEnd() + \"\\n\" + envLines.join(\"\\n\") + \"\\n\";\n }\n\n let nextSectionIndex = lines.findIndex(\n (line, index) => index > sectionIndex && /^\\s*\\[/.test(line),\n );\n if (nextSectionIndex === -1) nextSectionIndex = lines.length;\n\n for (const [key, value] of Object.entries(vars)) {\n const existingIndex = lines.findIndex(\n (line, index) =>\n index > sectionIndex &&\n index < nextSectionIndex &&\n new RegExp(`^\\\\s*${key}\\\\s*=`).test(line),\n );\n const nextLine = ` ${key} = \"${value}\"`;\n if (existingIndex === -1) {\n lines.splice(nextSectionIndex, 0, nextLine);\n nextSectionIndex += 1;\n } else {\n lines[existingIndex] = nextLine;\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction ensureRedirect(\n content: string,\n from: string,\n to: string,\n status: number,\n): string {\n const escapedFrom = from.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const redirectPattern = new RegExp(\n `\\\\n?\\\\[\\\\[redirects\\\\]\\\\]\\\\s+from\\\\s*=\\\\s*\"${escapedFrom}\"\\\\s+to\\\\s*=\\\\s*\"[^\"]*\"\\\\s+status\\\\s*=\\\\s*\\\\d+(?:\\\\s+force\\\\s*=\\\\s*(?:true|false))?`,\n \"m\",\n );\n const block = [\n \"\",\n \"[[redirects]]\",\n ` from = \"${from}\"`,\n ` to = \"${to}\"`,\n ` status = ${status}`,\n ].join(\"\\n\");\n if (redirectPattern.test(content)) {\n return content.replace(redirectPattern, block);\n }\n return content.trimEnd() + \"\\n\" + block + \"\\n\";\n}\n\nfunction removeRedirect(content: string, from: string): string {\n const escapedFrom = from.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const redirectPattern = new RegExp(\n `\\\\n?\\\\[\\\\[redirects\\\\]\\\\]\\\\s+from\\\\s*=\\\\s*\"${escapedFrom}\"\\\\s+to\\\\s*=\\\\s*\"[^\"]*\"\\\\s+status\\\\s*=\\\\s*\\\\d+(?:\\\\s+force\\\\s*=\\\\s*(?:true|false))?`,\n \"gm\",\n );\n return content.replace(redirectPattern, \"\").replace(/\\n{3,}/g, \"\\n\\n\");\n}\n\nfunction addWorkspaceMountNetlifyConfig(\n content: string,\n appName: string,\n): string {\n const basePath = `/${appName}`;\n let next = upsertTomlBuildEnvironment(content, {\n APP_BASE_PATH: basePath,\n VITE_APP_BASE_PATH: basePath,\n NITRO_PRESET: \"netlify\",\n NPM_CONFIG_PRODUCTION: \"false\",\n });\n\n if (appName === \"dispatch\") {\n next = ensureRedirect(next, \"/\", \"/dispatch/overview\", 302);\n next = ensureRedirect(next, \"/dispatch\", \"/dispatch/overview\", 302);\n for (const [from, to] of DISPATCH_WORKSPACE_ROOT_REDIRECTS) {\n next = ensureRedirect(next, `/${from}`, `/dispatch/${to}`, 302);\n }\n next = removeRedirect(next, \"/dispatch/*\");\n }\n\n return next;\n}\n\nfunction rewriteNetlifyToml(\n appDir: string,\n appName: string,\n mode: \"standalone\" | \"workspace\",\n): void {\n const netlifyPath = path.join(appDir, \"netlify.toml\");\n if (!fs.existsSync(netlifyPath)) return;\n\n try {\n let content = fs.readFileSync(netlifyPath, \"utf-8\");\n const originalCommand = content.match(/^ command = \"([^\"]*)\"$/m)?.[1];\n const usesUnpooledDatabase =\n originalCommand?.includes(\"NETLIFY_DATABASE_URL_UNPOOLED\") ?? false;\n const buildCommand =\n mode === \"workspace\"\n ? `APP_BASE_PATH=/${appName} VITE_APP_BASE_PATH=/${appName} NITRO_PRESET=netlify pnpm --filter ${appName} build`\n : \"NITRO_PRESET=netlify pnpm build\";\n const databaseSetup =\n 'export DATABASE_URL=\\\\\"${NETLIFY_DATABASE_URL:-$DATABASE_URL}\\\\\"';\n const buildDatabasePrefix = usesUnpooledDatabase\n ? 'DATABASE_URL=\\\\\"${NETLIFY_DATABASE_URL_UNPOOLED:-$DATABASE_URL}\\\\\" '\n : \"\";\n const command = `${databaseSetup} && ${buildDatabasePrefix}${buildCommand}`;\n const publishPath = mode === \"workspace\" ? `apps/${appName}/dist` : \"dist\";\n const functionsPath =\n mode === \"workspace\"\n ? `apps/${appName}/.netlify/functions-internal`\n : \".netlify/functions-internal\";\n\n content = content\n .replace(/^ command = \".*\"$/m, ` command = \"${command}\"`)\n .replace(\n /publish = \"templates\\/[^\"]+\\/dist\"/g,\n `publish = \"${publishPath}\"`,\n )\n .replace(\n /functions = \"templates\\/[^\"]+\\/\\.netlify\\/functions-internal\"/g,\n `functions = \"${functionsPath}\"`,\n );\n\n if (mode === \"workspace\") {\n content = addWorkspaceMountNetlifyConfig(content, appName);\n }\n\n fs.writeFileSync(netlifyPath, content);\n } catch {}\n}\n\nfunction rewriteTrackingAppId(\n appDir: string,\n appName: string,\n templateName?: string,\n): void {\n const rootPath = path.join(appDir, \"app\", \"root.tsx\");\n if (!fs.existsSync(rootPath)) return;\n\n try {\n const content = fs.readFileSync(rootPath, \"utf-8\");\n const pattern =\n /(^\\s*app:\\s*)([\"'])(?:agent-native-[^\"']+|\\{\\{APP_NAME\\}\\})\\2(\\s*,?)/m;\n if (!pattern.test(content)) return;\n\n let next = content.replace(\n pattern,\n (_match, prefix: string, quote: string, suffix: string) =>\n `${prefix}${quote}${appName}${quote}${suffix}`,\n );\n\n if (\n templateName &&\n templateName !== appName &&\n !hasTrackingTemplate(next)\n ) {\n next = next.replace(\n /(^\\s*app:\\s*[\"'][^\"']+[\"'],?\\s*$)/m,\n (line) => `${line}\\n template: ${JSON.stringify(templateName)},`,\n );\n }\n\n if (next !== content) {\n fs.writeFileSync(rootPath, next);\n }\n } catch {}\n}\n\nfunction hasTrackingTemplate(content: string): boolean {\n const match = content.match(/configureTracking\\(\\{[\\s\\S]*?\\}\\);/);\n return !!match && /^\\s*template\\s*:/m.test(match[0]);\n}\n\nfunction tryGitInit(dir: string): boolean {\n try {\n execFileSync(\"git\", [\"init\"], { cwd: dir, stdio: \"pipe\" });\n execFileSync(\"git\", [\"add\", \"-A\"], { cwd: dir, stdio: \"pipe\" });\n execFileSync(\n \"git\",\n [\"commit\", \"-m\", \"Initial commit from agent-native create\"],\n {\n cwd: dir,\n stdio: \"pipe\",\n env: {\n ...process.env,\n GIT_AUTHOR_NAME: \"agent-native\",\n GIT_AUTHOR_EMAIL: \"noreply@agent-native.com\",\n GIT_COMMITTER_NAME: \"agent-native\",\n GIT_COMMITTER_EMAIL: \"noreply@agent-native.com\",\n },\n },\n );\n return true;\n } catch {\n return false;\n }\n}\n\nfunction renameGitignore(dir: string): void {\n const src = path.join(dir, \"_gitignore\");\n const dst = path.join(dir, \".gitignore\");\n if (fs.existsSync(src)) fs.renameSync(src, dst);\n}\n\nfunction replacePlaceholders(\n dir: string,\n appName: string,\n appTitle: string,\n workspaceName?: string,\n): void {\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n const p = path.join(dir, entry.name);\n if (entry.isSymbolicLink()) continue;\n if (entry.isDirectory()) {\n replacePlaceholders(p, appName, appTitle, workspaceName);\n continue;\n }\n let content: string;\n try {\n content = fs.readFileSync(p, \"utf-8\");\n } catch {\n continue;\n }\n const hasWs =\n workspaceName !== undefined && content.includes(\"{{WORKSPACE_NAME}}\");\n if (\n !content.includes(\"{{APP_NAME}}\") &&\n !content.includes(\"{{APP_TITLE}}\") &&\n !hasWs\n ) {\n continue;\n }\n let next = content;\n if (workspaceName !== undefined) {\n next = next.replace(/\\{\\{WORKSPACE_NAME\\}\\}/g, workspaceName);\n }\n next = next\n .replace(/\\{\\{APP_NAME\\}\\}/g, appName)\n .replace(/\\{\\{APP_TITLE\\}\\}/g, appTitle);\n fs.writeFileSync(p, next);\n }\n}\n\nfunction copyDir(src: string, dest: string, root?: string): void {\n const resolvedRoot = root ?? path.resolve(src);\n fs.mkdirSync(dest, { recursive: true });\n for (const entry of fs.readdirSync(src, { withFileTypes: true })) {\n const srcPath = path.join(src, entry.name);\n if (shouldSkipScaffoldEntry(entry.name, srcPath)) continue;\n const destPath = path.join(dest, entry.name);\n if (entry.isSymbolicLink()) {\n const target = fs.readlinkSync(srcPath);\n const resolvedTarget = path.resolve(path.dirname(srcPath), target);\n if (resolvedTarget.startsWith(resolvedRoot)) {\n fs.symlinkSync(target, destPath);\n } else {\n try {\n const stat = fs.statSync(srcPath);\n if (stat.isDirectory()) {\n copyDir(srcPath, destPath, resolvedRoot);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n } catch {\n // Broken symlink — skip silently\n }\n }\n } else if (entry.isDirectory()) {\n copyDir(srcPath, destPath, resolvedRoot);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n\nfunction shouldSkipScaffoldEntry(name: string, srcPath?: string): boolean {\n if (\n name === \"settings.json\" &&\n srcPath?.split(path.sep).includes(\".claude\")\n ) {\n return true;\n }\n if (\n name === \"node_modules\" ||\n name === \".agent-native\" ||\n name === \".env\" ||\n name === \".env.local\" ||\n name === \".netlify\" ||\n name === \".vercel\" ||\n name === \".generated\" ||\n name === \".react-router\" ||\n name === \".output\" ||\n name === \"build\" ||\n name === \"dist\" ||\n name === \".DS_Store\"\n ) {\n return true;\n }\n return (\n /^qa-.*\\.db(?:-shm|-wal)?$/.test(name) || /\\.db-(?:shm|wal)$/.test(name)\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.7.45",
3
+ "version": "0.7.46",
4
4
  "type": "module",
5
5
  "description": "Framework for agent-native application development — where AI agents and UI share state via files",
6
6
  "license": "MIT",