@wix/ditto-codegen-public 1.0.313 → 1.0.314

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 +118 -4
  2. package/package.json +2 -2
package/dist/out.js CHANGED
@@ -12095,7 +12095,8 @@ var require_app_builder = __commonJS({
12095
12095
  { filename: "codegen-instructions.md", content: codegen_rules_1.CODEGEN_RULES }
12096
12096
  ],
12097
12097
  askRules: [{ filename: "ask-instructions.md", content: ask_rules_1.ASK_RULES }],
12098
- decisionCheckers: [pre_run_decision_1.checkSiteUIDecision]
12098
+ decisionCheckers: [pre_run_decision_1.checkSiteUIDecision],
12099
+ hooks: []
12099
12100
  };
12100
12101
  }
12101
12102
  });
@@ -12113,20 +12114,93 @@ var require_studio_2 = __commonJS({
12113
12114
  { filename: "codegen-instructions.md", content: codegen_rules_1.CODEGEN_RULES }
12114
12115
  ],
12115
12116
  askRules: [{ filename: "ask-instructions.md", content: ask_rules_1.ASK_RULES }],
12116
- decisionCheckers: []
12117
+ decisionCheckers: [],
12118
+ hooks: []
12117
12119
  };
12118
12120
  }
12119
12121
  });
12120
12122
 
12123
+ // dist/environments/hooks/run-hooks.js
12124
+ var require_run_hooks = __commonJS({
12125
+ "dist/environments/hooks/run-hooks.js"(exports2) {
12126
+ "use strict";
12127
+ Object.defineProperty(exports2, "__esModule", { value: true });
12128
+ exports2.getActiveHooks = getActiveHooks;
12129
+ exports2.runOnToolUse = runOnToolUse;
12130
+ exports2.runOnFlowEnd = runOnFlowEnd;
12131
+ var logger_12 = require_logger();
12132
+ var job_context_storage_12 = require_job_context_storage();
12133
+ function getActiveHooks() {
12134
+ return job_context_storage_12.jobContextStorage.getStore()?.hooks ?? [];
12135
+ }
12136
+ async function runOnToolUse(hooks, event) {
12137
+ for (const hook of hooks) {
12138
+ if (!hook.onToolUse)
12139
+ continue;
12140
+ try {
12141
+ await hook.onToolUse(event);
12142
+ } catch (error) {
12143
+ logger_12.logger.error("[Hook] onToolUse failed", {
12144
+ hook: hook.name,
12145
+ error: error instanceof Error ? error.message : String(error)
12146
+ });
12147
+ }
12148
+ }
12149
+ }
12150
+ async function runOnFlowEnd(hooks, ctx) {
12151
+ for (const hook of hooks) {
12152
+ if (!hook.onFlowEnd)
12153
+ continue;
12154
+ try {
12155
+ await hook.onFlowEnd(ctx);
12156
+ } catch (hookError) {
12157
+ if (ctx.failed) {
12158
+ logger_12.logger.error("[Hook] onFlowEnd failed after flow failure", {
12159
+ hook: hook.name,
12160
+ error: hookError instanceof Error ? hookError.message : String(hookError)
12161
+ });
12162
+ continue;
12163
+ }
12164
+ throw hookError;
12165
+ }
12166
+ }
12167
+ }
12168
+ }
12169
+ });
12170
+
12171
+ // dist/environments/hooks/index.js
12172
+ var require_hooks = __commonJS({
12173
+ "dist/environments/hooks/index.js"(exports2) {
12174
+ "use strict";
12175
+ Object.defineProperty(exports2, "__esModule", { value: true });
12176
+ exports2.runOnFlowEnd = exports2.runOnToolUse = exports2.getActiveHooks = void 0;
12177
+ var run_hooks_1 = require_run_hooks();
12178
+ Object.defineProperty(exports2, "getActiveHooks", { enumerable: true, get: function() {
12179
+ return run_hooks_1.getActiveHooks;
12180
+ } });
12181
+ Object.defineProperty(exports2, "runOnToolUse", { enumerable: true, get: function() {
12182
+ return run_hooks_1.runOnToolUse;
12183
+ } });
12184
+ Object.defineProperty(exports2, "runOnFlowEnd", { enumerable: true, get: function() {
12185
+ return run_hooks_1.runOnFlowEnd;
12186
+ } });
12187
+ }
12188
+ });
12189
+
12121
12190
  // dist/environments/index.js
12122
12191
  var require_environments = __commonJS({
12123
12192
  "dist/environments/index.js"(exports2) {
12124
12193
  "use strict";
12125
12194
  Object.defineProperty(exports2, "__esModule", { value: true });
12195
+ exports2.getActiveHooks = void 0;
12126
12196
  exports2.getCodegenEnvironmentConfig = getCodegenEnvironmentConfig;
12127
12197
  var types_1 = require_types_impl();
12128
12198
  var app_builder_1 = require_app_builder();
12129
12199
  var studio_2_1 = require_studio_2();
12200
+ var hooks_1 = require_hooks();
12201
+ Object.defineProperty(exports2, "getActiveHooks", { enumerable: true, get: function() {
12202
+ return hooks_1.getActiveHooks;
12203
+ } });
12130
12204
  function getCodegenEnvironmentConfig(environment) {
12131
12205
  switch (environment) {
12132
12206
  case types_1.Environment.STUDIO_2:
@@ -12774,6 +12848,7 @@ var require_task_tracker = __commonJS({
12774
12848
  var constants_1 = require_constants5();
12775
12849
  var extension_handler_1 = require_extension_handler();
12776
12850
  var category_handler_1 = require_category_handler();
12851
+ var hooks_1 = require_hooks();
12777
12852
  var OpenCodeTaskTracker = class {
12778
12853
  constructor(workingDirectory) {
12779
12854
  this.trackedTasks = /* @__PURE__ */ new Map();
@@ -12830,6 +12905,7 @@ var require_task_tracker = __commonJS({
12830
12905
  const ctx = this.handlerContext;
12831
12906
  await this.categoryHandler.handle(tool, ctx, state);
12832
12907
  this.taskCounter = ctx.taskCounter;
12908
+ await (0, hooks_1.runOnToolUse)((0, hooks_1.getActiveHooks)(), { tool, state });
12833
12909
  }
12834
12910
  async handleWriteEvent(tool, state) {
12835
12911
  if (state.status !== "completed")
@@ -17895,6 +17971,7 @@ var require_opencode_init = __commonJS({
17895
17971
  var pre_run_decision_1 = require_pre_run_decision();
17896
17972
  var experiments_1 = require_experiments();
17897
17973
  var environments_12 = require_environments();
17974
+ var hooks_1 = require_hooks();
17898
17975
  var runOpencodeInitFlow = async (blueprint, history, agentData) => {
17899
17976
  const store = job_context_storage_12.jobContextStorage.getStore();
17900
17977
  if (!store?.jobId || !store?.taskId) {
@@ -17919,6 +17996,7 @@ var require_opencode_init = __commonJS({
17919
17996
  Task_type: kind
17920
17997
  });
17921
17998
  const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
17999
+ let caughtError;
17922
18000
  try {
17923
18001
  (0, agent_io_1.writeAgentInput)(outputPath, agentData);
17924
18002
  let finalBlueprint = blueprint;
@@ -17967,6 +18045,7 @@ var require_opencode_init = __commonJS({
17967
18045
  });
17968
18046
  logger_12.logger.info("[OpenCode Init] Completed task", { taskId });
17969
18047
  } catch (error) {
18048
+ caughtError = error;
17970
18049
  const codegenError = (0, ditto_codegen_types_2.toCodegenError)(error);
17971
18050
  const agentOutput = (0, agent_io_1.readAgentOutput)(outputPath);
17972
18051
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
@@ -17998,6 +18077,11 @@ var require_opencode_init = __commonJS({
17998
18077
  taskId,
17999
18078
  error: error instanceof Error ? error.message : String(error)
18000
18079
  });
18080
+ } finally {
18081
+ await (0, hooks_1.runOnFlowEnd)((0, hooks_1.getActiveHooks)(), {
18082
+ failed: caughtError !== void 0,
18083
+ error: caughtError
18084
+ });
18001
18085
  }
18002
18086
  };
18003
18087
  exports2.runOpencodeInitFlow = runOpencodeInitFlow;
@@ -18073,6 +18157,7 @@ var require_opencode_iterate = __commonJS({
18073
18157
  var logger_12 = require_logger();
18074
18158
  var config_1 = require_config();
18075
18159
  var biEvents_1 = require_biEvents();
18160
+ var hooks_1 = require_hooks();
18076
18161
  var runOpencodeIterateFlow = async (chatHistory, agentData) => {
18077
18162
  const store = job_context_storage_12.jobContextStorage.getStore();
18078
18163
  if (!store?.jobId || !store?.taskId) {
@@ -18097,6 +18182,7 @@ var require_opencode_iterate = __commonJS({
18097
18182
  Task_type: kind
18098
18183
  });
18099
18184
  const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
18185
+ let caughtError;
18100
18186
  try {
18101
18187
  (0, agent_io_1.writeAgentInput)(outputPath, agentData);
18102
18188
  const iterationOrchestrator = new OpenCodeIterationOrchestrator_1.OpenCodeIterationOrchestrator();
@@ -18132,6 +18218,7 @@ var require_opencode_iterate = __commonJS({
18132
18218
  });
18133
18219
  logger_12.logger.info("[OpenCode Iterate] Completed task", { taskId });
18134
18220
  } catch (error) {
18221
+ caughtError = error;
18135
18222
  const codegenError = (0, ditto_codegen_types_2.toCodegenError)(error);
18136
18223
  const agentOutput = (0, agent_io_1.readAgentOutput)(outputPath);
18137
18224
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
@@ -18162,6 +18249,11 @@ var require_opencode_iterate = __commonJS({
18162
18249
  taskId,
18163
18250
  error: error instanceof Error ? error.message : String(error)
18164
18251
  });
18252
+ } finally {
18253
+ await (0, hooks_1.runOnFlowEnd)((0, hooks_1.getActiveHooks)(), {
18254
+ failed: caughtError !== void 0,
18255
+ error: caughtError
18256
+ });
18165
18257
  }
18166
18258
  };
18167
18259
  exports2.runOpencodeIterateFlow = runOpencodeIterateFlow;
@@ -18648,6 +18740,27 @@ async function main(ctx) {
18648
18740
  var getFirstTask = (job) => {
18649
18741
  return job.tasks?.[0];
18650
18742
  };
18743
+ function buildHooksForTask(jobId, taskId, kind, payload) {
18744
+ if (kind !== CodeGenService_1.TaskKind.INIT_CODEGEN && kind !== CodeGenService_1.TaskKind.ITERATE_CODEGEN) {
18745
+ return void 0;
18746
+ }
18747
+ const userInput = extractUserInput(kind, payload);
18748
+ return (0, environments_1.getCodegenEnvironmentConfig)().hooks.map((factory) => factory({ projectId: context_1.ctx.projectId, jobId, taskId, kind, userInput }));
18749
+ }
18750
+ function extractUserInput(kind, payload) {
18751
+ if (kind === CodeGenService_1.TaskKind.INIT_CODEGEN) {
18752
+ return payload.blueprint?.summary?.trim() || void 0;
18753
+ }
18754
+ if (kind === CodeGenService_1.TaskKind.ITERATE_CODEGEN) {
18755
+ const history = payload.history ?? [];
18756
+ for (let i = history.length - 1; i >= 0; i--) {
18757
+ if (history[i].role === "USER") {
18758
+ return history[i].text.trim() || void 0;
18759
+ }
18760
+ }
18761
+ }
18762
+ return void 0;
18763
+ }
18651
18764
  async function processJob(job) {
18652
18765
  if (!job.id) {
18653
18766
  throw new ditto_codegen_types_1.MissingJobIdError();
@@ -18658,14 +18771,15 @@ async function processJob(job) {
18658
18771
  logger_1.logger.warn("[Job] No initial task found, skipping", { jobId });
18659
18772
  return;
18660
18773
  }
18661
- await job_context_storage_1.jobContextStorage.run({ jobId, taskId: task.id, kind: task.kind }, async () => {
18774
+ const payload = task.payload ?? {};
18775
+ const hooks = buildHooksForTask(jobId, task.id, task.kind, payload);
18776
+ await job_context_storage_1.jobContextStorage.run({ jobId, taskId: task.id, kind: task.kind, hooks }, async () => {
18662
18777
  logger_1.logger.info("[Job] Start processing", { taskKind: task.kind });
18663
18778
  context_1.ctx.setJobStatus(jobId, CodeGenService_1.Status.RUNNING);
18664
18779
  logger_1.logger.info("[Job] Marked job RUNNING", { initTaskId: task.id });
18665
18780
  jobCancellationMonitor.start(jobId);
18666
18781
  jobTimeoutMonitor.start(jobId);
18667
18782
  try {
18668
- const payload = task.payload ?? {};
18669
18783
  const history = payload.history ?? [];
18670
18784
  const blueprint = payload.blueprint;
18671
18785
  const agentData = payload.agentData;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/ditto-codegen-public",
3
- "version": "1.0.313",
3
+ "version": "1.0.314",
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": "e6d1a5f7a174a6739d369cde99966269aa4eca433ac218e6dd63e79f"
30
+ "falconPackageHash": "d9b12ec21f21078ba1ac9393765773db4870fefd00a8a85fc542cd50"
31
31
  }