@wix/ditto-codegen-public 1.0.282 → 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.
Files changed (2) hide show
  1. package/dist/out.js +165 -151
  2. 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 globalConfig = (0, panorama_client_node_1.createGlobalConfig)();
10224
- var factory = createFactory();
10225
- function createFactory(data) {
10226
- return (0, panorama_client_node_1.panoramaClientFactory)({
10227
- baseParams: {
10228
- fullArtifactId: "com.wixpress.ditto-codegen",
10229
- componentId: "codegen",
10230
- platform: panorama_client_node_1.PanoramaPlatform.Standalone,
10231
- appDefId: process.env.PROJECT_ID
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
- exports2.logger = createLogger(factory.client());
10266
- function getJobLogger(jobId, taskId) {
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", { jobId });
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
- console.log(`
10460
- \u{1F680} Starting code generation for app: "${info.appName}"`);
10461
- console.log(`\u{1F4DD} App Summary: ${info.summary}`);
10462
- console.log(`\u{1F4C1} Output path: ${info.outputPath}`);
10463
- console.log(`\u{1F527} Extensions to generate: ${info.extensionsCount}
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:iteration", () => {
10467
- console.log("\n\u{1F680} Starting code iteration for app");
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
- console.log(`
10471
- \u2705 Done in ${durationMs}ms`);
10472
- console.log(`\u{1F4C1} Files generated in: ${outputPath}`);
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
- console.log(`
10476
- \u2705 Done in ${durationMs}ms`);
10477
- console.log(`\u{1F4C1} Files generated in: ${outputPath}`);
10479
+ logger_12.logger.info("\u2705 Iteration completed", {
10480
+ outputPath,
10481
+ durationMs,
10482
+ durationFormatted: getFormattedDuration(durationMs)
10483
+ });
10478
10484
  });
10479
- eventEmitter.onEvent("finish:code-generation", ({ outputPath, durationMs }) => {
10480
- console.log(`\u{1F916}\u2714\uFE0F Generated code in ${durationMs / 1e3}s`);
10481
- console.log(`\u{1F4C1} Files generated in: ${outputPath}`);
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
- console.log(`\u{1F527} OpenCode starting in: ${outputPath}`);
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
- console.log(`
10491
- \u{1F527}\u2714\uFE0F OpenCode completed in ${durationMs / 1e3}s`);
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
- console.error(`
10495
- \u{1F527}\u274C OpenCode failed after ${durationMs / 1e3}s`);
10496
- if (exitCode !== null) {
10497
- console.error(`Exit code: ${exitCode}`);
10498
- }
10499
- if (error) {
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((0, parser_1.formatUsageStats)(finalResult2.usage));
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((0, parser_1.formatUsageStats)(finalResult.usage));
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
- logger_12.logger.info(`[OpenCode] Stats:
12888
- ${stats}`);
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.formatUsageStats = exports2.OpenCodeTaskTracker = exports2.runOpenCodeAsk = exports2.runOpenCodeIteration = exports2.runOpenCodeInit = void 0;
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:code-generation", { outputPath, durationMs });
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(`[JobDecision] Job ${jobId} paused for user input`, {
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(`[JobDecision] Job ${jobId} resumed`, {
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
- jobLog.info(`[OpenCode Init] Starting opencode init task: jobId=${jobId}, taskId=${taskId}`);
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
- jobLog.info(`[OpenCode Init] Marked task RUNNING: jobId=${jobId}, taskId=${taskId}`);
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
- jobLog.info(`[OpenCode Init] Applied ${preDecisionResult.decisionsApplied.length} pre-decision(s)`);
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
- jobLog.info(`[OpenCode Init] Completed opencode init task: jobId=${jobId}, taskId=${taskId}`);
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
- jobLog.error(`[OpenCode Init] Failed opencode init task: jobId=${jobId}, taskId=${taskId}`, { error: error instanceof Error ? error.message : String(error) });
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
- jobLog.info(`[OpenCode Iterate] Starting opencode iterate task: jobId=${jobId}, taskId=${taskId}`);
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
- jobLog.info(`[OpenCode Iterate] Marked task RUNNING: jobId=${jobId}, taskId=${taskId}`);
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
- jobLog.info("[OpenCode Iterate] Completed task");
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
- jobLog.error("[OpenCode Iterate] Failed task", {
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
- const jobLog = (0, logger_12.getJobLogger)(localJobContext.jobId, localJobContext.taskId);
18017
- jobLog.info(`[OpenCode Ask] Starting opencode ask task: jobId=${localJobContext?.jobId}, taskId=${localJobContext?.taskId}`);
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
- jobLog.info(`[OpenCode Ask] Marked task RUNNING: jobId=${localJobContext.jobId}, taskId=${localJobContext.taskId}`);
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
- jobLog.info("[OpenCode Ask] Completed task");
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
- jobLog.error("[OpenCode Ask] Failed task", {
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", { jobId });
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", { jobId });
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", { jobId });
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.info("[Skills] Skills installed successfully", { stdout });
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.debug("Job details", { job });
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
- const jobLog = (0, logger_1.getJobLogger)(jobId, task.id);
18327
- jobLog.info("[Job] Start processing", { jobId, taskKind: task.kind });
18328
- context_1.ctx.setJobStatus(jobId, CodeGenService_1.Status.RUNNING);
18329
- jobLog.info("[Job] Marked job RUNNING", { jobId, initTaskId: task.id });
18330
- jobCancellationMonitor.start(jobId);
18331
- jobTimeoutMonitor.start(jobId);
18332
- try {
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
- } finally {
18347
- jobCancellationMonitor.stop();
18348
- jobTimeoutMonitor.stop();
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.282",
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": "dfa51d2033ad05b1debde0dbd9a4970eab5e3a9a5507fc31abbf2a36"
30
+ "falconPackageHash": "36da6c6065df36dbdaf7c0769ff8380aa5570f14884146299026f11a"
31
31
  }