@wix/ditto-codegen-public 1.0.267 → 1.0.268
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 +375 -187
- package/package.json +2 -2
package/dist/out.js
CHANGED
|
@@ -47,6 +47,7 @@ var require_types_impl = __commonJS({
|
|
|
47
47
|
TaskKind2["ITERATE_CODEGEN"] = "ITERATE_CODEGEN";
|
|
48
48
|
TaskKind2["RUN_AGENT"] = "RUN_AGENT";
|
|
49
49
|
TaskKind2["FIX_CODE"] = "FIX_CODE";
|
|
50
|
+
TaskKind2["ASK_CODEGEN"] = "ASK_CODEGEN";
|
|
50
51
|
})(TaskKind || (exports2.TaskKind = TaskKind = {}));
|
|
51
52
|
var Status;
|
|
52
53
|
(function(Status2) {
|
|
@@ -48473,24 +48474,6 @@ var require_DittoEventEmitter = __commonJS({
|
|
|
48473
48474
|
}
|
|
48474
48475
|
});
|
|
48475
48476
|
|
|
48476
|
-
// dist/opencode-integration/types.js
|
|
48477
|
-
var require_types5 = __commonJS({
|
|
48478
|
-
"dist/opencode-integration/types.js"(exports2) {
|
|
48479
|
-
"use strict";
|
|
48480
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
48481
|
-
exports2.ASK_MODE = void 0;
|
|
48482
|
-
exports2.tryParseJson = tryParseJson;
|
|
48483
|
-
exports2.ASK_MODE = "ask";
|
|
48484
|
-
function tryParseJson(text) {
|
|
48485
|
-
try {
|
|
48486
|
-
return JSON.parse(text);
|
|
48487
|
-
} catch {
|
|
48488
|
-
return null;
|
|
48489
|
-
}
|
|
48490
|
-
}
|
|
48491
|
-
}
|
|
48492
|
-
});
|
|
48493
|
-
|
|
48494
48477
|
// dist/opencode-integration/prompts/prompt-utils.js
|
|
48495
48478
|
var require_prompt_utils = __commonJS({
|
|
48496
48479
|
"dist/opencode-integration/prompts/prompt-utils.js"(exports2) {
|
|
@@ -48711,6 +48694,94 @@ var require_prompts = __commonJS({
|
|
|
48711
48694
|
}
|
|
48712
48695
|
});
|
|
48713
48696
|
|
|
48697
|
+
// dist/opencode-integration/task-tracker/constants.js
|
|
48698
|
+
var require_constants6 = __commonJS({
|
|
48699
|
+
"dist/opencode-integration/task-tracker/constants.js"(exports2) {
|
|
48700
|
+
"use strict";
|
|
48701
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
48702
|
+
exports2.BUILDER_TO_EXTENSION_LABEL = exports2.WRITE_TOOLS = exports2.CODE_SEARCH_TOOLS = exports2.WIX_MCP_SERVER_NAME = exports2.CONTAINER_ROOT_PREFIX = void 0;
|
|
48703
|
+
exports2.resolveFileOperation = resolveFileOperation;
|
|
48704
|
+
exports2.isMcpTool = isMcpTool;
|
|
48705
|
+
exports2.normalizeFilePath = normalizeFilePath;
|
|
48706
|
+
exports2.isExtensionsFile = isExtensionsFile;
|
|
48707
|
+
exports2.detectExtensionType = detectExtensionType;
|
|
48708
|
+
exports2.toTitleCase = toTitleCase;
|
|
48709
|
+
exports2.extractExtensionName = extractExtensionName;
|
|
48710
|
+
exports2.getWrittenContent = getWrittenContent;
|
|
48711
|
+
var ditto_codegen_types_12 = require_dist4();
|
|
48712
|
+
exports2.CONTAINER_ROOT_PREFIX = /^\/user-code\//;
|
|
48713
|
+
exports2.WIX_MCP_SERVER_NAME = "wix-mcp";
|
|
48714
|
+
var EXTENSION_FILE_PATTERN = /\/extensions\.ts$|\.extension\.ts$/;
|
|
48715
|
+
function resolveFileOperation(tool2, metadata) {
|
|
48716
|
+
if (tool2 === "write") {
|
|
48717
|
+
return metadata?.exists ? ditto_codegen_types_12.ExtensionGenerationOperation.EDIT : ditto_codegen_types_12.ExtensionGenerationOperation.INSERT;
|
|
48718
|
+
}
|
|
48719
|
+
if (tool2 === "edit") {
|
|
48720
|
+
return ditto_codegen_types_12.ExtensionGenerationOperation.EDIT;
|
|
48721
|
+
}
|
|
48722
|
+
return null;
|
|
48723
|
+
}
|
|
48724
|
+
exports2.CODE_SEARCH_TOOLS = /* @__PURE__ */ new Set(["read", "grep", "glob", "list"]);
|
|
48725
|
+
exports2.WRITE_TOOLS = /* @__PURE__ */ new Set(["write", "edit"]);
|
|
48726
|
+
exports2.BUILDER_TO_EXTENSION_LABEL = {
|
|
48727
|
+
dashboardPage: "dashboard page",
|
|
48728
|
+
dashboardModal: "dashboard modal",
|
|
48729
|
+
dashboardPlugin: "dashboard plugin",
|
|
48730
|
+
dashboardMenuPlugin: "dashboard menu plugin",
|
|
48731
|
+
embeddedScript: "embedded script",
|
|
48732
|
+
event: "backend event",
|
|
48733
|
+
genericExtension: "extension",
|
|
48734
|
+
customElement: "custom element",
|
|
48735
|
+
siteComponent: "site component",
|
|
48736
|
+
sitePlugin: "site plugin",
|
|
48737
|
+
ecomShippingRates: "service plugin",
|
|
48738
|
+
ecomAdditionalFees: "service plugin",
|
|
48739
|
+
ecomValidations: "service plugin",
|
|
48740
|
+
ecomDiscountTriggers: "service plugin",
|
|
48741
|
+
ecomGiftCards: "service plugin",
|
|
48742
|
+
ecomPaymentSettings: "service plugin",
|
|
48743
|
+
bookingsStaffSortingProvider: "service plugin"
|
|
48744
|
+
};
|
|
48745
|
+
function isMcpTool(tool2) {
|
|
48746
|
+
return tool2.startsWith(exports2.WIX_MCP_SERVER_NAME);
|
|
48747
|
+
}
|
|
48748
|
+
function normalizeFilePath(filePath) {
|
|
48749
|
+
return filePath.replace(exports2.CONTAINER_ROOT_PREFIX, "");
|
|
48750
|
+
}
|
|
48751
|
+
function isExtensionsFile(filePath) {
|
|
48752
|
+
return EXTENSION_FILE_PATTERN.test(filePath);
|
|
48753
|
+
}
|
|
48754
|
+
function detectExtensionType(content) {
|
|
48755
|
+
if (content.includes("genericExtension(") && content.includes('compType: "DATA_COMPONENT"')) {
|
|
48756
|
+
return "collection";
|
|
48757
|
+
}
|
|
48758
|
+
for (const [builder, label] of Object.entries(exports2.BUILDER_TO_EXTENSION_LABEL)) {
|
|
48759
|
+
if (content.includes(`extensions.${builder}(`)) {
|
|
48760
|
+
return label;
|
|
48761
|
+
}
|
|
48762
|
+
}
|
|
48763
|
+
return null;
|
|
48764
|
+
}
|
|
48765
|
+
function toTitleCase(str) {
|
|
48766
|
+
return str.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
48767
|
+
}
|
|
48768
|
+
function extractExtensionName(filePath) {
|
|
48769
|
+
const parts = normalizeFilePath(filePath).split("/");
|
|
48770
|
+
const folderName = parts[parts.length - 2] || "";
|
|
48771
|
+
return toTitleCase(folderName);
|
|
48772
|
+
}
|
|
48773
|
+
function getWrittenContent(tool2, state) {
|
|
48774
|
+
if (!state.input)
|
|
48775
|
+
return null;
|
|
48776
|
+
if (tool2 === "write" && state.input.content)
|
|
48777
|
+
return state.input.content;
|
|
48778
|
+
if (tool2 === "edit" && state.input.new_string)
|
|
48779
|
+
return state.input.new_string;
|
|
48780
|
+
return null;
|
|
48781
|
+
}
|
|
48782
|
+
}
|
|
48783
|
+
});
|
|
48784
|
+
|
|
48714
48785
|
// dist/opencode-integration/config.js
|
|
48715
48786
|
var require_config = __commonJS({
|
|
48716
48787
|
"dist/opencode-integration/config.js"(exports2) {
|
|
@@ -48722,6 +48793,7 @@ var require_config = __commonJS({
|
|
|
48722
48793
|
exports2.getOpenCodeAskEnv = getOpenCodeAskEnv;
|
|
48723
48794
|
var os_1 = require("os");
|
|
48724
48795
|
var codeGenerationService_12 = require_codeGenerationService();
|
|
48796
|
+
var constants_1 = require_constants6();
|
|
48725
48797
|
exports2.DEFAULT_TIMEOUT_MS = 20 * 60 * 1e3;
|
|
48726
48798
|
exports2.DEFAULT_MODEL = "anthropic/claude-sonnet-4-6";
|
|
48727
48799
|
function getAnthropicBaseUrl(projectId) {
|
|
@@ -48741,7 +48813,7 @@ var require_config = __commonJS({
|
|
|
48741
48813
|
};
|
|
48742
48814
|
}
|
|
48743
48815
|
var WIX_MCP_CONFIG = {
|
|
48744
|
-
|
|
48816
|
+
[constants_1.WIX_MCP_SERVER_NAME]: {
|
|
48745
48817
|
type: "local",
|
|
48746
48818
|
command: [
|
|
48747
48819
|
"npx",
|
|
@@ -48830,6 +48902,22 @@ var require_config = __commonJS({
|
|
|
48830
48902
|
}
|
|
48831
48903
|
});
|
|
48832
48904
|
|
|
48905
|
+
// dist/opencode-integration/types.js
|
|
48906
|
+
var require_types5 = __commonJS({
|
|
48907
|
+
"dist/opencode-integration/types.js"(exports2) {
|
|
48908
|
+
"use strict";
|
|
48909
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
48910
|
+
exports2.tryParseJson = tryParseJson;
|
|
48911
|
+
function tryParseJson(text) {
|
|
48912
|
+
try {
|
|
48913
|
+
return JSON.parse(text);
|
|
48914
|
+
} catch {
|
|
48915
|
+
return null;
|
|
48916
|
+
}
|
|
48917
|
+
}
|
|
48918
|
+
}
|
|
48919
|
+
});
|
|
48920
|
+
|
|
48833
48921
|
// dist/opencode-integration/parser.js
|
|
48834
48922
|
var require_parser = __commonJS({
|
|
48835
48923
|
"dist/opencode-integration/parser.js"(exports2) {
|
|
@@ -48844,10 +48932,7 @@ var require_parser = __commonJS({
|
|
|
48844
48932
|
exports2.formatUsageStats = formatUsageStats;
|
|
48845
48933
|
var ditto_codegen_types_12 = require_dist4();
|
|
48846
48934
|
var types_1 = require_types5();
|
|
48847
|
-
var
|
|
48848
|
-
write: ditto_codegen_types_12.ExtensionGenerationOperation.INSERT,
|
|
48849
|
-
edit: ditto_codegen_types_12.ExtensionGenerationOperation.EDIT
|
|
48850
|
-
};
|
|
48935
|
+
var constants_1 = require_constants6();
|
|
48851
48936
|
function parseEvents(output, type) {
|
|
48852
48937
|
return output.split("\n").filter((line) => line.trim()).map((line) => (0, types_1.tryParseJson)(line)).filter((event) => event !== null && event.type === type);
|
|
48853
48938
|
}
|
|
@@ -48873,14 +48958,11 @@ var require_parser = __commonJS({
|
|
|
48873
48958
|
}
|
|
48874
48959
|
return [];
|
|
48875
48960
|
}
|
|
48876
|
-
function normalizeFilePath(filePath) {
|
|
48877
|
-
return filePath.replace(/^\/user-code\//, "");
|
|
48878
|
-
}
|
|
48879
48961
|
function parseFilesChanged(output) {
|
|
48880
48962
|
const filesChanged = [];
|
|
48881
48963
|
const seenPaths = /* @__PURE__ */ new Set();
|
|
48882
48964
|
const addFileChange = (filePath, operation) => {
|
|
48883
|
-
const normalizedPath = normalizeFilePath(filePath);
|
|
48965
|
+
const normalizedPath = (0, constants_1.normalizeFilePath)(filePath);
|
|
48884
48966
|
if (normalizedPath && !seenPaths.has(normalizedPath)) {
|
|
48885
48967
|
seenPaths.add(normalizedPath);
|
|
48886
48968
|
filesChanged.push({ path: normalizedPath, operation });
|
|
@@ -48895,13 +48977,13 @@ var require_parser = __commonJS({
|
|
|
48895
48977
|
continue;
|
|
48896
48978
|
}
|
|
48897
48979
|
const tool2 = event.part.tool;
|
|
48898
|
-
const
|
|
48980
|
+
const metadata = event.part.state.metadata;
|
|
48981
|
+
const operation = (0, constants_1.resolveFileOperation)(tool2, metadata);
|
|
48899
48982
|
if (operation) {
|
|
48900
48983
|
const filePath = event.part.state.input?.filePath;
|
|
48901
48984
|
if (filePath) {
|
|
48902
48985
|
addFileChange(filePath, operation);
|
|
48903
48986
|
}
|
|
48904
|
-
const metadata = event.part.state.metadata;
|
|
48905
48987
|
if (metadata?.diagnostics) {
|
|
48906
48988
|
for (const diagPath of Object.keys(metadata.diagnostics)) {
|
|
48907
48989
|
if (diagPath && !diagPath.includes("node_modules")) {
|
|
@@ -48912,7 +48994,7 @@ var require_parser = __commonJS({
|
|
|
48912
48994
|
}
|
|
48913
48995
|
if (tool2 === "task" && event.part.state.metadata?.summary) {
|
|
48914
48996
|
for (const item of event.part.state.metadata.summary) {
|
|
48915
|
-
const summaryOperation =
|
|
48997
|
+
const summaryOperation = (0, constants_1.resolveFileOperation)(item.tool);
|
|
48916
48998
|
if (summaryOperation && item.state?.status === "completed" && item.state?.title) {
|
|
48917
48999
|
addFileChange(item.state.title, summaryOperation);
|
|
48918
49000
|
}
|
|
@@ -48993,143 +49075,128 @@ var require_parser = __commonJS({
|
|
|
48993
49075
|
}
|
|
48994
49076
|
});
|
|
48995
49077
|
|
|
48996
|
-
// dist/opencode-integration/task-tracker.js
|
|
48997
|
-
var
|
|
48998
|
-
"dist/opencode-integration/task-tracker.js"(exports2) {
|
|
49078
|
+
// dist/opencode-integration/task-tracker/extension-handler.js
|
|
49079
|
+
var require_extension_handler = __commonJS({
|
|
49080
|
+
"dist/opencode-integration/task-tracker/extension-handler.js"(exports2) {
|
|
48999
49081
|
"use strict";
|
|
49000
49082
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
49001
|
-
exports2.
|
|
49002
|
-
var codeGenerationService_12 = require_codeGenerationService();
|
|
49003
|
-
var job_context_storage_12 = require_job_context_storage();
|
|
49083
|
+
exports2.ExtensionTaskHandler = void 0;
|
|
49004
49084
|
var ditto_codegen_types_12 = require_dist4();
|
|
49005
|
-
var
|
|
49085
|
+
var codeGenerationService_12 = require_codeGenerationService();
|
|
49006
49086
|
var logger_12 = require_logger();
|
|
49007
|
-
var
|
|
49008
|
-
|
|
49009
|
-
|
|
49010
|
-
|
|
49011
|
-
var OpenCodeTaskTracker = class {
|
|
49012
|
-
constructor(options) {
|
|
49013
|
-
this.trackedTasks = /* @__PURE__ */ new Map();
|
|
49014
|
-
this.taskCounter = 0;
|
|
49015
|
-
this.codeSearchTaskCreated = false;
|
|
49016
|
-
this.docSearchTaskCreated = false;
|
|
49017
|
-
this.skillsUsed = /* @__PURE__ */ new Set();
|
|
49018
|
-
this.trackToolCategories = options?.trackToolCategories ?? false;
|
|
49019
|
-
}
|
|
49020
|
-
getJobContext() {
|
|
49021
|
-
const store = job_context_storage_12.jobContextStorage.getStore();
|
|
49022
|
-
if (!store?.jobId || !store?.taskId) {
|
|
49023
|
-
return null;
|
|
49024
|
-
}
|
|
49025
|
-
return { jobId: store.jobId, taskId: store.taskId };
|
|
49087
|
+
var constants_1 = require_constants6();
|
|
49088
|
+
var ExtensionTaskHandler = class {
|
|
49089
|
+
constructor() {
|
|
49090
|
+
this.extensionTasksCreated = /* @__PURE__ */ new Set();
|
|
49026
49091
|
}
|
|
49027
|
-
|
|
49028
|
-
|
|
49092
|
+
/** Inspects a write/edit event; if it targets an extension file, creates a tracked sub-task. */
|
|
49093
|
+
async handle(tool2, state, ctx) {
|
|
49094
|
+
const filePath = state.input?.filePath || state.title || "";
|
|
49095
|
+
if (!(0, constants_1.isExtensionsFile)(filePath))
|
|
49029
49096
|
return;
|
|
49030
|
-
const
|
|
49031
|
-
if (
|
|
49032
|
-
|
|
49033
|
-
|
|
49097
|
+
const content = (0, constants_1.getWrittenContent)(tool2, state);
|
|
49098
|
+
if (!content)
|
|
49099
|
+
return;
|
|
49100
|
+
const extensionType = (0, constants_1.detectExtensionType)(content);
|
|
49101
|
+
if (!extensionType)
|
|
49102
|
+
return;
|
|
49103
|
+
const normalizedPath = (0, constants_1.normalizeFilePath)(filePath);
|
|
49104
|
+
if (this.extensionTasksCreated.has(normalizedPath))
|
|
49105
|
+
return;
|
|
49106
|
+
await this.completeInitTask(ctx);
|
|
49107
|
+
await this.createExtensionTask(normalizedPath, extensionType, filePath, ctx);
|
|
49034
49108
|
}
|
|
49035
|
-
|
|
49036
|
-
|
|
49109
|
+
/** Completes the INIT_CODEGEN task once the extension tasks are created. */
|
|
49110
|
+
async completeInitTask(ctx) {
|
|
49111
|
+
const { store } = ctx;
|
|
49112
|
+
if (store?.isCompleted || store?.kind !== ditto_codegen_types_12.TaskKind.INIT_CODEGEN)
|
|
49037
49113
|
return;
|
|
49038
|
-
|
|
49039
|
-
if (!tool2 || !callID || !state)
|
|
49114
|
+
if (!store.jobId || !store.taskId)
|
|
49040
49115
|
return;
|
|
49041
|
-
|
|
49042
|
-
|
|
49043
|
-
|
|
49044
|
-
|
|
49045
|
-
|
|
49046
|
-
|
|
49047
|
-
|
|
49048
|
-
|
|
49116
|
+
store.isCompleted = true;
|
|
49117
|
+
try {
|
|
49118
|
+
await codeGenerationService_12.codeGenerationService.updateTask(store.jobId, store.taskId, ditto_codegen_types_12.Status.COMPLETED, {});
|
|
49119
|
+
logger_12.logger.info("[OpenCode] Completed init task before extension tasks");
|
|
49120
|
+
} catch (error48) {
|
|
49121
|
+
logger_12.logger.error("[OpenCode] Failed to complete init task", {
|
|
49122
|
+
error: error48 instanceof Error ? error48.message : String(error48)
|
|
49123
|
+
});
|
|
49049
49124
|
}
|
|
49050
49125
|
}
|
|
49051
|
-
|
|
49052
|
-
|
|
49126
|
+
/** Registers a new RUNNING sub-task in the job service for a detected extension. */
|
|
49127
|
+
async createExtensionTask(normalizedPath, extensionType, originalPath, ctx) {
|
|
49128
|
+
const jobContext = ctx.getJobContext();
|
|
49053
49129
|
if (!jobContext)
|
|
49054
49130
|
return;
|
|
49055
|
-
const
|
|
49056
|
-
|
|
49057
|
-
|
|
49058
|
-
|
|
49059
|
-
|
|
49060
|
-
|
|
49061
|
-
|
|
49131
|
+
const extensionName = (0, constants_1.extractExtensionName)(originalPath);
|
|
49132
|
+
const description = `Creating ${extensionName} ${extensionType}`;
|
|
49133
|
+
const extensionKey = `ext-${normalizedPath}`;
|
|
49134
|
+
this.extensionTasksCreated.add(normalizedPath);
|
|
49135
|
+
ctx.taskCounter++;
|
|
49136
|
+
const taskId = `${jobContext.taskId}-ext-${ctx.taskCounter}`;
|
|
49137
|
+
const extensionFolder = normalizedPath.substring(0, normalizedPath.lastIndexOf("/") + 1);
|
|
49138
|
+
ctx.trackedTasks.set(extensionKey, {
|
|
49139
|
+
taskId,
|
|
49140
|
+
description,
|
|
49141
|
+
status: ditto_codegen_types_12.Status.RUNNING,
|
|
49142
|
+
extensionFolder
|
|
49143
|
+
});
|
|
49144
|
+
try {
|
|
49145
|
+
await codeGenerationService_12.codeGenerationService.addTask(jobContext.jobId, {
|
|
49146
|
+
id: taskId,
|
|
49147
|
+
kind: ditto_codegen_types_12.TaskKind.RUN_AGENT,
|
|
49148
|
+
status: ditto_codegen_types_12.Status.RUNNING,
|
|
49149
|
+
name: "create_extension",
|
|
49062
49150
|
description,
|
|
49063
|
-
|
|
49151
|
+
agentName: ""
|
|
49152
|
+
});
|
|
49153
|
+
logger_12.logger.info("[OpenCode] Created extension task", { description });
|
|
49154
|
+
} catch (error48) {
|
|
49155
|
+
logger_12.logger.error("[OpenCode] Failed to create extension task", {
|
|
49156
|
+
error: error48 instanceof Error ? error48.message : String(error48)
|
|
49064
49157
|
});
|
|
49065
|
-
try {
|
|
49066
|
-
await codeGenerationService_12.codeGenerationService.addTask(jobContext.jobId, {
|
|
49067
|
-
id: taskId,
|
|
49068
|
-
kind: ditto_codegen_types_12.TaskKind.RUN_AGENT,
|
|
49069
|
-
status: initialStatus,
|
|
49070
|
-
name: "run_agent",
|
|
49071
|
-
description: `Run agent for ${description}`,
|
|
49072
|
-
agentName: "OpenCodeSubAgent"
|
|
49073
|
-
});
|
|
49074
|
-
logger_12.logger.info("[OpenCode] Created sub-task", {
|
|
49075
|
-
description,
|
|
49076
|
-
status: state.status
|
|
49077
|
-
});
|
|
49078
|
-
} catch (error48) {
|
|
49079
|
-
logger_12.logger.error("[OpenCode] Failed to create sub-task", {
|
|
49080
|
-
error: error48 instanceof Error ? error48.message : String(error48)
|
|
49081
|
-
});
|
|
49082
|
-
}
|
|
49083
|
-
return;
|
|
49084
|
-
}
|
|
49085
|
-
const tracked = this.trackedTasks.get(callID);
|
|
49086
|
-
if (state.status === "completed" && tracked.status !== ditto_codegen_types_12.Status.COMPLETED) {
|
|
49087
|
-
tracked.status = ditto_codegen_types_12.Status.COMPLETED;
|
|
49088
|
-
try {
|
|
49089
|
-
await codeGenerationService_12.codeGenerationService.updateTask(jobContext.jobId, tracked.taskId, ditto_codegen_types_12.Status.COMPLETED, {});
|
|
49090
|
-
logger_12.logger.info("[OpenCode] Completed sub-task", {
|
|
49091
|
-
description: tracked.description
|
|
49092
|
-
});
|
|
49093
|
-
} catch (error48) {
|
|
49094
|
-
logger_12.logger.error("[OpenCode] Failed to update sub-task", {
|
|
49095
|
-
error: error48 instanceof Error ? error48.message : String(error48)
|
|
49096
|
-
});
|
|
49097
|
-
}
|
|
49098
|
-
} else if (state.status === "error" && tracked.status !== ditto_codegen_types_12.Status.FAILED) {
|
|
49099
|
-
tracked.status = ditto_codegen_types_12.Status.FAILED;
|
|
49100
|
-
try {
|
|
49101
|
-
await codeGenerationService_12.codeGenerationService.updateTask(jobContext.jobId, tracked.taskId, ditto_codegen_types_12.Status.FAILED, { error: state.output || "Sub-agent failed" });
|
|
49102
|
-
logger_12.logger.error("[OpenCode] Failed sub-task", {
|
|
49103
|
-
description: tracked.description
|
|
49104
|
-
});
|
|
49105
|
-
} catch (error48) {
|
|
49106
|
-
logger_12.logger.error("[OpenCode] Failed to update sub-task", {
|
|
49107
|
-
error: error48 instanceof Error ? error48.message : String(error48)
|
|
49108
|
-
});
|
|
49109
|
-
}
|
|
49110
49158
|
}
|
|
49111
49159
|
}
|
|
49112
|
-
|
|
49113
|
-
|
|
49114
|
-
|
|
49115
|
-
|
|
49160
|
+
};
|
|
49161
|
+
exports2.ExtensionTaskHandler = ExtensionTaskHandler;
|
|
49162
|
+
}
|
|
49163
|
+
});
|
|
49164
|
+
|
|
49165
|
+
// dist/opencode-integration/task-tracker/category-handler.js
|
|
49166
|
+
var require_category_handler = __commonJS({
|
|
49167
|
+
"dist/opencode-integration/task-tracker/category-handler.js"(exports2) {
|
|
49168
|
+
"use strict";
|
|
49169
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
49170
|
+
exports2.CategoryTaskHandler = void 0;
|
|
49171
|
+
var ditto_codegen_types_12 = require_dist4();
|
|
49172
|
+
var codeGenerationService_12 = require_codeGenerationService();
|
|
49173
|
+
var logger_12 = require_logger();
|
|
49174
|
+
var constants_1 = require_constants6();
|
|
49175
|
+
var CategoryTaskHandler = class {
|
|
49176
|
+
constructor() {
|
|
49177
|
+
this.codeSearchCreated = false;
|
|
49178
|
+
this.docSearchCreated = false;
|
|
49116
49179
|
}
|
|
49117
|
-
|
|
49118
|
-
|
|
49180
|
+
/** Creates a search sub-task on the first use of code-search or MCP tools. */
|
|
49181
|
+
async handle(tool2, ctx) {
|
|
49182
|
+
const jobContext = ctx.getJobContext();
|
|
49119
49183
|
if (!jobContext)
|
|
49120
49184
|
return;
|
|
49121
|
-
if (CODE_SEARCH_TOOLS.has(tool2) && !this.
|
|
49122
|
-
this.
|
|
49123
|
-
await this.
|
|
49185
|
+
if (constants_1.CODE_SEARCH_TOOLS.has(tool2) && !this.codeSearchCreated) {
|
|
49186
|
+
this.codeSearchCreated = true;
|
|
49187
|
+
await this.createTask("code-search", "Searching in code", ctx);
|
|
49124
49188
|
}
|
|
49125
|
-
if (isMcpTool(tool2) && !this.
|
|
49126
|
-
this.
|
|
49127
|
-
await this.
|
|
49189
|
+
if ((0, constants_1.isMcpTool)(tool2) && !this.docSearchCreated) {
|
|
49190
|
+
this.docSearchCreated = true;
|
|
49191
|
+
await this.createTask("doc-search", "Searching in docs", ctx);
|
|
49128
49192
|
}
|
|
49129
49193
|
}
|
|
49130
|
-
async
|
|
49194
|
+
async createTask(suffix, description, ctx) {
|
|
49195
|
+
const jobContext = ctx.getJobContext();
|
|
49196
|
+
if (!jobContext)
|
|
49197
|
+
return;
|
|
49131
49198
|
const taskId = `${jobContext.taskId}-${suffix}`;
|
|
49132
|
-
|
|
49199
|
+
ctx.trackedTasks.set(suffix, {
|
|
49133
49200
|
taskId,
|
|
49134
49201
|
description,
|
|
49135
49202
|
status: ditto_codegen_types_12.Status.RUNNING
|
|
@@ -49150,29 +49217,137 @@ var require_task_tracker = __commonJS({
|
|
|
49150
49217
|
});
|
|
49151
49218
|
}
|
|
49152
49219
|
}
|
|
49220
|
+
};
|
|
49221
|
+
exports2.CategoryTaskHandler = CategoryTaskHandler;
|
|
49222
|
+
}
|
|
49223
|
+
});
|
|
49224
|
+
|
|
49225
|
+
// dist/opencode-integration/task-tracker/task-tracker.js
|
|
49226
|
+
var require_task_tracker = __commonJS({
|
|
49227
|
+
"dist/opencode-integration/task-tracker/task-tracker.js"(exports2) {
|
|
49228
|
+
"use strict";
|
|
49229
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
49230
|
+
exports2.OpenCodeTaskTracker = void 0;
|
|
49231
|
+
var ditto_codegen_types_12 = require_dist4();
|
|
49232
|
+
var codeGenerationService_12 = require_codeGenerationService();
|
|
49233
|
+
var job_context_storage_12 = require_job_context_storage();
|
|
49234
|
+
var types_1 = require_types5();
|
|
49235
|
+
var logger_12 = require_logger();
|
|
49236
|
+
var constants_1 = require_constants6();
|
|
49237
|
+
var extension_handler_1 = require_extension_handler();
|
|
49238
|
+
var category_handler_1 = require_category_handler();
|
|
49239
|
+
var OpenCodeTaskTracker = class {
|
|
49240
|
+
constructor() {
|
|
49241
|
+
this.trackedTasks = /* @__PURE__ */ new Map();
|
|
49242
|
+
this.taskCounter = 0;
|
|
49243
|
+
this.collectedFiles = [];
|
|
49244
|
+
this.skillsUsed = /* @__PURE__ */ new Set();
|
|
49245
|
+
this.extensionHandler = new extension_handler_1.ExtensionTaskHandler();
|
|
49246
|
+
this.categoryHandler = new category_handler_1.CategoryTaskHandler();
|
|
49247
|
+
this.store = job_context_storage_12.jobContextStorage.getStore();
|
|
49248
|
+
}
|
|
49153
49249
|
getSkillsUsed() {
|
|
49154
49250
|
return Array.from(this.skillsUsed);
|
|
49155
49251
|
}
|
|
49252
|
+
getJobContext() {
|
|
49253
|
+
if (!this.store?.jobId || !this.store?.taskId) {
|
|
49254
|
+
return null;
|
|
49255
|
+
}
|
|
49256
|
+
return { jobId: this.store.jobId, taskId: this.store.taskId };
|
|
49257
|
+
}
|
|
49258
|
+
get handlerContext() {
|
|
49259
|
+
return {
|
|
49260
|
+
getJobContext: () => this.getJobContext(),
|
|
49261
|
+
store: this.store,
|
|
49262
|
+
trackedTasks: this.trackedTasks,
|
|
49263
|
+
collectedFiles: this.collectedFiles,
|
|
49264
|
+
taskCounter: this.taskCounter
|
|
49265
|
+
};
|
|
49266
|
+
}
|
|
49267
|
+
async processLine(line) {
|
|
49268
|
+
if (!line.trim())
|
|
49269
|
+
return;
|
|
49270
|
+
const event = (0, types_1.tryParseJson)(line);
|
|
49271
|
+
if (event) {
|
|
49272
|
+
await this.handleEvent(event);
|
|
49273
|
+
}
|
|
49274
|
+
}
|
|
49275
|
+
async handleEvent(event) {
|
|
49276
|
+
if (event.type !== "tool_use")
|
|
49277
|
+
return;
|
|
49278
|
+
const { tool: tool2, callID, state } = event.part || {};
|
|
49279
|
+
if (!tool2 || !callID || !state)
|
|
49280
|
+
return;
|
|
49281
|
+
if (constants_1.WRITE_TOOLS.has(tool2)) {
|
|
49282
|
+
this.collectFileChange(tool2, state);
|
|
49283
|
+
const ctx = this.handlerContext;
|
|
49284
|
+
await this.extensionHandler.handle(tool2, state, ctx);
|
|
49285
|
+
this.taskCounter = ctx.taskCounter;
|
|
49286
|
+
}
|
|
49287
|
+
if (tool2 === "skill" && state.status === "completed") {
|
|
49288
|
+
this.handleSkillEvent(state);
|
|
49289
|
+
}
|
|
49290
|
+
if (this.store?.kind === ditto_codegen_types_12.TaskKind.ASK_CODEGEN) {
|
|
49291
|
+
const ctx = this.handlerContext;
|
|
49292
|
+
await this.categoryHandler.handle(tool2, ctx);
|
|
49293
|
+
this.taskCounter = ctx.taskCounter;
|
|
49294
|
+
}
|
|
49295
|
+
}
|
|
49296
|
+
/** Records a unique file change (INSERT/EDIT) from a completed write/edit tool call. */
|
|
49297
|
+
collectFileChange(tool2, state) {
|
|
49298
|
+
if (state.status !== "completed")
|
|
49299
|
+
return;
|
|
49300
|
+
const filePath = state.input?.filePath || state.title;
|
|
49301
|
+
const operation = (0, constants_1.resolveFileOperation)(tool2, state.metadata);
|
|
49302
|
+
if (!filePath || !operation)
|
|
49303
|
+
return;
|
|
49304
|
+
const normalized = (0, constants_1.normalizeFilePath)(filePath);
|
|
49305
|
+
if (!this.collectedFiles.some((f) => f.path === normalized)) {
|
|
49306
|
+
this.collectedFiles.push({ path: normalized, operation });
|
|
49307
|
+
}
|
|
49308
|
+
}
|
|
49309
|
+
async handleSkillEvent(state) {
|
|
49310
|
+
const skillName = state.title?.replace("Loaded skill: ", "") || "unknown";
|
|
49311
|
+
this.skillsUsed.add(skillName);
|
|
49312
|
+
logger_12.logger.info("[OpenCode] Loaded skill", { skillName });
|
|
49313
|
+
}
|
|
49314
|
+
/** Builds the task completion payload — includes file list for extension tasks. */
|
|
49315
|
+
buildTaskPayload(tracked) {
|
|
49316
|
+
if (tracked.extensionFolder) {
|
|
49317
|
+
const extensionFiles = this.collectedFiles.filter((f) => f.path.startsWith(tracked.extensionFolder));
|
|
49318
|
+
return {
|
|
49319
|
+
taskOutput: {
|
|
49320
|
+
files: extensionFiles.map((f) => ({
|
|
49321
|
+
path: f.path,
|
|
49322
|
+
operation: f.operation
|
|
49323
|
+
}))
|
|
49324
|
+
}
|
|
49325
|
+
};
|
|
49326
|
+
}
|
|
49327
|
+
return {};
|
|
49328
|
+
}
|
|
49329
|
+
/** Marks all still-running tracked tasks as COMPLETED (called on successful process exit). */
|
|
49156
49330
|
async completeRemainingTasks() {
|
|
49157
49331
|
const jobContext = this.getJobContext();
|
|
49158
49332
|
if (!jobContext)
|
|
49159
49333
|
return;
|
|
49160
49334
|
for (const [, tracked] of this.trackedTasks) {
|
|
49161
49335
|
if (tracked.status === ditto_codegen_types_12.Status.RUNNING) {
|
|
49336
|
+
const payload = this.buildTaskPayload(tracked);
|
|
49162
49337
|
try {
|
|
49163
|
-
await codeGenerationService_12.codeGenerationService.updateTask(jobContext.jobId, tracked.taskId, ditto_codegen_types_12.Status.COMPLETED,
|
|
49164
|
-
|
|
49165
|
-
logger_12.logger.info("[OpenCode] Auto-completed sub-task", {
|
|
49338
|
+
await codeGenerationService_12.codeGenerationService.updateTask(jobContext.jobId, tracked.taskId, ditto_codegen_types_12.Status.COMPLETED, payload);
|
|
49339
|
+
logger_12.logger.info("[OpenCode] Completed task", {
|
|
49166
49340
|
description: tracked.description
|
|
49167
49341
|
});
|
|
49168
49342
|
} catch (err) {
|
|
49169
|
-
logger_12.logger.error("[OpenCode] Failed to
|
|
49343
|
+
logger_12.logger.error("[OpenCode] Failed to complete task", {
|
|
49170
49344
|
error: err instanceof Error ? err.message : String(err)
|
|
49171
49345
|
});
|
|
49172
49346
|
}
|
|
49173
49347
|
}
|
|
49174
49348
|
}
|
|
49175
49349
|
}
|
|
49350
|
+
/** Marks all still-running tracked tasks as FAILED (called on process error/timeout). */
|
|
49176
49351
|
async failRemainingTasks(errorMessage) {
|
|
49177
49352
|
const jobContext = this.getJobContext();
|
|
49178
49353
|
if (!jobContext)
|
|
@@ -49181,12 +49356,11 @@ var require_task_tracker = __commonJS({
|
|
|
49181
49356
|
if (tracked.status === ditto_codegen_types_12.Status.RUNNING) {
|
|
49182
49357
|
try {
|
|
49183
49358
|
await codeGenerationService_12.codeGenerationService.updateTask(jobContext.jobId, tracked.taskId, ditto_codegen_types_12.Status.FAILED, { error: errorMessage });
|
|
49184
|
-
tracked.status = ditto_codegen_types_12.Status.FAILED;
|
|
49185
49359
|
logger_12.logger.info("[OpenCode] Failed sub-task", {
|
|
49186
49360
|
description: tracked.description
|
|
49187
49361
|
});
|
|
49188
49362
|
} catch (err) {
|
|
49189
|
-
logger_12.logger.error("[OpenCode] Failed to
|
|
49363
|
+
logger_12.logger.error("[OpenCode] Failed to mark sub-task as failed", {
|
|
49190
49364
|
error: err instanceof Error ? err.message : String(err)
|
|
49191
49365
|
});
|
|
49192
49366
|
}
|
|
@@ -49198,6 +49372,19 @@ var require_task_tracker = __commonJS({
|
|
|
49198
49372
|
}
|
|
49199
49373
|
});
|
|
49200
49374
|
|
|
49375
|
+
// dist/opencode-integration/task-tracker/index.js
|
|
49376
|
+
var require_task_tracker2 = __commonJS({
|
|
49377
|
+
"dist/opencode-integration/task-tracker/index.js"(exports2) {
|
|
49378
|
+
"use strict";
|
|
49379
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
49380
|
+
exports2.OpenCodeTaskTracker = void 0;
|
|
49381
|
+
var task_tracker_1 = require_task_tracker();
|
|
49382
|
+
Object.defineProperty(exports2, "OpenCodeTaskTracker", { enumerable: true, get: function() {
|
|
49383
|
+
return task_tracker_1.OpenCodeTaskTracker;
|
|
49384
|
+
} });
|
|
49385
|
+
}
|
|
49386
|
+
});
|
|
49387
|
+
|
|
49201
49388
|
// dist/opencode-integration/process-manager.js
|
|
49202
49389
|
var require_process_manager = __commonJS({
|
|
49203
49390
|
"dist/opencode-integration/process-manager.js"(exports2) {
|
|
@@ -49406,11 +49593,11 @@ var require_executor = __commonJS({
|
|
|
49406
49593
|
exports2.executeOpenCode = executeOpenCode;
|
|
49407
49594
|
var child_process_1 = require("child_process");
|
|
49408
49595
|
var ditto_codegen_types_12 = require_dist4();
|
|
49409
|
-
var types_1 = require_types5();
|
|
49410
49596
|
var config_1 = require_config();
|
|
49597
|
+
var job_context_storage_12 = require_job_context_storage();
|
|
49411
49598
|
var parser_1 = require_parser();
|
|
49412
49599
|
var prompts_1 = require_prompts();
|
|
49413
|
-
var task_tracker_1 =
|
|
49600
|
+
var task_tracker_1 = require_task_tracker2();
|
|
49414
49601
|
var process_manager_1 = require_process_manager();
|
|
49415
49602
|
var process_handlers_1 = require_process_handlers();
|
|
49416
49603
|
var logger_12 = require_logger();
|
|
@@ -49465,11 +49652,9 @@ var require_executor = __commonJS({
|
|
|
49465
49652
|
return ["run", "--format", "json", prompt];
|
|
49466
49653
|
}
|
|
49467
49654
|
async function executeOpenCodeOnce(options, attempt) {
|
|
49468
|
-
const { prompt, outputPath, projectId,
|
|
49655
|
+
const { prompt, outputPath, projectId, onStdout, onStderr } = options;
|
|
49469
49656
|
const startTime = Date.now();
|
|
49470
|
-
const taskTracker = new task_tracker_1.OpenCodeTaskTracker(
|
|
49471
|
-
trackToolCategories: mode === types_1.ASK_MODE
|
|
49472
|
-
});
|
|
49657
|
+
const taskTracker = new task_tracker_1.OpenCodeTaskTracker();
|
|
49473
49658
|
return new Promise((resolve3) => {
|
|
49474
49659
|
const state = {
|
|
49475
49660
|
stdout: "",
|
|
@@ -49510,7 +49695,8 @@ var require_executor = __commonJS({
|
|
|
49510
49695
|
maxRetries: MAX_RETRIES,
|
|
49511
49696
|
workingDirectory: outputPath
|
|
49512
49697
|
});
|
|
49513
|
-
const
|
|
49698
|
+
const isAsk = job_context_storage_12.jobContextStorage.getStore()?.kind === ditto_codegen_types_12.TaskKind.ASK_CODEGEN;
|
|
49699
|
+
const env = isAsk ? (0, config_1.getOpenCodeAskEnv)(projectId) : (0, config_1.getOpenCodeEnv)(projectId);
|
|
49514
49700
|
ctx.child = (0, child_process_1.spawn)("opencode", args, {
|
|
49515
49701
|
cwd: outputPath,
|
|
49516
49702
|
env,
|
|
@@ -49553,7 +49739,6 @@ var require_opencode_runner = __commonJS({
|
|
|
49553
49739
|
exports2.runOpenCodeInit = runOpenCodeInit;
|
|
49554
49740
|
exports2.runOpenCodeIteration = runOpenCodeIteration;
|
|
49555
49741
|
exports2.runOpenCodeAsk = runOpenCodeAsk;
|
|
49556
|
-
var types_1 = require_types5();
|
|
49557
49742
|
var prompts_1 = require_prompts();
|
|
49558
49743
|
var executor_1 = require_executor();
|
|
49559
49744
|
var parser_1 = require_parser();
|
|
@@ -49565,7 +49750,13 @@ var require_opencode_runner = __commonJS({
|
|
|
49565
49750
|
async function runOpenCodeIteration(options) {
|
|
49566
49751
|
const { outputPath, projectId, chatHistory, onStdout, onStderr } = options;
|
|
49567
49752
|
const prompt = (0, prompts_1.buildIterationPrompt)(chatHistory);
|
|
49568
|
-
return (0, executor_1.executeOpenCode)({
|
|
49753
|
+
return (0, executor_1.executeOpenCode)({
|
|
49754
|
+
prompt,
|
|
49755
|
+
outputPath,
|
|
49756
|
+
projectId,
|
|
49757
|
+
onStdout,
|
|
49758
|
+
onStderr
|
|
49759
|
+
});
|
|
49569
49760
|
}
|
|
49570
49761
|
async function runOpenCodeAsk(options) {
|
|
49571
49762
|
const { outputPath, projectId, chatHistory, onStdout, onStderr } = options;
|
|
@@ -49574,7 +49765,6 @@ var require_opencode_runner = __commonJS({
|
|
|
49574
49765
|
prompt,
|
|
49575
49766
|
outputPath,
|
|
49576
49767
|
projectId,
|
|
49577
|
-
mode: types_1.ASK_MODE,
|
|
49578
49768
|
onStdout,
|
|
49579
49769
|
onStderr
|
|
49580
49770
|
});
|
|
@@ -49604,7 +49794,7 @@ var require_opencode_integration = __commonJS({
|
|
|
49604
49794
|
Object.defineProperty(exports2, "runOpenCodeAsk", { enumerable: true, get: function() {
|
|
49605
49795
|
return opencode_runner_1.runOpenCodeAsk;
|
|
49606
49796
|
} });
|
|
49607
|
-
var task_tracker_1 =
|
|
49797
|
+
var task_tracker_1 = require_task_tracker2();
|
|
49608
49798
|
Object.defineProperty(exports2, "OpenCodeTaskTracker", { enumerable: true, get: function() {
|
|
49609
49799
|
return task_tracker_1.OpenCodeTaskTracker;
|
|
49610
49800
|
} });
|
|
@@ -53274,7 +53464,7 @@ var require_expand = __commonJS({
|
|
|
53274
53464
|
});
|
|
53275
53465
|
|
|
53276
53466
|
// ../../node_modules/braces/lib/constants.js
|
|
53277
|
-
var
|
|
53467
|
+
var require_constants7 = __commonJS({
|
|
53278
53468
|
"../../node_modules/braces/lib/constants.js"(exports2, module2) {
|
|
53279
53469
|
"use strict";
|
|
53280
53470
|
module2.exports = {
|
|
@@ -53407,7 +53597,7 @@ var require_parse3 = __commonJS({
|
|
|
53407
53597
|
/* ' */
|
|
53408
53598
|
CHAR_NO_BREAK_SPACE,
|
|
53409
53599
|
CHAR_ZERO_WIDTH_NOBREAK_SPACE
|
|
53410
|
-
} =
|
|
53600
|
+
} = require_constants7();
|
|
53411
53601
|
var parse4 = (input, options = {}) => {
|
|
53412
53602
|
if (typeof input !== "string") {
|
|
53413
53603
|
throw new TypeError("Expected a string");
|
|
@@ -53676,7 +53866,7 @@ var require_braces = __commonJS({
|
|
|
53676
53866
|
});
|
|
53677
53867
|
|
|
53678
53868
|
// ../../node_modules/micromatch/node_modules/picomatch/lib/constants.js
|
|
53679
|
-
var
|
|
53869
|
+
var require_constants8 = __commonJS({
|
|
53680
53870
|
"../../node_modules/micromatch/node_modules/picomatch/lib/constants.js"(exports2, module2) {
|
|
53681
53871
|
"use strict";
|
|
53682
53872
|
var path4 = require("path");
|
|
@@ -53883,7 +54073,7 @@ var require_utils13 = __commonJS({
|
|
|
53883
54073
|
REGEX_REMOVE_BACKSLASH,
|
|
53884
54074
|
REGEX_SPECIAL_CHARS,
|
|
53885
54075
|
REGEX_SPECIAL_CHARS_GLOBAL
|
|
53886
|
-
} =
|
|
54076
|
+
} = require_constants8();
|
|
53887
54077
|
exports2.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val);
|
|
53888
54078
|
exports2.hasRegexChars = (str) => REGEX_SPECIAL_CHARS.test(str);
|
|
53889
54079
|
exports2.isRegexChar = (str) => str.length === 1 && exports2.hasRegexChars(str);
|
|
@@ -53969,7 +54159,7 @@ var require_scan = __commonJS({
|
|
|
53969
54159
|
/* ) */
|
|
53970
54160
|
CHAR_RIGHT_SQUARE_BRACKET
|
|
53971
54161
|
/* ] */
|
|
53972
|
-
} =
|
|
54162
|
+
} = require_constants8();
|
|
53973
54163
|
var isPathSeparator = (code) => {
|
|
53974
54164
|
return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;
|
|
53975
54165
|
};
|
|
@@ -54267,7 +54457,7 @@ var require_scan = __commonJS({
|
|
|
54267
54457
|
var require_parse4 = __commonJS({
|
|
54268
54458
|
"../../node_modules/micromatch/node_modules/picomatch/lib/parse.js"(exports2, module2) {
|
|
54269
54459
|
"use strict";
|
|
54270
|
-
var constants =
|
|
54460
|
+
var constants = require_constants8();
|
|
54271
54461
|
var utils = require_utils13();
|
|
54272
54462
|
var {
|
|
54273
54463
|
MAX_LENGTH,
|
|
@@ -55044,7 +55234,7 @@ var require_picomatch = __commonJS({
|
|
|
55044
55234
|
var scan = require_scan();
|
|
55045
55235
|
var parse4 = require_parse4();
|
|
55046
55236
|
var utils = require_utils13();
|
|
55047
|
-
var constants =
|
|
55237
|
+
var constants = require_constants8();
|
|
55048
55238
|
var isObject2 = (val) => val && typeof val === "object" && !Array.isArray(val);
|
|
55049
55239
|
var picomatch = (glob, options, returnState = false) => {
|
|
55050
55240
|
if (Array.isArray(glob)) {
|
|
@@ -55997,7 +56187,7 @@ var require_run_parallel = __commonJS({
|
|
|
55997
56187
|
});
|
|
55998
56188
|
|
|
55999
56189
|
// ../../node_modules/@nodelib/fs.scandir/out/constants.js
|
|
56000
|
-
var
|
|
56190
|
+
var require_constants9 = __commonJS({
|
|
56001
56191
|
"../../node_modules/@nodelib/fs.scandir/out/constants.js"(exports2) {
|
|
56002
56192
|
"use strict";
|
|
56003
56193
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
@@ -56076,7 +56266,7 @@ var require_async3 = __commonJS({
|
|
|
56076
56266
|
exports2.readdir = exports2.readdirWithFileTypes = exports2.read = void 0;
|
|
56077
56267
|
var fsStat = require_out();
|
|
56078
56268
|
var rpl = require_run_parallel();
|
|
56079
|
-
var constants_1 =
|
|
56269
|
+
var constants_1 = require_constants9();
|
|
56080
56270
|
var utils = require_utils15();
|
|
56081
56271
|
var common = require_common2();
|
|
56082
56272
|
function read(directory, settings, callback) {
|
|
@@ -56185,7 +56375,7 @@ var require_sync2 = __commonJS({
|
|
|
56185
56375
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
56186
56376
|
exports2.readdir = exports2.readdirWithFileTypes = exports2.read = void 0;
|
|
56187
56377
|
var fsStat = require_out();
|
|
56188
|
-
var constants_1 =
|
|
56378
|
+
var constants_1 = require_constants9();
|
|
56189
56379
|
var utils = require_utils15();
|
|
56190
56380
|
var common = require_common2();
|
|
56191
56381
|
function read(directory, settings) {
|
|
@@ -77432,7 +77622,7 @@ var require_tools2 = __commonJS({
|
|
|
77432
77622
|
});
|
|
77433
77623
|
|
|
77434
77624
|
// ../scaffolding/dist/constants.js
|
|
77435
|
-
var
|
|
77625
|
+
var require_constants10 = __commonJS({
|
|
77436
77626
|
"../scaffolding/dist/constants.js"(exports2) {
|
|
77437
77627
|
"use strict";
|
|
77438
77628
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
@@ -77462,7 +77652,7 @@ var require_scaffolding = __commonJS({
|
|
|
77462
77652
|
exports2.copyScaffoldingTemplate = copyScaffoldingTemplate;
|
|
77463
77653
|
exports2.toKebabCase = toKebabCase;
|
|
77464
77654
|
var tools_1 = require_tools2();
|
|
77465
|
-
var constants_1 =
|
|
77655
|
+
var constants_1 = require_constants10();
|
|
77466
77656
|
var types_1 = require_types_impl2();
|
|
77467
77657
|
var fs_1 = __importDefault2(require("fs"));
|
|
77468
77658
|
var path_1 = __importDefault2(require("path"));
|
|
@@ -77584,7 +77774,7 @@ var require_dist13 = __commonJS({
|
|
|
77584
77774
|
Object.defineProperty(exports2, "copyRecursive", { enumerable: true, get: function() {
|
|
77585
77775
|
return tools_1.copyRecursive;
|
|
77586
77776
|
} });
|
|
77587
|
-
var constants_1 =
|
|
77777
|
+
var constants_1 = require_constants10();
|
|
77588
77778
|
Object.defineProperty(exports2, "spiToSubPath", { enumerable: true, get: function() {
|
|
77589
77779
|
return constants_1.spiToSubPath;
|
|
77590
77780
|
} });
|
|
@@ -96872,22 +97062,21 @@ var require_opencode_init = __commonJS({
|
|
|
96872
97062
|
requiredPermissions: result.requiredPermissions,
|
|
96873
97063
|
history
|
|
96874
97064
|
});
|
|
96875
|
-
|
|
96876
|
-
|
|
96877
|
-
|
|
96878
|
-
operation: file2.operation
|
|
96879
|
-
}))
|
|
96880
|
-
};
|
|
96881
|
-
await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.COMPLETED, {
|
|
96882
|
-
taskOutput
|
|
96883
|
-
});
|
|
97065
|
+
if (!store.isCompleted) {
|
|
97066
|
+
await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.COMPLETED, {});
|
|
97067
|
+
}
|
|
96884
97068
|
(0, biEvents_1.reportSessionEnd)({
|
|
96885
97069
|
...biBaseParams,
|
|
96886
97070
|
Task_model: config_1.DEFAULT_MODEL,
|
|
96887
97071
|
Task_type: kind,
|
|
96888
97072
|
Task_cost: Math.round(result.usage.cost * 1e6),
|
|
96889
97073
|
Task_status: ditto_codegen_types_12.Status.COMPLETED,
|
|
96890
|
-
Agent_output: JSON.stringify(
|
|
97074
|
+
Agent_output: JSON.stringify({
|
|
97075
|
+
files: result.filesChanged.map((file2) => ({
|
|
97076
|
+
path: file2.path,
|
|
97077
|
+
operation: file2.operation
|
|
97078
|
+
}))
|
|
97079
|
+
}),
|
|
96891
97080
|
Job_skills_used: result.skillsUsed.join(",")
|
|
96892
97081
|
});
|
|
96893
97082
|
jobLog.info(`[OpenCode Init] Completed opencode init task: jobId=${jobId}, taskId=${taskId}`);
|
|
@@ -345041,12 +345230,11 @@ async function processJob(job) {
|
|
|
345041
345230
|
const payload = task.payload ?? {};
|
|
345042
345231
|
const history = payload.history ?? [];
|
|
345043
345232
|
const blueprint = payload.blueprint;
|
|
345044
|
-
|
|
345045
|
-
if (taskKind === "ASK_CODEGEN") {
|
|
345233
|
+
if (task.kind === CodeGenService_1.TaskKind.ASK_CODEGEN) {
|
|
345046
345234
|
await (0, opencode_ask_1.runOpencodeAskFlow)(history);
|
|
345047
|
-
} else if (task.kind ===
|
|
345235
|
+
} else if (task.kind === CodeGenService_1.TaskKind.ITERATE_CODEGEN) {
|
|
345048
345236
|
await handleIteration(history);
|
|
345049
|
-
} else if (task.kind ===
|
|
345237
|
+
} else if (task.kind === CodeGenService_1.TaskKind.INIT_CODEGEN && blueprint) {
|
|
345050
345238
|
await handleInit(blueprint, history);
|
|
345051
345239
|
}
|
|
345052
345240
|
});
|
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.268",
|
|
4
4
|
"description": "AI-powered Wix CLI app generator - standalone executable",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "node build.mjs",
|
|
@@ -28,5 +28,5 @@
|
|
|
28
28
|
"@wix/ditto-codegen": "1.0.0",
|
|
29
29
|
"esbuild": "^0.27.2"
|
|
30
30
|
},
|
|
31
|
-
"falconPackageHash": "
|
|
31
|
+
"falconPackageHash": "4fa04d58db47d7fc986eb0e351068661a075dc42c9ac6567ef374585"
|
|
32
32
|
}
|