@wix/ditto-codegen-public 1.0.314 → 1.0.315

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 +91 -50
  2. package/package.json +2 -2
package/dist/out.js CHANGED
@@ -12605,26 +12605,69 @@ var require_cost_tracker = __commonJS({
12605
12605
  }
12606
12606
  });
12607
12607
 
12608
+ // dist/opencode-integration/task-tracker/init-task.js
12609
+ var require_init_task = __commonJS({
12610
+ "dist/opencode-integration/task-tracker/init-task.js"(exports2) {
12611
+ "use strict";
12612
+ Object.defineProperty(exports2, "__esModule", { value: true });
12613
+ exports2.completeInitTask = completeInitTask;
12614
+ var ditto_codegen_types_12 = require_dist4();
12615
+ var codeGenerationService_12 = require_codeGenerationService();
12616
+ var logger_12 = require_logger();
12617
+ async function completeInitTask(ctx) {
12618
+ const { store } = ctx;
12619
+ if (store?.isCompleted || store?.kind !== ditto_codegen_types_12.TaskKind.INIT_CODEGEN)
12620
+ return;
12621
+ if (!store.jobId || !store.taskId)
12622
+ return;
12623
+ store.isCompleted = true;
12624
+ try {
12625
+ await codeGenerationService_12.codeGenerationService.updateTask(store.jobId, store.taskId, ditto_codegen_types_12.Status.COMPLETED, {});
12626
+ logger_12.logger.info("[OpenCode] Completed init task before sub-tasks");
12627
+ } catch (error) {
12628
+ logger_12.logger.error("[OpenCode] Failed to complete init task", {
12629
+ error: error instanceof Error ? error.message : String(error)
12630
+ });
12631
+ }
12632
+ }
12633
+ }
12634
+ });
12635
+
12608
12636
  // dist/opencode-integration/task-tracker/extension-handler.js
12609
12637
  var require_extension_handler = __commonJS({
12610
12638
  "dist/opencode-integration/task-tracker/extension-handler.js"(exports2) {
12611
12639
  "use strict";
12612
12640
  Object.defineProperty(exports2, "__esModule", { value: true });
12613
12641
  exports2.ExtensionTaskHandler = void 0;
12642
+ exports2.buildExtensionTaskPayload = buildExtensionTaskPayload;
12614
12643
  var promises_1 = require("fs/promises");
12615
12644
  var path_1 = require("path");
12616
12645
  var ditto_codegen_types_12 = require_dist4();
12617
12646
  var codeGenerationService_12 = require_codeGenerationService();
12618
12647
  var logger_12 = require_logger();
12619
12648
  var constants_1 = require_constants5();
12649
+ var init_task_1 = require_init_task();
12650
+ function buildExtensionTaskPayload(tracked, collectedFiles) {
12651
+ if (!tracked.extensionFolder)
12652
+ return {};
12653
+ const extensionFiles = collectedFiles.filter((f) => f.path.startsWith(tracked.extensionFolder));
12654
+ return {
12655
+ taskOutput: {
12656
+ files: extensionFiles.map((f) => ({
12657
+ path: f.path,
12658
+ operation: f.operation
12659
+ }))
12660
+ }
12661
+ };
12662
+ }
12620
12663
  var ExtensionTaskHandler = class {
12621
12664
  constructor() {
12622
- this.extensionTasksCreated = /* @__PURE__ */ new Map();
12665
+ this.extensionTypesByPath = /* @__PURE__ */ new Map();
12623
12666
  }
12624
12667
  getExtensionTypesCreated() {
12625
- return Array.from(this.extensionTasksCreated.values());
12668
+ return Array.from(this.extensionTypesByPath.values());
12626
12669
  }
12627
- /** Inspects a write/edit event; if it targets an extension file, creates a tracked sub-task. */
12670
+ /** Inspects a write/edit event; creates a RUNNING sub-task on first sight, completes on the completed event. */
12628
12671
  async handle(tool, state, ctx) {
12629
12672
  const filePath = state.input?.filePath || state.title || "";
12630
12673
  if (!(0, constants_1.isExtensionsFile)(filePath))
@@ -12635,13 +12678,25 @@ var require_extension_handler = __commonJS({
12635
12678
  const extension = (0, constants_1.detectExtension)(content);
12636
12679
  if (!extension)
12637
12680
  return;
12638
- await this.ensureCreatedBy(filePath, ctx.workingDirectory);
12639
12681
  const normalizedPath = (0, constants_1.normalizeFilePath)(filePath);
12640
- if (this.extensionTasksCreated.has(normalizedPath))
12682
+ const isCompleted = state.status === "completed";
12683
+ if (isCompleted) {
12684
+ await this.ensureCreatedBy(filePath, ctx.workingDirectory);
12685
+ }
12686
+ if (!this.extensionTypesByPath.has(normalizedPath)) {
12687
+ this.extensionTypesByPath.set(normalizedPath, extension.extensionType);
12688
+ await (0, init_task_1.completeInitTask)(ctx);
12689
+ await this.createExtensionTask(normalizedPath, extension.label, filePath, ctx);
12690
+ }
12691
+ if (!isCompleted)
12692
+ return;
12693
+ const tracked = ctx.trackedTasks.get(`ext-${normalizedPath}`);
12694
+ if (!tracked || tracked.status !== ditto_codegen_types_12.Status.RUNNING)
12695
+ return;
12696
+ const jobContext = ctx.getJobContext();
12697
+ if (!jobContext)
12641
12698
  return;
12642
- this.extensionTasksCreated.set(normalizedPath, extension.extensionType);
12643
- await this.completeInitTask(ctx);
12644
- await this.createExtensionTask(normalizedPath, extension.label, filePath, ctx);
12699
+ await this.completeExtensionTask(tracked, jobContext.jobId, ctx);
12645
12700
  }
12646
12701
  /** Reads an extension file from disk and injects createdBy if missing. */
12647
12702
  async ensureCreatedBy(filePath, workingDirectory) {
@@ -12664,24 +12719,7 @@ var require_extension_handler = __commonJS({
12664
12719
  });
12665
12720
  }
12666
12721
  }
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. */
12722
+ /** Registers a RUNNING sub-task in the job service for a detected extension. */
12685
12723
  async createExtensionTask(normalizedPath, extensionType, originalPath, ctx) {
12686
12724
  const jobContext = ctx.getJobContext();
12687
12725
  if (!jobContext)
@@ -12692,12 +12730,13 @@ var require_extension_handler = __commonJS({
12692
12730
  ctx.taskCounter++;
12693
12731
  const taskId = `${jobContext.taskId}-ext-${ctx.taskCounter}`;
12694
12732
  const extensionFolder = normalizedPath.substring(0, normalizedPath.lastIndexOf("/") + 1);
12695
- ctx.trackedTasks.set(extensionKey, {
12733
+ const tracked = {
12696
12734
  taskId,
12697
12735
  description,
12698
12736
  status: ditto_codegen_types_12.Status.RUNNING,
12699
12737
  extensionFolder
12700
- });
12738
+ };
12739
+ ctx.trackedTasks.set(extensionKey, tracked);
12701
12740
  try {
12702
12741
  await codeGenerationService_12.codeGenerationService.addTask(jobContext.jobId, {
12703
12742
  id: taskId,
@@ -12714,6 +12753,20 @@ var require_extension_handler = __commonJS({
12714
12753
  });
12715
12754
  }
12716
12755
  }
12756
+ /** Marks the extension task COMPLETED with the file list collected so far for its folder. */
12757
+ async completeExtensionTask(tracked, jobId, ctx) {
12758
+ tracked.status = ditto_codegen_types_12.Status.COMPLETED;
12759
+ try {
12760
+ await codeGenerationService_12.codeGenerationService.updateTask(jobId, tracked.taskId, ditto_codegen_types_12.Status.COMPLETED, buildExtensionTaskPayload(tracked, ctx.collectedFiles));
12761
+ logger_12.logger.info("[OpenCode] Completed extension task", {
12762
+ description: tracked.description
12763
+ });
12764
+ } catch (error) {
12765
+ logger_12.logger.error("[OpenCode] Failed to complete extension task", {
12766
+ error: error instanceof Error ? error.message : String(error)
12767
+ });
12768
+ }
12769
+ }
12717
12770
  };
12718
12771
  exports2.ExtensionTaskHandler = ExtensionTaskHandler;
12719
12772
  }
@@ -12729,6 +12782,7 @@ var require_category_handler = __commonJS({
12729
12782
  var codeGenerationService_12 = require_codeGenerationService();
12730
12783
  var logger_12 = require_logger();
12731
12784
  var constants_1 = require_constants5();
12785
+ var init_task_1 = require_init_task();
12732
12786
  var CategoryKey;
12733
12787
  (function(CategoryKey2) {
12734
12788
  CategoryKey2["CodeSearch"] = "code-search";
@@ -12764,10 +12818,10 @@ var require_category_handler = __commonJS({
12764
12818
  await this.track(CategoryKey.RunCommands, ctx, state);
12765
12819
  }
12766
12820
  if (tool === "validate") {
12767
- await this.track(CategoryKey.Validate, ctx, state);
12821
+ await this.track(CategoryKey.Validate, ctx);
12768
12822
  }
12769
12823
  if (constants_1.WRITE_TOOLS.has(tool)) {
12770
- await this.track(CategoryKey.WriteCode, ctx);
12824
+ await this.track(CategoryKey.WriteCode, ctx, state);
12771
12825
  }
12772
12826
  }
12773
12827
  async trackLoadSkill(ctx, state) {
@@ -12786,6 +12840,7 @@ var require_category_handler = __commonJS({
12786
12840
  const jobContext = ctx.getJobContext();
12787
12841
  if (!jobContext)
12788
12842
  return;
12843
+ await (0, init_task_1.completeInitTask)(ctx);
12789
12844
  const description = CATEGORY_DESCRIPTIONS[key];
12790
12845
  const taskId = `${jobContext.taskId}-${key}`;
12791
12846
  ctx.trackedTasks.set(key, {
@@ -12908,12 +12963,13 @@ var require_task_tracker = __commonJS({
12908
12963
  await (0, hooks_1.runOnToolUse)((0, hooks_1.getActiveHooks)(), { tool, state });
12909
12964
  }
12910
12965
  async handleWriteEvent(tool, state) {
12911
- if (state.status !== "completed")
12912
- return;
12966
+ const isCompleted = state.status === "completed";
12913
12967
  const fileStates = tool === "batch-write" ? this.expandBatchWrite(state) : [state];
12914
12968
  const effectiveTool = tool === "batch-write" ? "write" : tool;
12915
12969
  for (const fileState of fileStates) {
12916
- this.trackFileChange(effectiveTool, fileState);
12970
+ if (isCompleted) {
12971
+ this.trackFileChange(effectiveTool, fileState);
12972
+ }
12917
12973
  const ctx = this.handlerContext;
12918
12974
  await this.extensionHandler.handle(effectiveTool, fileState, ctx);
12919
12975
  this.taskCounter = ctx.taskCounter;
@@ -12921,7 +12977,7 @@ var require_task_tracker = __commonJS({
12921
12977
  }
12922
12978
  expandBatchWrite(state) {
12923
12979
  return (state.input?.files ?? []).map((f) => ({
12924
- status: "completed",
12980
+ status: state.status,
12925
12981
  input: { filePath: f.path, content: f.content },
12926
12982
  metadata: { exists: false }
12927
12983
  }));
@@ -12942,21 +12998,6 @@ var require_task_tracker = __commonJS({
12942
12998
  logger_12.logger.info("[OpenCode] Loaded skill", { skillName });
12943
12999
  await this.categoryHandler.trackLoadSkill(this.handlerContext, state);
12944
13000
  }
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
13001
  /** Marks all still-running tracked tasks as COMPLETED (called on successful process exit). */
12961
13002
  async completeRemainingTasks() {
12962
13003
  const jobContext = this.getJobContext();
@@ -12964,7 +13005,7 @@ var require_task_tracker = __commonJS({
12964
13005
  return;
12965
13006
  for (const [, tracked] of this.trackedTasks) {
12966
13007
  if (tracked.status === ditto_codegen_types_12.Status.RUNNING) {
12967
- const payload = this.buildTaskPayload(tracked);
13008
+ const payload = (0, extension_handler_1.buildExtensionTaskPayload)(tracked, this.collectedFiles);
12968
13009
  try {
12969
13010
  await codeGenerationService_12.codeGenerationService.updateTask(jobContext.jobId, tracked.taskId, ditto_codegen_types_12.Status.COMPLETED, payload);
12970
13011
  logger_12.logger.info("[OpenCode] Completed task", {
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.315",
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": "a729cdb06df2c35379619880dc60336a5505a5a382a7b737b17b1c05"
31
31
  }