@donotdev/cli 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dependencies-matrix.json +25 -7
  2. package/dist/bin/commands/build.js +156 -158
  3. package/dist/bin/commands/bump.js +153 -153
  4. package/dist/bin/commands/cacheout.js +154 -154
  5. package/dist/bin/commands/create-app.js +184 -156
  6. package/dist/bin/commands/create-project.js +154 -154
  7. package/dist/bin/commands/deploy.js +470 -470
  8. package/dist/bin/commands/dev.js +155 -155
  9. package/dist/bin/commands/emu.js +155 -155
  10. package/dist/bin/commands/format.js +154 -154
  11. package/dist/bin/commands/lint.js +157 -154
  12. package/dist/bin/commands/preview.js +155 -155
  13. package/dist/bin/commands/sync-secrets.js +155 -155
  14. package/dist/bin/commands/wai.d.ts +11 -0
  15. package/dist/bin/commands/wai.d.ts.map +1 -0
  16. package/dist/bin/commands/wai.js +12 -0
  17. package/dist/bin/commands/wai.js.map +1 -0
  18. package/dist/bin/dndev.js +24 -8
  19. package/dist/bin/donotdev.js +24 -8
  20. package/dist/index.js +524 -497
  21. package/package.json +1 -1
  22. package/templates/app-demo/src/config/app.ts.example +12 -0
  23. package/templates/app-next/src/config/app.ts.example +75 -48
  24. package/templates/app-vite/index.html.example +71 -37
  25. package/templates/app-vite/src/config/app.ts.example +75 -47
  26. package/templates/app-vite/src/pages/FormPageExample.tsx.example +152 -0
  27. package/templates/app-vite/src/pages/HomePage.tsx.example +81 -134
  28. package/templates/app-vite/src/pages/ListPageExample.tsx.example +88 -0
  29. package/templates/functions-firebase/build.mjs.example +8 -1
  30. package/templates/functions-firebase/functions-firebase/build.mjs.example +8 -1
  31. package/templates/functions-firebase/functions-firebase/src/index.ts.example +19 -25
  32. package/templates/functions-firebase/functions.config.js.example +35 -0
  33. package/templates/root-consumer/entities/ExampleEntity.ts.example +223 -0
  34. package/templates/root-consumer/entities/demo.ts.example +562 -0
  35. package/templates/root-consumer/entities/index.ts.example +15 -0
  36. package/templates/root-consumer/guides/{AGENT_START_HERE.md.example → dndev/AGENT_START_HERE.md.example} +22 -0
  37. package/templates/root-consumer/guides/dndev/COMPONENTS_CRUD.md.example +231 -0
  38. package/templates/root-consumer/guides/{SETUP_AUTH.md.example → dndev/SETUP_AUTH.md.example} +30 -0
  39. package/templates/root-consumer/guides/dndev/SETUP_CRUD.md.example +473 -0
  40. package/templates/root-consumer/guides/dndev/SETUP_FUNCTIONS.md.example +116 -0
  41. package/templates/root-consumer/guides/wai-way/WAI_WAY_CLI.md.example +404 -0
  42. package/templates/root-consumer/guides/wai-way/agents/architect.md.example +78 -0
  43. package/templates/root-consumer/guides/wai-way/agents/builder.md.example +87 -0
  44. package/templates/root-consumer/guides/wai-way/agents/extractor.md.example +325 -0
  45. package/templates/root-consumer/guides/wai-way/agents/polisher.md.example +100 -0
  46. package/templates/root-consumer/guides/wai-way/blueprints/0_brainstorm.md.example +281 -0
  47. package/templates/root-consumer/guides/wai-way/blueprints/1_scaffold.md.example +77 -0
  48. package/templates/root-consumer/guides/wai-way/blueprints/2_entities.md.example +104 -0
  49. package/templates/root-consumer/guides/wai-way/blueprints/3_compose.md.example +124 -0
  50. package/templates/root-consumer/guides/wai-way/blueprints/4_configure.md.example +165 -0
  51. package/templates/root-consumer/guides/wai-way/context_map.json.example +95 -0
  52. package/templates/root-consumer/guides/wai-way/entity_patterns.md.example +840 -0
  53. package/templates/root-consumer/guides/wai-way/page_patterns.md.example +686 -0
  54. package/templates/root-consumer/guides/wai-way/presets_guide.md.example +217 -0
  55. package/templates/root-consumer/guides/wai-way/spec_template.md.example +312 -0
  56. package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +0 -19
  57. package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +0 -14
  58. package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +0 -14
  59. package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +0 -12
  60. package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +0 -14
  61. package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +0 -14
  62. package/templates/root-consumer/guides/COMPONENTS_CRUD.md.example +0 -70
  63. package/templates/root-consumer/guides/SETUP_CRUD.md.example +0 -1244
  64. package/templates/root-consumer/guides/SETUP_FUNCTIONS.md.example +0 -114
  65. /package/templates/root-consumer/guides/{COMPONENTS_ADV.md.example → dndev/COMPONENTS_ADV.md.example} +0 -0
  66. /package/templates/root-consumer/guides/{COMPONENTS_ATOMIC.md.example → dndev/COMPONENTS_ATOMIC.md.example} +0 -0
  67. /package/templates/root-consumer/guides/{COMPONENTS_UI.md.example → dndev/COMPONENTS_UI.md.example} +0 -0
  68. /package/templates/root-consumer/guides/{ENV_SETUP.md.example → dndev/ENV_SETUP.md.example} +0 -0
  69. /package/templates/root-consumer/guides/{INDEX.md.example → dndev/INDEX.md.example} +0 -0
  70. /package/templates/root-consumer/guides/{SETUP_APP_CONFIG.md.example → dndev/SETUP_APP_CONFIG.md.example} +0 -0
  71. /package/templates/root-consumer/guides/{SETUP_BILLING.md.example → dndev/SETUP_BILLING.md.example} +0 -0
  72. /package/templates/root-consumer/guides/{SETUP_I18N.md.example → dndev/SETUP_I18N.md.example} +0 -0
  73. /package/templates/root-consumer/guides/{SETUP_LAYOUTS.md.example → dndev/SETUP_LAYOUTS.md.example} +0 -0
  74. /package/templates/root-consumer/guides/{SETUP_OAUTH.md.example → dndev/SETUP_OAUTH.md.example} +0 -0
  75. /package/templates/root-consumer/guides/{SETUP_PAGES.md.example → dndev/SETUP_PAGES.md.example} +0 -0
  76. /package/templates/root-consumer/guides/{SETUP_PWA.md.example → dndev/SETUP_PWA.md.example} +0 -0
  77. /package/templates/root-consumer/guides/{SETUP_THEMES.md.example → dndev/SETUP_THEMES.md.example} +0 -0
  78. /package/templates/root-consumer/guides/{USE_ROUTING.md.example → dndev/USE_ROUTING.md.example} +0 -0
  79. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/APP_CHECK.md.example +0 -0
  80. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/COOKIE_REFERENCE.md.example +0 -0
  81. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/EMULATORS.md.example +0 -0
  82. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/VERSION_CONTROL.md.example +0 -0
@@ -789,155 +789,6 @@ var init_cli_output = __esm({
789
789
  }
790
790
  });
791
791
 
792
- // packages/core/config/constants.js
793
- function getPatternsFor(type, repoRoot = null) {
794
- const patterns = SCAN_PATTERNS[type];
795
- if (!patterns) {
796
- throw new Error(`Unknown pattern type: ${type}`);
797
- }
798
- if (repoRoot && patterns.framework) {
799
- return {
800
- ...patterns,
801
- framework: patterns.framework.map((pattern) => `${repoRoot}/${pattern}`)
802
- };
803
- }
804
- return patterns;
805
- }
806
- function getGlobOptionsFor(type) {
807
- return GLOB_OPTIONS[type] || GLOB_OPTIONS.base;
808
- }
809
- var I18N_PATHS, SCAN_PATTERNS, GLOB_OPTIONS;
810
- var init_constants = __esm({
811
- "packages/core/config/constants.js"() {
812
- "use strict";
813
- init_utils();
814
- I18N_PATHS = {
815
- // Monorepo source structure (locales at root, not in src/)
816
- SOURCE_ROOT: "packages/core/i18n",
817
- SOURCE_LOCALES: "packages/core/i18n/locales",
818
- SOURCE_EAGER: "packages/core/i18n/locales/eager",
819
- SOURCE_LAZY: "packages/core/i18n/locales/lazy",
820
- // Published structure (same as source - no flattening needed)
821
- PUBLISHED_ROOT: "i18n",
822
- PUBLISHED_LOCALES: "i18n/locales",
823
- PUBLISHED_EAGER: "i18n/locales/eager",
824
- PUBLISHED_LAZY: "i18n/locales/lazy"
825
- };
826
- SCAN_PATTERNS = {
827
- routes: {
828
- consumer: ["src/**/*Page.tsx", "src/pages/**/*Page.tsx"],
829
- exclude: [
830
- "**/node_modules/**",
831
- "**/dist/**",
832
- "**/build/**",
833
- "**/*.test.tsx",
834
- "**/*.stories.tsx"
835
- ],
836
- extensions: [".tsx"]
837
- },
838
- css: {
839
- consumer: ["src/**/*.css"],
840
- themes: ["src/**/*.css"],
841
- extensions: [".css", ".scss", ".sass"],
842
- framework: [
843
- "packages/ui/src/**/*.css",
844
- "packages/core/components/src/**/*.css",
845
- "packages/core/templates/src/**/*.css"
846
- ]
847
- },
848
- i18n: {
849
- eager: ["src/locales/*_*.json"],
850
- lazy: ["src/**/locales/*_*.json", "!src/locales/*_*.json"],
851
- framework: {
852
- eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
853
- lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
854
- },
855
- extensions: [".json"]
856
- },
857
- assets: {
858
- consumer: ["public/**/*"],
859
- fallback: ["manifest.json"],
860
- modern: [
861
- "logo.svg",
862
- "favicon.svg",
863
- "apple-touch-icon.png",
864
- "android-chrome-192x192.png",
865
- "android-chrome-512x512.png"
866
- ],
867
- patterns: [
868
- "favicon.svg",
869
- "favicon.ico",
870
- "favicon-*.png",
871
- "logo.svg",
872
- "logo.png",
873
- "logo.webp",
874
- "logo.avif",
875
- "apple-touch-icon*.png",
876
- "android-chrome-*.png",
877
- "manifest.json"
878
- ],
879
- fonts: ["fonts/**/*.woff2", "fonts/**/*.woff", "fonts/**/*.ttf"],
880
- framework: ["packages/ui/assets/**/*"]
881
- },
882
- pwa: {
883
- consumer: [
884
- "public/manifest.json",
885
- "public/service-worker.js",
886
- "public/sw.js",
887
- "public/icon-192x192.png",
888
- "public/icon-512x512.png",
889
- "public/favicon.ico",
890
- "public/favicon.svg",
891
- "public/apple-touch-icon.png",
892
- "public/logo.svg"
893
- ],
894
- exclude: ["**/node_modules/**", "**/dist/**", "**/build/**"],
895
- extensions: [".json", ".js", ".png", ".svg", ".ico"],
896
- framework: ["packages/ui/assets/**/*"]
897
- },
898
- globalIgnore: [
899
- "**/node_modules/**",
900
- "**/dist/**",
901
- "**/build/**",
902
- "**/.git/**",
903
- "**/coverage/**",
904
- "**/test/**"
905
- ]
906
- };
907
- GLOB_OPTIONS = {
908
- base: {
909
- absolute: true,
910
- onlyFiles: true,
911
- ignore: SCAN_PATTERNS.globalIgnore
912
- },
913
- css: {
914
- absolute: true,
915
- onlyFiles: true,
916
- ignore: [...SCAN_PATTERNS.globalIgnore, "**/*.test.css"]
917
- },
918
- routes: {
919
- absolute: true,
920
- onlyFiles: true,
921
- ignore: [
922
- ...SCAN_PATTERNS.globalIgnore,
923
- "**/*.test.tsx",
924
- "**/*.stories.tsx"
925
- ]
926
- },
927
- i18n: {
928
- absolute: true,
929
- onlyFiles: true,
930
- ignore: SCAN_PATTERNS.globalIgnore
931
- },
932
- assets: {
933
- absolute: true,
934
- onlyFiles: true,
935
- ignore: SCAN_PATTERNS.globalIgnore
936
- }
937
- };
938
- }
939
- });
940
-
941
792
  // node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js
942
793
  var require_array = __commonJS({
943
794
  "node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js"(exports) {
@@ -6522,7 +6373,157 @@ var require_out4 = __commonJS({
6522
6373
  }
6523
6374
  });
6524
6375
 
6376
+ // packages/core/config/constants.js
6377
+ function getPatternsFor(type, repoRoot = null) {
6378
+ const patterns = SCAN_PATTERNS[type];
6379
+ if (!patterns) {
6380
+ throw new Error(`Unknown pattern type: ${type}`);
6381
+ }
6382
+ if (repoRoot && patterns.framework) {
6383
+ return {
6384
+ ...patterns,
6385
+ framework: patterns.framework.map((pattern) => `${repoRoot}/${pattern}`)
6386
+ };
6387
+ }
6388
+ return patterns;
6389
+ }
6390
+ function getGlobOptionsFor(type) {
6391
+ return GLOB_OPTIONS[type] || GLOB_OPTIONS.base;
6392
+ }
6393
+ var I18N_PATHS, SCAN_PATTERNS, GLOB_OPTIONS;
6394
+ var init_constants = __esm({
6395
+ "packages/core/config/constants.js"() {
6396
+ "use strict";
6397
+ init_utils();
6398
+ I18N_PATHS = {
6399
+ // Monorepo source structure (locales at root, not in src/)
6400
+ SOURCE_ROOT: "packages/core/i18n",
6401
+ SOURCE_LOCALES: "packages/core/i18n/locales",
6402
+ SOURCE_EAGER: "packages/core/i18n/locales/eager",
6403
+ SOURCE_LAZY: "packages/core/i18n/locales/lazy",
6404
+ // Published structure (same as source - no flattening needed)
6405
+ PUBLISHED_ROOT: "i18n",
6406
+ PUBLISHED_LOCALES: "i18n/locales",
6407
+ PUBLISHED_EAGER: "i18n/locales/eager",
6408
+ PUBLISHED_LAZY: "i18n/locales/lazy"
6409
+ };
6410
+ SCAN_PATTERNS = {
6411
+ routes: {
6412
+ consumer: ["src/**/*Page.tsx", "src/pages/**/*Page.tsx"],
6413
+ exclude: [
6414
+ "**/node_modules/**",
6415
+ "**/dist/**",
6416
+ "**/build/**",
6417
+ "**/*.test.tsx",
6418
+ "**/*.stories.tsx"
6419
+ ],
6420
+ extensions: [".tsx"]
6421
+ },
6422
+ css: {
6423
+ consumer: ["src/**/*.css"],
6424
+ themes: ["src/**/*.css"],
6425
+ extensions: [".css", ".scss", ".sass"],
6426
+ framework: [
6427
+ "packages/ui/src/**/*.css",
6428
+ "packages/core/components/src/**/*.css",
6429
+ "packages/core/templates/src/**/*.css"
6430
+ ]
6431
+ },
6432
+ i18n: {
6433
+ eager: ["src/locales/*_*.json"],
6434
+ lazy: ["src/**/locales/*_*.json", "!src/locales/*_*.json"],
6435
+ framework: {
6436
+ eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
6437
+ lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
6438
+ },
6439
+ extensions: [".json"]
6440
+ },
6441
+ assets: {
6442
+ consumer: ["public/**/*"],
6443
+ fallback: ["manifest.json"],
6444
+ modern: [
6445
+ "logo.svg",
6446
+ "favicon.svg",
6447
+ "apple-touch-icon.png",
6448
+ "android-chrome-192x192.png",
6449
+ "android-chrome-512x512.png"
6450
+ ],
6451
+ patterns: [
6452
+ "favicon.svg",
6453
+ "favicon.ico",
6454
+ "favicon-*.png",
6455
+ "logo.svg",
6456
+ "logo.png",
6457
+ "logo.webp",
6458
+ "logo.avif",
6459
+ "apple-touch-icon*.png",
6460
+ "android-chrome-*.png",
6461
+ "manifest.json"
6462
+ ],
6463
+ fonts: ["fonts/**/*.woff2", "fonts/**/*.woff", "fonts/**/*.ttf"],
6464
+ framework: ["packages/ui/assets/**/*"]
6465
+ },
6466
+ pwa: {
6467
+ consumer: [
6468
+ "public/manifest.json",
6469
+ "public/service-worker.js",
6470
+ "public/sw.js",
6471
+ "public/icon-192x192.png",
6472
+ "public/icon-512x512.png",
6473
+ "public/favicon.ico",
6474
+ "public/favicon.svg",
6475
+ "public/apple-touch-icon.png",
6476
+ "public/logo.svg"
6477
+ ],
6478
+ exclude: ["**/node_modules/**", "**/dist/**", "**/build/**"],
6479
+ extensions: [".json", ".js", ".png", ".svg", ".ico"],
6480
+ framework: ["packages/ui/assets/**/*"]
6481
+ },
6482
+ globalIgnore: [
6483
+ "**/node_modules/**",
6484
+ "**/dist/**",
6485
+ "**/build/**",
6486
+ "**/.git/**",
6487
+ "**/coverage/**",
6488
+ "**/test/**"
6489
+ ]
6490
+ };
6491
+ GLOB_OPTIONS = {
6492
+ base: {
6493
+ absolute: true,
6494
+ onlyFiles: true,
6495
+ ignore: SCAN_PATTERNS.globalIgnore
6496
+ },
6497
+ css: {
6498
+ absolute: true,
6499
+ onlyFiles: true,
6500
+ ignore: [...SCAN_PATTERNS.globalIgnore, "**/*.test.css"]
6501
+ },
6502
+ routes: {
6503
+ absolute: true,
6504
+ onlyFiles: true,
6505
+ ignore: [
6506
+ ...SCAN_PATTERNS.globalIgnore,
6507
+ "**/*.test.tsx",
6508
+ "**/*.stories.tsx"
6509
+ ]
6510
+ },
6511
+ i18n: {
6512
+ absolute: true,
6513
+ onlyFiles: true,
6514
+ ignore: SCAN_PATTERNS.globalIgnore
6515
+ },
6516
+ assets: {
6517
+ absolute: true,
6518
+ onlyFiles: true,
6519
+ ignore: SCAN_PATTERNS.globalIgnore
6520
+ }
6521
+ };
6522
+ }
6523
+ });
6524
+
6525
6525
  // packages/core/config/utils/PathResolver.ts
6526
+ import * as fs from "node:fs";
6526
6527
  import { createRequire } from "node:module";
6527
6528
  import {
6528
6529
  resolve,
@@ -6534,7 +6535,6 @@ import {
6534
6535
  extname
6535
6536
  } from "node:path";
6536
6537
  import { fileURLToPath } from "node:url";
6537
- import * as fs from "node:fs";
6538
6538
  function safeExecuteAsync(fn, message) {
6539
6539
  return fn().catch((error2) => {
6540
6540
  throw new Error(
@@ -6547,8 +6547,8 @@ var init_PathResolver = __esm({
6547
6547
  "packages/core/config/utils/PathResolver.ts"() {
6548
6548
  "use strict";
6549
6549
  init_utils();
6550
- init_constants();
6551
6550
  import_fast_glob = __toESM(require_out4(), 1);
6551
+ init_constants();
6552
6552
  constants = {
6553
6553
  getGlobOptionsFor: getGlobOptionsFor || void 0,
6554
6554
  SCAN_PATTERNS: SCAN_PATTERNS || void 0,
@@ -7677,11 +7677,11 @@ var init_pathResolver = __esm({
7677
7677
  });
7678
7678
 
7679
7679
  // packages/tooling/src/bundler/utils.ts
7680
+ import { Buffer as Buffer2 } from "node:buffer";
7680
7681
  import { createRequire as createRequire2 } from "node:module";
7681
- import { fileURLToPath as fileURLToPath2 } from "node:url";
7682
7682
  import { dirname as dirname3, resolve as resolve3 } from "node:path";
7683
- import { Buffer as Buffer2 } from "node:buffer";
7684
7683
  import process from "node:process";
7684
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
7685
7685
  var require2, __filename, __dirname;
7686
7686
  var init_utils = __esm({
7687
7687
  "packages/tooling/src/bundler/utils.ts"() {
@@ -7734,9 +7734,9 @@ async function askForSelection(message, choices, defaultValue = 0) {
7734
7734
 
7735
7735
  // packages/tooling/src/apps/sync-secrets.ts
7736
7736
  init_utils();
7737
- init_errors();
7738
- init_cli_output();
7739
7737
  import { spawnSync } from "node:child_process";
7738
+ init_cli_output();
7739
+ init_errors();
7740
7740
  init_pathResolver();
7741
7741
  function parseEnvFile(filePath) {
7742
7742
  if (!pathExists(filePath)) {
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @fileoverview WAI Command Wrapper
3
+ * @description Re-exports wai from tooling for CLI bundling.
4
+ * Each command wrapper is bundled separately as a fully self-contained script.
5
+ *
6
+ * @version 0.0.1
7
+ * @since 0.0.1
8
+ * @author AMBROISE PARK Consulting
9
+ */
10
+ export { wai as main } from '@donotdev/tooling';
11
+ //# sourceMappingURL=wai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wai.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/wai.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,12 @@
1
+ // packages/cli/src/bin/commands/wai.ts
2
+ /**
3
+ * @fileoverview WAI Command Wrapper
4
+ * @description Re-exports wai from tooling for CLI bundling.
5
+ * Each command wrapper is bundled separately as a fully self-contained script.
6
+ *
7
+ * @version 0.0.1
8
+ * @since 0.0.1
9
+ * @author AMBROISE PARK Consulting
10
+ */
11
+ export { wai as main } from '@donotdev/tooling';
12
+ //# sourceMappingURL=wai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wai.js","sourceRoot":"","sources":["../../../src/bin/commands/wai.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC;;;;;;;;GAQG;AAEH,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/bin/dndev.js CHANGED
@@ -5,11 +5,11 @@ var __esm = (fn, res) => function __init() {
5
5
  };
6
6
 
7
7
  // packages/tooling/src/bundler/utils.ts
8
+ import { Buffer as Buffer2 } from "node:buffer";
8
9
  import { createRequire } from "node:module";
9
- import { fileURLToPath } from "node:url";
10
10
  import { dirname, resolve } from "node:path";
11
- import { Buffer as Buffer2 } from "node:buffer";
12
11
  import process from "node:process";
12
+ import { fileURLToPath } from "node:url";
13
13
  var require2, __filename, __dirname;
14
14
  var init_utils = __esm({
15
15
  "packages/tooling/src/bundler/utils.ts"() {
@@ -46,7 +46,7 @@ Usage: dndev <command>[:<app>] [options]
46
46
 
47
47
  Commands:
48
48
  init, create-project Create a new DoNotDev project
49
- create-app Add app to existing project
49
+ create-app [name] Add app to existing project (--builder vite|next, --functions)
50
50
  dev [app] Start development server
51
51
  build [app] Build for production
52
52
  preview [app] Preview production build
@@ -57,17 +57,20 @@ Commands:
57
57
  sync-secrets Sync env vars to Firebase/Vercel
58
58
  cacheout [app] Clear build caches
59
59
  bump Update framework packages and peer dependencies
60
+ wai Output WAI-WAY activation prompt for AI agents
60
61
 
61
62
  Options:
62
63
  -v, --version Display version number
63
64
  -h, --help Display this help
64
65
 
65
66
  Examples:
66
- dndev init my-app Create a new project
67
+ dndev init my-project Create a new project
68
+ dndev create-app Interactive app creation
69
+ dndev create-app my-app Create 'my-app' with defaults (vite, no functions)
70
+ dndev create-app my-app --builder next --functions Create Next.js app with functions
67
71
  dndev dev Start dev server
68
72
  dndev dev:web Start dev server for 'web' app
69
- dndev build Build for production
70
- dndev deploy Deploy to Firebase
73
+ dndev wai Output WAI-WAY activation prompt
71
74
 
72
75
  Run 'dndev <command> --help' for command-specific help.`);
73
76
  process.exit(0);
@@ -88,9 +91,18 @@ program.command("init [name]").alias("create-project").description("Create a new
88
91
  const { main } = await import("./commands/create-project.js");
89
92
  await main({ projectName: name });
90
93
  });
91
- program.command("create-app [name]").description("Add a new app to existing project").action(async () => {
94
+ program.command("create-app [name]").description("Add a new app to existing project").option("--name <name>", "App name (non-interactive)").option("--builder <builder>", "Framework: vite or next (default: vite)").option("--functions", "Include Firebase functions").action(async (name, options) => {
92
95
  const { main } = await import("./commands/create-app.js");
93
- await main();
96
+ const appName = name || options.name;
97
+ if (appName) {
98
+ await main({
99
+ name: appName,
100
+ builder: options.builder,
101
+ functions: options.functions
102
+ });
103
+ } else {
104
+ await main();
105
+ }
94
106
  });
95
107
  var formatCmd = program.command("format").description("Format code with Prettier");
96
108
  addCommonOptions(formatCmd);
@@ -200,6 +212,10 @@ program.command("preview [app]").description("Preview production build").action(
200
212
  }
201
213
  process.exit(await main());
202
214
  });
215
+ program.command("wai").alias("wai-way").description("Output WAI-WAY activation prompt for AI agents").option("-w, --workflow", "Show workflow summary only").option("-c, --copy", "Copy prompt to clipboard").action(async () => {
216
+ const { main } = await import("./commands/wai.js");
217
+ process.exit(await main());
218
+ });
203
219
  function preprocessArgs(args2) {
204
220
  if (args2.length === 0) return args2;
205
221
  const firstArg = args2[0];
@@ -5,11 +5,11 @@ var __esm = (fn, res) => function __init() {
5
5
  };
6
6
 
7
7
  // packages/tooling/src/bundler/utils.ts
8
+ import { Buffer as Buffer2 } from "node:buffer";
8
9
  import { createRequire } from "node:module";
9
- import { fileURLToPath } from "node:url";
10
10
  import { dirname, resolve } from "node:path";
11
- import { Buffer as Buffer2 } from "node:buffer";
12
11
  import process from "node:process";
12
+ import { fileURLToPath } from "node:url";
13
13
  var require2, __filename, __dirname;
14
14
  var init_utils = __esm({
15
15
  "packages/tooling/src/bundler/utils.ts"() {
@@ -46,7 +46,7 @@ Usage: dndev <command>[:<app>] [options]
46
46
 
47
47
  Commands:
48
48
  init, create-project Create a new DoNotDev project
49
- create-app Add app to existing project
49
+ create-app [name] Add app to existing project (--builder vite|next, --functions)
50
50
  dev [app] Start development server
51
51
  build [app] Build for production
52
52
  preview [app] Preview production build
@@ -57,17 +57,20 @@ Commands:
57
57
  sync-secrets Sync env vars to Firebase/Vercel
58
58
  cacheout [app] Clear build caches
59
59
  bump Update framework packages and peer dependencies
60
+ wai Output WAI-WAY activation prompt for AI agents
60
61
 
61
62
  Options:
62
63
  -v, --version Display version number
63
64
  -h, --help Display this help
64
65
 
65
66
  Examples:
66
- dndev init my-app Create a new project
67
+ dndev init my-project Create a new project
68
+ dndev create-app Interactive app creation
69
+ dndev create-app my-app Create 'my-app' with defaults (vite, no functions)
70
+ dndev create-app my-app --builder next --functions Create Next.js app with functions
67
71
  dndev dev Start dev server
68
72
  dndev dev:web Start dev server for 'web' app
69
- dndev build Build for production
70
- dndev deploy Deploy to Firebase
73
+ dndev wai Output WAI-WAY activation prompt
71
74
 
72
75
  Run 'dndev <command> --help' for command-specific help.`);
73
76
  process.exit(0);
@@ -88,9 +91,18 @@ program.command("init [name]").alias("create-project").description("Create a new
88
91
  const { main } = await import("./commands/create-project.js");
89
92
  await main({ projectName: name });
90
93
  });
91
- program.command("create-app [name]").description("Add a new app to existing project").action(async () => {
94
+ program.command("create-app [name]").description("Add a new app to existing project").option("--name <name>", "App name (non-interactive)").option("--builder <builder>", "Framework: vite or next (default: vite)").option("--functions", "Include Firebase functions").action(async (name, options) => {
92
95
  const { main } = await import("./commands/create-app.js");
93
- await main();
96
+ const appName = name || options.name;
97
+ if (appName) {
98
+ await main({
99
+ name: appName,
100
+ builder: options.builder,
101
+ functions: options.functions
102
+ });
103
+ } else {
104
+ await main();
105
+ }
94
106
  });
95
107
  var formatCmd = program.command("format").description("Format code with Prettier");
96
108
  addCommonOptions(formatCmd);
@@ -200,6 +212,10 @@ program.command("preview [app]").description("Preview production build").action(
200
212
  }
201
213
  process.exit(await main());
202
214
  });
215
+ program.command("wai").alias("wai-way").description("Output WAI-WAY activation prompt for AI agents").option("-w, --workflow", "Show workflow summary only").option("-c, --copy", "Copy prompt to clipboard").action(async () => {
216
+ const { main } = await import("./commands/wai.js");
217
+ process.exit(await main());
218
+ });
203
219
  function preprocessArgs(args2) {
204
220
  if (args2.length === 0) return args2;
205
221
  const firstArg = args2[0];