helix-lang 11.0.0

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 (193) hide show
  1. package/README.md +168 -0
  2. package/dist/architect.d.ts +14 -0
  3. package/dist/architect.d.ts.map +1 -0
  4. package/dist/architect.js +127 -0
  5. package/dist/architect.js.map +1 -0
  6. package/dist/bin/helix.d.ts +20 -0
  7. package/dist/bin/helix.d.ts.map +1 -0
  8. package/dist/bin/helix.js +921 -0
  9. package/dist/bin/helix.js.map +1 -0
  10. package/dist/commands/collaborate/index.d.ts +2 -0
  11. package/dist/commands/collaborate/index.d.ts.map +1 -0
  12. package/dist/commands/collaborate/index.js +129 -0
  13. package/dist/commands/collaborate/index.js.map +1 -0
  14. package/dist/commands/collaborate/server.d.ts +31 -0
  15. package/dist/commands/collaborate/server.d.ts.map +1 -0
  16. package/dist/commands/collaborate/server.js +159 -0
  17. package/dist/commands/collaborate/server.js.map +1 -0
  18. package/dist/commands/deploy/index.d.ts +25 -0
  19. package/dist/commands/deploy/index.d.ts.map +1 -0
  20. package/dist/commands/deploy/index.js +130 -0
  21. package/dist/commands/deploy/index.js.map +1 -0
  22. package/dist/commands/deploy/platforms/fly.d.ts +9 -0
  23. package/dist/commands/deploy/platforms/fly.d.ts.map +1 -0
  24. package/dist/commands/deploy/platforms/fly.js +68 -0
  25. package/dist/commands/deploy/platforms/fly.js.map +1 -0
  26. package/dist/commands/deploy/platforms/railway.d.ts +9 -0
  27. package/dist/commands/deploy/platforms/railway.d.ts.map +1 -0
  28. package/dist/commands/deploy/platforms/railway.js +115 -0
  29. package/dist/commands/deploy/platforms/railway.js.map +1 -0
  30. package/dist/commands/deploy/platforms/vercel.d.ts +10 -0
  31. package/dist/commands/deploy/platforms/vercel.d.ts.map +1 -0
  32. package/dist/commands/deploy/platforms/vercel.js +126 -0
  33. package/dist/commands/deploy/platforms/vercel.js.map +1 -0
  34. package/dist/commands/deploy.d.ts +6 -0
  35. package/dist/commands/deploy.d.ts.map +1 -0
  36. package/dist/commands/deploy.js +56 -0
  37. package/dist/commands/deploy.js.map +1 -0
  38. package/dist/commands/evolve/analyzers/performance.d.ts +13 -0
  39. package/dist/commands/evolve/analyzers/performance.d.ts.map +1 -0
  40. package/dist/commands/evolve/analyzers/performance.js +591 -0
  41. package/dist/commands/evolve/analyzers/performance.js.map +1 -0
  42. package/dist/commands/evolve/analyzers/security.d.ts +21 -0
  43. package/dist/commands/evolve/analyzers/security.d.ts.map +1 -0
  44. package/dist/commands/evolve/analyzers/security.js +280 -0
  45. package/dist/commands/evolve/analyzers/security.js.map +1 -0
  46. package/dist/commands/evolve/index.d.ts +2 -0
  47. package/dist/commands/evolve/index.d.ts.map +1 -0
  48. package/dist/commands/evolve/index.js +122 -0
  49. package/dist/commands/evolve/index.js.map +1 -0
  50. package/dist/commands/generate.d.ts +6 -0
  51. package/dist/commands/generate.d.ts.map +1 -0
  52. package/dist/commands/generate.js +277 -0
  53. package/dist/commands/generate.js.map +1 -0
  54. package/dist/commands/install.d.ts +2 -0
  55. package/dist/commands/install.d.ts.map +1 -0
  56. package/dist/commands/install.js +176 -0
  57. package/dist/commands/install.js.map +1 -0
  58. package/dist/commands/library/index.d.ts +27 -0
  59. package/dist/commands/library/index.d.ts.map +1 -0
  60. package/dist/commands/library/index.js +126 -0
  61. package/dist/commands/library/index.js.map +1 -0
  62. package/dist/commands/migrate.d.ts +5 -0
  63. package/dist/commands/migrate.d.ts.map +1 -0
  64. package/dist/commands/migrate.js +258 -0
  65. package/dist/commands/migrate.js.map +1 -0
  66. package/dist/commands/new.d.ts +6 -0
  67. package/dist/commands/new.d.ts.map +1 -0
  68. package/dist/commands/new.js +195 -0
  69. package/dist/commands/new.js.map +1 -0
  70. package/dist/commands/preflight.d.ts +20 -0
  71. package/dist/commands/preflight.d.ts.map +1 -0
  72. package/dist/commands/preflight.js +182 -0
  73. package/dist/commands/preflight.js.map +1 -0
  74. package/dist/commands/preview.d.ts +13 -0
  75. package/dist/commands/preview.d.ts.map +1 -0
  76. package/dist/commands/preview.js +260 -0
  77. package/dist/commands/preview.js.map +1 -0
  78. package/dist/commands/run.d.ts +6 -0
  79. package/dist/commands/run.d.ts.map +1 -0
  80. package/dist/commands/run.js +96 -0
  81. package/dist/commands/run.js.map +1 -0
  82. package/dist/commands/spawn.d.ts +11 -0
  83. package/dist/commands/spawn.d.ts.map +1 -0
  84. package/dist/commands/spawn.js +916 -0
  85. package/dist/commands/spawn.js.map +1 -0
  86. package/dist/compiler.d.ts +12 -0
  87. package/dist/compiler.d.ts.map +1 -0
  88. package/dist/compiler.js +92 -0
  89. package/dist/compiler.js.map +1 -0
  90. package/dist/core/file-writer.d.ts +36 -0
  91. package/dist/core/file-writer.d.ts.map +1 -0
  92. package/dist/core/file-writer.js +268 -0
  93. package/dist/core/file-writer.js.map +1 -0
  94. package/dist/core/registry.d.ts +57 -0
  95. package/dist/core/registry.d.ts.map +1 -0
  96. package/dist/core/registry.js +222 -0
  97. package/dist/core/registry.js.map +1 -0
  98. package/dist/core/self-healing.d.ts +47 -0
  99. package/dist/core/self-healing.d.ts.map +1 -0
  100. package/dist/core/self-healing.js +250 -0
  101. package/dist/core/self-healing.js.map +1 -0
  102. package/dist/core/types.d.ts +126 -0
  103. package/dist/core/types.d.ts.map +1 -0
  104. package/dist/core/types.js +7 -0
  105. package/dist/core/types.js.map +1 -0
  106. package/dist/generators/databases/mongodb.d.ts +10 -0
  107. package/dist/generators/databases/mongodb.d.ts.map +1 -0
  108. package/dist/generators/databases/mongodb.js +83 -0
  109. package/dist/generators/databases/mongodb.js.map +1 -0
  110. package/dist/generators/databases/redis.d.ts +2 -0
  111. package/dist/generators/databases/redis.d.ts.map +1 -0
  112. package/dist/generators/databases/redis.js +140 -0
  113. package/dist/generators/databases/redis.js.map +1 -0
  114. package/dist/generators/flutter.d.ts +32 -0
  115. package/dist/generators/flutter.d.ts.map +1 -0
  116. package/dist/generators/flutter.js +628 -0
  117. package/dist/generators/flutter.js.map +1 -0
  118. package/dist/openrouter.d.ts +68 -0
  119. package/dist/openrouter.d.ts.map +1 -0
  120. package/dist/openrouter.js +241 -0
  121. package/dist/openrouter.js.map +1 -0
  122. package/dist/page-generator.d.ts +22 -0
  123. package/dist/page-generator.d.ts.map +1 -0
  124. package/dist/page-generator.js +192 -0
  125. package/dist/page-generator.js.map +1 -0
  126. package/dist/parser.d.ts +76 -0
  127. package/dist/parser.d.ts.map +1 -0
  128. package/dist/parser.js +691 -0
  129. package/dist/parser.js.map +1 -0
  130. package/dist/prompts/master-architect.d.ts +9 -0
  131. package/dist/prompts/master-architect.d.ts.map +1 -0
  132. package/dist/prompts/master-architect.js +150 -0
  133. package/dist/prompts/master-architect.js.map +1 -0
  134. package/dist/researcher.d.ts +12 -0
  135. package/dist/researcher.d.ts.map +1 -0
  136. package/dist/researcher.js +85 -0
  137. package/dist/researcher.js.map +1 -0
  138. package/dist/self-heal.d.ts +29 -0
  139. package/dist/self-heal.d.ts.map +1 -0
  140. package/dist/self-heal.js +260 -0
  141. package/dist/self-heal.js.map +1 -0
  142. package/dist/services/SupabaseDeployer.d.ts +9 -0
  143. package/dist/services/SupabaseDeployer.d.ts.map +1 -0
  144. package/dist/services/SupabaseDeployer.js +50 -0
  145. package/dist/services/SupabaseDeployer.js.map +1 -0
  146. package/dist/test-generator.d.ts +18 -0
  147. package/dist/test-generator.d.ts.map +1 -0
  148. package/dist/test-generator.js +180 -0
  149. package/dist/test-generator.js.map +1 -0
  150. package/dist/themes/index.d.ts +52 -0
  151. package/dist/themes/index.d.ts.map +1 -0
  152. package/dist/themes/index.js +273 -0
  153. package/dist/themes/index.js.map +1 -0
  154. package/dist/types.d.ts +9 -0
  155. package/dist/types.d.ts.map +1 -0
  156. package/dist/types.js +81 -0
  157. package/dist/types.js.map +1 -0
  158. package/dist/utils/constitutional-validator.d.ts +73 -0
  159. package/dist/utils/constitutional-validator.d.ts.map +1 -0
  160. package/dist/utils/constitutional-validator.js +249 -0
  161. package/dist/utils/constitutional-validator.js.map +1 -0
  162. package/library/auth-flow/app/api/auth/[...nextauth]/route.ts +31 -0
  163. package/library/auth-flow/app/api/auth/login/route.ts +90 -0
  164. package/library/auth-flow/app/api/auth/register/route.ts +91 -0
  165. package/library/auth-flow/components/auth/AuthMiddleware.tsx +139 -0
  166. package/library/auth-flow/components/auth/LoginForm.tsx +125 -0
  167. package/library/auth-flow/components/auth/RegisterForm.tsx +168 -0
  168. package/library/auth-flow/components/auth/nextauth-config.ts +99 -0
  169. package/library/auth-flow/manifest.json +29 -0
  170. package/library/auth-flow/schema.prisma +45 -0
  171. package/library/dashboard-analytics/components/dashboard/ActivityFeed.tsx +109 -0
  172. package/library/dashboard-analytics/components/dashboard/LineChart.tsx +180 -0
  173. package/library/dashboard-analytics/components/dashboard/StatsCard.tsx +47 -0
  174. package/library/dashboard-analytics/components/dashboard/SummaryGrid.tsx +39 -0
  175. package/library/dashboard-analytics/manifest.json +19 -0
  176. package/library/data-table/components/table/BulkActions.tsx +59 -0
  177. package/library/data-table/components/table/ColumnToggle.tsx +65 -0
  178. package/library/data-table/components/table/DataTable.tsx +318 -0
  179. package/library/data-table/components/table/ExportCSV.tsx +52 -0
  180. package/library/data-table/components/table/SearchFilter.tsx +48 -0
  181. package/library/data-table/manifest.json +20 -0
  182. package/library/file-upload/app/api/upload/route.ts +107 -0
  183. package/library/file-upload/components/upload/DropZone.tsx +268 -0
  184. package/library/file-upload/components/upload/FilePreview.tsx +82 -0
  185. package/library/file-upload/components/upload/UploadProgress.tsx +92 -0
  186. package/library/file-upload/components/upload/fileStorage.ts +142 -0
  187. package/library/file-upload/manifest.json +21 -0
  188. package/library/notification-system/app/api/notifications/route.ts +121 -0
  189. package/library/notification-system/components/notifications/NotificationBell.tsx +154 -0
  190. package/library/notification-system/components/notifications/NotificationProvider.tsx +161 -0
  191. package/library/notification-system/components/notifications/Toast.tsx +112 -0
  192. package/library/notification-system/manifest.json +20 -0
  193. package/package.json +66 -0
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ /**
3
+ * Helix Pre-flight Validator (Architect Agent)
4
+ * Validates .helix blueprint files before generation to catch errors early.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.preflight = preflight;
8
+ exports.formatPreflightResult = formatPreflightResult;
9
+ const parser_1 = require("../parser");
10
+ const VALID_FIELD_TYPES = [
11
+ 'String', 'Int', 'Float', 'Boolean', 'DateTime',
12
+ 'Json', 'BigInt', 'Decimal', 'Bytes'
13
+ ];
14
+ function preflight(blueprintContent) {
15
+ const result = {
16
+ passed: true,
17
+ score: 100,
18
+ errors: [],
19
+ warnings: [],
20
+ info: []
21
+ };
22
+ // 1. Try to parse
23
+ let ast;
24
+ try {
25
+ ast = (0, parser_1.parseHelix)(blueprintContent);
26
+ }
27
+ catch (e) {
28
+ result.errors.push({
29
+ severity: 'error',
30
+ code: 'PARSE_FAILURE',
31
+ message: `Blueprint failed to parse: ${e.message}`,
32
+ fix: 'Check .helix syntax — ensure all strands use format: strand Name { field: Type }'
33
+ });
34
+ result.passed = false;
35
+ result.score = 0;
36
+ return result;
37
+ }
38
+ // 2. Check for empty strands
39
+ if (ast.strands.length === 0) {
40
+ result.errors.push({
41
+ severity: 'error',
42
+ code: 'NO_STRANDS',
43
+ message: 'Blueprint contains no strands (data models)',
44
+ fix: 'Add at least one strand: strand User { name: String, email: String }'
45
+ });
46
+ result.passed = false;
47
+ result.score = 0;
48
+ return result;
49
+ }
50
+ const strandNames = ast.strands.map(s => s.name);
51
+ // 3. Check each strand
52
+ for (const strand of ast.strands) {
53
+ // Empty fields
54
+ if (!strand.fields || strand.fields.length === 0) {
55
+ result.errors.push({
56
+ severity: 'error',
57
+ code: 'EMPTY_STRAND',
58
+ message: `Strand "${strand.name}" has no fields`,
59
+ fix: `Add fields: strand ${strand.name} { name: String }`
60
+ });
61
+ result.score -= 20;
62
+ }
63
+ // Field type validation
64
+ if (strand.fields) {
65
+ for (const field of strand.fields) {
66
+ if (!VALID_FIELD_TYPES.includes(field.type) && !strandNames.includes(field.type)) {
67
+ result.warnings.push({
68
+ severity: 'warning',
69
+ code: 'UNKNOWN_TYPE',
70
+ message: `Field "${field.name}" in strand "${strand.name}" has unknown type "${field.type}"`,
71
+ fix: `Valid types: ${VALID_FIELD_TYPES.join(', ')} or another strand name`
72
+ });
73
+ result.score -= 5;
74
+ }
75
+ }
76
+ // Duplicate fields
77
+ const fieldNames = strand.fields.map(f => f.name);
78
+ const duplicates = fieldNames.filter((name, i) => fieldNames.indexOf(name) !== i);
79
+ if (duplicates.length > 0) {
80
+ result.errors.push({
81
+ severity: 'error',
82
+ code: 'DUPLICATE_FIELD',
83
+ message: `Strand "${strand.name}" has duplicate fields: ${[...new Set(duplicates)].join(', ')}`,
84
+ fix: 'Remove or rename duplicate fields'
85
+ });
86
+ result.score -= 15;
87
+ }
88
+ }
89
+ // Naming convention
90
+ if (strand.name[0] !== strand.name[0].toUpperCase()) {
91
+ result.warnings.push({
92
+ severity: 'warning',
93
+ code: 'NAMING_CONVENTION',
94
+ message: `Strand "${strand.name}" should start with uppercase (PascalCase)`,
95
+ fix: `Rename to "${strand.name[0].toUpperCase() + strand.name.slice(1)}"`
96
+ });
97
+ result.score -= 3;
98
+ }
99
+ // Orphaned relations
100
+ if (strand.relations) {
101
+ for (const rel of strand.relations) {
102
+ const target = rel.target || rel.name;
103
+ if (!strandNames.includes(target)) {
104
+ result.errors.push({
105
+ severity: 'error',
106
+ code: 'ORPHAN_RELATION',
107
+ message: `Strand "${strand.name}" has relation to non-existent strand "${target}"`,
108
+ fix: `Create the "${target}" strand or remove the relation`
109
+ });
110
+ result.score -= 15;
111
+ }
112
+ }
113
+ }
114
+ }
115
+ // 4. Duplicate strand names
116
+ const dupStrands = strandNames.filter((name, i) => strandNames.indexOf(name) !== i);
117
+ if (dupStrands.length > 0) {
118
+ result.errors.push({
119
+ severity: 'error',
120
+ code: 'DUPLICATE_STRAND',
121
+ message: `Duplicate strand names: ${[...new Set(dupStrands)].join(', ')}`,
122
+ fix: 'Each strand must have a unique name'
123
+ });
124
+ result.score -= 20;
125
+ }
126
+ // 5. Stats
127
+ const totalFields = ast.strands.reduce((sum, s) => sum + (s.fields?.length || 0), 0);
128
+ const totalRelations = ast.strands.reduce((sum, s) => sum + (s.relations?.length || 0), 0);
129
+ result.info.push({
130
+ severity: 'info',
131
+ code: 'BLUEPRINT_STATS',
132
+ message: `${ast.strands.length} strand(s), ${totalFields} field(s), ${totalRelations} relation(s)`
133
+ });
134
+ // Complexity warnings
135
+ if (ast.strands.length > 10) {
136
+ result.warnings.push({
137
+ severity: 'warning',
138
+ code: 'HIGH_COMPLEXITY',
139
+ message: `${ast.strands.length} strands is complex. Consider splitting into modules.`
140
+ });
141
+ result.score -= 5;
142
+ }
143
+ result.score = Math.max(0, Math.min(100, result.score));
144
+ result.passed = result.errors.length === 0;
145
+ return result;
146
+ }
147
+ function formatPreflightResult(result) {
148
+ const lines = [];
149
+ if (result.passed) {
150
+ lines.push(` āœ… Pre-flight PASSED (confidence: ${result.score}%)`);
151
+ }
152
+ else {
153
+ lines.push(` āŒ Pre-flight FAILED (confidence: ${result.score}%)`);
154
+ }
155
+ lines.push('');
156
+ if (result.errors.length > 0) {
157
+ lines.push(' šŸ”“ Errors:');
158
+ for (const e of result.errors) {
159
+ lines.push(` [${e.code}] ${e.message}`);
160
+ if (e.fix)
161
+ lines.push(` šŸ’” Fix: ${e.fix}`);
162
+ }
163
+ lines.push('');
164
+ }
165
+ if (result.warnings.length > 0) {
166
+ lines.push(' 🟔 Warnings:');
167
+ for (const w of result.warnings) {
168
+ lines.push(` [${w.code}] ${w.message}`);
169
+ if (w.fix)
170
+ lines.push(` šŸ’” Fix: ${w.fix}`);
171
+ }
172
+ lines.push('');
173
+ }
174
+ if (result.info.length > 0) {
175
+ lines.push(' ā„¹ļø Info:');
176
+ for (const i of result.info) {
177
+ lines.push(` ${i.message}`);
178
+ }
179
+ }
180
+ return lines.join('\n');
181
+ }
182
+ //# sourceMappingURL=preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/commands/preflight.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Helix Command: preview
3
+ * Interactive hot-reload preview with file watching
4
+ */
5
+ /**
6
+ * Main preview function
7
+ */
8
+ export declare function preview(): Promise<void>;
9
+ /**
10
+ * Quick preview - just launch the server without watching
11
+ */
12
+ export declare function quickPreview(): Promise<void>;
13
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgIH;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA4F7C;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBlD"}
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ /**
3
+ * Helix Command: preview
4
+ * Interactive hot-reload preview with file watching
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.preview = preview;
44
+ exports.quickPreview = quickPreview;
45
+ const chalk_1 = __importDefault(require("chalk"));
46
+ const fs = __importStar(require("fs-extra"));
47
+ const path = __importStar(require("path"));
48
+ const execa = require("execa");
49
+ const ora_1 = __importDefault(require("ora"));
50
+ // We'll use a simple polling mechanism for file watching
51
+ // to avoid adding chokidar as a dependency initially
52
+ /**
53
+ * Detect project type from the current directory
54
+ */
55
+ function detectProjectType() {
56
+ const cwd = process.cwd();
57
+ if (fs.existsSync(path.join(cwd, "pubspec.yaml"))) {
58
+ return "flutter";
59
+ }
60
+ if (fs.existsSync(path.join(cwd, "next.config.js")) ||
61
+ fs.existsSync(path.join(cwd, "next.config.mjs")) ||
62
+ fs.existsSync(path.join(cwd, "package.json"))) {
63
+ const pkgPath = path.join(cwd, "package.json");
64
+ if (fs.existsSync(pkgPath)) {
65
+ try {
66
+ const pkg = fs.readJSONSync(pkgPath);
67
+ if (pkg.dependencies?.next || pkg.devDependencies?.next) {
68
+ return "nextjs";
69
+ }
70
+ }
71
+ catch { }
72
+ }
73
+ }
74
+ return "unknown";
75
+ }
76
+ /**
77
+ * Get preview configuration for a project type
78
+ */
79
+ function getPreviewConfig(projectType) {
80
+ if (projectType === "flutter") {
81
+ return {
82
+ projectType: "flutter",
83
+ command: "flutter",
84
+ args: ["run", "-d", "chrome", "--web-port", "3000"],
85
+ watchPatterns: ["lib/**/*.dart", "*.helix"],
86
+ port: 3000,
87
+ };
88
+ }
89
+ return {
90
+ projectType: "nextjs",
91
+ command: "npm",
92
+ args: ["run", "dev"],
93
+ watchPatterns: ["src/**/*", "app/**/*", "pages/**/*", "*.helix"],
94
+ port: 3000,
95
+ };
96
+ }
97
+ /**
98
+ * Find .helix files in the current directory
99
+ */
100
+ async function findHelixFiles() {
101
+ const cwd = process.cwd();
102
+ const files = [];
103
+ try {
104
+ const entries = await fs.readdir(cwd);
105
+ for (const entry of entries) {
106
+ if (entry.endsWith(".helix")) {
107
+ files.push(entry);
108
+ }
109
+ }
110
+ }
111
+ catch { }
112
+ return files;
113
+ }
114
+ /**
115
+ * Watch a file for changes using polling
116
+ */
117
+ class FileWatcher {
118
+ lastMtime = new Map();
119
+ interval = null;
120
+ callback;
121
+ constructor(callback) {
122
+ this.callback = callback;
123
+ }
124
+ watch(files, intervalMs = 1000) {
125
+ // Initialize mtimes
126
+ for (const file of files) {
127
+ try {
128
+ const stat = fs.statSync(file);
129
+ this.lastMtime.set(file, stat.mtimeMs);
130
+ }
131
+ catch {
132
+ this.lastMtime.set(file, 0);
133
+ }
134
+ }
135
+ // Start polling
136
+ this.interval = setInterval(() => {
137
+ for (const file of files) {
138
+ try {
139
+ const stat = fs.statSync(file);
140
+ const lastMtime = this.lastMtime.get(file) || 0;
141
+ if (stat.mtimeMs > lastMtime) {
142
+ this.lastMtime.set(file, stat.mtimeMs);
143
+ this.callback(file);
144
+ }
145
+ }
146
+ catch { }
147
+ }
148
+ }, intervalMs);
149
+ }
150
+ stop() {
151
+ if (this.interval) {
152
+ clearInterval(this.interval);
153
+ this.interval = null;
154
+ }
155
+ }
156
+ }
157
+ /**
158
+ * Main preview function
159
+ */
160
+ async function preview() {
161
+ console.log(chalk_1.default.cyan("\nšŸ‘ļø HELIX PREVIEW - Interactive Development\n"));
162
+ // Detect project type
163
+ const projectType = detectProjectType();
164
+ if (projectType === "unknown") {
165
+ console.error(chalk_1.default.red("āŒ Could not detect project type"));
166
+ console.log(chalk_1.default.gray("Make sure you're in a Flutter or Next.js project directory"));
167
+ process.exit(1);
168
+ }
169
+ const config = getPreviewConfig(projectType);
170
+ console.log(chalk_1.default.white(`šŸ“¦ Project Type: ${projectType}`));
171
+ console.log(chalk_1.default.white(`🌐 Server: http://localhost:${config.port}\n`));
172
+ // Find .helix files to watch
173
+ const helixFiles = await findHelixFiles();
174
+ if (helixFiles.length > 0) {
175
+ console.log(chalk_1.default.yellow(`šŸ“ Watching ${helixFiles.length} .helix file(s) for changes:`));
176
+ for (const file of helixFiles) {
177
+ console.log(chalk_1.default.gray(` • ${file}`));
178
+ }
179
+ console.log("");
180
+ }
181
+ // Start file watcher for .helix files
182
+ const watcher = new FileWatcher(async (file) => {
183
+ console.log(chalk_1.default.yellow(`\nšŸ”„ Change detected in ${file}`));
184
+ console.log(chalk_1.default.gray(" Regenerating code..."));
185
+ // Trigger regeneration
186
+ try {
187
+ // Import and run generate command
188
+ const { generateStack } = await Promise.resolve().then(() => __importStar(require("./generate")));
189
+ await generateStack(file);
190
+ console.log(chalk_1.default.green(" āœ… Regeneration complete!\n"));
191
+ }
192
+ catch (error) {
193
+ console.log(chalk_1.default.red(` āŒ Regeneration failed: ${error.message}\n`));
194
+ }
195
+ });
196
+ if (helixFiles.length > 0) {
197
+ watcher.watch(helixFiles, 1500);
198
+ }
199
+ // Start the development server
200
+ const spinner = (0, ora_1.default)(`Starting ${projectType} development server...`).start();
201
+ try {
202
+ spinner.succeed(`${projectType} server starting...`);
203
+ console.log(chalk_1.default.gray("─".repeat(50)));
204
+ console.log(chalk_1.default.cyan(`\nšŸš€ Preview available at http://localhost:${config.port}\n`));
205
+ console.log(chalk_1.default.gray("Press Ctrl+C to stop\n"));
206
+ console.log(chalk_1.default.gray("─".repeat(50)));
207
+ // Open browser after a delay
208
+ setTimeout(async () => {
209
+ try {
210
+ const url = `http://localhost:${config.port}`;
211
+ const platform = process.platform;
212
+ if (platform === "win32") {
213
+ await execa("cmd", ["/c", "start", url], { stdio: "ignore" });
214
+ }
215
+ else if (platform === "darwin") {
216
+ await execa("open", [url], { stdio: "ignore" });
217
+ }
218
+ else {
219
+ await execa("xdg-open", [url], { stdio: "ignore" });
220
+ }
221
+ }
222
+ catch {
223
+ // Ignore browser open errors
224
+ }
225
+ }, 3000);
226
+ // Run the development server
227
+ await execa(config.command, config.args, {
228
+ stdio: "inherit",
229
+ cwd: process.cwd(),
230
+ });
231
+ }
232
+ catch (error) {
233
+ spinner.fail(`Server failed: ${error.message}`);
234
+ watcher.stop();
235
+ process.exit(1);
236
+ }
237
+ // Cleanup on exit
238
+ process.on("SIGINT", () => {
239
+ watcher.stop();
240
+ console.log(chalk_1.default.yellow("\n\nšŸ‘‹ Preview stopped\n"));
241
+ process.exit(0);
242
+ });
243
+ }
244
+ /**
245
+ * Quick preview - just launch the server without watching
246
+ */
247
+ async function quickPreview() {
248
+ const projectType = detectProjectType();
249
+ if (projectType === "unknown") {
250
+ console.error(chalk_1.default.red("āŒ Could not detect project type"));
251
+ process.exit(1);
252
+ }
253
+ const config = getPreviewConfig(projectType);
254
+ console.log(chalk_1.default.cyan(`\nšŸš€ Launching ${projectType} preview...\n`));
255
+ await execa(config.command, config.args, {
256
+ stdio: "inherit",
257
+ cwd: process.cwd(),
258
+ });
259
+ }
260
+ //# sourceMappingURL=preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Helix Command: run
3
+ * Wraps npm run dev and opens the browser automatically
4
+ */
5
+ export declare function runDevServer(): Promise<void>;
6
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAiDlD"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ /**
3
+ * Helix Command: run
4
+ * Wraps npm run dev and opens the browser automatically
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.runDevServer = runDevServer;
44
+ const chalk_1 = __importDefault(require("chalk"));
45
+ const fs = __importStar(require("fs-extra"));
46
+ const path = __importStar(require("path"));
47
+ const execa = require("execa");
48
+ async function runDevServer() {
49
+ const configPath = path.join(process.cwd(), "helix.config.json");
50
+ // Check if we're in a Helix project
51
+ if (!fs.existsSync(configPath)) {
52
+ console.error(chalk_1.default.red("āŒ Not a Helix project. Run 'helix new <name>' first."));
53
+ process.exit(1);
54
+ }
55
+ console.log(chalk_1.default.cyan("\nšŸš€ Starting Helix Dev Server...\n"));
56
+ // Check for package.json
57
+ const packagePath = path.join(process.cwd(), "package.json");
58
+ if (!fs.existsSync(packagePath)) {
59
+ console.error(chalk_1.default.red("āŒ No package.json found"));
60
+ process.exit(1);
61
+ }
62
+ // Open browser after a delay
63
+ setTimeout(async () => {
64
+ try {
65
+ const url = "http://localhost:3000";
66
+ console.log(chalk_1.default.green(`\n🌐 Opening ${url}\n`));
67
+ // Cross-platform browser open
68
+ const platform = process.platform;
69
+ if (platform === "win32") {
70
+ await execa("cmd", ["/c", "start", url], { stdio: "ignore" });
71
+ }
72
+ else if (platform === "darwin") {
73
+ await execa("open", [url], { stdio: "ignore" });
74
+ }
75
+ else {
76
+ await execa("xdg-open", [url], { stdio: "ignore" });
77
+ }
78
+ }
79
+ catch {
80
+ console.log(chalk_1.default.yellow("āš ļø Could not open browser automatically"));
81
+ console.log(chalk_1.default.gray(" Open http://localhost:3000 manually"));
82
+ }
83
+ }, 3000);
84
+ // Run the dev server
85
+ try {
86
+ await execa("npm", ["run", "dev"], {
87
+ cwd: process.cwd(),
88
+ stdio: "inherit", // Stream output to terminal
89
+ });
90
+ }
91
+ catch (error) {
92
+ // User likely pressed Ctrl+C
93
+ console.log(chalk_1.default.gray("\nšŸ‘‹ Server stopped\n"));
94
+ }
95
+ }
96
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQH,oCAiDC;AAvDD,kDAA0B;AAC1B,6CAA+B;AAC/B,2CAA6B;AAC7B,+BAAgC;AAGzB,KAAK,UAAU,YAAY;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAEjE,oCAAoC;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAE/D,yBAAyB;IACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,6BAA6B;IAC7B,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,uBAAuB,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC;YAElD,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClE,CAAC;iBAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACrE,CAAC;IACL,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,qBAAqB;IACrB,IAAI,CAAC;QACD,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YAC/B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,KAAK,EAAE,SAAS,EAAE,4BAA4B;SACjD,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACrD,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Helix Command: spawn
3
+ * ONE-SHOT GENERATION - Full-stack app from natural language with ZERO intervention
4
+ * v11.0 - Clean Factory: All builds isolated to builds/{app_name}/
5
+ */
6
+ import { type SpawnOptions } from "../utils/constitutional-validator";
7
+ /**
8
+ * Spawn a complete full-stack application from a natural language prompt
9
+ */
10
+ export declare function spawnApp(prompt: string, options?: SpawnOptions, constitution?: string, connectionString?: string): Promise<void>;
11
+ //# sourceMappingURL=spawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,mCAAmC,CAAC;AAgB3C;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,YAAiB,EAC1B,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAklBf"}