@wix/ditto-codegen-public 1.0.283 → 1.0.284
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 +165 -151
- package/package.json +2 -2
package/dist/out.js
CHANGED
|
@@ -497,6 +497,7 @@ var require_context = __commonJS({
|
|
|
497
497
|
history: new HistoryManager(),
|
|
498
498
|
projectId: process.env.PROJECT_ID || "test",
|
|
499
499
|
appNamespace: process.env.APP_NAMESPACE,
|
|
500
|
+
codeIdentifier: process.env.CODE_IDENTIFIER,
|
|
500
501
|
hasActiveJobs: () => {
|
|
501
502
|
return Object.keys(exports2.ctx.activeJobs).some((jobId) => exports2.ctx.activeJobs[jobId] === types_1.Status.RUNNING);
|
|
502
503
|
},
|
|
@@ -10211,6 +10212,17 @@ var require_cjs3 = __commonJS({
|
|
|
10211
10212
|
}
|
|
10212
10213
|
});
|
|
10213
10214
|
|
|
10215
|
+
// dist/job-context-storage.js
|
|
10216
|
+
var require_job_context_storage = __commonJS({
|
|
10217
|
+
"dist/job-context-storage.js"(exports2) {
|
|
10218
|
+
"use strict";
|
|
10219
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
10220
|
+
exports2.jobContextStorage = void 0;
|
|
10221
|
+
var async_hooks_1 = require("async_hooks");
|
|
10222
|
+
exports2.jobContextStorage = new async_hooks_1.AsyncLocalStorage();
|
|
10223
|
+
}
|
|
10224
|
+
});
|
|
10225
|
+
|
|
10214
10226
|
// dist/logger.js
|
|
10215
10227
|
var require_logger = __commonJS({
|
|
10216
10228
|
"dist/logger.js"(exports2) {
|
|
@@ -10218,55 +10230,52 @@ var require_logger = __commonJS({
|
|
|
10218
10230
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
10219
10231
|
exports2.logger = void 0;
|
|
10220
10232
|
exports2.initLogger = initLogger;
|
|
10221
|
-
exports2.getJobLogger = getJobLogger;
|
|
10222
10233
|
var panorama_client_node_1 = require_cjs3();
|
|
10223
|
-
var
|
|
10224
|
-
var
|
|
10225
|
-
|
|
10226
|
-
|
|
10227
|
-
|
|
10228
|
-
|
|
10229
|
-
|
|
10230
|
-
|
|
10231
|
-
|
|
10232
|
-
|
|
10233
|
-
data
|
|
10234
|
-
}).withGlobalConfig(globalConfig);
|
|
10235
|
-
}
|
|
10236
|
-
function initLogger(sessionId2) {
|
|
10237
|
-
globalConfig.setSessionId(sessionId2);
|
|
10238
|
-
factory = createFactory({
|
|
10239
|
-
appNamespace: process.env.APP_NAMESPACE
|
|
10240
|
-
});
|
|
10241
|
-
factory.withGlobalConfig(globalConfig);
|
|
10242
|
-
exports2.logger = createLogger(factory.client());
|
|
10243
|
-
}
|
|
10234
|
+
var job_context_storage_12 = require_job_context_storage();
|
|
10235
|
+
var panoramaConfig = (0, panorama_client_node_1.createGlobalConfig)();
|
|
10236
|
+
var panoramaFactory = (0, panorama_client_node_1.panoramaClientFactory)({
|
|
10237
|
+
baseParams: {
|
|
10238
|
+
fullArtifactId: "com.wixpress.ditto-codegen",
|
|
10239
|
+
componentId: "codegen",
|
|
10240
|
+
platform: panorama_client_node_1.PanoramaPlatform.Standalone,
|
|
10241
|
+
appDefId: process.env.PROJECT_ID
|
|
10242
|
+
}
|
|
10243
|
+
}).withGlobalConfig(panoramaConfig);
|
|
10244
10244
|
function createLogger(client) {
|
|
10245
10245
|
const panoramaLogger = client.logger();
|
|
10246
10246
|
return {
|
|
10247
10247
|
info: (message, data) => {
|
|
10248
|
-
console.log(message, data ?? "");
|
|
10248
|
+
console.log(message, JSON.stringify(data, null, 2) ?? "");
|
|
10249
10249
|
panoramaLogger.info(message, data);
|
|
10250
10250
|
},
|
|
10251
10251
|
warn: (message, data) => {
|
|
10252
|
-
console.warn(message, data ?? "");
|
|
10252
|
+
console.warn(message, JSON.stringify(data, null, 2) ?? "");
|
|
10253
10253
|
panoramaLogger.warn(message, data);
|
|
10254
10254
|
},
|
|
10255
10255
|
error: (message, data) => {
|
|
10256
|
-
console.error(message, data ?? "");
|
|
10256
|
+
console.error(message, JSON.stringify(data, null, 2) ?? "");
|
|
10257
10257
|
panoramaLogger.error(message, data);
|
|
10258
10258
|
},
|
|
10259
10259
|
debug: (message, data) => {
|
|
10260
|
-
console.debug(message, data ?? "");
|
|
10261
10260
|
panoramaLogger.debug(message, data);
|
|
10262
10261
|
}
|
|
10263
10262
|
};
|
|
10264
10263
|
}
|
|
10265
|
-
|
|
10266
|
-
|
|
10267
|
-
const client = factory.client({ data: { jobId, taskId } });
|
|
10268
|
-
return createLogger(client);
|
|
10264
|
+
function initLogger(sessionId2) {
|
|
10265
|
+
panoramaConfig.setSessionId(sessionId2);
|
|
10269
10266
|
}
|
|
10267
|
+
exports2.logger = /* @__PURE__ */ (() => {
|
|
10268
|
+
const getContextLogger = () => {
|
|
10269
|
+
const { jobId } = job_context_storage_12.jobContextStorage.getStore() ?? {};
|
|
10270
|
+
return createLogger(panoramaFactory.client(jobId ? { data: { jobId } } : void 0));
|
|
10271
|
+
};
|
|
10272
|
+
return {
|
|
10273
|
+
info: (message, data) => getContextLogger().info(message, data),
|
|
10274
|
+
warn: (message, data) => getContextLogger().warn(message, data),
|
|
10275
|
+
error: (message, data) => getContextLogger().error(message, data),
|
|
10276
|
+
debug: (message, data) => getContextLogger().debug(message, data)
|
|
10277
|
+
};
|
|
10278
|
+
})();
|
|
10270
10279
|
}
|
|
10271
10280
|
});
|
|
10272
10281
|
|
|
@@ -10368,7 +10377,7 @@ var require_CodeGenService = __commonJS({
|
|
|
10368
10377
|
}));
|
|
10369
10378
|
};
|
|
10370
10379
|
this.resumeJobFromDecision = async (jobId) => {
|
|
10371
|
-
logger_12.logger.info("Resuming job from user decision"
|
|
10380
|
+
logger_12.logger.info("Resuming job from user decision");
|
|
10372
10381
|
await this.httpClient.request((0, http_1.updateJob)({
|
|
10373
10382
|
projectId: this.projectId,
|
|
10374
10383
|
job: {
|
|
@@ -10425,17 +10434,6 @@ var require_CodeGenService = __commonJS({
|
|
|
10425
10434
|
}
|
|
10426
10435
|
});
|
|
10427
10436
|
|
|
10428
|
-
// dist/job-context-storage.js
|
|
10429
|
-
var require_job_context_storage = __commonJS({
|
|
10430
|
-
"dist/job-context-storage.js"(exports2) {
|
|
10431
|
-
"use strict";
|
|
10432
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
10433
|
-
exports2.jobContextStorage = void 0;
|
|
10434
|
-
var async_hooks_1 = require("async_hooks");
|
|
10435
|
-
exports2.jobContextStorage = new async_hooks_1.AsyncLocalStorage();
|
|
10436
|
-
}
|
|
10437
|
-
});
|
|
10438
|
-
|
|
10439
10437
|
// dist/services/codeGenerationService.js
|
|
10440
10438
|
var require_codeGenerationService = __commonJS({
|
|
10441
10439
|
"dist/services/codeGenerationService.js"(exports2) {
|
|
@@ -10454,53 +10452,68 @@ var require_cli_listeners = __commonJS({
|
|
|
10454
10452
|
"use strict";
|
|
10455
10453
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
10456
10454
|
exports2.attachOrchestratorListeners = attachOrchestratorListeners;
|
|
10455
|
+
var logger_12 = require_logger();
|
|
10457
10456
|
function attachOrchestratorListeners(eventEmitter) {
|
|
10458
|
-
eventEmitter.onEvent("start", (info) => {
|
|
10459
|
-
|
|
10460
|
-
|
|
10461
|
-
|
|
10462
|
-
|
|
10463
|
-
|
|
10464
|
-
|
|
10457
|
+
eventEmitter.onEvent("start:init", (info) => {
|
|
10458
|
+
logger_12.logger.info("\u{1F680} Starting initial code generation for app", {
|
|
10459
|
+
appName: info.appName,
|
|
10460
|
+
summary: info.summary,
|
|
10461
|
+
outputPath: info.outputPath,
|
|
10462
|
+
extensionsCount: info.extensionsCount
|
|
10463
|
+
});
|
|
10464
|
+
});
|
|
10465
|
+
eventEmitter.onEvent("start:iteration", ({ outputPath }) => {
|
|
10466
|
+
logger_12.logger.info("\u{1F680} Starting code iteration", { outputPath });
|
|
10465
10467
|
});
|
|
10466
|
-
eventEmitter.onEvent("start:
|
|
10467
|
-
|
|
10468
|
+
eventEmitter.onEvent("start:ask", ({ outputPath }) => {
|
|
10469
|
+
logger_12.logger.info("\u{1F680} Starting ask", { outputPath });
|
|
10468
10470
|
});
|
|
10469
|
-
eventEmitter.onEvent("finish", ({ outputPath, durationMs }) => {
|
|
10470
|
-
|
|
10471
|
-
|
|
10472
|
-
|
|
10471
|
+
eventEmitter.onEvent("finish:init", ({ outputPath, durationMs }) => {
|
|
10472
|
+
logger_12.logger.info("\u2705 Init completed", {
|
|
10473
|
+
outputPath,
|
|
10474
|
+
durationMs,
|
|
10475
|
+
durationFormatted: getFormattedDuration(durationMs)
|
|
10476
|
+
});
|
|
10473
10477
|
});
|
|
10474
10478
|
eventEmitter.onEvent("finish:iteration", ({ outputPath, durationMs }) => {
|
|
10475
|
-
|
|
10476
|
-
|
|
10477
|
-
|
|
10479
|
+
logger_12.logger.info("\u2705 Iteration completed", {
|
|
10480
|
+
outputPath,
|
|
10481
|
+
durationMs,
|
|
10482
|
+
durationFormatted: getFormattedDuration(durationMs)
|
|
10483
|
+
});
|
|
10478
10484
|
});
|
|
10479
|
-
eventEmitter.onEvent("finish:
|
|
10480
|
-
|
|
10481
|
-
|
|
10485
|
+
eventEmitter.onEvent("finish:ask", ({ durationMs }) => {
|
|
10486
|
+
logger_12.logger.info("\u2705 Ask completed", {
|
|
10487
|
+
durationMs,
|
|
10488
|
+
durationFormatted: getFormattedDuration(durationMs)
|
|
10489
|
+
});
|
|
10482
10490
|
});
|
|
10483
10491
|
eventEmitter.onEvent("opencode:start", ({ outputPath }) => {
|
|
10484
|
-
|
|
10492
|
+
logger_12.logger.info("\u{1F527} OpenCode starting", { outputPath });
|
|
10485
10493
|
});
|
|
10486
10494
|
eventEmitter.onEvent("opencode:output", ({ data }) => {
|
|
10487
10495
|
process.stdout.write(data);
|
|
10488
10496
|
});
|
|
10489
10497
|
eventEmitter.onEvent("opencode:done", ({ durationMs }) => {
|
|
10490
|
-
|
|
10491
|
-
|
|
10498
|
+
logger_12.logger.info("\u{1F527} OpenCode completed", {
|
|
10499
|
+
durationMs,
|
|
10500
|
+
durationFormatted: getFormattedDuration(durationMs)
|
|
10501
|
+
});
|
|
10492
10502
|
});
|
|
10493
10503
|
eventEmitter.onEvent("opencode:error", ({ error, exitCode, durationMs }) => {
|
|
10494
|
-
|
|
10495
|
-
|
|
10496
|
-
|
|
10497
|
-
|
|
10498
|
-
|
|
10499
|
-
|
|
10500
|
-
console.error(`Error: ${error}`);
|
|
10501
|
-
}
|
|
10504
|
+
logger_12.logger.error("\u274C OpenCode failed", {
|
|
10505
|
+
error,
|
|
10506
|
+
exitCode,
|
|
10507
|
+
durationMs,
|
|
10508
|
+
durationFormatted: getFormattedDuration(durationMs)
|
|
10509
|
+
});
|
|
10502
10510
|
});
|
|
10503
10511
|
}
|
|
10512
|
+
var getFormattedDuration = (ms) => {
|
|
10513
|
+
const seconds = ms / 1e3;
|
|
10514
|
+
const minutes = seconds / 60;
|
|
10515
|
+
return `${ms} ms (${minutes.toFixed(2)} min or ${seconds.toFixed(2)} sec)`;
|
|
10516
|
+
};
|
|
10504
10517
|
}
|
|
10505
10518
|
});
|
|
10506
10519
|
|
|
@@ -12073,7 +12086,6 @@ var require_parser = __commonJS({
|
|
|
12073
12086
|
exports2.parseUsageStats = parseUsageStats;
|
|
12074
12087
|
exports2.mergeUsageStats = mergeUsageStats;
|
|
12075
12088
|
exports2.hasSessionError = hasSessionError;
|
|
12076
|
-
exports2.formatUsageStats = formatUsageStats;
|
|
12077
12089
|
var ditto_codegen_types_12 = require_dist4();
|
|
12078
12090
|
var types_1 = require_types4();
|
|
12079
12091
|
var constants_1 = require_constants5();
|
|
@@ -12226,22 +12238,6 @@ var require_parser = __commonJS({
|
|
|
12226
12238
|
return false;
|
|
12227
12239
|
return foundError;
|
|
12228
12240
|
}
|
|
12229
|
-
function formatUsageStats(stats) {
|
|
12230
|
-
const lines = [
|
|
12231
|
-
`\u{1F4CA} Usage Summary:`,
|
|
12232
|
-
` Cost: $${stats.cost.toFixed(4)}`,
|
|
12233
|
-
` Steps: ${stats.stepCount}`,
|
|
12234
|
-
` Tokens: ${stats.tokens.total.toLocaleString()} total`,
|
|
12235
|
-
` - Input: ${stats.tokens.input.toLocaleString()}`,
|
|
12236
|
-
` - Output: ${stats.tokens.output.toLocaleString()}`,
|
|
12237
|
-
` - Cache Read: ${stats.tokens.cacheRead.toLocaleString()}`,
|
|
12238
|
-
` - Cache Write: ${stats.tokens.cacheWrite.toLocaleString()}`
|
|
12239
|
-
];
|
|
12240
|
-
if (stats.tokens.reasoning > 0) {
|
|
12241
|
-
lines.push(` - Reasoning: ${stats.tokens.reasoning.toLocaleString()}`);
|
|
12242
|
-
}
|
|
12243
|
-
return lines.join("\n");
|
|
12244
|
-
}
|
|
12245
12241
|
}
|
|
12246
12242
|
});
|
|
12247
12243
|
|
|
@@ -12770,6 +12766,13 @@ var require_process_handlers = __commonJS({
|
|
|
12770
12766
|
ctx.state.lineBuffer = lines.pop() || "";
|
|
12771
12767
|
for (const line of lines) {
|
|
12772
12768
|
ctx.taskTracker.processLine(line);
|
|
12769
|
+
if (line.trim()) {
|
|
12770
|
+
try {
|
|
12771
|
+
logger_12.logger.debug("[OpenCode] stdout", JSON.parse(line));
|
|
12772
|
+
} catch {
|
|
12773
|
+
logger_12.logger.debug("[OpenCode] stdout", { line });
|
|
12774
|
+
}
|
|
12775
|
+
}
|
|
12773
12776
|
}
|
|
12774
12777
|
if (onStdout) {
|
|
12775
12778
|
onStdout(text);
|
|
@@ -12854,7 +12857,7 @@ var require_executor = __commonJS({
|
|
|
12854
12857
|
skillsUsed: accumulatedSkills,
|
|
12855
12858
|
extensionsCreated: accumulatedExtensions
|
|
12856
12859
|
};
|
|
12857
|
-
logger_12.logger.info(
|
|
12860
|
+
logger_12.logger.info("[OpenCode] Usage summary", { usage: finalResult2.usage });
|
|
12858
12861
|
await logOpenCodeStats(options);
|
|
12859
12862
|
return finalResult2;
|
|
12860
12863
|
}
|
|
@@ -12875,7 +12878,7 @@ var require_executor = __commonJS({
|
|
|
12875
12878
|
skillsUsed: Array.from(accumulatedSkills),
|
|
12876
12879
|
extensionsCreated: accumulatedExtensions
|
|
12877
12880
|
};
|
|
12878
|
-
logger_12.logger.info(
|
|
12881
|
+
logger_12.logger.info("[OpenCode] Usage summary", { usage: finalResult.usage });
|
|
12879
12882
|
await logOpenCodeStats(options);
|
|
12880
12883
|
return finalResult;
|
|
12881
12884
|
}
|
|
@@ -12884,8 +12887,8 @@ var require_executor = __commonJS({
|
|
|
12884
12887
|
const env = isAsk ? (0, config_1.getOpenCodeAskEnv)(options.projectId) : (0, config_1.getOpenCodeEnv)(options.projectId);
|
|
12885
12888
|
const stats = await (0, cost_tracker_1.fetchOpenCodeStats)(options.outputPath, env);
|
|
12886
12889
|
if (stats) {
|
|
12887
|
-
|
|
12888
|
-
|
|
12890
|
+
console.log("[OpenCode] Stats\n", stats);
|
|
12891
|
+
logger_12.logger.debug("[OpenCode] Stats", { stats });
|
|
12889
12892
|
}
|
|
12890
12893
|
}
|
|
12891
12894
|
function buildArgs(prompt) {
|
|
@@ -13025,7 +13028,7 @@ var require_opencode_integration = __commonJS({
|
|
|
13025
13028
|
"dist/opencode-integration/index.js"(exports2) {
|
|
13026
13029
|
"use strict";
|
|
13027
13030
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
13028
|
-
exports2.
|
|
13031
|
+
exports2.OpenCodeTaskTracker = exports2.runOpenCodeAsk = exports2.runOpenCodeIteration = exports2.runOpenCodeInit = void 0;
|
|
13029
13032
|
var opencode_runner_1 = require_opencode_runner();
|
|
13030
13033
|
Object.defineProperty(exports2, "runOpenCodeInit", { enumerable: true, get: function() {
|
|
13031
13034
|
return opencode_runner_1.runOpenCodeInit;
|
|
@@ -13040,10 +13043,6 @@ var require_opencode_integration = __commonJS({
|
|
|
13040
13043
|
Object.defineProperty(exports2, "OpenCodeTaskTracker", { enumerable: true, get: function() {
|
|
13041
13044
|
return task_tracker_1.OpenCodeTaskTracker;
|
|
13042
13045
|
} });
|
|
13043
|
-
var parser_1 = require_parser();
|
|
13044
|
-
Object.defineProperty(exports2, "formatUsageStats", { enumerable: true, get: function() {
|
|
13045
|
-
return parser_1.formatUsageStats;
|
|
13046
|
-
} });
|
|
13047
13046
|
}
|
|
13048
13047
|
});
|
|
13049
13048
|
|
|
@@ -13063,7 +13062,7 @@ var require_OpenCodeOrchestrator = __commonJS({
|
|
|
13063
13062
|
}
|
|
13064
13063
|
async generateCode(request) {
|
|
13065
13064
|
const { blueprint, outputPath, projectId, chatHistory } = request;
|
|
13066
|
-
this.emitEvent("start", {
|
|
13065
|
+
this.emitEvent("start:init", {
|
|
13067
13066
|
appName: blueprint.appName ?? "",
|
|
13068
13067
|
summary: blueprint.summary ?? "",
|
|
13069
13068
|
outputPath,
|
|
@@ -13096,8 +13095,7 @@ var require_OpenCodeOrchestrator = __commonJS({
|
|
|
13096
13095
|
});
|
|
13097
13096
|
}
|
|
13098
13097
|
this.emitEvent("opencode:done", { durationMs });
|
|
13099
|
-
this.emitEvent("finish:
|
|
13100
|
-
this.emitEvent("finish", { outputPath, durationMs });
|
|
13098
|
+
this.emitEvent("finish:init", { outputPath, durationMs });
|
|
13101
13099
|
return result;
|
|
13102
13100
|
}
|
|
13103
13101
|
};
|
|
@@ -17531,24 +17529,30 @@ var require_job_decision_manager = __commonJS({
|
|
|
17531
17529
|
}
|
|
17532
17530
|
};
|
|
17533
17531
|
await codeGenerationService_12.codeGenerationService.updateJobWithPendingDecision(jobId, userDecision);
|
|
17534
|
-
logger_12.logger.info(
|
|
17532
|
+
logger_12.logger.info("[JobDecision] Paused for user input", {
|
|
17535
17533
|
question: request.question
|
|
17536
17534
|
});
|
|
17535
|
+
const startTime = Date.now();
|
|
17537
17536
|
const response = await pollForJobDecisionResponse(jobId, decisionId);
|
|
17537
|
+
const durationMs = Date.now() - startTime;
|
|
17538
17538
|
await codeGenerationService_12.codeGenerationService.resumeJobFromDecision(jobId);
|
|
17539
|
-
logger_12.logger.info(
|
|
17540
|
-
selectedOptionId: response.selectedOptionId
|
|
17539
|
+
logger_12.logger.info("[JobDecision] Resumed after user decision", {
|
|
17540
|
+
selectedOptionId: response.selectedOptionId,
|
|
17541
|
+
durationMs
|
|
17541
17542
|
});
|
|
17542
17543
|
return response;
|
|
17543
17544
|
}
|
|
17544
17545
|
async function pollForJobDecisionResponse(jobId, decisionId) {
|
|
17546
|
+
logger_12.logger.info("[JobDecision] Polling for user decision response", {
|
|
17547
|
+
decisionId
|
|
17548
|
+
});
|
|
17545
17549
|
while (true) {
|
|
17546
17550
|
const job = await codeGenerationService_12.codeGenerationService.getJob(jobId);
|
|
17547
17551
|
if (!job) {
|
|
17548
17552
|
throw new Error(`Job ${jobId} not found`);
|
|
17549
17553
|
}
|
|
17550
|
-
logger_12.logger.info(`[JobDecision] Polling for job ${jobId} decision ${decisionId}`, { job: JSON.stringify(job, null, 2) });
|
|
17551
17554
|
if (job.status === CodeGenService_12.Status.CANCELLED || job.status === CodeGenService_12.Status.PENDING_CANCEL) {
|
|
17555
|
+
logger_12.logger.warn("[JobDecision] Job cancelled while waiting for user decision", { decisionId });
|
|
17552
17556
|
throw new UserDecisionCancelledError(jobId, decisionId);
|
|
17553
17557
|
}
|
|
17554
17558
|
const decision = job.pendingUserDecisions?.find((d) => d.id === decisionId) ?? job.userDecisionHistory?.find((d) => d.id === decisionId);
|
|
@@ -17692,7 +17696,6 @@ var require_opencode_init = __commonJS({
|
|
|
17692
17696
|
}
|
|
17693
17697
|
const { jobId, taskId, kind } = store;
|
|
17694
17698
|
const localJobContext = { jobId, taskId };
|
|
17695
|
-
const jobLog = (0, logger_12.getJobLogger)(jobId, taskId);
|
|
17696
17699
|
const biBaseParams = {
|
|
17697
17700
|
Job_id: jobId,
|
|
17698
17701
|
Task_id: taskId,
|
|
@@ -17701,9 +17704,9 @@ var require_opencode_init = __commonJS({
|
|
|
17701
17704
|
run_kind: kind,
|
|
17702
17705
|
job_input: JSON.stringify(history)
|
|
17703
17706
|
};
|
|
17704
|
-
|
|
17707
|
+
logger_12.logger.info("[OpenCode Init] Starting task", { taskId });
|
|
17705
17708
|
await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.RUNNING, {});
|
|
17706
|
-
|
|
17709
|
+
logger_12.logger.info("[OpenCode Init] Marked task RUNNING", { taskId });
|
|
17707
17710
|
(0, biEvents_1.reportSessionStart)({
|
|
17708
17711
|
...biBaseParams,
|
|
17709
17712
|
Task_model: config_1.DEFAULT_MODEL,
|
|
@@ -17716,7 +17719,10 @@ var require_opencode_init = __commonJS({
|
|
|
17716
17719
|
const preDecisionResult = await (0, pre_run_decision_1.runPreDecisionCheck)(localJobContext.jobId, { blueprint }, [pre_run_decision_1.checkSiteUIDecision]);
|
|
17717
17720
|
finalBlueprint = preDecisionResult.modifiedBlueprint ?? blueprint;
|
|
17718
17721
|
if (preDecisionResult.decisionsApplied.length > 0) {
|
|
17719
|
-
|
|
17722
|
+
logger_12.logger.info("[OpenCode Init] Applied pre-decision", {
|
|
17723
|
+
decisions: preDecisionResult.decisionsApplied,
|
|
17724
|
+
finalBlueprint
|
|
17725
|
+
});
|
|
17720
17726
|
}
|
|
17721
17727
|
}
|
|
17722
17728
|
const orchestrator = new OpenCodeOrchestrator_1.OpenCodeOrchestrator();
|
|
@@ -17749,7 +17755,7 @@ var require_opencode_init = __commonJS({
|
|
|
17749
17755
|
Job_skills_used: result.skillsUsed.join(","),
|
|
17750
17756
|
Job_extensions_created: result.extensionsCreated.join(",")
|
|
17751
17757
|
});
|
|
17752
|
-
|
|
17758
|
+
logger_12.logger.info("[OpenCode Init] Completed task", { taskId });
|
|
17753
17759
|
} catch (error) {
|
|
17754
17760
|
const codegenError = (0, ditto_codegen_types_2.toCodegenError)(error);
|
|
17755
17761
|
await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
|
|
@@ -17776,7 +17782,10 @@ var require_opencode_init = __commonJS({
|
|
|
17776
17782
|
is_expected: codegenError.expected,
|
|
17777
17783
|
validation_type: codegenError.validationType
|
|
17778
17784
|
});
|
|
17779
|
-
|
|
17785
|
+
logger_12.logger.error("[OpenCode Init] Failed task", {
|
|
17786
|
+
taskId,
|
|
17787
|
+
error: error instanceof Error ? error.message : String(error)
|
|
17788
|
+
});
|
|
17780
17789
|
}
|
|
17781
17790
|
};
|
|
17782
17791
|
exports2.runOpencodeInitFlow = runOpencodeInitFlow;
|
|
@@ -17799,7 +17808,7 @@ var require_OpenCodeIterationOrchestrator = __commonJS({
|
|
|
17799
17808
|
}
|
|
17800
17809
|
async generateIterationCode(request) {
|
|
17801
17810
|
const { outputPath, projectId, chatHistory } = request;
|
|
17802
|
-
this.emitEvent("start:iteration", {});
|
|
17811
|
+
this.emitEvent("start:iteration", { outputPath });
|
|
17803
17812
|
const start = Date.now();
|
|
17804
17813
|
this.emitEvent("opencode:start", { outputPath });
|
|
17805
17814
|
const result = await (0, opencode_integration_1.runOpenCodeIteration)({
|
|
@@ -17858,7 +17867,6 @@ var require_opencode_iterate = __commonJS({
|
|
|
17858
17867
|
}
|
|
17859
17868
|
const { jobId, taskId, kind } = store;
|
|
17860
17869
|
const localJobContext = { jobId, taskId };
|
|
17861
|
-
const jobLog = (0, logger_12.getJobLogger)(jobId, taskId);
|
|
17862
17870
|
const biBaseParams = {
|
|
17863
17871
|
Job_id: jobId,
|
|
17864
17872
|
Task_id: taskId,
|
|
@@ -17867,9 +17875,9 @@ var require_opencode_iterate = __commonJS({
|
|
|
17867
17875
|
run_kind: kind,
|
|
17868
17876
|
job_input: JSON.stringify(chatHistory)
|
|
17869
17877
|
};
|
|
17870
|
-
|
|
17878
|
+
logger_12.logger.info("[OpenCode Iterate] Starting task", { taskId });
|
|
17871
17879
|
await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.RUNNING, {});
|
|
17872
|
-
|
|
17880
|
+
logger_12.logger.info("[OpenCode Iterate] Marked task RUNNING", { taskId });
|
|
17873
17881
|
(0, biEvents_1.reportSessionStart)({
|
|
17874
17882
|
...biBaseParams,
|
|
17875
17883
|
Task_model: config_1.DEFAULT_MODEL,
|
|
@@ -17906,7 +17914,7 @@ var require_opencode_iterate = __commonJS({
|
|
|
17906
17914
|
Job_skills_used: result.skillsUsed.join(","),
|
|
17907
17915
|
Job_extensions_created: result.extensionsCreated.join(",")
|
|
17908
17916
|
});
|
|
17909
|
-
|
|
17917
|
+
logger_12.logger.info("[OpenCode Iterate] Completed task", { taskId });
|
|
17910
17918
|
} catch (error) {
|
|
17911
17919
|
const codegenError = (0, ditto_codegen_types_2.toCodegenError)(error);
|
|
17912
17920
|
await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
|
|
@@ -17932,7 +17940,8 @@ var require_opencode_iterate = __commonJS({
|
|
|
17932
17940
|
is_expected: codegenError.expected,
|
|
17933
17941
|
validation_type: codegenError.validationType
|
|
17934
17942
|
});
|
|
17935
|
-
|
|
17943
|
+
logger_12.logger.error("[OpenCode Iterate] Failed task", {
|
|
17944
|
+
taskId,
|
|
17936
17945
|
error: error instanceof Error ? error.message : String(error)
|
|
17937
17946
|
});
|
|
17938
17947
|
}
|
|
@@ -17957,6 +17966,7 @@ var require_OpenCodeAskOrchestrator = __commonJS({
|
|
|
17957
17966
|
}
|
|
17958
17967
|
async ask(request) {
|
|
17959
17968
|
const { outputPath, projectId, chatHistory } = request;
|
|
17969
|
+
this.emitEvent("start:ask", { outputPath });
|
|
17960
17970
|
this.emitEvent("opencode:start", { outputPath });
|
|
17961
17971
|
const start = Date.now();
|
|
17962
17972
|
const result = await (0, opencode_integration_1.runOpenCodeAsk)({
|
|
@@ -17982,6 +17992,7 @@ var require_OpenCodeAskOrchestrator = __commonJS({
|
|
|
17982
17992
|
});
|
|
17983
17993
|
}
|
|
17984
17994
|
this.emitEvent("opencode:done", { durationMs });
|
|
17995
|
+
this.emitEvent("finish:ask", { durationMs });
|
|
17985
17996
|
return result;
|
|
17986
17997
|
}
|
|
17987
17998
|
};
|
|
@@ -18013,10 +18024,13 @@ var require_opencode_ask = __commonJS({
|
|
|
18013
18024
|
jobId: store.jobId,
|
|
18014
18025
|
taskId: store.taskId
|
|
18015
18026
|
};
|
|
18016
|
-
|
|
18017
|
-
|
|
18027
|
+
logger_12.logger.info("[OpenCode Ask] Starting task", {
|
|
18028
|
+
taskId: localJobContext.taskId
|
|
18029
|
+
});
|
|
18018
18030
|
await codeGenerationService_12.codeGenerationService.updateTask(localJobContext.jobId, localJobContext.taskId, ditto_codegen_types_12.Status.RUNNING, {});
|
|
18019
|
-
|
|
18031
|
+
logger_12.logger.info("[OpenCode Ask] Marked task RUNNING", {
|
|
18032
|
+
taskId: localJobContext.taskId
|
|
18033
|
+
});
|
|
18020
18034
|
try {
|
|
18021
18035
|
const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
|
|
18022
18036
|
const askOrchestrator = new OpenCodeAskOrchestrator_1.OpenCodeAskOrchestrator();
|
|
@@ -18031,11 +18045,11 @@ var require_opencode_ask = __commonJS({
|
|
|
18031
18045
|
answer: result.answer
|
|
18032
18046
|
}
|
|
18033
18047
|
});
|
|
18034
|
-
|
|
18048
|
+
logger_12.logger.info("[OpenCode Ask] Completed task");
|
|
18035
18049
|
} catch (error) {
|
|
18036
18050
|
const codegenError = (0, ditto_codegen_types_2.toCodegenError)(error);
|
|
18037
18051
|
await (0, codegen_flow_helpers_12.updateParentTaskStatus)(localJobContext, ditto_codegen_types_12.Status.FAILED, codegenError);
|
|
18038
|
-
|
|
18052
|
+
logger_12.logger.error("[OpenCode Ask] Failed task", {
|
|
18039
18053
|
error: error instanceof Error ? error.message : String(error)
|
|
18040
18054
|
});
|
|
18041
18055
|
}
|
|
@@ -18072,23 +18086,20 @@ var require_job_cancellation_monitor = __commonJS({
|
|
|
18072
18086
|
try {
|
|
18073
18087
|
const job = await this.codeGenerationService.getJob(jobId);
|
|
18074
18088
|
if (!job) {
|
|
18075
|
-
logger_12.logger.warn("[Job] Job not found, stopping cancellation monitoring"
|
|
18076
|
-
jobId
|
|
18077
|
-
});
|
|
18089
|
+
logger_12.logger.warn("[Job] Job not found, stopping cancellation monitoring");
|
|
18078
18090
|
this.stop();
|
|
18079
18091
|
return;
|
|
18080
18092
|
}
|
|
18081
18093
|
if (job.status === ditto_codegen_types_12.Status.PENDING_CANCEL) {
|
|
18082
|
-
logger_12.logger.info("[Job] Detected cancellation request, exiting"
|
|
18094
|
+
logger_12.logger.info("[Job] Detected cancellation request, exiting");
|
|
18083
18095
|
await this.codeGenerationService.markJobAsCancelled(jobId);
|
|
18084
18096
|
await (0, utils_1.updateAllRunningTasks)(jobId, ditto_codegen_types_12.Status.CANCELLED);
|
|
18085
|
-
logger_12.logger.info("[Job] Marked job as CANCELLED"
|
|
18097
|
+
logger_12.logger.info("[Job] Marked job as CANCELLED");
|
|
18086
18098
|
process.exit();
|
|
18087
18099
|
}
|
|
18088
18100
|
this.start(jobId);
|
|
18089
18101
|
} catch (error) {
|
|
18090
18102
|
logger_12.logger.error("[Job] Error checking job status", {
|
|
18091
|
-
jobId,
|
|
18092
18103
|
error: error instanceof Error ? error.message : String(error)
|
|
18093
18104
|
});
|
|
18094
18105
|
this.start(jobId);
|
|
@@ -18127,20 +18138,16 @@ var require_job_timeout_monitor = __commonJS({
|
|
|
18127
18138
|
}
|
|
18128
18139
|
async handleTimeout(jobId) {
|
|
18129
18140
|
logger_12.logger.error("[Job] Job exceeded timeout", {
|
|
18130
|
-
jobId,
|
|
18131
18141
|
timeoutMs: exports2.JOB_TIMEOUT_MS
|
|
18132
18142
|
});
|
|
18133
18143
|
try {
|
|
18134
|
-
logger_12.logger.info("[Job] Timeout detected, exiting"
|
|
18144
|
+
logger_12.logger.info("[Job] Timeout detected, exiting");
|
|
18135
18145
|
await (0, utils_1.updateAllRunningTasks)(jobId, ditto_codegen_types_12.Status.FAILED, new ditto_codegen_types_12.TimeoutError(`Job exceeded timeout of ${exports2.JOB_TIMEOUT_MS}ms`));
|
|
18136
18146
|
await this.codeGenerationService.markJobAsCompleted(jobId);
|
|
18137
|
-
logger_12.logger.info("[Job] Marked job as completed, failed all running tasks"
|
|
18138
|
-
jobId
|
|
18139
|
-
});
|
|
18147
|
+
logger_12.logger.info("[Job] Marked job as completed, failed all running tasks");
|
|
18140
18148
|
process.exit();
|
|
18141
18149
|
} catch (error) {
|
|
18142
18150
|
logger_12.logger.error("[Job] Failed to mark timed-out job as completed", {
|
|
18143
|
-
jobId,
|
|
18144
18151
|
error: error instanceof Error ? error.message : String(error)
|
|
18145
18152
|
});
|
|
18146
18153
|
}
|
|
@@ -18194,7 +18201,8 @@ var require_skills_installer = __commonJS({
|
|
|
18194
18201
|
if (stderr && !stderr.includes("npm warn")) {
|
|
18195
18202
|
log.warn("[Skills] Installation stderr", { stderr });
|
|
18196
18203
|
}
|
|
18197
|
-
log
|
|
18204
|
+
console.log("[Skills] Skills installed successfully\n", stdout);
|
|
18205
|
+
log.debug("[Skills] Skills installed successfully", { stdout });
|
|
18198
18206
|
} catch (error) {
|
|
18199
18207
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
18200
18208
|
log.error("[Skills] Failed to install skills", { error: errorMessage });
|
|
@@ -18276,7 +18284,7 @@ var alwaysOnLoop = async () => {
|
|
|
18276
18284
|
continue;
|
|
18277
18285
|
}
|
|
18278
18286
|
const job = jobs[0];
|
|
18279
|
-
logger_1.logger.
|
|
18287
|
+
logger_1.logger.info("Job details", { job });
|
|
18280
18288
|
if (!job.id) {
|
|
18281
18289
|
throw new ditto_codegen_types_1.MissingJobIdError();
|
|
18282
18290
|
}
|
|
@@ -18305,7 +18313,9 @@ async function initOpenCode() {
|
|
|
18305
18313
|
}
|
|
18306
18314
|
async function main(ctx) {
|
|
18307
18315
|
logger_1.logger.info("[Startup] CodeGen CLI starting", {
|
|
18308
|
-
projectId: ctx.projectId
|
|
18316
|
+
projectId: ctx.projectId,
|
|
18317
|
+
appNameSpace: ctx.appNamespace,
|
|
18318
|
+
codeIdentifier: ctx.codeIdentifier
|
|
18309
18319
|
});
|
|
18310
18320
|
await initOpenCode();
|
|
18311
18321
|
await alwaysOnLoop();
|
|
@@ -18323,18 +18333,22 @@ async function processJob(job) {
|
|
|
18323
18333
|
logger_1.logger.warn("[Job] No initial task found, skipping", { jobId });
|
|
18324
18334
|
return;
|
|
18325
18335
|
}
|
|
18326
|
-
|
|
18327
|
-
|
|
18328
|
-
|
|
18329
|
-
|
|
18330
|
-
|
|
18331
|
-
|
|
18332
|
-
|
|
18333
|
-
jobLog.debug("Task Payload", { payload: task.payload });
|
|
18334
|
-
await job_context_storage_1.jobContextStorage.run({ jobId, taskId: task.id, kind: task.kind }, async () => {
|
|
18336
|
+
await job_context_storage_1.jobContextStorage.run({ jobId, taskId: task.id, kind: task.kind }, async () => {
|
|
18337
|
+
logger_1.logger.info("[Job] Start processing", { taskKind: task.kind });
|
|
18338
|
+
context_1.ctx.setJobStatus(jobId, CodeGenService_1.Status.RUNNING);
|
|
18339
|
+
logger_1.logger.info("[Job] Marked job RUNNING", { initTaskId: task.id });
|
|
18340
|
+
jobCancellationMonitor.start(jobId);
|
|
18341
|
+
jobTimeoutMonitor.start(jobId);
|
|
18342
|
+
try {
|
|
18335
18343
|
const payload = task.payload ?? {};
|
|
18336
18344
|
const history = payload.history ?? [];
|
|
18337
18345
|
const blueprint = payload.blueprint;
|
|
18346
|
+
if (blueprint) {
|
|
18347
|
+
logger_1.logger.info("Task blueprint", { blueprint });
|
|
18348
|
+
}
|
|
18349
|
+
if (history.length > 0) {
|
|
18350
|
+
logger_1.logger.info("Task history", { history: history.slice(-5) });
|
|
18351
|
+
}
|
|
18338
18352
|
if (task.kind === CodeGenService_1.TaskKind.ASK_CODEGEN) {
|
|
18339
18353
|
await (0, opencode_ask_1.runOpencodeAskFlow)(history);
|
|
18340
18354
|
} else if (task.kind === CodeGenService_1.TaskKind.ITERATE_CODEGEN) {
|
|
@@ -18342,11 +18356,11 @@ async function processJob(job) {
|
|
|
18342
18356
|
} else if (task.kind === CodeGenService_1.TaskKind.INIT_CODEGEN && blueprint) {
|
|
18343
18357
|
await (0, opencode_init_1.runOpencodeInitFlow)(blueprint, history);
|
|
18344
18358
|
}
|
|
18345
|
-
}
|
|
18346
|
-
|
|
18347
|
-
|
|
18348
|
-
|
|
18349
|
-
}
|
|
18359
|
+
} finally {
|
|
18360
|
+
jobCancellationMonitor.stop();
|
|
18361
|
+
jobTimeoutMonitor.stop();
|
|
18362
|
+
}
|
|
18363
|
+
});
|
|
18350
18364
|
}
|
|
18351
18365
|
(0, context_1.initCtx)().then((ctx) => {
|
|
18352
18366
|
main(ctx);
|
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.284",
|
|
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": "36da6c6065df36dbdaf7c0769ff8380aa5570f14884146299026f11a"
|
|
31
31
|
}
|