@wix/ditto-codegen-public 1.0.314 → 1.0.316

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 +218 -88
  2. package/package.json +2 -2
package/dist/out.js CHANGED
@@ -10291,6 +10291,50 @@ var require_logger = __commonJS({
10291
10291
  }
10292
10292
  });
10293
10293
 
10294
+ // dist/services/wixTokenRefresh.js
10295
+ var require_wixTokenRefresh = __commonJS({
10296
+ "dist/services/wixTokenRefresh.js"(exports2) {
10297
+ "use strict";
10298
+ Object.defineProperty(exports2, "__esModule", { value: true });
10299
+ exports2.refreshWixAccessToken = refreshWixAccessToken;
10300
+ var child_process_1 = require("child_process");
10301
+ var util_1 = require("util");
10302
+ var logger_12 = require_logger();
10303
+ var execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
10304
+ var inFlight = null;
10305
+ async function runWixToken() {
10306
+ const { stdout } = await execFileAsync("wix", ["token", "--json"], {
10307
+ timeout: 3e4
10308
+ });
10309
+ const parsed = JSON.parse(stdout);
10310
+ if (!parsed.accessToken) {
10311
+ throw new Error("wix token returned empty accessToken");
10312
+ }
10313
+ return parsed.accessToken;
10314
+ }
10315
+ async function refreshWixAccessToken() {
10316
+ if (inFlight)
10317
+ return inFlight;
10318
+ inFlight = (async () => {
10319
+ logger_12.logger.info("[Auth] Refreshing access token via `wix token`");
10320
+ try {
10321
+ const token = await runWixToken();
10322
+ logger_12.logger.info("[Auth] Access token refreshed");
10323
+ return token;
10324
+ } catch (err) {
10325
+ logger_12.logger.error("[Auth] Failed to refresh access token", {
10326
+ error: err instanceof Error ? err.message : String(err)
10327
+ });
10328
+ throw err;
10329
+ } finally {
10330
+ inFlight = null;
10331
+ }
10332
+ })();
10333
+ return inFlight;
10334
+ }
10335
+ }
10336
+ });
10337
+
10294
10338
  // dist/services/CodeGenService.js
10295
10339
  var require_CodeGenService = __commonJS({
10296
10340
  "dist/services/CodeGenService.js"(exports2) {
@@ -10300,6 +10344,7 @@ var require_CodeGenService = __commonJS({
10300
10344
  exports2.createCodeGenErrorHandler = createCodeGenErrorHandler;
10301
10345
  var http_client_1 = require_index_node();
10302
10346
  var http_1 = require_http_impl();
10347
+ var wixTokenRefresh_1 = require_wixTokenRefresh();
10303
10348
  var types_1 = require_types_impl();
10304
10349
  Object.defineProperty(exports2, "Status", { enumerable: true, get: function() {
10305
10350
  return types_1.Status;
@@ -10332,8 +10377,24 @@ var require_CodeGenService = __commonJS({
10332
10377
  this.projectId = projectId;
10333
10378
  this.accessToken = process.env.WIX_ACCESS_TOKEN;
10334
10379
  this.sandboxId = process.env.SANDBOX_ID;
10380
+ this.refreshAccessToken = async () => {
10381
+ const token = await (0, wixTokenRefresh_1.refreshWixAccessToken)();
10382
+ this.setAccessToken(token);
10383
+ return token;
10384
+ };
10385
+ this.request = async (req) => {
10386
+ try {
10387
+ return await this.httpClient.request(this.withAuth(req));
10388
+ } catch (err) {
10389
+ if (!this.isUnauthorized(err))
10390
+ throw err;
10391
+ logger_12.logger.warn("[CodeGenService] 401 received, refreshing token and retrying once");
10392
+ await this.refreshAccessToken();
10393
+ return await this.httpClient.request(this.withAuth(req));
10394
+ }
10395
+ };
10335
10396
  this.fetchPendingJobs = async () => {
10336
- const resp = await this.httpClient.request((0, http_1.listProjectJobs)({
10397
+ const resp = await this.request((0, http_1.listProjectJobs)({
10337
10398
  projectId: this.projectId
10338
10399
  }));
10339
10400
  const jobs = resp.data?.jobs ?? [];
@@ -10347,7 +10408,7 @@ var require_CodeGenService = __commonJS({
10347
10408
  return true;
10348
10409
  };
10349
10410
  this.markJobAsCompleted = async (jobId) => {
10350
- await this.httpClient.request((0, http_1.updateJob)({
10411
+ await this.request((0, http_1.updateJob)({
10351
10412
  projectId: this.projectId,
10352
10413
  job: {
10353
10414
  id: jobId,
@@ -10357,7 +10418,7 @@ var require_CodeGenService = __commonJS({
10357
10418
  }));
10358
10419
  };
10359
10420
  this.markJobAsRuninng = async (jobId) => {
10360
- await this.httpClient.request((0, http_1.updateJob)({
10421
+ await this.request((0, http_1.updateJob)({
10361
10422
  projectId: this.projectId,
10362
10423
  job: {
10363
10424
  id: jobId,
@@ -10367,7 +10428,7 @@ var require_CodeGenService = __commonJS({
10367
10428
  }));
10368
10429
  };
10369
10430
  this.markJobAsCancelled = async (jobId) => {
10370
- await this.httpClient.request((0, http_1.updateJob)({
10431
+ await this.request((0, http_1.updateJob)({
10371
10432
  projectId: this.projectId,
10372
10433
  job: {
10373
10434
  id: jobId,
@@ -10377,7 +10438,7 @@ var require_CodeGenService = __commonJS({
10377
10438
  }));
10378
10439
  };
10379
10440
  this.updateJob = async (jobId, payload) => {
10380
- await this.httpClient.request((0, http_1.updateJob)({
10441
+ await this.request((0, http_1.updateJob)({
10381
10442
  projectId: this.projectId,
10382
10443
  job: {
10383
10444
  id: jobId,
@@ -10391,7 +10452,7 @@ var require_CodeGenService = __commonJS({
10391
10452
  jobId,
10392
10453
  status
10393
10454
  });
10394
- await this.httpClient.request((0, http_1.updateJob)({
10455
+ await this.request((0, http_1.updateJob)({
10395
10456
  projectId: this.projectId,
10396
10457
  job: {
10397
10458
  id: jobId,
@@ -10406,7 +10467,7 @@ var require_CodeGenService = __commonJS({
10406
10467
  decisionId: userDecision.id,
10407
10468
  userDecision: JSON.stringify(userDecision, null, 2)
10408
10469
  });
10409
- await this.httpClient.request((0, http_1.updateJob)({
10470
+ await this.request((0, http_1.updateJob)({
10410
10471
  projectId: this.projectId,
10411
10472
  job: {
10412
10473
  id: jobId,
@@ -10418,7 +10479,7 @@ var require_CodeGenService = __commonJS({
10418
10479
  };
10419
10480
  this.resumeJobFromDecision = async (jobId) => {
10420
10481
  logger_12.logger.info("Resuming job from user decision");
10421
- await this.httpClient.request((0, http_1.updateJob)({
10482
+ await this.request((0, http_1.updateJob)({
10422
10483
  projectId: this.projectId,
10423
10484
  job: {
10424
10485
  id: jobId,
@@ -10429,7 +10490,7 @@ var require_CodeGenService = __commonJS({
10429
10490
  }));
10430
10491
  };
10431
10492
  this.updateTask = async (jobId, taskId, status, payload) => {
10432
- await this.httpClient.request((0, http_1.updateTask)({
10493
+ await this.request((0, http_1.updateTask)({
10433
10494
  projectId: this.projectId,
10434
10495
  jobId,
10435
10496
  task: {
@@ -10440,7 +10501,7 @@ var require_CodeGenService = __commonJS({
10440
10501
  }));
10441
10502
  };
10442
10503
  this.addTask = async (jobId, task) => {
10443
- await this.httpClient.request((0, http_1.createTask)({
10504
+ await this.request((0, http_1.createTask)({
10444
10505
  projectId: this.projectId,
10445
10506
  jobId,
10446
10507
  task: {
@@ -10455,7 +10516,7 @@ var require_CodeGenService = __commonJS({
10455
10516
  }));
10456
10517
  };
10457
10518
  this.getJob = async (jobId) => {
10458
- const resp = await this.httpClient.request((0, http_1.getJob)({
10519
+ const resp = await this.request((0, http_1.getJob)({
10459
10520
  projectId: this.projectId,
10460
10521
  jobId
10461
10522
  }));
@@ -10468,12 +10529,32 @@ var require_CodeGenService = __commonJS({
10468
10529
  const serverUrl = process.env.CODEGEN_SERVER_BASE_URL || "https://manage.wix.com";
10469
10530
  this.httpClient = (0, http_client_1.createHttpClient)({
10470
10531
  baseURL: serverUrl,
10471
- headers: {
10472
- authorization: `Bearer ${this.accessToken}`
10473
- },
10474
10532
  errorHandler: createCodeGenErrorHandler(() => this.httpClient)
10475
10533
  });
10476
10534
  }
10535
+ getAccessToken() {
10536
+ return this.accessToken;
10537
+ }
10538
+ setAccessToken(token) {
10539
+ this.accessToken = token;
10540
+ }
10541
+ isUnauthorized(error) {
10542
+ if (!http_client_1.HttpClient.isHttpError(error))
10543
+ return false;
10544
+ if (this.httpClient.isCancel(error))
10545
+ return false;
10546
+ return error.response?.status === 401;
10547
+ }
10548
+ withAuth(req) {
10549
+ const authHeader = { authorization: `Bearer ${this.accessToken}` };
10550
+ if (typeof req === "function") {
10551
+ return (ctx) => {
10552
+ const r = req(ctx);
10553
+ return { ...r, headers: { ...r.headers ?? {}, ...authHeader } };
10554
+ };
10555
+ }
10556
+ return { ...req, headers: { ...req.headers ?? {}, ...authHeader } };
10557
+ }
10477
10558
  };
10478
10559
  exports2.CodeGenService = CodeGenService;
10479
10560
  }
@@ -12221,6 +12302,7 @@ var require_config = __commonJS({
12221
12302
  Object.defineProperty(exports2, "__esModule", { value: true });
12222
12303
  exports2.DEFAULT_MODEL = exports2.DEFAULT_TIMEOUT_MS = void 0;
12223
12304
  exports2.getAnthropicBaseUrl = getAnthropicBaseUrl;
12305
+ exports2.setCurrentAccessToken = setCurrentAccessToken;
12224
12306
  exports2.getOpenCodeEnv = getOpenCodeEnv;
12225
12307
  var os_1 = require("os");
12226
12308
  var constants_1 = require_constants5();
@@ -12236,9 +12318,13 @@ var require_config = __commonJS({
12236
12318
  }
12237
12319
  return `${AI_PROXY_BASE_URL}/projects/${projectId}/anthropic`;
12238
12320
  }
12321
+ var currentAccessToken = process.env.WIX_ACCESS_TOKEN;
12322
+ function setCurrentAccessToken(token) {
12323
+ currentAccessToken = token;
12324
+ process.env.WIX_ACCESS_TOKEN = token;
12325
+ }
12239
12326
  function getProviderConfig() {
12240
- const accessToken = process.env.WIX_ACCESS_TOKEN;
12241
- const headers = accessToken ? { Authorization: `Bearer ${accessToken}` } : {};
12327
+ const headers = currentAccessToken ? { Authorization: `Bearer ${currentAccessToken}` } : {};
12242
12328
  return {
12243
12329
  anthropic: {
12244
12330
  options: {
@@ -12605,26 +12691,69 @@ var require_cost_tracker = __commonJS({
12605
12691
  }
12606
12692
  });
12607
12693
 
12694
+ // dist/opencode-integration/task-tracker/init-task.js
12695
+ var require_init_task = __commonJS({
12696
+ "dist/opencode-integration/task-tracker/init-task.js"(exports2) {
12697
+ "use strict";
12698
+ Object.defineProperty(exports2, "__esModule", { value: true });
12699
+ exports2.completeInitTask = completeInitTask;
12700
+ var ditto_codegen_types_12 = require_dist4();
12701
+ var codeGenerationService_12 = require_codeGenerationService();
12702
+ var logger_12 = require_logger();
12703
+ async function completeInitTask(ctx) {
12704
+ const { store } = ctx;
12705
+ if (store?.isCompleted || store?.kind !== ditto_codegen_types_12.TaskKind.INIT_CODEGEN)
12706
+ return;
12707
+ if (!store.jobId || !store.taskId)
12708
+ return;
12709
+ store.isCompleted = true;
12710
+ try {
12711
+ await codeGenerationService_12.codeGenerationService.updateTask(store.jobId, store.taskId, ditto_codegen_types_12.Status.COMPLETED, {});
12712
+ logger_12.logger.info("[OpenCode] Completed init task before sub-tasks");
12713
+ } catch (error) {
12714
+ logger_12.logger.error("[OpenCode] Failed to complete init task", {
12715
+ error: error instanceof Error ? error.message : String(error)
12716
+ });
12717
+ }
12718
+ }
12719
+ }
12720
+ });
12721
+
12608
12722
  // dist/opencode-integration/task-tracker/extension-handler.js
12609
12723
  var require_extension_handler = __commonJS({
12610
12724
  "dist/opencode-integration/task-tracker/extension-handler.js"(exports2) {
12611
12725
  "use strict";
12612
12726
  Object.defineProperty(exports2, "__esModule", { value: true });
12613
12727
  exports2.ExtensionTaskHandler = void 0;
12728
+ exports2.buildExtensionTaskPayload = buildExtensionTaskPayload;
12614
12729
  var promises_1 = require("fs/promises");
12615
12730
  var path_1 = require("path");
12616
12731
  var ditto_codegen_types_12 = require_dist4();
12617
12732
  var codeGenerationService_12 = require_codeGenerationService();
12618
12733
  var logger_12 = require_logger();
12619
12734
  var constants_1 = require_constants5();
12735
+ var init_task_1 = require_init_task();
12736
+ function buildExtensionTaskPayload(tracked, collectedFiles) {
12737
+ if (!tracked.extensionFolder)
12738
+ return {};
12739
+ const extensionFiles = collectedFiles.filter((f) => f.path.startsWith(tracked.extensionFolder));
12740
+ return {
12741
+ taskOutput: {
12742
+ files: extensionFiles.map((f) => ({
12743
+ path: f.path,
12744
+ operation: f.operation
12745
+ }))
12746
+ }
12747
+ };
12748
+ }
12620
12749
  var ExtensionTaskHandler = class {
12621
12750
  constructor() {
12622
- this.extensionTasksCreated = /* @__PURE__ */ new Map();
12751
+ this.extensionTypesByPath = /* @__PURE__ */ new Map();
12623
12752
  }
12624
12753
  getExtensionTypesCreated() {
12625
- return Array.from(this.extensionTasksCreated.values());
12754
+ return Array.from(this.extensionTypesByPath.values());
12626
12755
  }
12627
- /** Inspects a write/edit event; if it targets an extension file, creates a tracked sub-task. */
12756
+ /** Inspects a write/edit event; creates a RUNNING sub-task on first sight, completes on the completed event. */
12628
12757
  async handle(tool, state, ctx) {
12629
12758
  const filePath = state.input?.filePath || state.title || "";
12630
12759
  if (!(0, constants_1.isExtensionsFile)(filePath))
@@ -12635,13 +12764,25 @@ var require_extension_handler = __commonJS({
12635
12764
  const extension = (0, constants_1.detectExtension)(content);
12636
12765
  if (!extension)
12637
12766
  return;
12638
- await this.ensureCreatedBy(filePath, ctx.workingDirectory);
12639
12767
  const normalizedPath = (0, constants_1.normalizeFilePath)(filePath);
12640
- if (this.extensionTasksCreated.has(normalizedPath))
12768
+ const isCompleted = state.status === "completed";
12769
+ if (isCompleted) {
12770
+ await this.ensureCreatedBy(filePath, ctx.workingDirectory);
12771
+ }
12772
+ if (!this.extensionTypesByPath.has(normalizedPath)) {
12773
+ this.extensionTypesByPath.set(normalizedPath, extension.extensionType);
12774
+ await (0, init_task_1.completeInitTask)(ctx);
12775
+ await this.createExtensionTask(normalizedPath, extension.label, filePath, ctx);
12776
+ }
12777
+ if (!isCompleted)
12778
+ return;
12779
+ const tracked = ctx.trackedTasks.get(`ext-${normalizedPath}`);
12780
+ if (!tracked || tracked.status !== ditto_codegen_types_12.Status.RUNNING)
12781
+ return;
12782
+ const jobContext = ctx.getJobContext();
12783
+ if (!jobContext)
12641
12784
  return;
12642
- this.extensionTasksCreated.set(normalizedPath, extension.extensionType);
12643
- await this.completeInitTask(ctx);
12644
- await this.createExtensionTask(normalizedPath, extension.label, filePath, ctx);
12785
+ await this.completeExtensionTask(tracked, jobContext.jobId, ctx);
12645
12786
  }
12646
12787
  /** Reads an extension file from disk and injects createdBy if missing. */
12647
12788
  async ensureCreatedBy(filePath, workingDirectory) {
@@ -12664,24 +12805,7 @@ var require_extension_handler = __commonJS({
12664
12805
  });
12665
12806
  }
12666
12807
  }
12667
- /** Completes the INIT_CODEGEN task once the extension tasks are created. */
12668
- async completeInitTask(ctx) {
12669
- const { store } = ctx;
12670
- if (store?.isCompleted || store?.kind !== ditto_codegen_types_12.TaskKind.INIT_CODEGEN)
12671
- return;
12672
- if (!store.jobId || !store.taskId)
12673
- return;
12674
- store.isCompleted = true;
12675
- try {
12676
- await codeGenerationService_12.codeGenerationService.updateTask(store.jobId, store.taskId, ditto_codegen_types_12.Status.COMPLETED, {});
12677
- logger_12.logger.info("[OpenCode] Completed init task before extension tasks");
12678
- } catch (error) {
12679
- logger_12.logger.error("[OpenCode] Failed to complete init task", {
12680
- error: error instanceof Error ? error.message : String(error)
12681
- });
12682
- }
12683
- }
12684
- /** Registers a new RUNNING sub-task in the job service for a detected extension. */
12808
+ /** Registers a RUNNING sub-task in the job service for a detected extension. */
12685
12809
  async createExtensionTask(normalizedPath, extensionType, originalPath, ctx) {
12686
12810
  const jobContext = ctx.getJobContext();
12687
12811
  if (!jobContext)
@@ -12692,12 +12816,13 @@ var require_extension_handler = __commonJS({
12692
12816
  ctx.taskCounter++;
12693
12817
  const taskId = `${jobContext.taskId}-ext-${ctx.taskCounter}`;
12694
12818
  const extensionFolder = normalizedPath.substring(0, normalizedPath.lastIndexOf("/") + 1);
12695
- ctx.trackedTasks.set(extensionKey, {
12819
+ const tracked = {
12696
12820
  taskId,
12697
12821
  description,
12698
12822
  status: ditto_codegen_types_12.Status.RUNNING,
12699
12823
  extensionFolder
12700
- });
12824
+ };
12825
+ ctx.trackedTasks.set(extensionKey, tracked);
12701
12826
  try {
12702
12827
  await codeGenerationService_12.codeGenerationService.addTask(jobContext.jobId, {
12703
12828
  id: taskId,
@@ -12714,6 +12839,20 @@ var require_extension_handler = __commonJS({
12714
12839
  });
12715
12840
  }
12716
12841
  }
12842
+ /** Marks the extension task COMPLETED with the file list collected so far for its folder. */
12843
+ async completeExtensionTask(tracked, jobId, ctx) {
12844
+ tracked.status = ditto_codegen_types_12.Status.COMPLETED;
12845
+ try {
12846
+ await codeGenerationService_12.codeGenerationService.updateTask(jobId, tracked.taskId, ditto_codegen_types_12.Status.COMPLETED, buildExtensionTaskPayload(tracked, ctx.collectedFiles));
12847
+ logger_12.logger.info("[OpenCode] Completed extension task", {
12848
+ description: tracked.description
12849
+ });
12850
+ } catch (error) {
12851
+ logger_12.logger.error("[OpenCode] Failed to complete extension task", {
12852
+ error: error instanceof Error ? error.message : String(error)
12853
+ });
12854
+ }
12855
+ }
12717
12856
  };
12718
12857
  exports2.ExtensionTaskHandler = ExtensionTaskHandler;
12719
12858
  }
@@ -12729,6 +12868,7 @@ var require_category_handler = __commonJS({
12729
12868
  var codeGenerationService_12 = require_codeGenerationService();
12730
12869
  var logger_12 = require_logger();
12731
12870
  var constants_1 = require_constants5();
12871
+ var init_task_1 = require_init_task();
12732
12872
  var CategoryKey;
12733
12873
  (function(CategoryKey2) {
12734
12874
  CategoryKey2["CodeSearch"] = "code-search";
@@ -12764,10 +12904,10 @@ var require_category_handler = __commonJS({
12764
12904
  await this.track(CategoryKey.RunCommands, ctx, state);
12765
12905
  }
12766
12906
  if (tool === "validate") {
12767
- await this.track(CategoryKey.Validate, ctx, state);
12907
+ await this.track(CategoryKey.Validate, ctx);
12768
12908
  }
12769
12909
  if (constants_1.WRITE_TOOLS.has(tool)) {
12770
- await this.track(CategoryKey.WriteCode, ctx);
12910
+ await this.track(CategoryKey.WriteCode, ctx, state);
12771
12911
  }
12772
12912
  }
12773
12913
  async trackLoadSkill(ctx, state) {
@@ -12786,6 +12926,7 @@ var require_category_handler = __commonJS({
12786
12926
  const jobContext = ctx.getJobContext();
12787
12927
  if (!jobContext)
12788
12928
  return;
12929
+ await (0, init_task_1.completeInitTask)(ctx);
12789
12930
  const description = CATEGORY_DESCRIPTIONS[key];
12790
12931
  const taskId = `${jobContext.taskId}-${key}`;
12791
12932
  ctx.trackedTasks.set(key, {
@@ -12908,12 +13049,13 @@ var require_task_tracker = __commonJS({
12908
13049
  await (0, hooks_1.runOnToolUse)((0, hooks_1.getActiveHooks)(), { tool, state });
12909
13050
  }
12910
13051
  async handleWriteEvent(tool, state) {
12911
- if (state.status !== "completed")
12912
- return;
13052
+ const isCompleted = state.status === "completed";
12913
13053
  const fileStates = tool === "batch-write" ? this.expandBatchWrite(state) : [state];
12914
13054
  const effectiveTool = tool === "batch-write" ? "write" : tool;
12915
13055
  for (const fileState of fileStates) {
12916
- this.trackFileChange(effectiveTool, fileState);
13056
+ if (isCompleted) {
13057
+ this.trackFileChange(effectiveTool, fileState);
13058
+ }
12917
13059
  const ctx = this.handlerContext;
12918
13060
  await this.extensionHandler.handle(effectiveTool, fileState, ctx);
12919
13061
  this.taskCounter = ctx.taskCounter;
@@ -12921,7 +13063,7 @@ var require_task_tracker = __commonJS({
12921
13063
  }
12922
13064
  expandBatchWrite(state) {
12923
13065
  return (state.input?.files ?? []).map((f) => ({
12924
- status: "completed",
13066
+ status: state.status,
12925
13067
  input: { filePath: f.path, content: f.content },
12926
13068
  metadata: { exists: false }
12927
13069
  }));
@@ -12942,21 +13084,6 @@ var require_task_tracker = __commonJS({
12942
13084
  logger_12.logger.info("[OpenCode] Loaded skill", { skillName });
12943
13085
  await this.categoryHandler.trackLoadSkill(this.handlerContext, state);
12944
13086
  }
12945
- /** Builds the task completion payload — includes file list for extension tasks. */
12946
- buildTaskPayload(tracked) {
12947
- if (tracked.extensionFolder) {
12948
- const extensionFiles = this.collectedFiles.filter((f) => f.path.startsWith(tracked.extensionFolder));
12949
- return {
12950
- taskOutput: {
12951
- files: extensionFiles.map((f) => ({
12952
- path: f.path,
12953
- operation: f.operation
12954
- }))
12955
- }
12956
- };
12957
- }
12958
- return {};
12959
- }
12960
13087
  /** Marks all still-running tracked tasks as COMPLETED (called on successful process exit). */
12961
13088
  async completeRemainingTasks() {
12962
13089
  const jobContext = this.getJobContext();
@@ -12964,7 +13091,7 @@ var require_task_tracker = __commonJS({
12964
13091
  return;
12965
13092
  for (const [, tracked] of this.trackedTasks) {
12966
13093
  if (tracked.status === ditto_codegen_types_12.Status.RUNNING) {
12967
- const payload = this.buildTaskPayload(tracked);
13094
+ const payload = (0, extension_handler_1.buildExtensionTaskPayload)(tracked, this.collectedFiles);
12968
13095
  try {
12969
13096
  await codeGenerationService_12.codeGenerationService.updateTask(jobContext.jobId, tracked.taskId, ditto_codegen_types_12.Status.COMPLETED, payload);
12970
13097
  logger_12.logger.info("[OpenCode] Completed task", {
@@ -13149,18 +13276,18 @@ var require_process_handlers = __commonJS({
13149
13276
  exports2.setupCloseHandler = setupCloseHandler;
13150
13277
  exports2.setupErrorHandler = setupErrorHandler;
13151
13278
  var parser_1 = require_parser();
13152
- var config_1 = require_config();
13279
+ var config_12 = require_config();
13153
13280
  var process_manager_1 = require_process_manager();
13154
13281
  var result_builder_1 = require_result_builder();
13155
13282
  var logger_12 = require_logger();
13156
13283
  function setupTotalTimeout(ctx) {
13157
13284
  return setTimeout(() => {
13158
13285
  if (ctx.child && !ctx.state.resolved) {
13159
- logger_12.logger.warn(`[OpenCode] Process timed out after ${config_1.DEFAULT_TIMEOUT_MS}ms (total timeout)`);
13286
+ logger_12.logger.warn(`[OpenCode] Process timed out after ${config_12.DEFAULT_TIMEOUT_MS}ms (total timeout)`);
13160
13287
  (0, process_manager_1.killProcess)(ctx.child, ctx.state.resolved);
13161
- ctx.finalize((0, result_builder_1.createTimeoutResult)(`Process timed out after ${config_1.DEFAULT_TIMEOUT_MS}ms`, ctx.state.stdout, ctx.state.stderr, ctx.startTime));
13288
+ ctx.finalize((0, result_builder_1.createTimeoutResult)(`Process timed out after ${config_12.DEFAULT_TIMEOUT_MS}ms`, ctx.state.stdout, ctx.state.stderr, ctx.startTime));
13162
13289
  }
13163
- }, config_1.DEFAULT_TIMEOUT_MS);
13290
+ }, config_12.DEFAULT_TIMEOUT_MS);
13164
13291
  }
13165
13292
  function setupIdleWatchdog(ctx) {
13166
13293
  return setInterval(() => {
@@ -13235,7 +13362,7 @@ var require_executor = __commonJS({
13235
13362
  exports2.executeOpenCode = executeOpenCode;
13236
13363
  var child_process_1 = require("child_process");
13237
13364
  var ditto_codegen_types_12 = require_dist4();
13238
- var config_1 = require_config();
13365
+ var config_12 = require_config();
13239
13366
  var job_context_storage_12 = require_job_context_storage();
13240
13367
  var parser_1 = require_parser();
13241
13368
  var prompts_1 = require_prompts();
@@ -13302,7 +13429,7 @@ var require_executor = __commonJS({
13302
13429
  }
13303
13430
  async function logOpenCodeStats(options) {
13304
13431
  const isAsk = job_context_storage_12.jobContextStorage.getStore()?.kind === ditto_codegen_types_12.TaskKind.ASK_CODEGEN;
13305
- const env = (0, config_1.getOpenCodeEnv)(options.projectId, isAsk);
13432
+ const env = (0, config_12.getOpenCodeEnv)(options.projectId, isAsk);
13306
13433
  const stats = await (0, cost_tracker_1.fetchOpenCodeStats)(options.outputPath, env);
13307
13434
  if (stats) {
13308
13435
  console.log("[OpenCode] Stats\n", stats);
@@ -13358,7 +13485,7 @@ var require_executor = __commonJS({
13358
13485
  workingDirectory: outputPath
13359
13486
  });
13360
13487
  const isAsk = job_context_storage_12.jobContextStorage.getStore()?.kind === ditto_codegen_types_12.TaskKind.ASK_CODEGEN;
13361
- const env = (0, config_1.getOpenCodeEnv)(projectId, isAsk);
13488
+ const env = (0, config_12.getOpenCodeEnv)(projectId, isAsk);
13362
13489
  ctx.child = (0, child_process_1.spawn)("opencode", args, {
13363
13490
  cwd: outputPath,
13364
13491
  env,
@@ -17966,7 +18093,7 @@ var require_opencode_init = __commonJS({
17966
18093
  var ditto_codegen_types_2 = require_dist4();
17967
18094
  var context_12 = require_context();
17968
18095
  var logger_12 = require_logger();
17969
- var config_1 = require_config();
18096
+ var config_12 = require_config();
17970
18097
  var biEvents_1 = require_biEvents();
17971
18098
  var pre_run_decision_1 = require_pre_run_decision();
17972
18099
  var experiments_1 = require_experiments();
@@ -17992,7 +18119,7 @@ var require_opencode_init = __commonJS({
17992
18119
  logger_12.logger.info("[OpenCode Init] Marked task RUNNING", { taskId });
17993
18120
  (0, biEvents_1.reportSessionStart)({
17994
18121
  ...biBaseParams,
17995
- Task_model: config_1.DEFAULT_MODEL,
18122
+ Task_model: config_12.DEFAULT_MODEL,
17996
18123
  Task_type: kind
17997
18124
  });
17998
18125
  const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
@@ -18030,7 +18157,7 @@ var require_opencode_init = __commonJS({
18030
18157
  }
18031
18158
  (0, biEvents_1.reportSessionEnd)({
18032
18159
  ...biBaseParams,
18033
- Task_model: config_1.DEFAULT_MODEL,
18160
+ Task_model: config_12.DEFAULT_MODEL,
18034
18161
  Task_type: kind,
18035
18162
  Task_cost: Math.round(result.usage.cost * 1e6),
18036
18163
  Task_status: ditto_codegen_types_12.Status.COMPLETED,
@@ -18057,13 +18184,13 @@ var require_opencode_init = __commonJS({
18057
18184
  await (0, codegen_flow_helpers_12.updateParentTaskStatus)(localJobContext, ditto_codegen_types_12.Status.FAILED, codegenError);
18058
18185
  (0, biEvents_1.reportSessionEnd)({
18059
18186
  ...biBaseParams,
18060
- Task_model: config_1.DEFAULT_MODEL,
18187
+ Task_model: config_12.DEFAULT_MODEL,
18061
18188
  Task_type: kind,
18062
18189
  Task_status: ditto_codegen_types_12.Status.FAILED
18063
18190
  });
18064
18191
  (0, biEvents_1.reportSessionError)({
18065
18192
  ...biBaseParams,
18066
- task_model: config_1.DEFAULT_MODEL,
18193
+ task_model: config_12.DEFAULT_MODEL,
18067
18194
  task_type: kind,
18068
18195
  Agent_output: JSON.stringify(codegenError),
18069
18196
  Error_desc: codegenError.errorType,
@@ -18155,7 +18282,7 @@ var require_opencode_iterate = __commonJS({
18155
18282
  var ditto_codegen_types_2 = require_dist4();
18156
18283
  var context_12 = require_context();
18157
18284
  var logger_12 = require_logger();
18158
- var config_1 = require_config();
18285
+ var config_12 = require_config();
18159
18286
  var biEvents_1 = require_biEvents();
18160
18287
  var hooks_1 = require_hooks();
18161
18288
  var runOpencodeIterateFlow = async (chatHistory, agentData) => {
@@ -18178,7 +18305,7 @@ var require_opencode_iterate = __commonJS({
18178
18305
  logger_12.logger.info("[OpenCode Iterate] Marked task RUNNING", { taskId });
18179
18306
  (0, biEvents_1.reportSessionStart)({
18180
18307
  ...biBaseParams,
18181
- Task_model: config_1.DEFAULT_MODEL,
18308
+ Task_model: config_12.DEFAULT_MODEL,
18182
18309
  Task_type: kind
18183
18310
  });
18184
18311
  const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
@@ -18208,7 +18335,7 @@ var require_opencode_iterate = __commonJS({
18208
18335
  });
18209
18336
  (0, biEvents_1.reportSessionEnd)({
18210
18337
  ...biBaseParams,
18211
- Task_model: config_1.DEFAULT_MODEL,
18338
+ Task_model: config_12.DEFAULT_MODEL,
18212
18339
  Task_type: kind,
18213
18340
  Task_cost: Math.round(result.usage.cost * 1e6),
18214
18341
  Task_status: ditto_codegen_types_12.Status.COMPLETED,
@@ -18229,13 +18356,13 @@ var require_opencode_iterate = __commonJS({
18229
18356
  await (0, codegen_flow_helpers_12.updateParentTaskStatus)(localJobContext, ditto_codegen_types_12.Status.FAILED, codegenError);
18230
18357
  (0, biEvents_1.reportSessionEnd)({
18231
18358
  ...biBaseParams,
18232
- Task_model: config_1.DEFAULT_MODEL,
18359
+ Task_model: config_12.DEFAULT_MODEL,
18233
18360
  Task_type: kind,
18234
18361
  Task_status: ditto_codegen_types_12.Status.FAILED
18235
18362
  });
18236
18363
  (0, biEvents_1.reportSessionError)({
18237
18364
  ...biBaseParams,
18238
- task_model: config_1.DEFAULT_MODEL,
18365
+ task_model: config_12.DEFAULT_MODEL,
18239
18366
  task_type: kind,
18240
18367
  Agent_output: JSON.stringify(codegenError),
18241
18368
  Error_desc: codegenError.errorType,
@@ -18325,7 +18452,7 @@ var require_opencode_ask = __commonJS({
18325
18452
  var ditto_codegen_types_2 = require_dist4();
18326
18453
  var context_12 = require_context();
18327
18454
  var logger_12 = require_logger();
18328
- var config_1 = require_config();
18455
+ var config_12 = require_config();
18329
18456
  var biEvents_1 = require_biEvents();
18330
18457
  var runOpencodeAskFlow = async (chatHistory) => {
18331
18458
  const store = job_context_storage_12.jobContextStorage.getStore();
@@ -18347,7 +18474,7 @@ var require_opencode_ask = __commonJS({
18347
18474
  logger_12.logger.info("[OpenCode Ask] Marked task RUNNING", { taskId });
18348
18475
  (0, biEvents_1.reportSessionStart)({
18349
18476
  ...biBaseParams,
18350
- Task_model: config_1.DEFAULT_MODEL,
18477
+ Task_model: config_12.DEFAULT_MODEL,
18351
18478
  Task_type: kind
18352
18479
  });
18353
18480
  try {
@@ -18366,7 +18493,7 @@ var require_opencode_ask = __commonJS({
18366
18493
  });
18367
18494
  (0, biEvents_1.reportSessionEnd)({
18368
18495
  ...biBaseParams,
18369
- Task_model: config_1.DEFAULT_MODEL,
18496
+ Task_model: config_12.DEFAULT_MODEL,
18370
18497
  Task_type: kind,
18371
18498
  Task_cost: Math.round(result.usage.cost * 1e6),
18372
18499
  Task_status: ditto_codegen_types_12.Status.COMPLETED,
@@ -18378,13 +18505,13 @@ var require_opencode_ask = __commonJS({
18378
18505
  await (0, codegen_flow_helpers_12.updateParentTaskStatus)(localJobContext, ditto_codegen_types_12.Status.FAILED, codegenError);
18379
18506
  (0, biEvents_1.reportSessionEnd)({
18380
18507
  ...biBaseParams,
18381
- Task_model: config_1.DEFAULT_MODEL,
18508
+ Task_model: config_12.DEFAULT_MODEL,
18382
18509
  Task_type: kind,
18383
18510
  Task_status: ditto_codegen_types_12.Status.FAILED
18384
18511
  });
18385
18512
  (0, biEvents_1.reportSessionError)({
18386
18513
  ...biBaseParams,
18387
- task_model: config_1.DEFAULT_MODEL,
18514
+ task_model: config_12.DEFAULT_MODEL,
18388
18515
  task_type: kind,
18389
18516
  Agent_output: JSON.stringify(codegenError),
18390
18517
  Error_desc: codegenError.errorType,
@@ -18672,6 +18799,7 @@ var logger_1 = require_logger();
18672
18799
  var skills_installer_1 = require_skills_installer();
18673
18800
  var rules_writer_1 = require_rules_writer();
18674
18801
  var tools_writer_1 = require_tools_writer();
18802
+ var config_1 = require_config();
18675
18803
  var environments_1 = require_environments();
18676
18804
  var sessionId = process.env.CODEGEN_SESSION_ID || (0, crypto_1.randomUUID)();
18677
18805
  process.env.CODEGEN_SESSION_ID = sessionId;
@@ -18704,6 +18832,8 @@ var alwaysOnLoop = async () => {
18704
18832
  }
18705
18833
  const jobId = job.id;
18706
18834
  logger_1.logger.info("[Loop] Selected job", { jobId });
18835
+ const freshToken = await codeGenerationService_1.codeGenerationService.refreshAccessToken();
18836
+ (0, config_1.setCurrentAccessToken)(freshToken);
18707
18837
  await codeGenerationService_1.codeGenerationService.markJobAsRuninng(jobId);
18708
18838
  await processJob(job);
18709
18839
  await codeGenerationService_1.codeGenerationService.markJobAsCompleted(jobId);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/ditto-codegen-public",
3
- "version": "1.0.314",
3
+ "version": "1.0.316",
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": "d9b12ec21f21078ba1ac9393765773db4870fefd00a8a85fc542cd50"
30
+ "falconPackageHash": "fdbca03775b0d9bfe701dc5d76f9b55cffa318cb0a728e41a97434c0"
31
31
  }