@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.
- package/dist/out.js +218 -88
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
12751
|
+
this.extensionTypesByPath = /* @__PURE__ */ new Map();
|
|
12623
12752
|
}
|
|
12624
12753
|
getExtensionTypesCreated() {
|
|
12625
|
-
return Array.from(this.
|
|
12754
|
+
return Array.from(this.extensionTypesByPath.values());
|
|
12626
12755
|
}
|
|
12627
|
-
/** Inspects a write/edit event;
|
|
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
|
-
|
|
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.
|
|
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
|
-
/**
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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 =
|
|
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
|
|
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 ${
|
|
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 ${
|
|
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
|
-
},
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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.
|
|
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": "
|
|
30
|
+
"falconPackageHash": "fdbca03775b0d9bfe701dc5d76f9b55cffa318cb0a728e41a97434c0"
|
|
31
31
|
}
|