@donotdev/cli 0.0.19 → 0.0.21

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 (128) hide show
  1. package/README.md +31 -0
  2. package/dependencies-matrix.json +205 -50
  3. package/dist/bin/commands/agent-setup.js +2 -2
  4. package/dist/bin/commands/build.js +6 -6
  5. package/dist/bin/commands/bump.js +495 -70
  6. package/dist/bin/commands/cacheout.js +6 -6
  7. package/dist/bin/commands/coach.js +6 -6
  8. package/dist/bin/commands/create-app.js +24 -16
  9. package/dist/bin/commands/create-project.js +114 -18
  10. package/dist/bin/commands/db.js +142136 -0
  11. package/dist/bin/commands/deploy.js +354 -126
  12. package/dist/bin/commands/dev.js +6 -6
  13. package/dist/bin/commands/doctor.js +140 -33
  14. package/dist/bin/commands/emu.js +6 -6
  15. package/dist/bin/commands/format.js +6 -6
  16. package/dist/bin/commands/get-demo.js +11 -6
  17. package/dist/bin/commands/make-admin.js +14210 -13770
  18. package/dist/bin/commands/preview.js +6 -6
  19. package/dist/bin/commands/seed.js +142426 -0
  20. package/dist/bin/commands/setup-cicd.js +8904 -0
  21. package/dist/bin/commands/setup.js +259 -212
  22. package/dist/bin/commands/staging.js +361 -127
  23. package/dist/bin/commands/sync-secrets.js +55 -33
  24. package/dist/bin/commands/type-check.js +16 -10
  25. package/dist/bin/commands/wai.js +6 -6
  26. package/dist/bin/dndev.js +194 -188
  27. package/dist/bin/donotdev.js +139 -189
  28. package/dist/index.js +468 -144
  29. package/package.json +1 -1
  30. package/templates/app-demo/.env.example +1 -0
  31. package/templates/{root-consumer → app-demo}/entities/ExampleEntity.ts.example +15 -9
  32. package/templates/app-demo/index.html.example +1 -1
  33. package/templates/app-demo/public/apple-touch-icon.png.example +0 -0
  34. package/templates/app-demo/public/favicon.svg.example +1 -0
  35. package/templates/app-demo/public/icon-192x192.png.example +0 -0
  36. package/templates/app-demo/public/icon-512x512.png.example +0 -0
  37. package/templates/app-demo/src/App.tsx.example +3 -1
  38. package/templates/app-demo/src/config/app.ts.example +1 -0
  39. package/templates/app-demo/src/entities/booking.ts.example +75 -0
  40. package/templates/app-demo/src/entities/onboarding.ts.example +160 -0
  41. package/templates/app-demo/src/entities/product.ts.example +12 -0
  42. package/templates/app-demo/src/entities/quote.ts.example +70 -0
  43. package/templates/app-demo/src/pages/ChangelogPage.tsx.example +28 -1
  44. package/templates/app-demo/src/pages/ConditionalFormPage.tsx.example +88 -0
  45. package/templates/app-demo/src/pages/DashboardPage.tsx.example +2 -0
  46. package/templates/app-demo/src/pages/HomePage.tsx.example +355 -2
  47. package/templates/app-demo/src/pages/OnboardingPage.tsx.example +47 -0
  48. package/templates/app-demo/src/pages/PricingPage.tsx.example +28 -1
  49. package/templates/app-demo/src/pages/ProductsPage.tsx.example +2 -0
  50. package/templates/app-demo/src/pages/ProfilePage.tsx.example +2 -0
  51. package/templates/app-demo/src/pages/SettingsPage.tsx.example +2 -0
  52. package/templates/app-demo/src/pages/ShowcaseDetailPage.tsx.example +22 -16
  53. package/templates/app-demo/src/pages/ShowcasePage.tsx.example +3 -1
  54. package/templates/app-demo/src/pages/components/ComponentRenderer.tsx.example +147 -51
  55. package/templates/app-demo/src/pages/components/ComponentsData.tsx.example +103 -21
  56. package/templates/app-demo/src/pages/components/componentConfig.ts.example +139 -59
  57. package/templates/app-demo/src/pages/legal/LegalPage.tsx.example +12 -1
  58. package/templates/app-demo/src/pages/legal/PrivacyPage.tsx.example +10 -1
  59. package/templates/app-demo/src/pages/legal/TermsPage.tsx.example +10 -1
  60. package/templates/app-demo/src/themes.css.example +289 -77
  61. package/templates/app-demo/stats.html.example +4949 -0
  62. package/templates/app-dndev/index.html.example +164 -0
  63. package/templates/app-dndev/public/logo.svg.example +1 -0
  64. package/templates/app-dndev/public/manifest.json.example +10 -0
  65. package/templates/app-dndev/src/App.tsx.example +35 -0
  66. package/templates/app-dndev/src/components/CockpitLayout.css.example +181 -0
  67. package/templates/app-dndev/src/components/CockpitLayout.tsx.example +209 -0
  68. package/templates/app-dndev/src/components/Kanban.css.example +385 -0
  69. package/templates/app-dndev/src/components/ModeToggle.tsx.example +32 -0
  70. package/templates/app-dndev/src/components/OverlaySlot.tsx.example +68 -0
  71. package/templates/app-dndev/src/components/TerminalPanel.css.example +228 -0
  72. package/templates/app-dndev/src/components/TerminalPanel.tsx.example +714 -0
  73. package/templates/app-dndev/src/components/markdown-prose.css.example +49 -0
  74. package/templates/app-dndev/src/components/phases/CaptainLog.tsx.example +107 -0
  75. package/templates/app-dndev/src/components/phases/ContextTabs.tsx.example +352 -0
  76. package/templates/app-dndev/src/components/phases/PhaseCard.tsx.example +126 -0
  77. package/templates/app-dndev/src/components/phases/PhaseDetail.tsx.example +147 -0
  78. package/templates/app-dndev/src/components/phases/ReviewPanel.tsx.example +115 -0
  79. package/templates/app-dndev/src/components/phases/phaseData.ts.example +366 -0
  80. package/templates/app-dndev/src/config/app.ts.example +103 -0
  81. package/templates/app-dndev/src/config/commands.ts.example +171 -0
  82. package/templates/app-dndev/src/config/legal.ts.example +170 -0
  83. package/templates/app-dndev/src/config/providers.ts.example +7 -0
  84. package/templates/app-dndev/src/globals.css.example +10 -0
  85. package/templates/app-dndev/src/hooks/useDndevFile.ts.example +144 -0
  86. package/templates/app-dndev/src/main.tsx.example +21 -0
  87. package/templates/app-dndev/src/pages/BoardPage.tsx.example +640 -0
  88. package/templates/app-dndev/src/pages/GrillPage.tsx.example +658 -0
  89. package/templates/app-dndev/src/pages/HomePage.tsx.example +347 -0
  90. package/templates/app-dndev/src/pages/NotFoundPage.tsx.example +33 -0
  91. package/templates/app-dndev/src/pages/PhasesPage.tsx.example +137 -0
  92. package/templates/app-dndev/src/pages/SettingsPage.tsx.example +64 -0
  93. package/templates/app-dndev/src/pages/legal/LegalNoticePage.tsx.example +75 -0
  94. package/templates/app-dndev/src/pages/legal/PrivacyPage.tsx.example +69 -0
  95. package/templates/app-dndev/src/pages/legal/TermsPage.tsx.example +71 -0
  96. package/templates/app-dndev/src/stores/dndevStore.ts.example +386 -0
  97. package/templates/app-dndev/src/themes.css.example +161 -0
  98. package/templates/app-dndev/terminal-sidecar.cjs.example +341 -0
  99. package/templates/app-dndev/tsconfig.json.example +9 -0
  100. package/templates/app-dndev/vite.config.ts.example +24 -0
  101. package/templates/app-vite/index.html.example +1 -1
  102. package/templates/functions-supabase/supabase/functions/.env.example +0 -2
  103. package/templates/root-consumer/.claude/commands/grill.md.example +86 -8
  104. package/templates/root-consumer/.dndev.secrets.example +32 -0
  105. package/templates/root-consumer/.gitignore.example +3 -0
  106. package/templates/root-consumer/AI.md.example +4 -0
  107. package/templates/root-consumer/entities/index.ts.example +2 -5
  108. package/templates/root-consumer/guides/dndev/COMPONENTS_ATOMIC.md.example +4 -0
  109. package/templates/root-consumer/guides/dndev/ENV_SETUP.md.example +23 -20
  110. package/templates/root-consumer/guides/dndev/INDEX.md.example +1 -0
  111. package/templates/root-consumer/guides/dndev/SETUP_BILLING.md.example +3 -7
  112. package/templates/root-consumer/guides/dndev/SETUP_CICD.md.example +115 -0
  113. package/templates/root-consumer/guides/dndev/SETUP_CRUD.md.example +41 -0
  114. package/templates/root-consumer/guides/dndev/SETUP_SUPABASE.md.example +13 -18
  115. package/templates/root-consumer/guides/dndev/SETUP_VERCEL.md.example +17 -12
  116. package/templates/root-consumer/guides/wai-way/WAI_WAY_CLI.md.example +185 -251
  117. package/templates/root-consumer/guides/wai-way/agents/extractor.md.example +26 -8
  118. package/templates/root-consumer/guides/wai-way/blueprints/0_brainstorm.md.example +66 -49
  119. package/templates/root-consumer/guides/wai-way/blueprints/1_scaffold.md.example +6 -5
  120. package/templates/root-consumer/guides/wai-way/blueprints/2_entities.md.example +9 -9
  121. package/templates/root-consumer/guides/wai-way/blueprints/3_compose.md.example +1 -1
  122. package/templates/root-consumer/guides/wai-way/blueprints/4_configure.md.example +7 -6
  123. package/templates/root-consumer/guides/wai-way/context_map.json.example +51 -20
  124. package/templates/root-consumer/guides/wai-way/hld_template.md.example +138 -0
  125. package/templates/root-consumer/guides/wai-way/lld_template.md.example +103 -0
  126. package/templates/root-consumer/guides/wai-way/prd_template.md.example +140 -0
  127. /package/templates/{root-consumer → app-demo}/entities/Contact.ts.example +0 -0
  128. /package/templates/{root-consumer → app-demo}/entities/demo.ts.example +0 -0
package/README.md CHANGED
@@ -155,6 +155,37 @@ dndev sync-secrets --platform=vercel --vercel-project my-vercel-app
155
155
  dndev sync-secrets --dry-run
156
156
  ```
157
157
 
158
+ ### `dndev setup-cicd`
159
+
160
+ Set up CI/CD: detect providers, upload GitHub secrets, and generate GitHub Actions workflow YAML.
161
+
162
+ ```bash
163
+ dndev setup-cicd
164
+ ```
165
+
166
+ **Features:**
167
+
168
+ - Auto-detects providers (Firebase, Vercel, Supabase) from app config
169
+ - Collects all required secrets and uploads to GitHub
170
+ - Generates `ci.yml`, `deploy.yml`, and optionally `deploy-staging.yml`
171
+ - Handles service account files (base64-encoded)
172
+ - Reads secrets from `.dndev.secrets` (GH_PAT, VERCEL_TOKEN, etc.)
173
+ - Staging support via `.firebaserc` staging alias
174
+
175
+ **Options:**
176
+
177
+ - `--app <app>` - Target app (auto-detected if single app)
178
+ - `--staging` - Include staging workflow generation
179
+ - `--dry-run` - Preview secrets and YAML without uploading or writing
180
+
181
+ **Examples:**
182
+
183
+ ```bash
184
+ dndev setup-cicd # auto-detect app and providers
185
+ dndev setup-cicd --app web # target specific app
186
+ dndev setup-cicd --dry-run # preview only
187
+ ```
188
+
158
189
  ### `dndev format [files]`
159
190
 
160
191
  Format code using Prettier.
@@ -2,7 +2,7 @@
2
2
  "$schema": "./dependencies-matrix.schema.json",
3
3
  "version": "0.0.6",
4
4
  "description": "Centralized dependency versions for DoNotDev framework. Single source of truth for all external dependencies. ⚠️ SYNC REQUIRED: When adding/removing @donotdev/* feature packages (auth, billing, crud, oauth), also update packages/core/config/constants.js BUNDLING.optionalFeatures array.",
5
- "lastUpdated": "2026-02-24",
5
+ "lastUpdated": "2026-03-03",
6
6
  "migrationGuides": {
7
7
  "0.0→0.1": {
8
8
  "path": "docs/migration/v0.0-to-v0.1.md",
@@ -17,73 +17,73 @@
17
17
  "@donotdev/auth": {
18
18
  "description": "Authentication package",
19
19
  "packages": {
20
- "@donotdev/auth": "^0.0.11"
20
+ "@donotdev/auth": "^0.0.14"
21
21
  }
22
22
  },
23
23
  "@donotdev/billing": {
24
24
  "description": "Billing package",
25
25
  "packages": {
26
- "@donotdev/billing": "^0.0.10"
26
+ "@donotdev/billing": "^0.0.13"
27
27
  }
28
28
  },
29
29
  "@donotdev/components": {
30
30
  "description": "UI components package",
31
31
  "packages": {
32
- "@donotdev/components": "^0.0.21"
32
+ "@donotdev/components": "^0.0.24"
33
33
  }
34
34
  },
35
35
  "@donotdev/core": {
36
36
  "description": "Core framework package",
37
37
  "packages": {
38
- "@donotdev/core": "^0.0.27"
38
+ "@donotdev/core": "^0.0.30"
39
39
  }
40
40
  },
41
41
  "@donotdev/crud": {
42
42
  "description": "CRUD operations package",
43
43
  "packages": {
44
- "@donotdev/crud": "^0.0.18"
44
+ "@donotdev/crud": "^0.0.21"
45
45
  }
46
46
  },
47
47
  "@donotdev/firebase": {
48
48
  "description": "Firebase provider package",
49
49
  "packages": {
50
- "@donotdev/firebase": "^0.0.14"
50
+ "@donotdev/firebase": "^0.0.16"
51
51
  }
52
52
  },
53
53
  "@donotdev/functions": {
54
54
  "description": "Firebase Functions package",
55
55
  "packages": {
56
- "@donotdev/functions": "^0.0.14"
56
+ "@donotdev/functions": "^0.0.17"
57
57
  }
58
58
  },
59
59
  "@donotdev/oauth": {
60
60
  "description": "OAuth package",
61
61
  "packages": {
62
- "@donotdev/oauth": "^0.0.10"
62
+ "@donotdev/oauth": "^0.0.13"
63
63
  }
64
64
  },
65
65
  "@donotdev/templates": {
66
66
  "description": "Page templates package",
67
67
  "packages": {
68
- "@donotdev/templates": "^0.0.13"
68
+ "@donotdev/templates": "^0.0.16"
69
69
  }
70
70
  },
71
71
  "@donotdev/ui": {
72
72
  "description": "UI and routing package",
73
73
  "packages": {
74
- "@donotdev/ui": "^0.0.17"
74
+ "@donotdev/ui": "^0.0.20"
75
75
  }
76
76
  },
77
77
  "@donotdev/expo": {
78
78
  "description": "Expo/React Native components package",
79
79
  "packages": {
80
- "@donotdev/expo": "^0.0.4"
80
+ "@donotdev/expo": "^0.0.7"
81
81
  }
82
82
  },
83
83
  "@donotdev/supabase": {
84
84
  "description": "Supabase provider package",
85
85
  "packages": {
86
- "@donotdev/supabase": "^0.0.4"
86
+ "@donotdev/supabase": "^0.0.6"
87
87
  }
88
88
  },
89
89
  "supabase-js": {
@@ -155,7 +155,7 @@
155
155
  "lucide-react": {
156
156
  "description": "Icons - consumers install and use directly",
157
157
  "packages": {
158
- "lucide-react": "^0.574.0"
158
+ "lucide-react": "^0.575.0"
159
159
  }
160
160
  },
161
161
  "react-day-picker": {
@@ -242,7 +242,7 @@
242
242
  },
243
243
  "routing": {
244
244
  "packages": {
245
- "react-router-dom": "^7.13.0"
245
+ "react-router-dom": "^7.13.1"
246
246
  }
247
247
  },
248
248
  "firebase": {
@@ -387,7 +387,7 @@
387
387
  "postcss": "^8.5.6",
388
388
  "postcss-import": "^16.1.1",
389
389
  "postcss-nesting": "^14.0.0",
390
- "autoprefixer": "^10.4.24"
390
+ "autoprefixer": "^10.4.27"
391
391
  }
392
392
  },
393
393
  "core-vite-config": {
@@ -433,13 +433,13 @@
433
433
  "@donotdev/cli": {
434
434
  "description": "Cli package",
435
435
  "packages": {
436
- "@donotdev/cli": "^0.0.18"
436
+ "@donotdev/cli": "^0.0.21"
437
437
  }
438
438
  },
439
439
  "@donotdev/mcp-server": {
440
440
  "description": "MCP server for component type lookups",
441
441
  "packages": {
442
- "@donotdev/mcp-server": "^0.0.8"
442
+ "@donotdev/mcp-server": "^0.0.11"
443
443
  }
444
444
  },
445
445
  "mcp-sdk": {
@@ -465,7 +465,46 @@
465
465
  "@donotdev/security": {
466
466
  "description": "Security package",
467
467
  "packages": {
468
- "@donotdev/security": "^0.0.4"
468
+ "@donotdev/security": "^0.0.7"
469
+ }
470
+ },
471
+ "xterm": {
472
+ "description": "Terminal emulator for cockpit app",
473
+ "packages": {
474
+ "@xterm/xterm": "^6.0.0",
475
+ "@xterm/addon-fit": "^0.11.0",
476
+ "@xterm/addon-web-links": "^0.12.0"
477
+ }
478
+ },
479
+ "node-pty": {
480
+ "description": "PTY for terminal sidecar",
481
+ "packages": {
482
+ "node-pty": "^1.0.0"
483
+ }
484
+ },
485
+ "react-markdown-cockpit": {
486
+ "description": "Markdown rendering for cockpit (phase details, captain log)",
487
+ "packages": {
488
+ "react-markdown": "^10.1.0",
489
+ "remark-gfm": "^4.0.1"
490
+ }
491
+ },
492
+ "react-resizable-panels": {
493
+ "description": "Resizable panel layout for cockpit",
494
+ "packages": {
495
+ "react-resizable-panels": "^4.7.0"
496
+ }
497
+ },
498
+ "ws": {
499
+ "description": "WebSocket client for terminal sidecar communication",
500
+ "packages": {
501
+ "ws": "^8.18.0"
502
+ }
503
+ },
504
+ "ws-types": {
505
+ "description": "TypeScript types for ws",
506
+ "packages": {
507
+ "@types/ws": "^8.18.1"
469
508
  }
470
509
  }
471
510
  },
@@ -490,11 +529,23 @@
490
529
  "core-vite-config",
491
530
  "postcss"
492
531
  ],
493
- "devDependencies": ["vite", "next", "typescript"]
532
+ "devDependencies": [
533
+ "vite",
534
+ "next",
535
+ "typescript"
536
+ ]
494
537
  },
495
538
  "@donotdev/components": {
496
- "dependencies": ["radix", "styling", "react-day-picker"],
497
- "peerDependencies": ["react", "shiki", "lucide-react"],
539
+ "dependencies": [
540
+ "radix",
541
+ "styling",
542
+ "react-day-picker"
543
+ ],
544
+ "peerDependencies": [
545
+ "react",
546
+ "shiki",
547
+ "lucide-react"
548
+ ],
498
549
  "peerDependenciesMeta": {
499
550
  "shiki": {
500
551
  "optional": true
@@ -510,7 +561,11 @@
510
561
  "routing",
511
562
  "validation"
512
563
  ],
513
- "dependencies": ["fontsource-themes", "forms", "seo"],
564
+ "dependencies": [
565
+ "fontsource-themes",
566
+ "forms",
567
+ "seo"
568
+ ],
514
569
  "peerDependenciesMeta": {
515
570
  "@donotdev/crud": {
516
571
  "optional": true
@@ -518,10 +573,17 @@
518
573
  }
519
574
  },
520
575
  "@donotdev/auth": {
521
- "peerDependencies": ["react", "firebase"]
576
+ "peerDependencies": [
577
+ "react",
578
+ "firebase"
579
+ ]
522
580
  },
523
581
  "@donotdev/billing": {
524
- "peerDependencies": ["react", "lucide-react", "stripe"]
582
+ "peerDependencies": [
583
+ "react",
584
+ "lucide-react",
585
+ "stripe"
586
+ ]
525
587
  },
526
588
  "@donotdev/crud": {
527
589
  "dependencies": [
@@ -531,7 +593,9 @@
531
593
  "@dnd-kit",
532
594
  "forms-resolvers"
533
595
  ],
534
- "devDependencies": ["tiptap"],
596
+ "devDependencies": [
597
+ "tiptap"
598
+ ],
535
599
  "peerDependencies": [
536
600
  "@donotdev/firebase",
537
601
  "react",
@@ -554,22 +618,38 @@
554
618
  }
555
619
  },
556
620
  "@donotdev/firebase": {
557
- "dependencies": ["browser-image-compression"],
558
- "peerDependencies": ["firebase"]
621
+ "dependencies": [
622
+ "browser-image-compression"
623
+ ],
624
+ "peerDependencies": [
625
+ "firebase"
626
+ ]
559
627
  },
560
628
  "@donotdev/supabase": {
561
- "dependencies": ["validation"],
562
- "peerDependencies": ["supabase-js"]
629
+ "dependencies": [
630
+ "validation"
631
+ ],
632
+ "peerDependencies": [
633
+ "supabase-js"
634
+ ]
563
635
  },
564
636
  "@donotdev/i18n": {
565
- "dependencies": ["i18n"],
566
- "peerDependencies": ["lucide-react"]
637
+ "dependencies": [
638
+ "i18n"
639
+ ],
640
+ "peerDependencies": [
641
+ "lucide-react"
642
+ ]
567
643
  },
568
644
  "@donotdev/stores": {
569
- "dependencies": ["zustand"]
645
+ "dependencies": [
646
+ "zustand"
647
+ ]
570
648
  },
571
649
  "@donotdev/schemas": {
572
- "dependencies": ["validation"]
650
+ "dependencies": [
651
+ "validation"
652
+ ]
573
653
  },
574
654
  "@donotdev/types": {
575
655
  "devDependencies": [
@@ -581,18 +661,34 @@
581
661
  ]
582
662
  },
583
663
  "@donotdev/utils": {
584
- "dependencies": ["zustand"],
585
- "peerDependencies": ["monitoring"],
586
- "devDependencies": ["validation", "firebase", "i18n"]
664
+ "dependencies": [
665
+ "zustand"
666
+ ],
667
+ "peerDependencies": [
668
+ "monitoring"
669
+ ],
670
+ "devDependencies": [
671
+ "validation",
672
+ "firebase",
673
+ "i18n"
674
+ ]
587
675
  },
588
676
  "@donotdev/hooks": {
589
- "dependencies": ["react-query"]
677
+ "dependencies": [
678
+ "react-query"
679
+ ]
590
680
  },
591
681
  "@donotdev/cli": {
592
- "dependencies": ["cli-prompts", "cli-commander", "fast-glob"]
682
+ "dependencies": [
683
+ "cli-prompts",
684
+ "cli-commander",
685
+ "fast-glob"
686
+ ]
593
687
  },
594
688
  "@donotdev/mcp-server": {
595
- "dependencies": ["mcp-sdk"]
689
+ "dependencies": [
690
+ "mcp-sdk"
691
+ ]
596
692
  },
597
693
  "@donotdev/tooling": {
598
694
  "dependencies": [
@@ -604,13 +700,19 @@
604
700
  "supabase-cli",
605
701
  "supabase-js"
606
702
  ],
607
- "devDependencies": ["yaml"]
703
+ "devDependencies": [
704
+ "yaml"
705
+ ]
608
706
  },
609
707
  "@donotdev/oauth": {
610
- "peerDependencies": ["react"]
708
+ "peerDependencies": [
709
+ "react"
710
+ ]
611
711
  },
612
712
  "@donotdev/functions": {
613
- "dependencies": ["@donotdev/core"],
713
+ "dependencies": [
714
+ "@donotdev/core"
715
+ ],
614
716
  "peerDependencies": [
615
717
  "firebase-functions",
616
718
  "firebase-admin",
@@ -778,7 +880,10 @@
778
880
  "validation",
779
881
  "lucide-react"
780
882
  ],
781
- "devDependencies": ["root-consumer-tooling", "supabase-cli"],
883
+ "devDependencies": [
884
+ "root-consumer-tooling",
885
+ "supabase-cli"
886
+ ],
782
887
  "conditional": {
783
888
  "provider-firebase": "platform===firebase",
784
889
  "provider-supabase": "platform===supabase",
@@ -834,7 +939,12 @@
834
939
  "i18n",
835
940
  "react-query"
836
941
  ],
837
- "devDependencies": ["next", "typescript", "types", "postcss"],
942
+ "devDependencies": [
943
+ "next",
944
+ "typescript",
945
+ "types",
946
+ "postcss"
947
+ ],
838
948
  "conditional": {
839
949
  "provider-firebase": "platform===firebase",
840
950
  "provider-supabase": "platform===supabase"
@@ -854,7 +964,12 @@
854
964
  "validation",
855
965
  "react-query"
856
966
  ],
857
- "devDependencies": ["expo", "typescript", "types-expo", "react-native"],
967
+ "devDependencies": [
968
+ "expo",
969
+ "typescript",
970
+ "types-expo",
971
+ "react-native"
972
+ ],
858
973
  "conditional": {
859
974
  "provider-firebase": "platform===firebase",
860
975
  "provider-supabase": "platform===supabase"
@@ -874,7 +989,12 @@
874
989
  "validation",
875
990
  "react-query"
876
991
  ],
877
- "devDependencies": ["expo", "typescript", "types-expo", "react-native"],
992
+ "devDependencies": [
993
+ "expo",
994
+ "typescript",
995
+ "types-expo",
996
+ "react-native"
997
+ ],
878
998
  "conditional": {
879
999
  "provider-firebase": "platform===firebase",
880
1000
  "provider-supabase": "platform===supabase"
@@ -901,12 +1021,19 @@
901
1021
  "monitoring-node",
902
1022
  "stripe"
903
1023
  ],
904
- "devDependencies": ["vercel"]
1024
+ "devDependencies": [
1025
+ "vercel"
1026
+ ]
905
1027
  },
906
1028
  "entities": {
907
1029
  "description": "Entities workspace package",
908
- "dependencies": ["validation"],
909
- "devDependencies": ["eslint", "typescript"]
1030
+ "dependencies": [
1031
+ "validation"
1032
+ ],
1033
+ "devDependencies": [
1034
+ "eslint",
1035
+ "typescript"
1036
+ ]
910
1037
  },
911
1038
  "demo": {
912
1039
  "description": "Demo app template (SaaS reference app)",
@@ -933,6 +1060,34 @@
933
1060
  "types",
934
1061
  "vite-deps-minimal"
935
1062
  ]
1063
+ },
1064
+ "dndev": {
1065
+ "description": "Cockpit app template (AI development dashboard)",
1066
+ "dependencies": [
1067
+ "@donotdev/components",
1068
+ "@donotdev/core",
1069
+ "@donotdev/ui",
1070
+ "@dnd-kit",
1071
+ "xterm",
1072
+ "node-pty",
1073
+ "react-markdown-cockpit",
1074
+ "react-resizable-panels",
1075
+ "ws",
1076
+ "react",
1077
+ "zustand",
1078
+ "lucide-react",
1079
+ "routing"
1080
+ ],
1081
+ "devDependencies": [
1082
+ "react-query",
1083
+ "i18n",
1084
+ "postcss",
1085
+ "vite",
1086
+ "typescript",
1087
+ "types",
1088
+ "vite-deps-minimal",
1089
+ "ws-types"
1090
+ ]
936
1091
  }
937
1092
  },
938
1093
  "notes": {
@@ -491,7 +491,7 @@ var init_cli_output = __esm({
491
491
  });
492
492
 
493
493
  // packages/tooling/src/bundler/utils.ts
494
- import { Buffer as Buffer2 } from "node:buffer";
494
+ import { Buffer } from "node:buffer";
495
495
  import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
496
496
  import { createRequire } from "node:module";
497
497
  import { dirname, resolve } from "node:path";
@@ -508,7 +508,7 @@ var init_utils = __esm({
508
508
  globalThis.require = require2;
509
509
  globalThis.__filename = __filename;
510
510
  globalThis.__dirname = __dirname;
511
- globalThis.Buffer = Buffer2;
511
+ globalThis.Buffer = Buffer;
512
512
  globalThis.process = process;
513
513
  if (typeof global === "undefined") {
514
514
  globalThis.global = globalThis;
@@ -6989,7 +6989,7 @@ var init_PathResolver = __esm({
6989
6989
  }
6990
6990
  const detectedFormat = this._detectFormat(filePath, format);
6991
6991
  let writeContent;
6992
- if (Buffer2.isBuffer(content)) {
6992
+ if (Buffer.isBuffer(content)) {
6993
6993
  writeContent = content;
6994
6994
  } else if (detectedFormat === "json" && typeof content === "object") {
6995
6995
  writeContent = JSON.stringify(content, null, 2);
@@ -6998,7 +6998,7 @@ var init_PathResolver = __esm({
6998
6998
  }
6999
6999
  try {
7000
7000
  return await safeExecuteAsync(async () => {
7001
- if (Buffer2.isBuffer(writeContent)) {
7001
+ if (Buffer.isBuffer(writeContent)) {
7002
7002
  await fs.promises.writeFile(normalizedPath, writeContent);
7003
7003
  } else {
7004
7004
  await fs.promises.writeFile(normalizedPath, writeContent, "utf8");
@@ -7050,7 +7050,7 @@ var init_PathResolver = __esm({
7050
7050
  }
7051
7051
  const detectedFormat = this._detectFormat(filePath, format);
7052
7052
  let writeContent;
7053
- if (Buffer2.isBuffer(content)) {
7053
+ if (Buffer.isBuffer(content)) {
7054
7054
  writeContent = content;
7055
7055
  } else if (detectedFormat === "json" && typeof content === "object") {
7056
7056
  writeContent = JSON.stringify(content, null, 2);
@@ -7058,7 +7058,7 @@ var init_PathResolver = __esm({
7058
7058
  writeContent = String(content);
7059
7059
  }
7060
7060
  try {
7061
- if (Buffer2.isBuffer(writeContent)) {
7061
+ if (Buffer.isBuffer(writeContent)) {
7062
7062
  fs.writeFileSync(normalizedPath, writeContent);
7063
7063
  } else {
7064
7064
  fs.writeFileSync(normalizedPath, writeContent, "utf8");
@@ -7826,7 +7826,7 @@ var init_typed_file_operations = __esm({
7826
7826
  });
7827
7827
 
7828
7828
  // packages/tooling/src/bundler/utils.ts
7829
- import { Buffer as Buffer2 } from "node:buffer";
7829
+ import { Buffer } from "node:buffer";
7830
7830
  import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "node:fs";
7831
7831
  import { createRequire as createRequire3 } from "node:module";
7832
7832
  import { dirname as dirname3, resolve as resolve3 } from "node:path";
@@ -7843,7 +7843,7 @@ var init_utils = __esm({
7843
7843
  globalThis.require = require2;
7844
7844
  globalThis.__filename = __filename;
7845
7845
  globalThis.__dirname = __dirname;
7846
- globalThis.Buffer = Buffer2;
7846
+ globalThis.Buffer = Buffer;
7847
7847
  globalThis.process = process;
7848
7848
  if (typeof global === "undefined") {
7849
7849
  globalThis.global = globalThis;