@wix/ditto-codegen-public 1.0.312 → 1.0.314
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/dist/out.js +125 -5
- package/package.json +2 -2
package/dist/out.js
CHANGED
|
@@ -504,6 +504,7 @@ var require_context = __commonJS({
|
|
|
504
504
|
projectId: process.env.PROJECT_ID || "test",
|
|
505
505
|
appNamespace: process.env.APP_NAMESPACE,
|
|
506
506
|
codeIdentifier: process.env.CODE_IDENTIFIER,
|
|
507
|
+
metasiteId: process.env.METASITE_ID,
|
|
507
508
|
hasActiveJobs: () => {
|
|
508
509
|
return Object.keys(exports2.ctx.activeJobs).some((jobId) => exports2.ctx.activeJobs[jobId] === types_1.Status.RUNNING);
|
|
509
510
|
},
|
|
@@ -11434,6 +11435,7 @@ var require_prompt_utils = __commonJS({
|
|
|
11434
11435
|
function buildAppContext() {
|
|
11435
11436
|
const appNamespace = process.env.APP_NAMESPACE;
|
|
11436
11437
|
const codeIdentifier = process.env.CODE_IDENTIFIER;
|
|
11438
|
+
const metasiteId = process.env.METASITE_ID;
|
|
11437
11439
|
const parts = [];
|
|
11438
11440
|
if (appNamespace) {
|
|
11439
11441
|
parts.push(`APP_NAMESPACE: ${appNamespace}
|
|
@@ -11443,6 +11445,9 @@ Use this namespace when creating data collections (for idSuffix scoping).`);
|
|
|
11443
11445
|
parts.push(`CODE_IDENTIFIER: ${codeIdentifier}
|
|
11444
11446
|
When generating editor React component or function library extensions, use this identifier as the type prefix (e.g. type: '${codeIdentifier}.ComponentName').`);
|
|
11445
11447
|
}
|
|
11448
|
+
if (metasiteId) {
|
|
11449
|
+
parts.push(`METASITE_ID: ${metasiteId}`);
|
|
11450
|
+
}
|
|
11446
11451
|
return parts.join("\n\n");
|
|
11447
11452
|
}
|
|
11448
11453
|
function extractUserRequestAndFilteredHistory(chatHistory) {
|
|
@@ -12090,7 +12095,8 @@ var require_app_builder = __commonJS({
|
|
|
12090
12095
|
{ filename: "codegen-instructions.md", content: codegen_rules_1.CODEGEN_RULES }
|
|
12091
12096
|
],
|
|
12092
12097
|
askRules: [{ filename: "ask-instructions.md", content: ask_rules_1.ASK_RULES }],
|
|
12093
|
-
decisionCheckers: [pre_run_decision_1.checkSiteUIDecision]
|
|
12098
|
+
decisionCheckers: [pre_run_decision_1.checkSiteUIDecision],
|
|
12099
|
+
hooks: []
|
|
12094
12100
|
};
|
|
12095
12101
|
}
|
|
12096
12102
|
});
|
|
@@ -12108,20 +12114,93 @@ var require_studio_2 = __commonJS({
|
|
|
12108
12114
|
{ filename: "codegen-instructions.md", content: codegen_rules_1.CODEGEN_RULES }
|
|
12109
12115
|
],
|
|
12110
12116
|
askRules: [{ filename: "ask-instructions.md", content: ask_rules_1.ASK_RULES }],
|
|
12111
|
-
decisionCheckers: []
|
|
12117
|
+
decisionCheckers: [],
|
|
12118
|
+
hooks: []
|
|
12112
12119
|
};
|
|
12113
12120
|
}
|
|
12114
12121
|
});
|
|
12115
12122
|
|
|
12123
|
+
// dist/environments/hooks/run-hooks.js
|
|
12124
|
+
var require_run_hooks = __commonJS({
|
|
12125
|
+
"dist/environments/hooks/run-hooks.js"(exports2) {
|
|
12126
|
+
"use strict";
|
|
12127
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
12128
|
+
exports2.getActiveHooks = getActiveHooks;
|
|
12129
|
+
exports2.runOnToolUse = runOnToolUse;
|
|
12130
|
+
exports2.runOnFlowEnd = runOnFlowEnd;
|
|
12131
|
+
var logger_12 = require_logger();
|
|
12132
|
+
var job_context_storage_12 = require_job_context_storage();
|
|
12133
|
+
function getActiveHooks() {
|
|
12134
|
+
return job_context_storage_12.jobContextStorage.getStore()?.hooks ?? [];
|
|
12135
|
+
}
|
|
12136
|
+
async function runOnToolUse(hooks, event) {
|
|
12137
|
+
for (const hook of hooks) {
|
|
12138
|
+
if (!hook.onToolUse)
|
|
12139
|
+
continue;
|
|
12140
|
+
try {
|
|
12141
|
+
await hook.onToolUse(event);
|
|
12142
|
+
} catch (error) {
|
|
12143
|
+
logger_12.logger.error("[Hook] onToolUse failed", {
|
|
12144
|
+
hook: hook.name,
|
|
12145
|
+
error: error instanceof Error ? error.message : String(error)
|
|
12146
|
+
});
|
|
12147
|
+
}
|
|
12148
|
+
}
|
|
12149
|
+
}
|
|
12150
|
+
async function runOnFlowEnd(hooks, ctx) {
|
|
12151
|
+
for (const hook of hooks) {
|
|
12152
|
+
if (!hook.onFlowEnd)
|
|
12153
|
+
continue;
|
|
12154
|
+
try {
|
|
12155
|
+
await hook.onFlowEnd(ctx);
|
|
12156
|
+
} catch (hookError) {
|
|
12157
|
+
if (ctx.failed) {
|
|
12158
|
+
logger_12.logger.error("[Hook] onFlowEnd failed after flow failure", {
|
|
12159
|
+
hook: hook.name,
|
|
12160
|
+
error: hookError instanceof Error ? hookError.message : String(hookError)
|
|
12161
|
+
});
|
|
12162
|
+
continue;
|
|
12163
|
+
}
|
|
12164
|
+
throw hookError;
|
|
12165
|
+
}
|
|
12166
|
+
}
|
|
12167
|
+
}
|
|
12168
|
+
}
|
|
12169
|
+
});
|
|
12170
|
+
|
|
12171
|
+
// dist/environments/hooks/index.js
|
|
12172
|
+
var require_hooks = __commonJS({
|
|
12173
|
+
"dist/environments/hooks/index.js"(exports2) {
|
|
12174
|
+
"use strict";
|
|
12175
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
12176
|
+
exports2.runOnFlowEnd = exports2.runOnToolUse = exports2.getActiveHooks = void 0;
|
|
12177
|
+
var run_hooks_1 = require_run_hooks();
|
|
12178
|
+
Object.defineProperty(exports2, "getActiveHooks", { enumerable: true, get: function() {
|
|
12179
|
+
return run_hooks_1.getActiveHooks;
|
|
12180
|
+
} });
|
|
12181
|
+
Object.defineProperty(exports2, "runOnToolUse", { enumerable: true, get: function() {
|
|
12182
|
+
return run_hooks_1.runOnToolUse;
|
|
12183
|
+
} });
|
|
12184
|
+
Object.defineProperty(exports2, "runOnFlowEnd", { enumerable: true, get: function() {
|
|
12185
|
+
return run_hooks_1.runOnFlowEnd;
|
|
12186
|
+
} });
|
|
12187
|
+
}
|
|
12188
|
+
});
|
|
12189
|
+
|
|
12116
12190
|
// dist/environments/index.js
|
|
12117
12191
|
var require_environments = __commonJS({
|
|
12118
12192
|
"dist/environments/index.js"(exports2) {
|
|
12119
12193
|
"use strict";
|
|
12120
12194
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
12195
|
+
exports2.getActiveHooks = void 0;
|
|
12121
12196
|
exports2.getCodegenEnvironmentConfig = getCodegenEnvironmentConfig;
|
|
12122
12197
|
var types_1 = require_types_impl();
|
|
12123
12198
|
var app_builder_1 = require_app_builder();
|
|
12124
12199
|
var studio_2_1 = require_studio_2();
|
|
12200
|
+
var hooks_1 = require_hooks();
|
|
12201
|
+
Object.defineProperty(exports2, "getActiveHooks", { enumerable: true, get: function() {
|
|
12202
|
+
return hooks_1.getActiveHooks;
|
|
12203
|
+
} });
|
|
12125
12204
|
function getCodegenEnvironmentConfig(environment) {
|
|
12126
12205
|
switch (environment) {
|
|
12127
12206
|
case types_1.Environment.STUDIO_2:
|
|
@@ -12769,6 +12848,7 @@ var require_task_tracker = __commonJS({
|
|
|
12769
12848
|
var constants_1 = require_constants5();
|
|
12770
12849
|
var extension_handler_1 = require_extension_handler();
|
|
12771
12850
|
var category_handler_1 = require_category_handler();
|
|
12851
|
+
var hooks_1 = require_hooks();
|
|
12772
12852
|
var OpenCodeTaskTracker = class {
|
|
12773
12853
|
constructor(workingDirectory) {
|
|
12774
12854
|
this.trackedTasks = /* @__PURE__ */ new Map();
|
|
@@ -12825,6 +12905,7 @@ var require_task_tracker = __commonJS({
|
|
|
12825
12905
|
const ctx = this.handlerContext;
|
|
12826
12906
|
await this.categoryHandler.handle(tool, ctx, state);
|
|
12827
12907
|
this.taskCounter = ctx.taskCounter;
|
|
12908
|
+
await (0, hooks_1.runOnToolUse)((0, hooks_1.getActiveHooks)(), { tool, state });
|
|
12828
12909
|
}
|
|
12829
12910
|
async handleWriteEvent(tool, state) {
|
|
12830
12911
|
if (state.status !== "completed")
|
|
@@ -17890,6 +17971,7 @@ var require_opencode_init = __commonJS({
|
|
|
17890
17971
|
var pre_run_decision_1 = require_pre_run_decision();
|
|
17891
17972
|
var experiments_1 = require_experiments();
|
|
17892
17973
|
var environments_12 = require_environments();
|
|
17974
|
+
var hooks_1 = require_hooks();
|
|
17893
17975
|
var runOpencodeInitFlow = async (blueprint, history, agentData) => {
|
|
17894
17976
|
const store = job_context_storage_12.jobContextStorage.getStore();
|
|
17895
17977
|
if (!store?.jobId || !store?.taskId) {
|
|
@@ -17914,6 +17996,7 @@ var require_opencode_init = __commonJS({
|
|
|
17914
17996
|
Task_type: kind
|
|
17915
17997
|
});
|
|
17916
17998
|
const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
|
|
17999
|
+
let caughtError;
|
|
17917
18000
|
try {
|
|
17918
18001
|
(0, agent_io_1.writeAgentInput)(outputPath, agentData);
|
|
17919
18002
|
let finalBlueprint = blueprint;
|
|
@@ -17962,6 +18045,7 @@ var require_opencode_init = __commonJS({
|
|
|
17962
18045
|
});
|
|
17963
18046
|
logger_12.logger.info("[OpenCode Init] Completed task", { taskId });
|
|
17964
18047
|
} catch (error) {
|
|
18048
|
+
caughtError = error;
|
|
17965
18049
|
const codegenError = (0, ditto_codegen_types_2.toCodegenError)(error);
|
|
17966
18050
|
const agentOutput = (0, agent_io_1.readAgentOutput)(outputPath);
|
|
17967
18051
|
await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
|
|
@@ -17993,6 +18077,11 @@ var require_opencode_init = __commonJS({
|
|
|
17993
18077
|
taskId,
|
|
17994
18078
|
error: error instanceof Error ? error.message : String(error)
|
|
17995
18079
|
});
|
|
18080
|
+
} finally {
|
|
18081
|
+
await (0, hooks_1.runOnFlowEnd)((0, hooks_1.getActiveHooks)(), {
|
|
18082
|
+
failed: caughtError !== void 0,
|
|
18083
|
+
error: caughtError
|
|
18084
|
+
});
|
|
17996
18085
|
}
|
|
17997
18086
|
};
|
|
17998
18087
|
exports2.runOpencodeInitFlow = runOpencodeInitFlow;
|
|
@@ -18068,6 +18157,7 @@ var require_opencode_iterate = __commonJS({
|
|
|
18068
18157
|
var logger_12 = require_logger();
|
|
18069
18158
|
var config_1 = require_config();
|
|
18070
18159
|
var biEvents_1 = require_biEvents();
|
|
18160
|
+
var hooks_1 = require_hooks();
|
|
18071
18161
|
var runOpencodeIterateFlow = async (chatHistory, agentData) => {
|
|
18072
18162
|
const store = job_context_storage_12.jobContextStorage.getStore();
|
|
18073
18163
|
if (!store?.jobId || !store?.taskId) {
|
|
@@ -18092,6 +18182,7 @@ var require_opencode_iterate = __commonJS({
|
|
|
18092
18182
|
Task_type: kind
|
|
18093
18183
|
});
|
|
18094
18184
|
const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
|
|
18185
|
+
let caughtError;
|
|
18095
18186
|
try {
|
|
18096
18187
|
(0, agent_io_1.writeAgentInput)(outputPath, agentData);
|
|
18097
18188
|
const iterationOrchestrator = new OpenCodeIterationOrchestrator_1.OpenCodeIterationOrchestrator();
|
|
@@ -18127,6 +18218,7 @@ var require_opencode_iterate = __commonJS({
|
|
|
18127
18218
|
});
|
|
18128
18219
|
logger_12.logger.info("[OpenCode Iterate] Completed task", { taskId });
|
|
18129
18220
|
} catch (error) {
|
|
18221
|
+
caughtError = error;
|
|
18130
18222
|
const codegenError = (0, ditto_codegen_types_2.toCodegenError)(error);
|
|
18131
18223
|
const agentOutput = (0, agent_io_1.readAgentOutput)(outputPath);
|
|
18132
18224
|
await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
|
|
@@ -18157,6 +18249,11 @@ var require_opencode_iterate = __commonJS({
|
|
|
18157
18249
|
taskId,
|
|
18158
18250
|
error: error instanceof Error ? error.message : String(error)
|
|
18159
18251
|
});
|
|
18252
|
+
} finally {
|
|
18253
|
+
await (0, hooks_1.runOnFlowEnd)((0, hooks_1.getActiveHooks)(), {
|
|
18254
|
+
failed: caughtError !== void 0,
|
|
18255
|
+
error: caughtError
|
|
18256
|
+
});
|
|
18160
18257
|
}
|
|
18161
18258
|
};
|
|
18162
18259
|
exports2.runOpencodeIterateFlow = runOpencodeIterateFlow;
|
|
@@ -18634,7 +18731,8 @@ async function main(ctx) {
|
|
|
18634
18731
|
logger_1.logger.info("[Startup] CodeGen CLI starting", {
|
|
18635
18732
|
projectId: ctx.projectId,
|
|
18636
18733
|
appNameSpace: ctx.appNamespace,
|
|
18637
|
-
codeIdentifier: ctx.codeIdentifier
|
|
18734
|
+
codeIdentifier: ctx.codeIdentifier,
|
|
18735
|
+
metasiteId: ctx.metasiteId
|
|
18638
18736
|
});
|
|
18639
18737
|
await initOpenCode();
|
|
18640
18738
|
await alwaysOnLoop();
|
|
@@ -18642,6 +18740,27 @@ async function main(ctx) {
|
|
|
18642
18740
|
var getFirstTask = (job) => {
|
|
18643
18741
|
return job.tasks?.[0];
|
|
18644
18742
|
};
|
|
18743
|
+
function buildHooksForTask(jobId, taskId, kind, payload) {
|
|
18744
|
+
if (kind !== CodeGenService_1.TaskKind.INIT_CODEGEN && kind !== CodeGenService_1.TaskKind.ITERATE_CODEGEN) {
|
|
18745
|
+
return void 0;
|
|
18746
|
+
}
|
|
18747
|
+
const userInput = extractUserInput(kind, payload);
|
|
18748
|
+
return (0, environments_1.getCodegenEnvironmentConfig)().hooks.map((factory) => factory({ projectId: context_1.ctx.projectId, jobId, taskId, kind, userInput }));
|
|
18749
|
+
}
|
|
18750
|
+
function extractUserInput(kind, payload) {
|
|
18751
|
+
if (kind === CodeGenService_1.TaskKind.INIT_CODEGEN) {
|
|
18752
|
+
return payload.blueprint?.summary?.trim() || void 0;
|
|
18753
|
+
}
|
|
18754
|
+
if (kind === CodeGenService_1.TaskKind.ITERATE_CODEGEN) {
|
|
18755
|
+
const history = payload.history ?? [];
|
|
18756
|
+
for (let i = history.length - 1; i >= 0; i--) {
|
|
18757
|
+
if (history[i].role === "USER") {
|
|
18758
|
+
return history[i].text.trim() || void 0;
|
|
18759
|
+
}
|
|
18760
|
+
}
|
|
18761
|
+
}
|
|
18762
|
+
return void 0;
|
|
18763
|
+
}
|
|
18645
18764
|
async function processJob(job) {
|
|
18646
18765
|
if (!job.id) {
|
|
18647
18766
|
throw new ditto_codegen_types_1.MissingJobIdError();
|
|
@@ -18652,14 +18771,15 @@ async function processJob(job) {
|
|
|
18652
18771
|
logger_1.logger.warn("[Job] No initial task found, skipping", { jobId });
|
|
18653
18772
|
return;
|
|
18654
18773
|
}
|
|
18655
|
-
|
|
18774
|
+
const payload = task.payload ?? {};
|
|
18775
|
+
const hooks = buildHooksForTask(jobId, task.id, task.kind, payload);
|
|
18776
|
+
await job_context_storage_1.jobContextStorage.run({ jobId, taskId: task.id, kind: task.kind, hooks }, async () => {
|
|
18656
18777
|
logger_1.logger.info("[Job] Start processing", { taskKind: task.kind });
|
|
18657
18778
|
context_1.ctx.setJobStatus(jobId, CodeGenService_1.Status.RUNNING);
|
|
18658
18779
|
logger_1.logger.info("[Job] Marked job RUNNING", { initTaskId: task.id });
|
|
18659
18780
|
jobCancellationMonitor.start(jobId);
|
|
18660
18781
|
jobTimeoutMonitor.start(jobId);
|
|
18661
18782
|
try {
|
|
18662
|
-
const payload = task.payload ?? {};
|
|
18663
18783
|
const history = payload.history ?? [];
|
|
18664
18784
|
const blueprint = payload.blueprint;
|
|
18665
18785
|
const agentData = payload.agentData;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/ditto-codegen-public",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.314",
|
|
4
4
|
"description": "AI-powered Wix CLI app generator - standalone executable",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "node build.mjs",
|
|
@@ -27,5 +27,5 @@
|
|
|
27
27
|
"@wix/ditto-codegen": "1.0.0",
|
|
28
28
|
"esbuild": "^0.27.2"
|
|
29
29
|
},
|
|
30
|
-
"falconPackageHash": "
|
|
30
|
+
"falconPackageHash": "d9b12ec21f21078ba1ac9393765773db4870fefd00a8a85fc542cd50"
|
|
31
31
|
}
|