@wix/ditto-codegen-public 1.0.313 → 1.0.315
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 +209 -54
- package/package.json +2 -2
package/dist/out.js
CHANGED
|
@@ -12095,7 +12095,8 @@ var require_app_builder = __commonJS({
|
|
|
12095
12095
|
{ filename: "codegen-instructions.md", content: codegen_rules_1.CODEGEN_RULES }
|
|
12096
12096
|
],
|
|
12097
12097
|
askRules: [{ filename: "ask-instructions.md", content: ask_rules_1.ASK_RULES }],
|
|
12098
|
-
decisionCheckers: [pre_run_decision_1.checkSiteUIDecision]
|
|
12098
|
+
decisionCheckers: [pre_run_decision_1.checkSiteUIDecision],
|
|
12099
|
+
hooks: []
|
|
12099
12100
|
};
|
|
12100
12101
|
}
|
|
12101
12102
|
});
|
|
@@ -12113,20 +12114,93 @@ var require_studio_2 = __commonJS({
|
|
|
12113
12114
|
{ filename: "codegen-instructions.md", content: codegen_rules_1.CODEGEN_RULES }
|
|
12114
12115
|
],
|
|
12115
12116
|
askRules: [{ filename: "ask-instructions.md", content: ask_rules_1.ASK_RULES }],
|
|
12116
|
-
decisionCheckers: []
|
|
12117
|
+
decisionCheckers: [],
|
|
12118
|
+
hooks: []
|
|
12117
12119
|
};
|
|
12118
12120
|
}
|
|
12119
12121
|
});
|
|
12120
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
|
+
|
|
12121
12190
|
// dist/environments/index.js
|
|
12122
12191
|
var require_environments = __commonJS({
|
|
12123
12192
|
"dist/environments/index.js"(exports2) {
|
|
12124
12193
|
"use strict";
|
|
12125
12194
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
12195
|
+
exports2.getActiveHooks = void 0;
|
|
12126
12196
|
exports2.getCodegenEnvironmentConfig = getCodegenEnvironmentConfig;
|
|
12127
12197
|
var types_1 = require_types_impl();
|
|
12128
12198
|
var app_builder_1 = require_app_builder();
|
|
12129
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
|
+
} });
|
|
12130
12204
|
function getCodegenEnvironmentConfig(environment) {
|
|
12131
12205
|
switch (environment) {
|
|
12132
12206
|
case types_1.Environment.STUDIO_2:
|
|
@@ -12531,26 +12605,69 @@ var require_cost_tracker = __commonJS({
|
|
|
12531
12605
|
}
|
|
12532
12606
|
});
|
|
12533
12607
|
|
|
12608
|
+
// dist/opencode-integration/task-tracker/init-task.js
|
|
12609
|
+
var require_init_task = __commonJS({
|
|
12610
|
+
"dist/opencode-integration/task-tracker/init-task.js"(exports2) {
|
|
12611
|
+
"use strict";
|
|
12612
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
12613
|
+
exports2.completeInitTask = completeInitTask;
|
|
12614
|
+
var ditto_codegen_types_12 = require_dist4();
|
|
12615
|
+
var codeGenerationService_12 = require_codeGenerationService();
|
|
12616
|
+
var logger_12 = require_logger();
|
|
12617
|
+
async function completeInitTask(ctx) {
|
|
12618
|
+
const { store } = ctx;
|
|
12619
|
+
if (store?.isCompleted || store?.kind !== ditto_codegen_types_12.TaskKind.INIT_CODEGEN)
|
|
12620
|
+
return;
|
|
12621
|
+
if (!store.jobId || !store.taskId)
|
|
12622
|
+
return;
|
|
12623
|
+
store.isCompleted = true;
|
|
12624
|
+
try {
|
|
12625
|
+
await codeGenerationService_12.codeGenerationService.updateTask(store.jobId, store.taskId, ditto_codegen_types_12.Status.COMPLETED, {});
|
|
12626
|
+
logger_12.logger.info("[OpenCode] Completed init task before sub-tasks");
|
|
12627
|
+
} catch (error) {
|
|
12628
|
+
logger_12.logger.error("[OpenCode] Failed to complete init task", {
|
|
12629
|
+
error: error instanceof Error ? error.message : String(error)
|
|
12630
|
+
});
|
|
12631
|
+
}
|
|
12632
|
+
}
|
|
12633
|
+
}
|
|
12634
|
+
});
|
|
12635
|
+
|
|
12534
12636
|
// dist/opencode-integration/task-tracker/extension-handler.js
|
|
12535
12637
|
var require_extension_handler = __commonJS({
|
|
12536
12638
|
"dist/opencode-integration/task-tracker/extension-handler.js"(exports2) {
|
|
12537
12639
|
"use strict";
|
|
12538
12640
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
12539
12641
|
exports2.ExtensionTaskHandler = void 0;
|
|
12642
|
+
exports2.buildExtensionTaskPayload = buildExtensionTaskPayload;
|
|
12540
12643
|
var promises_1 = require("fs/promises");
|
|
12541
12644
|
var path_1 = require("path");
|
|
12542
12645
|
var ditto_codegen_types_12 = require_dist4();
|
|
12543
12646
|
var codeGenerationService_12 = require_codeGenerationService();
|
|
12544
12647
|
var logger_12 = require_logger();
|
|
12545
12648
|
var constants_1 = require_constants5();
|
|
12649
|
+
var init_task_1 = require_init_task();
|
|
12650
|
+
function buildExtensionTaskPayload(tracked, collectedFiles) {
|
|
12651
|
+
if (!tracked.extensionFolder)
|
|
12652
|
+
return {};
|
|
12653
|
+
const extensionFiles = collectedFiles.filter((f) => f.path.startsWith(tracked.extensionFolder));
|
|
12654
|
+
return {
|
|
12655
|
+
taskOutput: {
|
|
12656
|
+
files: extensionFiles.map((f) => ({
|
|
12657
|
+
path: f.path,
|
|
12658
|
+
operation: f.operation
|
|
12659
|
+
}))
|
|
12660
|
+
}
|
|
12661
|
+
};
|
|
12662
|
+
}
|
|
12546
12663
|
var ExtensionTaskHandler = class {
|
|
12547
12664
|
constructor() {
|
|
12548
|
-
this.
|
|
12665
|
+
this.extensionTypesByPath = /* @__PURE__ */ new Map();
|
|
12549
12666
|
}
|
|
12550
12667
|
getExtensionTypesCreated() {
|
|
12551
|
-
return Array.from(this.
|
|
12668
|
+
return Array.from(this.extensionTypesByPath.values());
|
|
12552
12669
|
}
|
|
12553
|
-
/** Inspects a write/edit event;
|
|
12670
|
+
/** Inspects a write/edit event; creates a RUNNING sub-task on first sight, completes on the completed event. */
|
|
12554
12671
|
async handle(tool, state, ctx) {
|
|
12555
12672
|
const filePath = state.input?.filePath || state.title || "";
|
|
12556
12673
|
if (!(0, constants_1.isExtensionsFile)(filePath))
|
|
@@ -12561,13 +12678,25 @@ var require_extension_handler = __commonJS({
|
|
|
12561
12678
|
const extension = (0, constants_1.detectExtension)(content);
|
|
12562
12679
|
if (!extension)
|
|
12563
12680
|
return;
|
|
12564
|
-
await this.ensureCreatedBy(filePath, ctx.workingDirectory);
|
|
12565
12681
|
const normalizedPath = (0, constants_1.normalizeFilePath)(filePath);
|
|
12566
|
-
|
|
12682
|
+
const isCompleted = state.status === "completed";
|
|
12683
|
+
if (isCompleted) {
|
|
12684
|
+
await this.ensureCreatedBy(filePath, ctx.workingDirectory);
|
|
12685
|
+
}
|
|
12686
|
+
if (!this.extensionTypesByPath.has(normalizedPath)) {
|
|
12687
|
+
this.extensionTypesByPath.set(normalizedPath, extension.extensionType);
|
|
12688
|
+
await (0, init_task_1.completeInitTask)(ctx);
|
|
12689
|
+
await this.createExtensionTask(normalizedPath, extension.label, filePath, ctx);
|
|
12690
|
+
}
|
|
12691
|
+
if (!isCompleted)
|
|
12692
|
+
return;
|
|
12693
|
+
const tracked = ctx.trackedTasks.get(`ext-${normalizedPath}`);
|
|
12694
|
+
if (!tracked || tracked.status !== ditto_codegen_types_12.Status.RUNNING)
|
|
12695
|
+
return;
|
|
12696
|
+
const jobContext = ctx.getJobContext();
|
|
12697
|
+
if (!jobContext)
|
|
12567
12698
|
return;
|
|
12568
|
-
this.
|
|
12569
|
-
await this.completeInitTask(ctx);
|
|
12570
|
-
await this.createExtensionTask(normalizedPath, extension.label, filePath, ctx);
|
|
12699
|
+
await this.completeExtensionTask(tracked, jobContext.jobId, ctx);
|
|
12571
12700
|
}
|
|
12572
12701
|
/** Reads an extension file from disk and injects createdBy if missing. */
|
|
12573
12702
|
async ensureCreatedBy(filePath, workingDirectory) {
|
|
@@ -12590,24 +12719,7 @@ var require_extension_handler = __commonJS({
|
|
|
12590
12719
|
});
|
|
12591
12720
|
}
|
|
12592
12721
|
}
|
|
12593
|
-
/**
|
|
12594
|
-
async completeInitTask(ctx) {
|
|
12595
|
-
const { store } = ctx;
|
|
12596
|
-
if (store?.isCompleted || store?.kind !== ditto_codegen_types_12.TaskKind.INIT_CODEGEN)
|
|
12597
|
-
return;
|
|
12598
|
-
if (!store.jobId || !store.taskId)
|
|
12599
|
-
return;
|
|
12600
|
-
store.isCompleted = true;
|
|
12601
|
-
try {
|
|
12602
|
-
await codeGenerationService_12.codeGenerationService.updateTask(store.jobId, store.taskId, ditto_codegen_types_12.Status.COMPLETED, {});
|
|
12603
|
-
logger_12.logger.info("[OpenCode] Completed init task before extension tasks");
|
|
12604
|
-
} catch (error) {
|
|
12605
|
-
logger_12.logger.error("[OpenCode] Failed to complete init task", {
|
|
12606
|
-
error: error instanceof Error ? error.message : String(error)
|
|
12607
|
-
});
|
|
12608
|
-
}
|
|
12609
|
-
}
|
|
12610
|
-
/** Registers a new RUNNING sub-task in the job service for a detected extension. */
|
|
12722
|
+
/** Registers a RUNNING sub-task in the job service for a detected extension. */
|
|
12611
12723
|
async createExtensionTask(normalizedPath, extensionType, originalPath, ctx) {
|
|
12612
12724
|
const jobContext = ctx.getJobContext();
|
|
12613
12725
|
if (!jobContext)
|
|
@@ -12618,12 +12730,13 @@ var require_extension_handler = __commonJS({
|
|
|
12618
12730
|
ctx.taskCounter++;
|
|
12619
12731
|
const taskId = `${jobContext.taskId}-ext-${ctx.taskCounter}`;
|
|
12620
12732
|
const extensionFolder = normalizedPath.substring(0, normalizedPath.lastIndexOf("/") + 1);
|
|
12621
|
-
|
|
12733
|
+
const tracked = {
|
|
12622
12734
|
taskId,
|
|
12623
12735
|
description,
|
|
12624
12736
|
status: ditto_codegen_types_12.Status.RUNNING,
|
|
12625
12737
|
extensionFolder
|
|
12626
|
-
}
|
|
12738
|
+
};
|
|
12739
|
+
ctx.trackedTasks.set(extensionKey, tracked);
|
|
12627
12740
|
try {
|
|
12628
12741
|
await codeGenerationService_12.codeGenerationService.addTask(jobContext.jobId, {
|
|
12629
12742
|
id: taskId,
|
|
@@ -12640,6 +12753,20 @@ var require_extension_handler = __commonJS({
|
|
|
12640
12753
|
});
|
|
12641
12754
|
}
|
|
12642
12755
|
}
|
|
12756
|
+
/** Marks the extension task COMPLETED with the file list collected so far for its folder. */
|
|
12757
|
+
async completeExtensionTask(tracked, jobId, ctx) {
|
|
12758
|
+
tracked.status = ditto_codegen_types_12.Status.COMPLETED;
|
|
12759
|
+
try {
|
|
12760
|
+
await codeGenerationService_12.codeGenerationService.updateTask(jobId, tracked.taskId, ditto_codegen_types_12.Status.COMPLETED, buildExtensionTaskPayload(tracked, ctx.collectedFiles));
|
|
12761
|
+
logger_12.logger.info("[OpenCode] Completed extension task", {
|
|
12762
|
+
description: tracked.description
|
|
12763
|
+
});
|
|
12764
|
+
} catch (error) {
|
|
12765
|
+
logger_12.logger.error("[OpenCode] Failed to complete extension task", {
|
|
12766
|
+
error: error instanceof Error ? error.message : String(error)
|
|
12767
|
+
});
|
|
12768
|
+
}
|
|
12769
|
+
}
|
|
12643
12770
|
};
|
|
12644
12771
|
exports2.ExtensionTaskHandler = ExtensionTaskHandler;
|
|
12645
12772
|
}
|
|
@@ -12655,6 +12782,7 @@ var require_category_handler = __commonJS({
|
|
|
12655
12782
|
var codeGenerationService_12 = require_codeGenerationService();
|
|
12656
12783
|
var logger_12 = require_logger();
|
|
12657
12784
|
var constants_1 = require_constants5();
|
|
12785
|
+
var init_task_1 = require_init_task();
|
|
12658
12786
|
var CategoryKey;
|
|
12659
12787
|
(function(CategoryKey2) {
|
|
12660
12788
|
CategoryKey2["CodeSearch"] = "code-search";
|
|
@@ -12690,10 +12818,10 @@ var require_category_handler = __commonJS({
|
|
|
12690
12818
|
await this.track(CategoryKey.RunCommands, ctx, state);
|
|
12691
12819
|
}
|
|
12692
12820
|
if (tool === "validate") {
|
|
12693
|
-
await this.track(CategoryKey.Validate, ctx
|
|
12821
|
+
await this.track(CategoryKey.Validate, ctx);
|
|
12694
12822
|
}
|
|
12695
12823
|
if (constants_1.WRITE_TOOLS.has(tool)) {
|
|
12696
|
-
await this.track(CategoryKey.WriteCode, ctx);
|
|
12824
|
+
await this.track(CategoryKey.WriteCode, ctx, state);
|
|
12697
12825
|
}
|
|
12698
12826
|
}
|
|
12699
12827
|
async trackLoadSkill(ctx, state) {
|
|
@@ -12712,6 +12840,7 @@ var require_category_handler = __commonJS({
|
|
|
12712
12840
|
const jobContext = ctx.getJobContext();
|
|
12713
12841
|
if (!jobContext)
|
|
12714
12842
|
return;
|
|
12843
|
+
await (0, init_task_1.completeInitTask)(ctx);
|
|
12715
12844
|
const description = CATEGORY_DESCRIPTIONS[key];
|
|
12716
12845
|
const taskId = `${jobContext.taskId}-${key}`;
|
|
12717
12846
|
ctx.trackedTasks.set(key, {
|
|
@@ -12774,6 +12903,7 @@ var require_task_tracker = __commonJS({
|
|
|
12774
12903
|
var constants_1 = require_constants5();
|
|
12775
12904
|
var extension_handler_1 = require_extension_handler();
|
|
12776
12905
|
var category_handler_1 = require_category_handler();
|
|
12906
|
+
var hooks_1 = require_hooks();
|
|
12777
12907
|
var OpenCodeTaskTracker = class {
|
|
12778
12908
|
constructor(workingDirectory) {
|
|
12779
12909
|
this.trackedTasks = /* @__PURE__ */ new Map();
|
|
@@ -12830,14 +12960,16 @@ var require_task_tracker = __commonJS({
|
|
|
12830
12960
|
const ctx = this.handlerContext;
|
|
12831
12961
|
await this.categoryHandler.handle(tool, ctx, state);
|
|
12832
12962
|
this.taskCounter = ctx.taskCounter;
|
|
12963
|
+
await (0, hooks_1.runOnToolUse)((0, hooks_1.getActiveHooks)(), { tool, state });
|
|
12833
12964
|
}
|
|
12834
12965
|
async handleWriteEvent(tool, state) {
|
|
12835
|
-
|
|
12836
|
-
return;
|
|
12966
|
+
const isCompleted = state.status === "completed";
|
|
12837
12967
|
const fileStates = tool === "batch-write" ? this.expandBatchWrite(state) : [state];
|
|
12838
12968
|
const effectiveTool = tool === "batch-write" ? "write" : tool;
|
|
12839
12969
|
for (const fileState of fileStates) {
|
|
12840
|
-
|
|
12970
|
+
if (isCompleted) {
|
|
12971
|
+
this.trackFileChange(effectiveTool, fileState);
|
|
12972
|
+
}
|
|
12841
12973
|
const ctx = this.handlerContext;
|
|
12842
12974
|
await this.extensionHandler.handle(effectiveTool, fileState, ctx);
|
|
12843
12975
|
this.taskCounter = ctx.taskCounter;
|
|
@@ -12845,7 +12977,7 @@ var require_task_tracker = __commonJS({
|
|
|
12845
12977
|
}
|
|
12846
12978
|
expandBatchWrite(state) {
|
|
12847
12979
|
return (state.input?.files ?? []).map((f) => ({
|
|
12848
|
-
status:
|
|
12980
|
+
status: state.status,
|
|
12849
12981
|
input: { filePath: f.path, content: f.content },
|
|
12850
12982
|
metadata: { exists: false }
|
|
12851
12983
|
}));
|
|
@@ -12866,21 +12998,6 @@ var require_task_tracker = __commonJS({
|
|
|
12866
12998
|
logger_12.logger.info("[OpenCode] Loaded skill", { skillName });
|
|
12867
12999
|
await this.categoryHandler.trackLoadSkill(this.handlerContext, state);
|
|
12868
13000
|
}
|
|
12869
|
-
/** Builds the task completion payload — includes file list for extension tasks. */
|
|
12870
|
-
buildTaskPayload(tracked) {
|
|
12871
|
-
if (tracked.extensionFolder) {
|
|
12872
|
-
const extensionFiles = this.collectedFiles.filter((f) => f.path.startsWith(tracked.extensionFolder));
|
|
12873
|
-
return {
|
|
12874
|
-
taskOutput: {
|
|
12875
|
-
files: extensionFiles.map((f) => ({
|
|
12876
|
-
path: f.path,
|
|
12877
|
-
operation: f.operation
|
|
12878
|
-
}))
|
|
12879
|
-
}
|
|
12880
|
-
};
|
|
12881
|
-
}
|
|
12882
|
-
return {};
|
|
12883
|
-
}
|
|
12884
13001
|
/** Marks all still-running tracked tasks as COMPLETED (called on successful process exit). */
|
|
12885
13002
|
async completeRemainingTasks() {
|
|
12886
13003
|
const jobContext = this.getJobContext();
|
|
@@ -12888,7 +13005,7 @@ var require_task_tracker = __commonJS({
|
|
|
12888
13005
|
return;
|
|
12889
13006
|
for (const [, tracked] of this.trackedTasks) {
|
|
12890
13007
|
if (tracked.status === ditto_codegen_types_12.Status.RUNNING) {
|
|
12891
|
-
const payload =
|
|
13008
|
+
const payload = (0, extension_handler_1.buildExtensionTaskPayload)(tracked, this.collectedFiles);
|
|
12892
13009
|
try {
|
|
12893
13010
|
await codeGenerationService_12.codeGenerationService.updateTask(jobContext.jobId, tracked.taskId, ditto_codegen_types_12.Status.COMPLETED, payload);
|
|
12894
13011
|
logger_12.logger.info("[OpenCode] Completed task", {
|
|
@@ -17895,6 +18012,7 @@ var require_opencode_init = __commonJS({
|
|
|
17895
18012
|
var pre_run_decision_1 = require_pre_run_decision();
|
|
17896
18013
|
var experiments_1 = require_experiments();
|
|
17897
18014
|
var environments_12 = require_environments();
|
|
18015
|
+
var hooks_1 = require_hooks();
|
|
17898
18016
|
var runOpencodeInitFlow = async (blueprint, history, agentData) => {
|
|
17899
18017
|
const store = job_context_storage_12.jobContextStorage.getStore();
|
|
17900
18018
|
if (!store?.jobId || !store?.taskId) {
|
|
@@ -17919,6 +18037,7 @@ var require_opencode_init = __commonJS({
|
|
|
17919
18037
|
Task_type: kind
|
|
17920
18038
|
});
|
|
17921
18039
|
const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
|
|
18040
|
+
let caughtError;
|
|
17922
18041
|
try {
|
|
17923
18042
|
(0, agent_io_1.writeAgentInput)(outputPath, agentData);
|
|
17924
18043
|
let finalBlueprint = blueprint;
|
|
@@ -17967,6 +18086,7 @@ var require_opencode_init = __commonJS({
|
|
|
17967
18086
|
});
|
|
17968
18087
|
logger_12.logger.info("[OpenCode Init] Completed task", { taskId });
|
|
17969
18088
|
} catch (error) {
|
|
18089
|
+
caughtError = error;
|
|
17970
18090
|
const codegenError = (0, ditto_codegen_types_2.toCodegenError)(error);
|
|
17971
18091
|
const agentOutput = (0, agent_io_1.readAgentOutput)(outputPath);
|
|
17972
18092
|
await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
|
|
@@ -17998,6 +18118,11 @@ var require_opencode_init = __commonJS({
|
|
|
17998
18118
|
taskId,
|
|
17999
18119
|
error: error instanceof Error ? error.message : String(error)
|
|
18000
18120
|
});
|
|
18121
|
+
} finally {
|
|
18122
|
+
await (0, hooks_1.runOnFlowEnd)((0, hooks_1.getActiveHooks)(), {
|
|
18123
|
+
failed: caughtError !== void 0,
|
|
18124
|
+
error: caughtError
|
|
18125
|
+
});
|
|
18001
18126
|
}
|
|
18002
18127
|
};
|
|
18003
18128
|
exports2.runOpencodeInitFlow = runOpencodeInitFlow;
|
|
@@ -18073,6 +18198,7 @@ var require_opencode_iterate = __commonJS({
|
|
|
18073
18198
|
var logger_12 = require_logger();
|
|
18074
18199
|
var config_1 = require_config();
|
|
18075
18200
|
var biEvents_1 = require_biEvents();
|
|
18201
|
+
var hooks_1 = require_hooks();
|
|
18076
18202
|
var runOpencodeIterateFlow = async (chatHistory, agentData) => {
|
|
18077
18203
|
const store = job_context_storage_12.jobContextStorage.getStore();
|
|
18078
18204
|
if (!store?.jobId || !store?.taskId) {
|
|
@@ -18097,6 +18223,7 @@ var require_opencode_iterate = __commonJS({
|
|
|
18097
18223
|
Task_type: kind
|
|
18098
18224
|
});
|
|
18099
18225
|
const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
|
|
18226
|
+
let caughtError;
|
|
18100
18227
|
try {
|
|
18101
18228
|
(0, agent_io_1.writeAgentInput)(outputPath, agentData);
|
|
18102
18229
|
const iterationOrchestrator = new OpenCodeIterationOrchestrator_1.OpenCodeIterationOrchestrator();
|
|
@@ -18132,6 +18259,7 @@ var require_opencode_iterate = __commonJS({
|
|
|
18132
18259
|
});
|
|
18133
18260
|
logger_12.logger.info("[OpenCode Iterate] Completed task", { taskId });
|
|
18134
18261
|
} catch (error) {
|
|
18262
|
+
caughtError = error;
|
|
18135
18263
|
const codegenError = (0, ditto_codegen_types_2.toCodegenError)(error);
|
|
18136
18264
|
const agentOutput = (0, agent_io_1.readAgentOutput)(outputPath);
|
|
18137
18265
|
await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
|
|
@@ -18162,6 +18290,11 @@ var require_opencode_iterate = __commonJS({
|
|
|
18162
18290
|
taskId,
|
|
18163
18291
|
error: error instanceof Error ? error.message : String(error)
|
|
18164
18292
|
});
|
|
18293
|
+
} finally {
|
|
18294
|
+
await (0, hooks_1.runOnFlowEnd)((0, hooks_1.getActiveHooks)(), {
|
|
18295
|
+
failed: caughtError !== void 0,
|
|
18296
|
+
error: caughtError
|
|
18297
|
+
});
|
|
18165
18298
|
}
|
|
18166
18299
|
};
|
|
18167
18300
|
exports2.runOpencodeIterateFlow = runOpencodeIterateFlow;
|
|
@@ -18648,6 +18781,27 @@ async function main(ctx) {
|
|
|
18648
18781
|
var getFirstTask = (job) => {
|
|
18649
18782
|
return job.tasks?.[0];
|
|
18650
18783
|
};
|
|
18784
|
+
function buildHooksForTask(jobId, taskId, kind, payload) {
|
|
18785
|
+
if (kind !== CodeGenService_1.TaskKind.INIT_CODEGEN && kind !== CodeGenService_1.TaskKind.ITERATE_CODEGEN) {
|
|
18786
|
+
return void 0;
|
|
18787
|
+
}
|
|
18788
|
+
const userInput = extractUserInput(kind, payload);
|
|
18789
|
+
return (0, environments_1.getCodegenEnvironmentConfig)().hooks.map((factory) => factory({ projectId: context_1.ctx.projectId, jobId, taskId, kind, userInput }));
|
|
18790
|
+
}
|
|
18791
|
+
function extractUserInput(kind, payload) {
|
|
18792
|
+
if (kind === CodeGenService_1.TaskKind.INIT_CODEGEN) {
|
|
18793
|
+
return payload.blueprint?.summary?.trim() || void 0;
|
|
18794
|
+
}
|
|
18795
|
+
if (kind === CodeGenService_1.TaskKind.ITERATE_CODEGEN) {
|
|
18796
|
+
const history = payload.history ?? [];
|
|
18797
|
+
for (let i = history.length - 1; i >= 0; i--) {
|
|
18798
|
+
if (history[i].role === "USER") {
|
|
18799
|
+
return history[i].text.trim() || void 0;
|
|
18800
|
+
}
|
|
18801
|
+
}
|
|
18802
|
+
}
|
|
18803
|
+
return void 0;
|
|
18804
|
+
}
|
|
18651
18805
|
async function processJob(job) {
|
|
18652
18806
|
if (!job.id) {
|
|
18653
18807
|
throw new ditto_codegen_types_1.MissingJobIdError();
|
|
@@ -18658,14 +18812,15 @@ async function processJob(job) {
|
|
|
18658
18812
|
logger_1.logger.warn("[Job] No initial task found, skipping", { jobId });
|
|
18659
18813
|
return;
|
|
18660
18814
|
}
|
|
18661
|
-
|
|
18815
|
+
const payload = task.payload ?? {};
|
|
18816
|
+
const hooks = buildHooksForTask(jobId, task.id, task.kind, payload);
|
|
18817
|
+
await job_context_storage_1.jobContextStorage.run({ jobId, taskId: task.id, kind: task.kind, hooks }, async () => {
|
|
18662
18818
|
logger_1.logger.info("[Job] Start processing", { taskKind: task.kind });
|
|
18663
18819
|
context_1.ctx.setJobStatus(jobId, CodeGenService_1.Status.RUNNING);
|
|
18664
18820
|
logger_1.logger.info("[Job] Marked job RUNNING", { initTaskId: task.id });
|
|
18665
18821
|
jobCancellationMonitor.start(jobId);
|
|
18666
18822
|
jobTimeoutMonitor.start(jobId);
|
|
18667
18823
|
try {
|
|
18668
|
-
const payload = task.payload ?? {};
|
|
18669
18824
|
const history = payload.history ?? [];
|
|
18670
18825
|
const blueprint = payload.blueprint;
|
|
18671
18826
|
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.315",
|
|
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": "a729cdb06df2c35379619880dc60336a5505a5a382a7b737b17b1c05"
|
|
31
31
|
}
|