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.
- package/README.md +168 -0
- package/dist/architect.d.ts +14 -0
- package/dist/architect.d.ts.map +1 -0
- package/dist/architect.js +127 -0
- package/dist/architect.js.map +1 -0
- package/dist/bin/helix.d.ts +20 -0
- package/dist/bin/helix.d.ts.map +1 -0
- package/dist/bin/helix.js +921 -0
- package/dist/bin/helix.js.map +1 -0
- package/dist/commands/collaborate/index.d.ts +2 -0
- package/dist/commands/collaborate/index.d.ts.map +1 -0
- package/dist/commands/collaborate/index.js +129 -0
- package/dist/commands/collaborate/index.js.map +1 -0
- package/dist/commands/collaborate/server.d.ts +31 -0
- package/dist/commands/collaborate/server.d.ts.map +1 -0
- package/dist/commands/collaborate/server.js +159 -0
- package/dist/commands/collaborate/server.js.map +1 -0
- package/dist/commands/deploy/index.d.ts +25 -0
- package/dist/commands/deploy/index.d.ts.map +1 -0
- package/dist/commands/deploy/index.js +130 -0
- package/dist/commands/deploy/index.js.map +1 -0
- package/dist/commands/deploy/platforms/fly.d.ts +9 -0
- package/dist/commands/deploy/platforms/fly.d.ts.map +1 -0
- package/dist/commands/deploy/platforms/fly.js +68 -0
- package/dist/commands/deploy/platforms/fly.js.map +1 -0
- package/dist/commands/deploy/platforms/railway.d.ts +9 -0
- package/dist/commands/deploy/platforms/railway.d.ts.map +1 -0
- package/dist/commands/deploy/platforms/railway.js +115 -0
- package/dist/commands/deploy/platforms/railway.js.map +1 -0
- package/dist/commands/deploy/platforms/vercel.d.ts +10 -0
- package/dist/commands/deploy/platforms/vercel.d.ts.map +1 -0
- package/dist/commands/deploy/platforms/vercel.js +126 -0
- package/dist/commands/deploy/platforms/vercel.js.map +1 -0
- package/dist/commands/deploy.d.ts +6 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +56 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/evolve/analyzers/performance.d.ts +13 -0
- package/dist/commands/evolve/analyzers/performance.d.ts.map +1 -0
- package/dist/commands/evolve/analyzers/performance.js +591 -0
- package/dist/commands/evolve/analyzers/performance.js.map +1 -0
- package/dist/commands/evolve/analyzers/security.d.ts +21 -0
- package/dist/commands/evolve/analyzers/security.d.ts.map +1 -0
- package/dist/commands/evolve/analyzers/security.js +280 -0
- package/dist/commands/evolve/analyzers/security.js.map +1 -0
- package/dist/commands/evolve/index.d.ts +2 -0
- package/dist/commands/evolve/index.d.ts.map +1 -0
- package/dist/commands/evolve/index.js +122 -0
- package/dist/commands/evolve/index.js.map +1 -0
- package/dist/commands/generate.d.ts +6 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +277 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/install.d.ts +2 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +176 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/library/index.d.ts +27 -0
- package/dist/commands/library/index.d.ts.map +1 -0
- package/dist/commands/library/index.js +126 -0
- package/dist/commands/library/index.js.map +1 -0
- package/dist/commands/migrate.d.ts +5 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +258 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/new.d.ts +6 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +195 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/preflight.d.ts +20 -0
- package/dist/commands/preflight.d.ts.map +1 -0
- package/dist/commands/preflight.js +182 -0
- package/dist/commands/preflight.js.map +1 -0
- package/dist/commands/preview.d.ts +13 -0
- package/dist/commands/preview.d.ts.map +1 -0
- package/dist/commands/preview.js +260 -0
- package/dist/commands/preview.js.map +1 -0
- package/dist/commands/run.d.ts +6 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +96 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/spawn.d.ts +11 -0
- package/dist/commands/spawn.d.ts.map +1 -0
- package/dist/commands/spawn.js +916 -0
- package/dist/commands/spawn.js.map +1 -0
- package/dist/compiler.d.ts +12 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/compiler.js +92 -0
- package/dist/compiler.js.map +1 -0
- package/dist/core/file-writer.d.ts +36 -0
- package/dist/core/file-writer.d.ts.map +1 -0
- package/dist/core/file-writer.js +268 -0
- package/dist/core/file-writer.js.map +1 -0
- package/dist/core/registry.d.ts +57 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +222 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/self-healing.d.ts +47 -0
- package/dist/core/self-healing.d.ts.map +1 -0
- package/dist/core/self-healing.js +250 -0
- package/dist/core/self-healing.js.map +1 -0
- package/dist/core/types.d.ts +126 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +7 -0
- package/dist/core/types.js.map +1 -0
- package/dist/generators/databases/mongodb.d.ts +10 -0
- package/dist/generators/databases/mongodb.d.ts.map +1 -0
- package/dist/generators/databases/mongodb.js +83 -0
- package/dist/generators/databases/mongodb.js.map +1 -0
- package/dist/generators/databases/redis.d.ts +2 -0
- package/dist/generators/databases/redis.d.ts.map +1 -0
- package/dist/generators/databases/redis.js +140 -0
- package/dist/generators/databases/redis.js.map +1 -0
- package/dist/generators/flutter.d.ts +32 -0
- package/dist/generators/flutter.d.ts.map +1 -0
- package/dist/generators/flutter.js +628 -0
- package/dist/generators/flutter.js.map +1 -0
- package/dist/openrouter.d.ts +68 -0
- package/dist/openrouter.d.ts.map +1 -0
- package/dist/openrouter.js +241 -0
- package/dist/openrouter.js.map +1 -0
- package/dist/page-generator.d.ts +22 -0
- package/dist/page-generator.d.ts.map +1 -0
- package/dist/page-generator.js +192 -0
- package/dist/page-generator.js.map +1 -0
- package/dist/parser.d.ts +76 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +691 -0
- package/dist/parser.js.map +1 -0
- package/dist/prompts/master-architect.d.ts +9 -0
- package/dist/prompts/master-architect.d.ts.map +1 -0
- package/dist/prompts/master-architect.js +150 -0
- package/dist/prompts/master-architect.js.map +1 -0
- package/dist/researcher.d.ts +12 -0
- package/dist/researcher.d.ts.map +1 -0
- package/dist/researcher.js +85 -0
- package/dist/researcher.js.map +1 -0
- package/dist/self-heal.d.ts +29 -0
- package/dist/self-heal.d.ts.map +1 -0
- package/dist/self-heal.js +260 -0
- package/dist/self-heal.js.map +1 -0
- package/dist/services/SupabaseDeployer.d.ts +9 -0
- package/dist/services/SupabaseDeployer.d.ts.map +1 -0
- package/dist/services/SupabaseDeployer.js +50 -0
- package/dist/services/SupabaseDeployer.js.map +1 -0
- package/dist/test-generator.d.ts +18 -0
- package/dist/test-generator.d.ts.map +1 -0
- package/dist/test-generator.js +180 -0
- package/dist/test-generator.js.map +1 -0
- package/dist/themes/index.d.ts +52 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +273 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +81 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/constitutional-validator.d.ts +73 -0
- package/dist/utils/constitutional-validator.d.ts.map +1 -0
- package/dist/utils/constitutional-validator.js +249 -0
- package/dist/utils/constitutional-validator.js.map +1 -0
- package/library/auth-flow/app/api/auth/[...nextauth]/route.ts +31 -0
- package/library/auth-flow/app/api/auth/login/route.ts +90 -0
- package/library/auth-flow/app/api/auth/register/route.ts +91 -0
- package/library/auth-flow/components/auth/AuthMiddleware.tsx +139 -0
- package/library/auth-flow/components/auth/LoginForm.tsx +125 -0
- package/library/auth-flow/components/auth/RegisterForm.tsx +168 -0
- package/library/auth-flow/components/auth/nextauth-config.ts +99 -0
- package/library/auth-flow/manifest.json +29 -0
- package/library/auth-flow/schema.prisma +45 -0
- package/library/dashboard-analytics/components/dashboard/ActivityFeed.tsx +109 -0
- package/library/dashboard-analytics/components/dashboard/LineChart.tsx +180 -0
- package/library/dashboard-analytics/components/dashboard/StatsCard.tsx +47 -0
- package/library/dashboard-analytics/components/dashboard/SummaryGrid.tsx +39 -0
- package/library/dashboard-analytics/manifest.json +19 -0
- package/library/data-table/components/table/BulkActions.tsx +59 -0
- package/library/data-table/components/table/ColumnToggle.tsx +65 -0
- package/library/data-table/components/table/DataTable.tsx +318 -0
- package/library/data-table/components/table/ExportCSV.tsx +52 -0
- package/library/data-table/components/table/SearchFilter.tsx +48 -0
- package/library/data-table/manifest.json +20 -0
- package/library/file-upload/app/api/upload/route.ts +107 -0
- package/library/file-upload/components/upload/DropZone.tsx +268 -0
- package/library/file-upload/components/upload/FilePreview.tsx +82 -0
- package/library/file-upload/components/upload/UploadProgress.tsx +92 -0
- package/library/file-upload/components/upload/fileStorage.ts +142 -0
- package/library/file-upload/manifest.json +21 -0
- package/library/notification-system/app/api/notifications/route.ts +121 -0
- package/library/notification-system/components/notifications/NotificationBell.tsx +154 -0
- package/library/notification-system/components/notifications/NotificationProvider.tsx +161 -0
- package/library/notification-system/components/notifications/Toast.tsx +112 -0
- package/library/notification-system/manifest.json +20 -0
- package/package.json +66 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Helix Plugin Registry v11.0
|
|
4
|
+
* Dynamic discovery and loading of generator plugins
|
|
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.getRegistry = exports.PluginRegistry = void 0;
|
|
44
|
+
const fs = __importStar(require("fs-extra"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
47
|
+
// Built-in generators
|
|
48
|
+
const BUILT_IN_GENERATORS = [
|
|
49
|
+
{
|
|
50
|
+
name: "helix-gen-flutter",
|
|
51
|
+
target: "flutter",
|
|
52
|
+
version: "10.0.0",
|
|
53
|
+
modulePath: "../generators/flutter",
|
|
54
|
+
isBuiltIn: true,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "helix-gen-nextjs",
|
|
58
|
+
target: "web",
|
|
59
|
+
version: "10.0.0",
|
|
60
|
+
modulePath: "../commands/spawn",
|
|
61
|
+
isBuiltIn: true,
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
/**
|
|
65
|
+
* Plugin Registry - Discovers and loads generator plugins
|
|
66
|
+
*/
|
|
67
|
+
class PluginRegistry {
|
|
68
|
+
static instance;
|
|
69
|
+
plugins = new Map();
|
|
70
|
+
loadedPlugins = new Map();
|
|
71
|
+
constructor() {
|
|
72
|
+
// Register built-in generators
|
|
73
|
+
for (const plugin of BUILT_IN_GENERATORS) {
|
|
74
|
+
this.plugins.set(plugin.target, plugin);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get singleton instance
|
|
79
|
+
*/
|
|
80
|
+
static getInstance() {
|
|
81
|
+
if (!PluginRegistry.instance) {
|
|
82
|
+
PluginRegistry.instance = new PluginRegistry();
|
|
83
|
+
}
|
|
84
|
+
return PluginRegistry.instance;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Scan for helix-gen-* packages in node_modules
|
|
88
|
+
* @param projectPath - Path to scan for plugins
|
|
89
|
+
*/
|
|
90
|
+
async scanForPlugins(projectPath = process.cwd()) {
|
|
91
|
+
const packageJsonPath = path.join(projectPath, "package.json");
|
|
92
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
const packageJson = await fs.readJSON(packageJsonPath);
|
|
97
|
+
const allDeps = {
|
|
98
|
+
...packageJson.dependencies,
|
|
99
|
+
...packageJson.devDependencies,
|
|
100
|
+
};
|
|
101
|
+
// Find helix-gen-* packages
|
|
102
|
+
for (const [name, version] of Object.entries(allDeps)) {
|
|
103
|
+
if (name.startsWith("helix-gen-") && !this.isBuiltIn(name)) {
|
|
104
|
+
await this.registerExternalPlugin(name, String(version), projectPath);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
console.log(chalk_1.default.yellow(`⚠️ Could not scan for plugins: ${error}`));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check if a plugin is built-in
|
|
114
|
+
*/
|
|
115
|
+
isBuiltIn(name) {
|
|
116
|
+
return BUILT_IN_GENERATORS.some(p => p.name === name);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Register an external plugin
|
|
120
|
+
*/
|
|
121
|
+
async registerExternalPlugin(name, version, projectPath) {
|
|
122
|
+
const modulePath = path.join(projectPath, "node_modules", name);
|
|
123
|
+
if (!fs.existsSync(modulePath)) {
|
|
124
|
+
console.log(chalk_1.default.yellow(`⚠️ Plugin ${name} not found in node_modules`));
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
// Read plugin's package.json to get target
|
|
129
|
+
const pluginPkgPath = path.join(modulePath, "package.json");
|
|
130
|
+
const pluginPkg = await fs.readJSON(pluginPkgPath);
|
|
131
|
+
const target = pluginPkg.helix?.target || name.replace("helix-gen-", "");
|
|
132
|
+
this.plugins.set(target, {
|
|
133
|
+
name,
|
|
134
|
+
target,
|
|
135
|
+
version,
|
|
136
|
+
modulePath,
|
|
137
|
+
isBuiltIn: false,
|
|
138
|
+
});
|
|
139
|
+
console.log(chalk_1.default.green(`✓ Plugin loaded: ${name} (target: ${target})`));
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
console.log(chalk_1.default.yellow(`⚠️ Could not load plugin ${name}: ${error}`));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get all registered plugins
|
|
147
|
+
*/
|
|
148
|
+
getPlugins() {
|
|
149
|
+
return Array.from(this.plugins.values());
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Get available targets
|
|
153
|
+
*/
|
|
154
|
+
getAvailableTargets() {
|
|
155
|
+
return Array.from(this.plugins.keys());
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Check if a target is supported
|
|
159
|
+
*/
|
|
160
|
+
hasTarget(target) {
|
|
161
|
+
return this.plugins.has(target);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get plugin entry for a target
|
|
165
|
+
*/
|
|
166
|
+
getPlugin(target) {
|
|
167
|
+
return this.plugins.get(target);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Load and return a generator plugin
|
|
171
|
+
*/
|
|
172
|
+
async loadGenerator(target) {
|
|
173
|
+
// Check cache
|
|
174
|
+
if (this.loadedPlugins.has(target)) {
|
|
175
|
+
return this.loadedPlugins.get(target);
|
|
176
|
+
}
|
|
177
|
+
const entry = this.plugins.get(target);
|
|
178
|
+
if (!entry) {
|
|
179
|
+
console.log(chalk_1.default.red(`❌ No generator found for target: ${target}`));
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
// Dynamic import
|
|
184
|
+
const module = await Promise.resolve(`${entry.modulePath}`).then(s => __importStar(require(s)));
|
|
185
|
+
// Look for a default export or a named 'plugin' export
|
|
186
|
+
const plugin = module.default || module.plugin;
|
|
187
|
+
if (plugin && typeof plugin.generate === "function") {
|
|
188
|
+
this.loadedPlugins.set(target, plugin);
|
|
189
|
+
return plugin;
|
|
190
|
+
}
|
|
191
|
+
// For built-in generators, they might not follow plugin interface yet
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
console.log(chalk_1.default.red(`❌ Failed to load generator for ${target}: ${error}`));
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* List all plugins with their status
|
|
201
|
+
*/
|
|
202
|
+
listPlugins() {
|
|
203
|
+
console.log(chalk_1.default.cyan("\n📦 Helix Plugin Registry\n"));
|
|
204
|
+
const plugins = this.getPlugins();
|
|
205
|
+
if (plugins.length === 0) {
|
|
206
|
+
console.log(chalk_1.default.gray(" No plugins registered"));
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
for (const plugin of plugins) {
|
|
210
|
+
const status = plugin.isBuiltIn
|
|
211
|
+
? chalk_1.default.blue("[built-in]")
|
|
212
|
+
: chalk_1.default.green("[external]");
|
|
213
|
+
console.log(` ${chalk_1.default.white(plugin.target)} → ${plugin.name} ${status}`);
|
|
214
|
+
}
|
|
215
|
+
console.log("");
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
exports.PluginRegistry = PluginRegistry;
|
|
219
|
+
// Export singleton accessor
|
|
220
|
+
const getRegistry = () => PluginRegistry.getInstance();
|
|
221
|
+
exports.getRegistry = getRegistry;
|
|
222
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helix Self-Healing Cortex v11.0
|
|
3
|
+
* Automatic error detection, retry, and repair for AI-generated code
|
|
4
|
+
*/
|
|
5
|
+
import { GenerationResult } from "./types";
|
|
6
|
+
/**
|
|
7
|
+
* Self-Healing wrapper for AI generation calls
|
|
8
|
+
* Automatically retries and attempts to repair broken output
|
|
9
|
+
*/
|
|
10
|
+
export declare class SelfHealingCortex {
|
|
11
|
+
private repairLog;
|
|
12
|
+
/**
|
|
13
|
+
* Execute an AI generation with self-healing
|
|
14
|
+
* @param generator - The generation function to execute
|
|
15
|
+
* @param validator - Validation function that throws on invalid output
|
|
16
|
+
*/
|
|
17
|
+
execute<T>(generator: () => Promise<T>, validator: (result: T) => void, repairContext?: string): Promise<GenerationResult<T>>;
|
|
18
|
+
/**
|
|
19
|
+
* Execute AI generation that returns JSON and self-heal invalid JSON
|
|
20
|
+
*/
|
|
21
|
+
executeJSON<T>(systemPrompt: string, userPrompt: string, parseAndValidate: (json: any) => T): Promise<GenerationResult<T>>;
|
|
22
|
+
/**
|
|
23
|
+
* Execute code generation with build validation
|
|
24
|
+
*/
|
|
25
|
+
executeWithBuildCheck(generator: () => Promise<string>, buildChecker: (code: string) => Promise<{
|
|
26
|
+
success: boolean;
|
|
27
|
+
error?: string;
|
|
28
|
+
}>): Promise<GenerationResult<string>>;
|
|
29
|
+
/**
|
|
30
|
+
* Extract JSON from a potentially markdown-wrapped response
|
|
31
|
+
*/
|
|
32
|
+
private extractJSON;
|
|
33
|
+
/**
|
|
34
|
+
* Create a repair prompt based on the original prompt and error
|
|
35
|
+
*/
|
|
36
|
+
private createRepairPrompt;
|
|
37
|
+
/**
|
|
38
|
+
* Ask AI to repair broken code
|
|
39
|
+
*/
|
|
40
|
+
private repairCode;
|
|
41
|
+
/**
|
|
42
|
+
* Get the repair log
|
|
43
|
+
*/
|
|
44
|
+
getRepairLog(): string[];
|
|
45
|
+
}
|
|
46
|
+
export declare const selfHeal: SelfHealingCortex;
|
|
47
|
+
//# sourceMappingURL=self-healing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-healing.d.ts","sourceRoot":"","sources":["../../src/core/self-healing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,gBAAgB,EAAiB,MAAM,SAAS,CAAC;AAI1D;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,SAAS,CAAgB;IAEjC;;;;OAIG;IACG,OAAO,CAAC,CAAC,EACX,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,EAC9B,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IA8C/B;;OAEG;IACG,WAAW,CAAC,CAAC,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,GACnC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IA+C/B;;OAEG;IACG,qBAAqB,CACvB,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAChC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAC9E,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IA6CpC;;OAEG;IACH,OAAO,CAAC,WAAW;IA8CnB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;YACW,UAAU;IAiCxB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;CAG3B;AAGD,eAAO,MAAM,QAAQ,mBAA0B,CAAC"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Helix Self-Healing Cortex v11.0
|
|
4
|
+
* Automatic error detection, retry, and repair for AI-generated code
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.selfHeal = exports.SelfHealingCortex = void 0;
|
|
11
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
const openrouter_1 = require("../openrouter");
|
|
13
|
+
const MAX_REPAIR_ATTEMPTS = 2;
|
|
14
|
+
/**
|
|
15
|
+
* Self-Healing wrapper for AI generation calls
|
|
16
|
+
* Automatically retries and attempts to repair broken output
|
|
17
|
+
*/
|
|
18
|
+
class SelfHealingCortex {
|
|
19
|
+
repairLog = [];
|
|
20
|
+
/**
|
|
21
|
+
* Execute an AI generation with self-healing
|
|
22
|
+
* @param generator - The generation function to execute
|
|
23
|
+
* @param validator - Validation function that throws on invalid output
|
|
24
|
+
*/
|
|
25
|
+
async execute(generator, validator, repairContext) {
|
|
26
|
+
this.repairLog = [];
|
|
27
|
+
let attempts = 0;
|
|
28
|
+
let lastError = "";
|
|
29
|
+
while (attempts <= MAX_REPAIR_ATTEMPTS) {
|
|
30
|
+
attempts++;
|
|
31
|
+
try {
|
|
32
|
+
const result = await generator();
|
|
33
|
+
// Validate the result
|
|
34
|
+
try {
|
|
35
|
+
validator(result);
|
|
36
|
+
return {
|
|
37
|
+
success: true,
|
|
38
|
+
data: result,
|
|
39
|
+
attempts,
|
|
40
|
+
repairLog: this.repairLog,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch (validationError) {
|
|
44
|
+
lastError = validationError.message || String(validationError);
|
|
45
|
+
this.repairLog.push(`Attempt ${attempts}: Validation failed - ${lastError}`);
|
|
46
|
+
if (attempts <= MAX_REPAIR_ATTEMPTS) {
|
|
47
|
+
console.log(chalk_1.default.yellow(`⚠️ Validation failed, attempting repair (${attempts}/${MAX_REPAIR_ATTEMPTS})...`));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (generationError) {
|
|
52
|
+
lastError = generationError.message || String(generationError);
|
|
53
|
+
this.repairLog.push(`Attempt ${attempts}: Generation failed - ${lastError}`);
|
|
54
|
+
if (attempts <= MAX_REPAIR_ATTEMPTS) {
|
|
55
|
+
console.log(chalk_1.default.yellow(`⚠️ Generation failed, retrying (${attempts}/${MAX_REPAIR_ATTEMPTS})...`));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
error: lastError,
|
|
62
|
+
attempts,
|
|
63
|
+
repairLog: this.repairLog,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Execute AI generation that returns JSON and self-heal invalid JSON
|
|
68
|
+
*/
|
|
69
|
+
async executeJSON(systemPrompt, userPrompt, parseAndValidate) {
|
|
70
|
+
this.repairLog = [];
|
|
71
|
+
let attempts = 0;
|
|
72
|
+
let currentPrompt = userPrompt;
|
|
73
|
+
let lastError = "";
|
|
74
|
+
while (attempts <= MAX_REPAIR_ATTEMPTS) {
|
|
75
|
+
attempts++;
|
|
76
|
+
try {
|
|
77
|
+
const response = await (0, openrouter_1.createCompletion)(systemPrompt, currentPrompt, {
|
|
78
|
+
model: openrouter_1.DEFAULT_MODEL,
|
|
79
|
+
maxTokens: 8192,
|
|
80
|
+
});
|
|
81
|
+
// Try to extract JSON from response
|
|
82
|
+
const jsonStr = this.extractJSON(response);
|
|
83
|
+
const parsed = JSON.parse(jsonStr);
|
|
84
|
+
const validated = parseAndValidate(parsed);
|
|
85
|
+
return {
|
|
86
|
+
success: true,
|
|
87
|
+
data: validated,
|
|
88
|
+
attempts,
|
|
89
|
+
repairLog: this.repairLog,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
lastError = error.message || String(error);
|
|
94
|
+
this.repairLog.push(`Attempt ${attempts}: ${lastError}`);
|
|
95
|
+
if (attempts <= MAX_REPAIR_ATTEMPTS) {
|
|
96
|
+
// Create a repair request
|
|
97
|
+
currentPrompt = this.createRepairPrompt(userPrompt, lastError);
|
|
98
|
+
console.log(chalk_1.default.yellow(`⚠️ JSON parsing failed, requesting repair (${attempts}/${MAX_REPAIR_ATTEMPTS})...`));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
success: false,
|
|
104
|
+
error: `Failed after ${attempts} attempts: ${lastError}`,
|
|
105
|
+
attempts,
|
|
106
|
+
repairLog: this.repairLog,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Execute code generation with build validation
|
|
111
|
+
*/
|
|
112
|
+
async executeWithBuildCheck(generator, buildChecker) {
|
|
113
|
+
this.repairLog = [];
|
|
114
|
+
let attempts = 0;
|
|
115
|
+
let currentCode = "";
|
|
116
|
+
let lastError = "";
|
|
117
|
+
while (attempts <= MAX_REPAIR_ATTEMPTS) {
|
|
118
|
+
attempts++;
|
|
119
|
+
try {
|
|
120
|
+
currentCode = await generator();
|
|
121
|
+
const buildResult = await buildChecker(currentCode);
|
|
122
|
+
if (buildResult.success) {
|
|
123
|
+
return {
|
|
124
|
+
success: true,
|
|
125
|
+
data: currentCode,
|
|
126
|
+
attempts,
|
|
127
|
+
repairLog: this.repairLog,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
lastError = buildResult.error || "Build failed";
|
|
131
|
+
this.repairLog.push(`Attempt ${attempts}: Build failed - ${lastError}`);
|
|
132
|
+
if (attempts <= MAX_REPAIR_ATTEMPTS) {
|
|
133
|
+
console.log(chalk_1.default.yellow(`⚠️ Build check failed, attempting repair (${attempts}/${MAX_REPAIR_ATTEMPTS})...`));
|
|
134
|
+
// Request AI to fix the code
|
|
135
|
+
currentCode = await this.repairCode(currentCode, lastError);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
lastError = error.message || String(error);
|
|
140
|
+
this.repairLog.push(`Attempt ${attempts}: ${lastError}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
success: false,
|
|
145
|
+
error: lastError,
|
|
146
|
+
attempts,
|
|
147
|
+
repairLog: this.repairLog,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Extract JSON from a potentially markdown-wrapped response
|
|
152
|
+
*/
|
|
153
|
+
extractJSON(response) {
|
|
154
|
+
let json = response.trim();
|
|
155
|
+
// Remove markdown code fences
|
|
156
|
+
if (json.startsWith("```json")) {
|
|
157
|
+
json = json.slice(7);
|
|
158
|
+
}
|
|
159
|
+
else if (json.startsWith("```")) {
|
|
160
|
+
json = json.slice(3);
|
|
161
|
+
}
|
|
162
|
+
if (json.endsWith("```")) {
|
|
163
|
+
json = json.slice(0, -3);
|
|
164
|
+
}
|
|
165
|
+
// Try to find JSON object/array bounds
|
|
166
|
+
const startBrace = json.indexOf("{");
|
|
167
|
+
const startBracket = json.indexOf("[");
|
|
168
|
+
const start = startBrace === -1 ? startBracket :
|
|
169
|
+
startBracket === -1 ? startBrace :
|
|
170
|
+
Math.min(startBrace, startBracket);
|
|
171
|
+
if (start !== -1) {
|
|
172
|
+
json = json.slice(start);
|
|
173
|
+
}
|
|
174
|
+
// Find matching end
|
|
175
|
+
let depth = 0;
|
|
176
|
+
let end = 0;
|
|
177
|
+
const openChar = json[0];
|
|
178
|
+
const closeChar = openChar === "{" ? "}" : "]";
|
|
179
|
+
for (let i = 0; i < json.length; i++) {
|
|
180
|
+
if (json[i] === openChar)
|
|
181
|
+
depth++;
|
|
182
|
+
if (json[i] === closeChar)
|
|
183
|
+
depth--;
|
|
184
|
+
if (depth === 0) {
|
|
185
|
+
end = i + 1;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (end > 0) {
|
|
190
|
+
json = json.slice(0, end);
|
|
191
|
+
}
|
|
192
|
+
return json.trim();
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Create a repair prompt based on the original prompt and error
|
|
196
|
+
*/
|
|
197
|
+
createRepairPrompt(originalPrompt, error) {
|
|
198
|
+
return `The previous generation had an error:
|
|
199
|
+
ERROR: ${error}
|
|
200
|
+
|
|
201
|
+
Please fix the issue and regenerate. Remember:
|
|
202
|
+
1. Output ONLY valid JSON, no markdown or explanations
|
|
203
|
+
2. Ensure all required fields are present
|
|
204
|
+
3. Ensure proper escaping of special characters
|
|
205
|
+
|
|
206
|
+
ORIGINAL REQUEST:
|
|
207
|
+
${originalPrompt}`;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Ask AI to repair broken code
|
|
211
|
+
*/
|
|
212
|
+
async repairCode(brokenCode, error) {
|
|
213
|
+
const systemPrompt = `You are a code repair specialist.
|
|
214
|
+
Fix the error in the provided code and return ONLY the corrected code.
|
|
215
|
+
Do not include explanations or markdown fences.`;
|
|
216
|
+
const userPrompt = `Fix this code that has an error:
|
|
217
|
+
|
|
218
|
+
ERROR:
|
|
219
|
+
${error}
|
|
220
|
+
|
|
221
|
+
CODE:
|
|
222
|
+
${brokenCode}
|
|
223
|
+
|
|
224
|
+
Return the fixed code only.`;
|
|
225
|
+
const response = await (0, openrouter_1.createCompletion)(systemPrompt, userPrompt, {
|
|
226
|
+
model: openrouter_1.DEFAULT_MODEL,
|
|
227
|
+
maxTokens: 8192,
|
|
228
|
+
});
|
|
229
|
+
// Clean response
|
|
230
|
+
let code = response.trim();
|
|
231
|
+
if (code.startsWith("```")) {
|
|
232
|
+
const endOfFirstLine = code.indexOf("\n");
|
|
233
|
+
code = code.slice(endOfFirstLine + 1);
|
|
234
|
+
}
|
|
235
|
+
if (code.endsWith("```")) {
|
|
236
|
+
code = code.slice(0, -3);
|
|
237
|
+
}
|
|
238
|
+
return code.trim();
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Get the repair log
|
|
242
|
+
*/
|
|
243
|
+
getRepairLog() {
|
|
244
|
+
return [...this.repairLog];
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
exports.SelfHealingCortex = SelfHealingCortex;
|
|
248
|
+
// Export singleton
|
|
249
|
+
exports.selfHeal = new SelfHealingCortex();
|
|
250
|
+
//# sourceMappingURL=self-healing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-healing.js","sourceRoot":"","sources":["../../src/core/self-healing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helix Core Types v11.0
|
|
3
|
+
* Type definitions for the Helix Development Platform
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Represents a single file to be generated
|
|
7
|
+
*/
|
|
8
|
+
export interface GeneratedFile {
|
|
9
|
+
/** Relative path from project root (e.g., "lib/models/task.dart") */
|
|
10
|
+
path: string;
|
|
11
|
+
/** File content */
|
|
12
|
+
content: string;
|
|
13
|
+
/** Whether this file can be overwritten if it exists */
|
|
14
|
+
overwrite?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A map of all files to be generated for a project
|
|
18
|
+
*/
|
|
19
|
+
export interface FileSystemMap {
|
|
20
|
+
/** List of files to generate */
|
|
21
|
+
files: GeneratedFile[];
|
|
22
|
+
/** Project metadata */
|
|
23
|
+
metadata: {
|
|
24
|
+
projectName: string;
|
|
25
|
+
generatedAt: string;
|
|
26
|
+
helixVersion: string;
|
|
27
|
+
target: "flutter" | "web";
|
|
28
|
+
database?: "local" | "supabase";
|
|
29
|
+
ai?: "none" | "openrouter";
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Result of a code generation attempt
|
|
34
|
+
*/
|
|
35
|
+
export interface GenerationResult<T = string> {
|
|
36
|
+
success: boolean;
|
|
37
|
+
data?: T;
|
|
38
|
+
error?: string;
|
|
39
|
+
attempts: number;
|
|
40
|
+
repairLog?: string[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Interface that all Helix generator plugins must implement
|
|
44
|
+
*/
|
|
45
|
+
export interface GeneratorPlugin {
|
|
46
|
+
/** Unique plugin identifier (e.g., "helix-gen-expo") */
|
|
47
|
+
name: string;
|
|
48
|
+
/** Human-readable description */
|
|
49
|
+
description: string;
|
|
50
|
+
/** Target platform identifier (e.g., "expo", "tauri") */
|
|
51
|
+
target: string;
|
|
52
|
+
/** Plugin version */
|
|
53
|
+
version: string;
|
|
54
|
+
/**
|
|
55
|
+
* Generate a complete project from a prompt
|
|
56
|
+
* @param prompt - Natural language description
|
|
57
|
+
* @param constitution - Optional context/guidelines
|
|
58
|
+
* @param options - Additional generation options
|
|
59
|
+
*/
|
|
60
|
+
generate(prompt: string, constitution?: string, options?: Record<string, string>): Promise<FileSystemMap>;
|
|
61
|
+
/**
|
|
62
|
+
* Get the dependencies required for this target
|
|
63
|
+
*/
|
|
64
|
+
getDependencies(): string[];
|
|
65
|
+
/**
|
|
66
|
+
* Get scaffold command (e.g., "flutter create", "npx create-expo-app")
|
|
67
|
+
*/
|
|
68
|
+
getScaffoldCommand(projectName: string): {
|
|
69
|
+
command: string;
|
|
70
|
+
args: string[];
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Registry entry for a discovered plugin
|
|
75
|
+
*/
|
|
76
|
+
export interface PluginRegistryEntry {
|
|
77
|
+
name: string;
|
|
78
|
+
target: string;
|
|
79
|
+
version: string;
|
|
80
|
+
modulePath: string;
|
|
81
|
+
isBuiltIn: boolean;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Supported deployment platforms
|
|
85
|
+
*/
|
|
86
|
+
export type DeploymentPlatform = "vercel" | "firebase" | "netlify" | "codemagic";
|
|
87
|
+
/**
|
|
88
|
+
* Deployment configuration
|
|
89
|
+
*/
|
|
90
|
+
export interface DeploymentConfig {
|
|
91
|
+
platform: DeploymentPlatform;
|
|
92
|
+
projectType: "flutter" | "nextjs";
|
|
93
|
+
buildCommand: string;
|
|
94
|
+
outputDir: string;
|
|
95
|
+
envVars?: Record<string, string>;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Preview server configuration
|
|
99
|
+
*/
|
|
100
|
+
export interface PreviewConfig {
|
|
101
|
+
projectType: "flutter" | "nextjs";
|
|
102
|
+
command: string;
|
|
103
|
+
args: string[];
|
|
104
|
+
watchPatterns: string[];
|
|
105
|
+
port?: number;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Request for AI-powered code generation
|
|
109
|
+
*/
|
|
110
|
+
export interface AIGenerationRequest {
|
|
111
|
+
systemPrompt: string;
|
|
112
|
+
userPrompt: string;
|
|
113
|
+
expectedFormat: "code" | "json" | "markdown";
|
|
114
|
+
maxTokens?: number;
|
|
115
|
+
temperature?: number;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Parsed response from AI generation
|
|
119
|
+
*/
|
|
120
|
+
export interface AIGenerationResponse {
|
|
121
|
+
raw: string;
|
|
122
|
+
parsed?: FileSystemMap;
|
|
123
|
+
isValid: boolean;
|
|
124
|
+
validationErrors?: string[];
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|