@donotdev/cli 0.0.6 → 0.0.8

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 (87) hide show
  1. package/README.md +3 -18
  2. package/dependencies-matrix.json +64 -121
  3. package/dist/bin/commands/build.js +173 -161
  4. package/dist/bin/commands/bump.js +181 -156
  5. package/dist/bin/commands/cacheout.js +188 -171
  6. package/dist/bin/commands/create-app.js +213 -156
  7. package/dist/bin/commands/create-project.js +183 -154
  8. package/dist/bin/commands/deploy.js +491 -477
  9. package/dist/bin/commands/dev.js +176 -160
  10. package/dist/bin/commands/emu.js +181 -165
  11. package/dist/bin/commands/format.js +191 -174
  12. package/dist/bin/commands/lint.js +191 -171
  13. package/dist/bin/commands/preview.js +177 -161
  14. package/dist/bin/commands/sync-secrets.js +172 -158
  15. package/dist/bin/commands/wai.d.ts +11 -0
  16. package/dist/bin/commands/wai.d.ts.map +1 -0
  17. package/dist/bin/commands/wai.js +12 -0
  18. package/dist/bin/commands/wai.js.map +1 -0
  19. package/dist/bin/dndev.js +24 -24
  20. package/dist/bin/donotdev.js +24 -24
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +661 -669
  24. package/dist/index.js.map +1 -1
  25. package/package.json +1 -1
  26. package/templates/app-demo/src/config/app.ts.example +12 -0
  27. package/templates/app-next/src/config/app.ts.example +75 -48
  28. package/templates/app-vite/index.html.example +71 -37
  29. package/templates/app-vite/src/config/app.ts.example +75 -47
  30. package/templates/app-vite/src/pages/FormPageExample.tsx.example +152 -0
  31. package/templates/app-vite/src/pages/HomePage.tsx.example +81 -134
  32. package/templates/app-vite/src/pages/ListPageExample.tsx.example +88 -0
  33. package/templates/functions-firebase/build.mjs.example +8 -1
  34. package/templates/functions-firebase/functions-firebase/build.mjs.example +8 -1
  35. package/templates/functions-firebase/functions-firebase/src/index.ts.example +19 -25
  36. package/templates/functions-firebase/functions.config.js.example +35 -0
  37. package/templates/root-consumer/entities/ExampleEntity.ts.example +223 -0
  38. package/templates/root-consumer/entities/demo.ts.example +576 -0
  39. package/templates/root-consumer/entities/index.ts.example +15 -0
  40. package/templates/root-consumer/eslint.config.js.example +2 -80
  41. package/templates/root-consumer/guides/{AGENT_START_HERE.md.example → dndev/AGENT_START_HERE.md.example} +22 -0
  42. package/templates/root-consumer/guides/dndev/COMPONENTS_CRUD.md.example +231 -0
  43. package/templates/root-consumer/guides/{SETUP_AUTH.md.example → dndev/SETUP_AUTH.md.example} +30 -0
  44. package/templates/root-consumer/guides/dndev/SETUP_CRUD.md.example +539 -0
  45. package/templates/root-consumer/guides/dndev/SETUP_FUNCTIONS.md.example +116 -0
  46. package/templates/root-consumer/guides/{SETUP_I18N.md.example → dndev/SETUP_I18N.md.example} +46 -0
  47. package/templates/root-consumer/guides/wai-way/WAI_WAY_CLI.md.example +404 -0
  48. package/templates/root-consumer/guides/wai-way/agents/architect.md.example +78 -0
  49. package/templates/root-consumer/guides/wai-way/agents/builder.md.example +87 -0
  50. package/templates/root-consumer/guides/wai-way/agents/extractor.md.example +325 -0
  51. package/templates/root-consumer/guides/wai-way/agents/polisher.md.example +100 -0
  52. package/templates/root-consumer/guides/wai-way/blueprints/0_brainstorm.md.example +281 -0
  53. package/templates/root-consumer/guides/wai-way/blueprints/1_scaffold.md.example +77 -0
  54. package/templates/root-consumer/guides/wai-way/blueprints/2_entities.md.example +104 -0
  55. package/templates/root-consumer/guides/wai-way/blueprints/3_compose.md.example +124 -0
  56. package/templates/root-consumer/guides/wai-way/blueprints/4_configure.md.example +165 -0
  57. package/templates/root-consumer/guides/wai-way/context_map.json.example +95 -0
  58. package/templates/root-consumer/guides/wai-way/entity_patterns.md.example +840 -0
  59. package/templates/root-consumer/guides/wai-way/page_patterns.md.example +686 -0
  60. package/templates/root-consumer/guides/wai-way/presets_guide.md.example +217 -0
  61. package/templates/root-consumer/guides/wai-way/spec_template.md.example +312 -0
  62. package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +0 -19
  63. package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +0 -14
  64. package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +0 -14
  65. package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +0 -12
  66. package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +0 -14
  67. package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +0 -14
  68. package/templates/root-consumer/guides/COMPONENTS_CRUD.md.example +0 -70
  69. package/templates/root-consumer/guides/SETUP_CRUD.md.example +0 -1244
  70. package/templates/root-consumer/guides/SETUP_FUNCTIONS.md.example +0 -114
  71. /package/templates/root-consumer/guides/{COMPONENTS_ADV.md.example → dndev/COMPONENTS_ADV.md.example} +0 -0
  72. /package/templates/root-consumer/guides/{COMPONENTS_ATOMIC.md.example → dndev/COMPONENTS_ATOMIC.md.example} +0 -0
  73. /package/templates/root-consumer/guides/{COMPONENTS_UI.md.example → dndev/COMPONENTS_UI.md.example} +0 -0
  74. /package/templates/root-consumer/guides/{ENV_SETUP.md.example → dndev/ENV_SETUP.md.example} +0 -0
  75. /package/templates/root-consumer/guides/{INDEX.md.example → dndev/INDEX.md.example} +0 -0
  76. /package/templates/root-consumer/guides/{SETUP_APP_CONFIG.md.example → dndev/SETUP_APP_CONFIG.md.example} +0 -0
  77. /package/templates/root-consumer/guides/{SETUP_BILLING.md.example → dndev/SETUP_BILLING.md.example} +0 -0
  78. /package/templates/root-consumer/guides/{SETUP_LAYOUTS.md.example → dndev/SETUP_LAYOUTS.md.example} +0 -0
  79. /package/templates/root-consumer/guides/{SETUP_OAUTH.md.example → dndev/SETUP_OAUTH.md.example} +0 -0
  80. /package/templates/root-consumer/guides/{SETUP_PAGES.md.example → dndev/SETUP_PAGES.md.example} +0 -0
  81. /package/templates/root-consumer/guides/{SETUP_PWA.md.example → dndev/SETUP_PWA.md.example} +0 -0
  82. /package/templates/root-consumer/guides/{SETUP_THEMES.md.example → dndev/SETUP_THEMES.md.example} +0 -0
  83. /package/templates/root-consumer/guides/{USE_ROUTING.md.example → dndev/USE_ROUTING.md.example} +0 -0
  84. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/APP_CHECK.md.example +0 -0
  85. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/COOKIE_REFERENCE.md.example +0 -0
  86. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/EMULATORS.md.example +0 -0
  87. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/VERSION_CONTROL.md.example +0 -0
@@ -644,6 +644,7 @@ ${import_picocolors.default.gray(de + _2.repeat(s + 2) + pe)}
644
644
  });
645
645
 
646
646
  // packages/tooling/src/utils/cli-output.ts
647
+ import "node:os";
647
648
  function supportsColor() {
648
649
  if (process.env.NO_COLOR) return false;
649
650
  if (process.platform === "win32") {
@@ -789,155 +790,6 @@ var init_cli_output = __esm({
789
790
  }
790
791
  });
791
792
 
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
793
  // node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js
942
794
  var require_array = __commonJS({
943
795
  "node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js"(exports) {
@@ -6522,7 +6374,167 @@ var require_out4 = __commonJS({
6522
6374
  }
6523
6375
  });
6524
6376
 
6377
+ // packages/core/config/constants.js
6378
+ function getPatternsFor(type, repoRoot = null) {
6379
+ const patterns = SCAN_PATTERNS[type];
6380
+ if (!patterns) {
6381
+ throw new Error(`Unknown pattern type: ${type}`);
6382
+ }
6383
+ if (repoRoot && patterns.framework) {
6384
+ return {
6385
+ ...patterns,
6386
+ framework: patterns.framework.map((pattern) => `${repoRoot}/${pattern}`)
6387
+ };
6388
+ }
6389
+ return patterns;
6390
+ }
6391
+ function getGlobOptionsFor(type) {
6392
+ return GLOB_OPTIONS[type] || GLOB_OPTIONS.base;
6393
+ }
6394
+ var I18N_PATHS, SCAN_PATTERNS, GLOB_OPTIONS;
6395
+ var init_constants = __esm({
6396
+ "packages/core/config/constants.js"() {
6397
+ "use strict";
6398
+ init_utils();
6399
+ I18N_PATHS = {
6400
+ // Monorepo source structure (locales at root, not in src/)
6401
+ SOURCE_ROOT: "packages/core/i18n",
6402
+ SOURCE_LOCALES: "packages/core/i18n/locales",
6403
+ SOURCE_EAGER: "packages/core/i18n/locales/eager",
6404
+ SOURCE_LAZY: "packages/core/i18n/locales/lazy",
6405
+ // Published structure (same as source - no flattening needed)
6406
+ PUBLISHED_ROOT: "i18n",
6407
+ PUBLISHED_LOCALES: "i18n/locales",
6408
+ PUBLISHED_EAGER: "i18n/locales/eager",
6409
+ PUBLISHED_LAZY: "i18n/locales/lazy"
6410
+ };
6411
+ SCAN_PATTERNS = {
6412
+ routes: {
6413
+ consumer: ["src/**/*Page.tsx", "src/pages/**/*Page.tsx"],
6414
+ exclude: [
6415
+ "**/node_modules/**",
6416
+ "**/dist/**",
6417
+ "**/build/**",
6418
+ "**/*.test.tsx",
6419
+ "**/*.stories.tsx"
6420
+ ],
6421
+ extensions: [".tsx"]
6422
+ },
6423
+ css: {
6424
+ consumer: ["src/**/*.css"],
6425
+ themes: ["src/**/*.css"],
6426
+ extensions: [".css", ".scss", ".sass"],
6427
+ framework: [
6428
+ "packages/ui/src/**/*.css",
6429
+ "packages/core/components/src/**/*.css",
6430
+ "packages/core/templates/src/**/*.css"
6431
+ ]
6432
+ },
6433
+ i18n: {
6434
+ eager: ["src/locales/*_*.json"],
6435
+ lazy: [
6436
+ "src/**/locales/*_*.json",
6437
+ "!src/locales/*_*.json",
6438
+ // Auto-detect shared entity translations in monorepos (if exists, use it; if not, no problem)
6439
+ "../../entities/locales/*_*.json"
6440
+ ],
6441
+ // Additional paths from workspace packages (e.g., shared entities)
6442
+ // Consumers can still configure via i18n.additionalPaths in dndev/vite config for custom paths
6443
+ // Example: ['../../packages/shared/locales/*_*.json']
6444
+ additional: [],
6445
+ framework: {
6446
+ eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
6447
+ lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
6448
+ },
6449
+ extensions: [".json"]
6450
+ },
6451
+ assets: {
6452
+ consumer: ["public/**/*"],
6453
+ fallback: ["manifest.json"],
6454
+ modern: [
6455
+ "logo.svg",
6456
+ "favicon.svg",
6457
+ "apple-touch-icon.png",
6458
+ "android-chrome-192x192.png",
6459
+ "android-chrome-512x512.png"
6460
+ ],
6461
+ patterns: [
6462
+ "favicon.svg",
6463
+ "favicon.ico",
6464
+ "favicon-*.png",
6465
+ "logo.svg",
6466
+ "logo.png",
6467
+ "logo.webp",
6468
+ "logo.avif",
6469
+ "apple-touch-icon*.png",
6470
+ "android-chrome-*.png",
6471
+ "manifest.json"
6472
+ ],
6473
+ fonts: ["fonts/**/*.woff2", "fonts/**/*.woff", "fonts/**/*.ttf"],
6474
+ framework: ["packages/ui/assets/**/*"]
6475
+ },
6476
+ pwa: {
6477
+ consumer: [
6478
+ "public/manifest.json",
6479
+ "public/service-worker.js",
6480
+ "public/sw.js",
6481
+ "public/icon-192x192.png",
6482
+ "public/icon-512x512.png",
6483
+ "public/favicon.ico",
6484
+ "public/favicon.svg",
6485
+ "public/apple-touch-icon.png",
6486
+ "public/logo.svg"
6487
+ ],
6488
+ exclude: ["**/node_modules/**", "**/dist/**", "**/build/**"],
6489
+ extensions: [".json", ".js", ".png", ".svg", ".ico"],
6490
+ framework: ["packages/ui/assets/**/*"]
6491
+ },
6492
+ globalIgnore: [
6493
+ "**/node_modules/**",
6494
+ "**/dist/**",
6495
+ "**/build/**",
6496
+ "**/.git/**",
6497
+ "**/coverage/**",
6498
+ "**/test/**"
6499
+ ]
6500
+ };
6501
+ GLOB_OPTIONS = {
6502
+ base: {
6503
+ absolute: true,
6504
+ onlyFiles: true,
6505
+ ignore: SCAN_PATTERNS.globalIgnore
6506
+ },
6507
+ css: {
6508
+ absolute: true,
6509
+ onlyFiles: true,
6510
+ ignore: [...SCAN_PATTERNS.globalIgnore, "**/*.test.css"]
6511
+ },
6512
+ routes: {
6513
+ absolute: true,
6514
+ onlyFiles: true,
6515
+ ignore: [
6516
+ ...SCAN_PATTERNS.globalIgnore,
6517
+ "**/*.test.tsx",
6518
+ "**/*.stories.tsx"
6519
+ ]
6520
+ },
6521
+ i18n: {
6522
+ absolute: true,
6523
+ onlyFiles: true,
6524
+ ignore: SCAN_PATTERNS.globalIgnore
6525
+ },
6526
+ assets: {
6527
+ absolute: true,
6528
+ onlyFiles: true,
6529
+ ignore: SCAN_PATTERNS.globalIgnore
6530
+ }
6531
+ };
6532
+ }
6533
+ });
6534
+
6525
6535
  // packages/core/config/utils/PathResolver.ts
6536
+ import * as fs from "node:fs";
6537
+ import "node:fs";
6526
6538
  import { createRequire } from "node:module";
6527
6539
  import {
6528
6540
  resolve,
@@ -6534,7 +6546,6 @@ import {
6534
6546
  extname
6535
6547
  } from "node:path";
6536
6548
  import { fileURLToPath } from "node:url";
6537
- import * as fs from "node:fs";
6538
6549
  function safeExecuteAsync(fn, message) {
6539
6550
  return fn().catch((error2) => {
6540
6551
  throw new Error(
@@ -6547,8 +6558,8 @@ var init_PathResolver = __esm({
6547
6558
  "packages/core/config/utils/PathResolver.ts"() {
6548
6559
  "use strict";
6549
6560
  init_utils();
6550
- init_constants();
6551
6561
  import_fast_glob = __toESM(require_out4(), 1);
6562
+ init_constants();
6552
6563
  constants = {
6553
6564
  getGlobOptionsFor: getGlobOptionsFor || void 0,
6554
6565
  SCAN_PATTERNS: SCAN_PATTERNS || void 0,
@@ -7636,6 +7647,7 @@ var init_errors = __esm({
7636
7647
  });
7637
7648
 
7638
7649
  // packages/tooling/src/utils/pathResolver.ts
7650
+ import { createRequire as createRequire2 } from "node:module";
7639
7651
  import {
7640
7652
  join as join2,
7641
7653
  dirname as dirname2,
@@ -7645,6 +7657,7 @@ import {
7645
7657
  resolve as resolve2,
7646
7658
  isAbsolute as pathIsAbsolute
7647
7659
  } from "node:path";
7660
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
7648
7661
  function readdirSync2(dirPath, options) {
7649
7662
  return pathResolverInstance.readdirSync(dirPath, options);
7650
7663
  }
@@ -7677,17 +7690,18 @@ var init_pathResolver = __esm({
7677
7690
  });
7678
7691
 
7679
7692
  // packages/tooling/src/bundler/utils.ts
7680
- import { createRequire as createRequire2 } from "node:module";
7681
- import { fileURLToPath as fileURLToPath2 } from "node:url";
7682
- import { dirname as dirname3, resolve as resolve3 } from "node:path";
7683
7693
  import { Buffer as Buffer2 } from "node:buffer";
7694
+ import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "node:fs";
7695
+ import { createRequire as createRequire3 } from "node:module";
7696
+ import { dirname as dirname3, resolve as resolve3 } from "node:path";
7684
7697
  import process from "node:process";
7698
+ import { fileURLToPath as fileURLToPath3 } from "node:url";
7685
7699
  var require2, __filename, __dirname;
7686
7700
  var init_utils = __esm({
7687
7701
  "packages/tooling/src/bundler/utils.ts"() {
7688
7702
  "use strict";
7689
- require2 = createRequire2(import.meta.url);
7690
- __filename = fileURLToPath2(import.meta.url);
7703
+ require2 = createRequire3(import.meta.url);
7704
+ __filename = fileURLToPath3(import.meta.url);
7691
7705
  __dirname = dirname3(__filename);
7692
7706
  if (typeof globalThis !== "undefined") {
7693
7707
  globalThis.require = require2;
@@ -7734,9 +7748,9 @@ async function askForSelection(message, choices, defaultValue = 0) {
7734
7748
 
7735
7749
  // packages/tooling/src/apps/sync-secrets.ts
7736
7750
  init_utils();
7737
- init_errors();
7738
- init_cli_output();
7739
7751
  import { spawnSync } from "node:child_process";
7752
+ init_cli_output();
7753
+ init_errors();
7740
7754
  init_pathResolver();
7741
7755
  function parseEnvFile(filePath) {
7742
7756
  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,28 +46,30 @@ 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
53
53
  emu [app] Start dev with Firebase emulators
54
54
  format Format code with Prettier
55
- lint Lint code with ESLint
56
55
  deploy [app] Deploy to Firebase
57
56
  sync-secrets Sync env vars to Firebase/Vercel
58
57
  cacheout [app] Clear build caches
59
58
  bump Update framework packages and peer dependencies
59
+ wai Output WAI-WAY activation prompt for AI agents
60
60
 
61
61
  Options:
62
62
  -v, --version Display version number
63
63
  -h, --help Display this help
64
64
 
65
65
  Examples:
66
- dndev init my-app Create a new project
66
+ dndev init my-project Create a new project
67
+ dndev create-app Interactive app creation
68
+ dndev create-app my-app Create 'my-app' with defaults (vite, no functions)
69
+ dndev create-app my-app --builder next --functions Create Next.js app with functions
67
70
  dndev dev Start dev server
68
71
  dndev dev:web Start dev server for 'web' app
69
- dndev build Build for production
70
- dndev deploy Deploy to Firebase
72
+ dndev wai Output WAI-WAY activation prompt
71
73
 
72
74
  Run 'dndev <command> --help' for command-specific help.`);
73
75
  process.exit(0);
@@ -88,9 +90,18 @@ program.command("init [name]").alias("create-project").description("Create a new
88
90
  const { main } = await import("./commands/create-project.js");
89
91
  await main({ projectName: name });
90
92
  });
91
- program.command("create-app [name]").description("Add a new app to existing project").action(async () => {
93
+ 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
94
  const { main } = await import("./commands/create-app.js");
93
- await main();
95
+ const appName = name || options.name;
96
+ if (appName) {
97
+ await main({
98
+ name: appName,
99
+ builder: options.builder,
100
+ functions: options.functions
101
+ });
102
+ } else {
103
+ await main();
104
+ }
94
105
  });
95
106
  var formatCmd = program.command("format").description("Format code with Prettier");
96
107
  addCommonOptions(formatCmd);
@@ -107,21 +118,6 @@ formatCmd.action(async (commanderOptions) => {
107
118
  throw error;
108
119
  }
109
120
  });
110
- var lintCmd = program.command("lint").description("Lint code with ESLint").option("-f, --fix", "automatically fix issues");
111
- addCommonOptions(lintCmd);
112
- lintCmd.action(async (commanderOptions) => {
113
- const commonOptions = extractCommonOptions(commanderOptions);
114
- const options = { ...commonOptions, ...commanderOptions };
115
- try {
116
- const { main } = await import("./commands/lint.js");
117
- await main(options);
118
- } catch (error) {
119
- if (error.code === "invalid-argument" || error.name === "DoNotDevError") {
120
- process.exit(error.context?.exitCode || 1);
121
- }
122
- throw error;
123
- }
124
- });
125
121
  var cacheoutCmd = program.command("cacheout [app]").alias("co").description("Clear build caches").option("--app <app>", "App name to clear cache for");
126
122
  addCommonOptions(cacheoutCmd);
127
123
  cacheoutCmd.action(async (app, commanderOptions) => {
@@ -200,6 +196,10 @@ program.command("preview [app]").description("Preview production build").action(
200
196
  }
201
197
  process.exit(await main());
202
198
  });
199
+ 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 () => {
200
+ const { main } = await import("./commands/wai.js");
201
+ process.exit(await main());
202
+ });
203
203
  function preprocessArgs(args2) {
204
204
  if (args2.length === 0) return args2;
205
205
  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,28 +46,30 @@ 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
53
53
  emu [app] Start dev with Firebase emulators
54
54
  format Format code with Prettier
55
- lint Lint code with ESLint
56
55
  deploy [app] Deploy to Firebase
57
56
  sync-secrets Sync env vars to Firebase/Vercel
58
57
  cacheout [app] Clear build caches
59
58
  bump Update framework packages and peer dependencies
59
+ wai Output WAI-WAY activation prompt for AI agents
60
60
 
61
61
  Options:
62
62
  -v, --version Display version number
63
63
  -h, --help Display this help
64
64
 
65
65
  Examples:
66
- dndev init my-app Create a new project
66
+ dndev init my-project Create a new project
67
+ dndev create-app Interactive app creation
68
+ dndev create-app my-app Create 'my-app' with defaults (vite, no functions)
69
+ dndev create-app my-app --builder next --functions Create Next.js app with functions
67
70
  dndev dev Start dev server
68
71
  dndev dev:web Start dev server for 'web' app
69
- dndev build Build for production
70
- dndev deploy Deploy to Firebase
72
+ dndev wai Output WAI-WAY activation prompt
71
73
 
72
74
  Run 'dndev <command> --help' for command-specific help.`);
73
75
  process.exit(0);
@@ -88,9 +90,18 @@ program.command("init [name]").alias("create-project").description("Create a new
88
90
  const { main } = await import("./commands/create-project.js");
89
91
  await main({ projectName: name });
90
92
  });
91
- program.command("create-app [name]").description("Add a new app to existing project").action(async () => {
93
+ 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
94
  const { main } = await import("./commands/create-app.js");
93
- await main();
95
+ const appName = name || options.name;
96
+ if (appName) {
97
+ await main({
98
+ name: appName,
99
+ builder: options.builder,
100
+ functions: options.functions
101
+ });
102
+ } else {
103
+ await main();
104
+ }
94
105
  });
95
106
  var formatCmd = program.command("format").description("Format code with Prettier");
96
107
  addCommonOptions(formatCmd);
@@ -107,21 +118,6 @@ formatCmd.action(async (commanderOptions) => {
107
118
  throw error;
108
119
  }
109
120
  });
110
- var lintCmd = program.command("lint").description("Lint code with ESLint").option("-f, --fix", "automatically fix issues");
111
- addCommonOptions(lintCmd);
112
- lintCmd.action(async (commanderOptions) => {
113
- const commonOptions = extractCommonOptions(commanderOptions);
114
- const options = { ...commonOptions, ...commanderOptions };
115
- try {
116
- const { main } = await import("./commands/lint.js");
117
- await main(options);
118
- } catch (error) {
119
- if (error.code === "invalid-argument" || error.name === "DoNotDevError") {
120
- process.exit(error.context?.exitCode || 1);
121
- }
122
- throw error;
123
- }
124
- });
125
121
  var cacheoutCmd = program.command("cacheout [app]").alias("co").description("Clear build caches").option("--app <app>", "App name to clear cache for");
126
122
  addCommonOptions(cacheoutCmd);
127
123
  cacheoutCmd.action(async (app, commanderOptions) => {
@@ -200,6 +196,10 @@ program.command("preview [app]").description("Preview production build").action(
200
196
  }
201
197
  process.exit(await main());
202
198
  });
199
+ 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 () => {
200
+ const { main } = await import("./commands/wai.js");
201
+ process.exit(await main());
202
+ });
203
203
  function preprocessArgs(args2) {
204
204
  if (args2.length === 0) return args2;
205
205
  const firstArg = args2[0];
package/dist/index.d.ts CHANGED
@@ -4,5 +4,5 @@
4
4
  * Thin wrapper around @donotdev/tooling for public distribution.
5
5
  * Tooling is the source of truth for all CLI code.
6
6
  */
7
- export { createApp, createProject, format, lint, dev, build, preview, emu, cacheout, syncSecrets, deploy, } from '@donotdev/tooling';
7
+ export { createApp, createProject, format, dev, build, preview, emu, cacheout, syncSecrets, deploy, } from '@donotdev/tooling';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAGH,OAAO,EACL,SAAS,EACT,aAAa,EACb,MAAM,EACN,IAAI,EACJ,GAAG,EACH,KAAK,EACL,OAAO,EACP,GAAG,EACH,QAAQ,EACR,WAAW,EACX,MAAM,GACP,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAGH,OAAO,EACL,SAAS,EACT,aAAa,EACb,MAAM,EACN,GAAG,EACH,KAAK,EACL,OAAO,EACP,GAAG,EACH,QAAQ,EACR,WAAW,EACX,MAAM,GACP,MAAM,mBAAmB,CAAC"}